CentOS 7に、ソースからコンパイルされたfoobarバージョン2をインストールしました。
yumにそのインストールを認識させて、foobarバージョン1の依存関係をインストールしないようにするにはどうすればよいですか?
$ git clone https://example.com/foobar.git
[...]
$ cd foobar
$ make && Sudo make install
[...]
$ foobar --version
foobar v2
$ Sudo yum install baz
[...]
---> Package baz.x86_64 0:3.14.15-9 will be installed
--> Processing Dependency: foobar >= 1 for package: baz-3.14.15-9.x86_64
[...]
Dependencies Resolved
==============================================================
Package Arch Version Repository Size
==============================================================
Installing:
baz x86_64 3.14.15-9 example 1.1 M
Installing for dependencies:
foobar x86_64 1.0.0-0.el7 example 4.5 M
foobar2がインストールされていて、baz以来、yumに知らせたいfoobar >= 1
または単にfoobar
が必要です。foobar-1.0.0-0.el7.x86_64.rpm
インストールしないでくださいインストールする必要があります。
「ソースからコンパイルされたfoobarバージョン2をインストールしました」
システムにカスタムソフトウェアを追加するときは追加の労力を費やし、追加したものをRPMにパッケージ化します。それを行う方法については、 Martin Streicher、2010-01-12、パッケージの構築と配布、IBM を参照してください。
次に、その結果のRPMをインストールして、パッケージマネージャーの競合と依存関係の処理、アップグレード、ダウングレード、削除の手順、およびセキュリティレポートでできるようにします。
別のオプション(間違いなく最良の答えではありません):問題の名前でダミーのrpmファイルを作成します。
rpmbuild
をインストールし、ダミーのtarballが必要です。
mkdir ~/rpmbuild/{RPMS,SOURCES}
touch empty.txt
tar -zcf ~/rpmbuild/SOURCES/example.tar.gz empty.txt
ダミースペックファイルを書き込みます。これはFedora 29で動作します。CentOS7でも問題ありません。
Name: example
Version: 0.0.0
Release: 1%{?dist}
Summary: Dummy package
Group: Dummy
License: CC-BY-SA 3.0
URL: http://example.com
Source0: example.tar.gz
BuildArch: noarch
#BuildRequires:
#Requires:
%description
Dummy for example
%prep
:
%build
:
%install
:
%files
%doc
%changelog
必要に応じてパッケージ名とバージョン番号を調整し、パッケージをビルドします。
rpmbuild -ba example.spec
出力される「バイナリ」rpmファイルは~/rpmbuild/RPMS/noarch/example-0.0.0-1.fc29.x86_64.rpm
これはrpm
の動作方法ではありません。
rpm
は、システムにインストールされているrpmを格納するdbを使用します。一部のファイルを手動でインストールした場合、rpm
はそれを認識しません。
これを解決する最良の方法は、foobar 2をrpmでインストールすることです。他の解決策は回避策にすぎず、長期的には機能しません。
五月 rpm --nodeps
探している答えになりますか?これは、Serverfaultの古いスレッドで議論されました。