キックスタート プロセスを介して構築された複数の Oracle Linux サーバーに複数のバージョンの Python をインストールする必要があるため、yum リポジトリ用の Python rpm を構築したいと考えました。デフォルトのシステムPythonインストールにインストールされない「make altinstall」を使用して手動でPythonをビルドできたので、それが正しい方法だと思いました。
多くの試行錯誤の後、.bz2 python 2.7 パッケージで始まる rpm を構築することができましたが、インストールしようとするとエラーが発生します。
error: Failed dependencies:
/usr/local/bin/python is needed by Python-2.7.2-1.i386
なに…??? インストールしようとしているのはPythonです!!! システムのデフォルトの Python (2.4) は /usr/bin/python にあります!!! また、python ディレクトリのプロトタイピングの場所は /tmp/python2.7 です (実行可能ファイルは /tmp/python2.7/bin/python2.7 でした)。では、なぜ /usr/local/bin を調べているのでしょうか?
これが私の RPM SPEC のコアです。
%prep
%setup -q
%build
./configure --prefix=/tmp/python2.7
make
%install
make altinstall
rpm ビルド ログをよく見ると、次のように表示されます。
Requires: /bin/sh /tmp/python2.7/bin/python2.7 /usr/bin/env /usr/local/bin/python libc.so.6 libc.so.6(GLIBC_2.0)...[a lot more...]
さて、/usr/local/bin の出番です... さて、問題は、これらの要件をどのように決定しているのかということです。何か間違ったことを指定しましたか?何かをオーバーライドする必要がありますか?
多くの rpm 初心者のように、私はビルド部分を取得しますが、rpmbuild の最後に何が起こるか、実際に rpm ファイル (%files で指定したファイルを除く) に入れられるものと、その後に何が起こるかについては、あまり理解していません。 rpm インストールを実行すると、実際に発生します。
インストールが失敗する理由、または rpm ビルドがビルドしようとしているものが必要な理由を理解するために読むことができるものを誰か提案できますか?