(2005/01/25 15:00 追記)
※ 以下で説明している作業手順は全て無保証です。重要なコンポーネントを半ば強引に入れ替えていますので、ここに挙げた以外にも、何か致命的な障害を起こす可能性が十分にあります。あくまでひとつの参考事例として考えていただけたら幸いです。
- OpenSSL: The Open Source toolkit for SSL/TLS
http://www.openssl.org/ - Secunia - Vulnerability Report - OpenSSL 0.9.x
http://secunia.com/product/253/
以前OpenSSL のソースファイルからRPM ファイルを作る で作ったものは、最後のところでシンボリックリンクを作って対処したつもりにして放置していたのですが、やはりおかしいようなので入れなおしてみます。
現時点で最新の"openssl-0.9.7e.tar.gz" を拾ってきていつものごとくSPEC ファイルを抜いてビルド...失敗。エラーメッセージで検索して「Re: [openssl.org #970] build error 0.9.7e」 とかのとおりにやってみてもダメ。RHL9 用OpenSSL の最終リリースからSPEC ファイルを抜いてきてごにょごにょやってみてもダメ。今回結構八方塞がりです。
仕方がないのでオフィシャルのtarball からのインストールは諦め。最後の悪あがきでFedora Core 3 用のソースRPM でビルドしてみたところ、依存関係でややてこずりましたが結果的に入れ替えが出来たっぽいのでその手順をメモ。バージョンナンバー的には古いですが、SPEC ファイル内でセキュリティFIX などのパッチはあててますので、これはこれでよいかと。
- Index of /Linux/packages/fedora/core
http://ftp.kddilabs.jp/Linux/packages/fedora/core/
"openssl-0.9.7a-40.src.rpm" をダウンロード。今回SPEC ファイルも全く触らなかったのでそのままリビルド。
# rpmbuild --rebuild --target i686 openssl-0.9.7a-40.src.rpm
はい、ここでまたしてもエラー。
as: unrecognized option `--noexecstack'
「Re: RedHat 9」 には"binutils" を新しいのにしてみよう、とあるので素直に従う。
- GNU Binutils
http://www.gnu.org/software/binutils/
今まで入っていたのは以下のバージョン。
# rpm -qa |grep binutils
binutils-2.13.90.0.18-9
Fedora Core 3 用では"binutils-2.15.92.0.2-5.i386.rpm" が最新だったので特に工夫もなくそのままアップデート。今にして思えばこれもSRPM から作るべきだったかも。
# rpm -Uvh binutils-2.15.92.0.2-5.i386.rpm
ビルドがちょっと進むようになったけど、やっぱり止まる。
include/openssl/kssl.h:72:18: krb5.h: No such file or directory
どうやら、Kerberos 関連のなにかが引っかかってるみたい。
- Kerberos: The Network Authentication Protocol
http://web.mit.edu/kerberos/
この時点で入っていたもの。
# rpm -qa |grep krb5
pam_krb5-1.60-1
krb5-server-1.2.7-14
krb5-devel-1.2.7-14
krb5-libs-1.2.7-14
krb5-workstation-1.2.7-14
"krb5-1.3.6-2.src.rpm" をもらってきてビルド。ビルド自体は滞りなく終了。
# rpmbuild --rebuild --target i686 krb5-1.3.6-2.src.rpm
しかし、アップデートの際に
e2fsprogs-devel is needed
依存関係のエラーが出ます。RHL9 標準のではバージョンが低いみたいなので、これもアップデートしてしまいます。芋づる式にやることが増えていますがもう行けるところまで行くだけです。
# rpm -qa |grep e2fsprogs
e2fsprogs-1.32-6
e2fsprogs-devel-1.32-6
- E2fsprogs: Ext2 Filesystem Utilities
http://e2fsprogs.sourceforge.net/
"e2fsprogs-1.35-11.2.src.rpm" をもらってきてリビルド。
# rpmbuild --rebuild --target i686 e2fsprogs-1.35-11.2.src.rpm
アップデート。これでようやく、折り返しです。
# rpm -Uvh /usr/src/redhat/RPMS/i686/e2fsprogs-1.35-11.2.i686.rpm /usr/src/redhat/RPMS/i686/e2fsprogs-devel-1.35-11.2.i686.rpm
krb5 のインストール。依存関係のエラーは"--nodeps" 付けて強行。ちなみに、RHL9 の最終リリースである"openssl-0.9.7a-2" に戻してたりしてます。
# rpm -Uvh krb5-libs-1.3.6-2.i686.rpm krb5-devel-1.3.6-2.i686.rpm krb5-server-1.3.6-2.i686.rpm krb5-workstation-1.3.6-2.i686.rpm
: Failed dependencies:
libcom_err.so.3 is needed by (installed) openssh-server-3.8.1p1-2
libcom_err.so.3 is needed by (installed) samba-3.0.6-1
libcom_err.so.3 is needed by (installed) cyrus-sasl-2.1.10-4
libcom_err.so.3 is needed by (installed) wget-1.8.2-9
libcom_err.so.3 is needed by (installed) curl-7.9.8-5
libcom_err.so.3 is needed by (installed) openssh-3.8.1p1-2
libcom_err.so.3 is needed by (installed) cyrus-sasl-devel-2.1.10-4
libcom_err.so.3 is needed by (installed) php-4.3.10-1
libcom_err.so.3 is needed by (installed) pam_krb5-1.60-1
libcom_err.so.3 is needed by (installed) postgresql-server-7.3.4-3.rhl9
libcom_err.so.3 is needed by (installed) openssh-clients-3.8.1p1-2
libcom_err.so.3 is needed by (installed) openssl-0.9.7a-2
# rpm -Uvh --nodeps krb5-libs-1.3.6-2.i686.rpm krb5-devel-1.3.6-2.i686.rpm krb5-server-1.3.6-2.i686.rpm krb5-workstation-1.3.6-2.i686.rpm
いよいよ、今回の目的、OpenSSL です。"--target i686" つけると本体しか作られないので、2回実行。
# rpmbuild --rebuild --target i686 openssl-0.9.7a-40.src.rpm
# rpmbuild --rebuild openssl-0.9.7a-40.src.rpm
インストール。うまくいくときはやけにあっさり。
# rpm -Uvh /usr/src/redhat/RPMS/i686/openssl-0.9.7a-40.i686.rpm /usr/src/redhat/RPMS/i386/openssl-devel-0.9.7a-40.i386.rpm /usr/src/redhat/RPMS/i386/openssl-perl-0.9.7a-40.i386.rpm
RPM パッケージをそのまま、ってのは出来ないですが、SPEC ファイルの更新履歴とか見てると丹念にパッチをあてたりして育てている様子が伺えたりするし、SRPM からリビルドすればなんとか使えるようですね。今回はたまたま、かもしれませんが。
というわけでかなりの長い間悩んでいたことがひとつ解決。たぶん。
(2005/01/25 15:00 追記)
ちょっと状況が落ち着いたので、まとめます。OpenSSL のビルドを通すためにKerberos を入れ替えてしまったことで色々と問題が発生しました。具体的には、Kerberos のコンポーネントである"libcom_err.so.3" を参照している以下のプログラムが動かなくなりました。バージョンが上げたことでファイルの配置が換わってしまったことがトラブルの原因と思われます。他にもどこかに問題があるかもしれません。
以下のパッケージを全てソースからリビルドしなおし、徐々に状況は解決しつつあります。
- openssh-server-3.8.1p1-2
- openssh-clients-3.8.1p1-2
- openssh-3.8.1p1-2
- samba-3.0.6-1
- php-4.3.10-1
- curl-7.9.8-5
- cyrus-sasl-2.1.10-4
- cyrus-sasl-devel-2.1.10-4
- wget-1.8.2-9
- pam_krb5-1.60-1
- postgresql-server-7.3.4-3.rhl9
このうち、OpenSSH とSamba、wget については新しいバージョンのソース等からリビルドしました。PHP はどうするか考え中。そのほかについては同じバージョンのSRPM を貰ってきてリビルド、インストールしました。詳細については順次別エントリで書きます。
今回の事例は重要コンポーネントを入れ替えると何が起きるのか、良い勉強になりました。
(2005/01/25 17:44 追記)
OpenSSL を入れ替えたわけなので、当然、PHP やApache もリビルドする必要があります。一応、一通り修復作業完了(たぶん)。