新しいバージョンの依存ソフトウェアが存在する場合の yum 依存関係チェックのオーバーライド
-
20-08-2019 - |
質問
CentOS 5.1 で yum を使用しています。PHP 5.2.8 をソースから手動でコンパイルしましたが、他のパッケージは yum を使用してインストールされています。pecl 経由で PHP 拡張機能をインストールする必要があり、phpize もインストールする必要があります。ただし、次の操作を行うと依存関係エラーが発生します。
sudo yum install php-devel
エラー:依存関係が欠落しています:php = 5.1.6-20.el5_2.1 はパッケージ php-devel で必要です
実際には新しいバージョンの PHP がすでにインストールされているのですが、yum にこれを無視させるにはどうすればよいでしょうか?pecl/phpize をソースから手動でコンパイルする必要がありますか?確かに、これまで問題が発生したことはありませんでしたが、コンパイルと yum インストールの組み合わせが原因のようです。
何かご意見は?
ありがとう、カイル
解決
経験則として、それは、システム内の1つのパッケージ管理を持っている方が良いでしょう。これは、長期的にあなたの時間の多くを保存します。
あなたは絶対に手でソースから何か(FE PHP)コンパイラを持っているしたい場合は、使用ストウ/のcheckinstall / ...またはソースコンパイルもののための基本的なパッケージ管理を行うことができますでしょう他のソリューション。
yumを強制インストールに任意のオプションを持っていないので、あなたの質問をRegerding、あなたは、「RPM -i --force file.rpm」やって必要なパッケージのRPMをダウンロードして、依存性チェックを無効にしようとすることができます。
他のヒント
一般的には:
あなたはそれを自分でビルドする場合は、、それが/usr/local
に入り、/usr
で他のものにのみアクセス可能です。
は、それが~/rpm
に入り、rpmbuild --showrc
にアクセス可能であると.src.rpm
。
だから、だけでなく~/rpm/BUILD/WHATEVER-PACKAGE/
にそれらをインストールします:
./configure --prefix=/usr/local && make && sudo make install
または
make prefix=/usr/local all && sudo make prefix=/usr/local install
...ただし、の最ものソフトウェアを使用すると、その接頭辞の設定を上書きしない限り<=>するデフォルトで設定される必要があります。
あなたはRPMのに基づいていると、「手のビルド」のパッケージをしたい場合は、使用することができます。
yumdownloader --source WHATEVER-PACKAGE
rpm -i WHATEVER-PACKAGE.rpm
rpmbuild -bp ~/rpm/SPECS/WHATEVER-PACKAGE.spec
(<=>へのパスと同等は変更される場合があります。<=>はあなたを教えてくれる場所)
これは、上流(原作者の)ソース(通常はtarボール)だけでなく、OS固有のパッチが含まれている<=>パッケージを、ダウンロードし; <=>(またはあなたのrpmbuildのプレフィックス)にソースをインストールします。その後、ソースをアンパックし、<=>
にパッチを適用しますは、そこから、あなたは<=>接頭辞で、手順を自分で作る/設定を行うことができます。
もちろん、単にRPMのインストールからは、はるかに簡単です: - )
yum
手動でコンパイルされた php のバージョンについては何も知りません。次のコマンドを使用してパッケージをインストールすることにより、RPM の依存関係の解決をバイパスすることができます。 rpm --nodeps
そしてそれがうまくいくことを願っています。
または、自分でコンパイルした php バージョンを別のディレクトリにインストールすると、yum の古いバージョンと共存できるため、誰もが満足できます (それが可能かどうかはわかりません。アプリが php へのハードコードされたパスを使用するかどうかによって異なると思います) 。
または、運が良ければ、次のようなサードパーティのリポジトリ エペル または RPMフォージ 新しい php パッケージが含まれている可能性があるため、独自にコンパイルする必要はありません。