Centos

從原始碼安裝的軟體,如何說 yum 不從包中安裝它?

  • June 28, 2019

在 CentOS 7 上,我安裝了從原始碼編譯的foobar版本 2。

我怎樣才能讓 yum 知道該安裝,以便它不會安裝foobar版本 1 的依賴?


安裝foobar

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

安裝需要foobar的包

$ 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

我想讓 yum 知道foobar 2 已安裝,並且由於baz需要foobar >= 1或簡單地說foobarfoobar-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 上對我有用。在 CentOS 7 上也應該不錯。

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

引用自:https://serverfault.com/questions/973208