YSC*_*YSC 14 package-management centos yum
在 CentOS 7 上,我安装了从源代码编译的foobar版本 2。
我怎样才能让 yum 知道该安装,以便它不会安装foobar版本 1 以进行依赖?
$ git clone https://example.com/foobar.git
[...]
$ cd foobar
$ make && sudo make install
[...]
$ foobar --version
foobar v2
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
我想让 yum 知道foobar 2 已安装,并且由于baz需要foobar >= 1
或只是foobar
,foobar-1.0.0-0.el7.x86_64.rpm
不应安装。
HBr*_*ijn 27
“我已经安装了从源代码编译的 foobar 版本 2”
在将自定义软件添加到您的系统中并将您添加的内容打包到 RPM 中时,需要付出额外的努力。请参阅Martin Streicher,2010-01-12,构建和分发包,IBM了解如何执行此操作。
然后安装生成的 RPM,这样它就可以并且会很好地处理包管理器的冲突和依赖处理、升级、降级和删除过程以及安全报告。
bgS*_*k15 10
另一种选择(尽管绝对不是最佳答案):使用相关名称制作一个虚拟 rpm 文件。
您将需要rpmbuild
安装和一个虚拟 tarball。
mkdir ~/rpmbuild/{RPMS,SOURCES}
touch empty.txt
tar -zcf ~/rpmbuild/SOURCES/example.tar.gz empty.txt
Run Code Online (Sandbox Code Playgroud)
编写虚拟规范文件。这个在 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
Run Code Online (Sandbox Code Playgroud)
根据需要调整包名称和版本号,然后构建包。
rpmbuild -ba example.spec
Run Code Online (Sandbox Code Playgroud)
输出的“二进制”rpm 文件将是 ~/rpmbuild/RPMS/noarch/example-0.0.0-1.fc29.x86_64.rpm
这不是rpm
工作方式。
rpm
使用一个数据库来存储系统上安装了哪些 rpm。如果你手动安装了一些文件,rpm
就不知道了。
解决此问题的最佳方法是使用 rpm 安装 foobar 2。其他解决方案只是解决方法,从长远来看是行不通的。
归档时间: |
|
查看次数: |
1601 次 |
最近记录: |