ソースからソフトウェアをインストールしましたが、パッケージからインストールしないようにyumと言うにはどうすればいいですか?


14

CentOS 7では、ソースからコンパイルされたfoob​​arバージョン2 をインストールしました。

依存関係のためにfoob​​arバージョン1をインストールしないようにyumにそのインストールを認識させるにはどうすればよいですか?


foob​​arのインストール

$ git clone https://example.com/foobar.git
[...]
$ cd foobar
$ make && sudo make install
[...]
$ foobar --version
foobar v2

foob​​arを必要とするパッケージのインストール

$ 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

foob​​ar 2がインストールされており、bazが必要foobar >= 1または単純foobarにインストールされてfoobar-1.0.0-0.el7.x86_64.rpm いないため、yumに知ってほしい。


回答:


27

「ソースからコンパイルされたfoobarバージョン2をインストールしました」

システムにカスタムソフトウェアを追加する場合は追加の労力を費やし、追加したものをRPMにパッケージ化します。その方法については、Martin Streicher、2010-01-12、パッケージの構築と配布、IBMを参照してください。

次に、その結​​果のRPMをインストールして、パッケージマネージャーの競合と依存関係の処理、アップグレード、ダウングレード、削除の手順、およびセキュリティレポートでうまく再生できるようにします。


10

別のオプション(間違いなくベストアンサーではありませんが):問題の名前でダミーの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


6

これはrpm動作方法ではありません。

rpmシステムにインストールされているrpmを保存するdbを使用します。いくつかのファイルを手動でインストールする場合、rpmそれについては知りません。

これを解決する最善の方法は、foobar 2をrpmでインストールすることです。他の解決策は回避策にすぎず、長期的には機能しません。


5
依存関係チェックを手動でオーバーライドすることはできませんか?それは要するに、OPが望むものであるように見えるからです。
マスト

はい、できますが、その後、あなたはすべての依存性チェックを無効に...そして、あなたは、後でトラブルの更新を持つことになります
クリスマース

3

rpm --nodepsあなたが探している答えは?Serverfaultの古いスレッドで議論されました。

単一の依存関係を無視するようyumに指示します


5
これは将来の問題につながる可能性があり、基本的には問題を延期するだけです。システムを更新したり、後で別のパッケージをインストールしたりすると、一部のパッケージがfoobar 1を依存関係としてプルし、手動でビルドおよびインストールされたfoobar 2を上書きして互換性の問題を引き起こす可能性があります。
ジリ・バレンタ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.