2004年11月17日

[linux-users:103848] Re: パッケージのインストールについて教えてください

弥永悦子 said the following on 2004/11/17 12:05:
> Takeshi Kusune said at Tue, 16 Nov 2004 19:34:45 +0900
>>そもそもその httpd-2.0.52 のパッケージは、
>>どうして install しなければいけないことになったのですか?
> http://www.linux.or.jp/のセキュリティ情報に「.0.50 以前のバージョンに
> DoS攻撃やバッファ・オーバフローを可能とする不具合が発見されました」
> とあったからです。

なるほど。この場合、一般解としては二つの解決があります。
1. 安全とされているバージョンのものに更新する

2. 問題とされているバージョンの問題場所にパッチをあてる

ふつうの人はまっさきに 1 の方法を思いつくので更新したくなるのは当然ですが、
この方法をとる場合、関連するソフトウェアとの整合性が問題になります。
たとえば、Apache HTTPD の 2.0.50 を対象として開発された追加 module が、
2.0.52 と組み合わせてちゃんと動くかどうかは確認しないとわかりませんよね。

RPM パッケージを使う場合は、それぞれのパッケージについて、
動作するために関連して必要なパッケージを作成者が指定してあるわけですが、
普通、まだ出てないバージョンについては確認しようがないので、
利用者がその点を考慮することを前提に要求条件をゆるく指定するか、
特定のバージョンとの組み合わせを要求するように指定されているのが普通です。

ただし、パッケージ作成の際のオプション指定などは作成者次第なので、
別々の作者が作成したパッケージ同士がうまく動くことは誰も保証できません。


RedHat Linux などの場合、この問題を解決するために、
セキュリティホールなどには、上の 2 の方法で修正したパッケージを配布します。
バージョンだけみると問題があるようにみえますが、これでも問題はありません。
むしろ互換性などの面からみればこちらの方が安全です。

RedHat Linux 9 対象、という指定の意味は、
RedHat Linux 9 として(updates も含めて)提供されているパッケージとは、
整合性が確認できている、ということです。

逆にいえば、RedHat Linux 9 として提供されているパッケージ以外とは、
組み合わせてちゃんと動作することは誰も保証できません。
一番運がよければちゃんと動きますし、インストール時に問題が検出される
こともありますが、最悪、インストールできるのに問題が出ることもあります。

ただし、RedHat Linux 9 の場合、サポートが切れてしまっているので、
更新パッケージが公式に提供されないのが問題なんですけどね。
回避するためには、サポートされている distribution を選ぶ必要があります。


> くだんのサーバはまだ運用前で、コンテンツが何も入っていないので、
> この間にapacheをアップグレードしておいた方がいいのかと思いまして。。。

この考え方自体は正解な気もしますが、
方法についてはちゃんと検討したほうがよいですね。

> 楠根さんや皆さんは、こういう整合性チェックとか依存関係についての
> 知識を、どのように身につけられたのでしょうか?

自分でパッケージを作成したり、無理にインストールしたりして何度も失敗して、
その解決のためにあちこち調べたりして経験的におぼえたものがほとんどですね。
そういう意味では失敗するのを無理に回避する必要はないとは思いますが、
サービス提供環境であまり無茶はしない方がいいかな〜という気もしますね。
どのくらいが無茶かはバランスの難しいとこですけどね。

> 上述のように、公開前のサーバですので実験的なこともできるのですが、
> 無鉄砲にやりすぎました。(ということも分からなかったです…。)
> 少し考えてきます。

無茶して失敗できるのは今のうちな気もしますが、
同じ無茶するなら「なにをするとどのくらい大変なのか」ということを
ちゃんと考察しながらするといいと思いますよ。
--
Takeshi Kusune <kusune@xxxxx>

投稿者 xml-rpc : 2004年11月17日 15:14
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/27899
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。