OpenSSL のソースファイルからRPM ファイルを作る

(2005/01/24 20:16 追記)
※ 以下の情報は既に古いです。「Fedora のSRPM からOpenSSL をリビルドしてRHL9 に」 をご覧ください。

RedHatLinux9 は既にRedHat によるサポートが終了していて、あとはFedora Legacy の最大限の努力に期待する、という状況ですので、頼り切りにせずに自分でパッケージを入れ替えていく努力もせねばなりません。というわけで今回はソースRPM もない、ただの "*.tar.gz" なソースファイルからRPM ファイルを作れるようにがんばってみることにします。ちなみに"*.tar.gz" なファイルのことを"tarball" とか言ったりします。tar玉 とか言ったりもするかも。


まずはOpenSSL のサイトから最新のソースファイルを落としてきます。2004/06/26 時点では"0.9.7d" が最新です。
ITmedia の「エンタープライズ:特集:第3回 tarボールからRPMパッケージを作るコツ」 によると、ディトリビューションのソースRPM からSPEC ファイルを流用し、あとはこまごまと修正をかけてコンパイルが通ることを目指すのがよい、とあるのですが、今回はこの方法では上手くいきませんでした。RedHat から"openssl-0.9.7a-20.2.src.rpm" を落としてきてSPEC ファイルを拾ったまでは良かったのですが、どーやっても"make test" の段階でテストに失敗して止まってしまいます。
今回ばかりはお手上げか...? と思いつつ、辿り着いたのが「@IT:tarボールからRPMファイルを作成するには」 の方法、ものは試しとやってみたところ、なんら問題なくパッケージまで作成されてしまいました。なんてこったい。いやそれはそれで喜ばしいことなのですが。
tarball の中の"openssl.spec" というファイルを参照してる模様。configure の引数を変えたい場合はこのファイルを編集してからまたtarball にすればよさげ。あとは今回覚えたrpmbuild のオプションをおさらい。


# rpmbuild -tp openssl-0.9.7d.tar.gz # パッチをあてる(tarball 用)
# rpmbuild -tc openssl-0.9.7d.tar.gz # コンパイルする(tarball 用)
# rpmbuild -ti openssl-0.9.7d.tar.gz # インストールテスト(tarball 用)
# rpmbuild -ta openssl-0.9.7d.tar.gz # パッケージを作る(tarball 用)

フツーにmake install とかしてしまったApache にもSPEC ファイルが入っていたので、もっと早く気づいていれば...ですね。ソースファイルしかなくてもとりあえずチャレンジしてみる価値はありそうです。
そんなこんなで早速インストール、で早速つまづく。"libcrypto.so.4" と"libssl.so.4" の依存関係で引っかかって"rpm -Uvh" でも弾かれてしまうので、色々調べて以下のようなオプションを付けて無理矢理入れ替え。


# rpm -Uvh --nodeps openssl-0.9.7d-1.i386.rpm

あと、依存関係でエラーが出てたふたつのファイルを、


# ln -s /usr/lib/libcrypto.so.0.9.7 /usr/lib/libcrypto.so.4
# ln -s /usr/lib/libssl.so.0.9.7 /usr/lib/libssl.so.4

とシンボリックリンクをはって解決させてみたつもり。こんなんでいいんだろうか。