新しい機能やバグフィックスをパッチでやるのに、バージョンアップをしない理由が知りたいです。
改めて聞かれると答えに詰まりますね。良い質問をありがとうございます。
Linuxでバージョンアップというと、新しい機能が付いたり、いっそ作り直したりと言ったことが多いです。
(参考)Apacheのwebサーバーの例
http://httpd.apache.org/docs/trunk/new_features_2_4.html
これに対して、パッチ宛てはバグ取りや能率のアップなど、いわゆる枯れたコードを作る作業です。セキュリティ対策などもこちらに含まれることが多いです。
(参考)Apaheのwebサーバーの例
http://www.apache.org/dist/httpd/CHANGES_2.4
Unix系のOSはWindows系のOSに比べ安定性が優れているのでチョイスされることが多いです。(もちろんパフォーマンスなど他の理由も多いですが)
安定性を保つためには、バージョンアップより、パッチ宛てが好まれる風潮があるのではないでしょうか。
ディストリビューションって、謂わば大工道具のものだから。
さあ始めよう というときに、よく使うものが一式 入っているので、お手軽に始められる。こだわりがある詳しい人は、ノコギリはこれ、カンナはあれ、とひとつひとつそろえることもある。
ノコギリが切れなくなってきたなあ、と感じたら、目を立てたり、ノコギリだけ買い直したり。
ノコギリの調子が悪いから、道具箱を買い直そう、という人はあまりいない。
一方、道具セットは道具セットで、新しいセットにリニューアルされる。カンナやキリは、前のセットと同じものが入っているかもしれないけれど。
昔の道具セットを買った人が、ノコギリもハンマーも色々と新しくしたいので、セットを買いなおすことも。
Windows は車みたいなものかなあ。
色々なパーツからできていることは知ってても、普段のメンテナンスはディーラーなんかにお任せ。
調子が悪くなってきたら、車ごと買い替えちゃう。
調子が悪くなくても、次々と新しい車に乗り替える人も。
使っている人の それに対する考え方も、売る側の売り方も違うから。
よくわかったようなよくわからないような。
ツギハギとパッキングってことですかね。
昔、ファイルを配布する仕組みが貧弱だった時代の名残でしょう。
パッチで配布すると実行ファイルで配布するより小容量のメディア、回線ですみます。
また、多様なハードウエアに対応する為に、ソースから実行ファイルを作る仕組みが標準で備わっていました。
回線やメディアが大容量化し、ハードウエアも均質化した現在、実行ファイルのバージョンがどんどんあがるようになりました。
Firefoxは、もう、バージョン25、adobe readerは、13ですよ。
なんか寂しい理由ですね。
人間って変化に弱いんでしょうか。明らかに非効率な気はするんですけどね。
ディストリビューションに含まれるパッケージには、各種アプリケーションの他に、ライブラリやツールの類が非常に多くて、このライブラリのバージョンを上げてしまうと、こっちのパッケージの開発元がまだ対応してなくて動かないから上げられない、だけど、同じライブラリを利用するこっちのパッケージは、すでに対応したバージョンが出ているんだけど、それに上げると古いライブラリが使えない、とか、パッケージ間の依存関係を調整するのが、ものすごく大変。
だから、「よし、これでディストリビューションとして辻褄が合うぞ」という物を作って、そこからはバグ修正をバックポートする形で不具合を修正していきつつ、次のマイルストーンに向けて、各パッケージのアップストリームバージョンの選択を検討する、というライフサイクルになる。
まぁ、そういったライフサイクルになるのはオープンソースならではで、ソースが公開されているから、変更点も明確になるし、バックポートも可能。バイナリしかなければバックポートは無理。
なるほど、互換性という理由もあるんですね。
複雑すぎる依存関係があるから安定性を取りにいかないと、ってとこでしょうか。
バージョンアップによる変更点を取捨選択して、安定性をとるという感じなんですかね。枯れた部分がバージョンアップで書き換えられたら面倒ですもんね。
2014/04/26 22:56:35しっくりくる回答でした。