。rpmbuild
インストール中に特定のファイルに依存していたため失敗しましたlibnvidia-ml.so.1
。この場合、次のようになります。
Requires: libnvidia-ml.so.1()(64bit)
これは、パッケージマネージャにインストールされているが/usr/lib64
変更できないパッケージマネージャではインストールされません。yum
このファイルをどこで見つけることができるかを知る方法はありますか?
マニュアルで明確な内容が見つからず、LD_LIBRARY_PATH
何の効果もありませんでした。
答え1
yumにこのファイルが見つかる場所を教える方法はありますか?
yum/dnf
RPMデータベースを具体的に参照してください。外部ファイルを考慮するように指示する方法はありません。
このライブラリをRPMにパッケージ化してインストールするか、以下を使用してインストールするために必要なものをすべてインストールします。rpm --nodeps [packages]
答え2
修正する
.so
最善の方法は、カスタムビルドパッケージ自体を介して-Fileを提供するか、共有ライブラリを提供する別のカスタムパッケージを追加することです。
利用可能なライブラリがrpmdbにも保存されているように見えるため、次のことは機能しません。
この特別なケースでは、依存関係はファイルではなく共有ライブラリです。ライブラリを手動で追加することが可能でなければなりません。
ライブラリを追加するパスが構成されていることを確認してください。
ldconfig
grep -R /usr/lib64 /etc/ld.so.*
そうでない場合は、設定されたパスを選択するか、設定にパスを追加します。
ldconfig
リンクとキャッシュを再生成するには実行してください。ldconfig -v
出力に共有ライブラリを表示する必要があります。
最後に、パッケージをインストールできる必要があります。
答え3
インストールしようとしたRPMファイルを編集して再構築することは私にとって効果的でした。私はDNFで利用できない古い依存関係を自分のコンピュータで利用でき、そのまま残っていることを知っています。これらすべての情報を知らせる偽(または実際の)RPMを作成して、DNFがこの事実を知るのに時間を費やす必要はありません。
私は従った:
ldconfig
で新しいライブラリファイルを選択できます/usr/local
。
sudo bash -c 'echo -e "/usr/local/lib64\n/usr/local/lib" > /etc/ld.so.conf.d/local.conf'
レガシーライブラリをシステムパッケージと区別/usr/local
せずにソースからビルドしてインストールします。/usr
これはプログラムによって異なりますが、次は例です。
./configure --prefix=/usr/local
make -j $(nproc)
sudo make install
sudo ldconfig
共有ライブラリファイル(私の場合はlibtclとlibtk)があることを確認してください。
sudo ldconfig -p | grep -i "libnvidia"
DNF 不明な依存関係を必要としないように仕様ファイルを再構成し、必要なインストール済み RPM を再構築します (注釈など)。まずインストールする必要がありますrpmrebuild
。
rpmrebuild --edit-spec --package original_x86_64.rpm
私には、次の行をコメントアウトしました。
#Requires: libtcl8.5.so()(64bit) #Requires: tcl-devel
再構築が完了すると、新しく構築されたRPMの位置を知らせます。私にとってはそれが内部にあります~/rpmbuild/RPMS/x86_64
。目的の場所に移動してインストールしてください。例:
mv ~/rpmbuild/RPMS/x86_64/original-1.x86_64.rpm rebuilt_x86_64.rpm
sudo dnf install rebuilt_x86_64.rpm
RPM仕様ファイルの存在rpmrebuild
とすぐにRPM仕様ファイルを編集する機能を検索するためのソース:https://lists.fedoraproject.org/archives/list/[Eメール保護]/メッセージ/V2ZJORVHTA34UOJVRA2SEVNTJCM4ETXM/