Centos
從原始碼安裝的軟體,如何說 yum 不從包中安裝它?
在 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
或簡單地說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 上對我有用。在 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