在CentOS 7上,我已经安装了由源代码编译的foobar 2。
How我可以让yum知道这个安装,这样它就不会安装foobar version 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
我希望yum知道foobar 2已经安装了,而且由于baz需要foobar >= 1
或简单的foobar
,所以foobar-1.0.0-0.el7.x86_64.rpm
<#>should没有被安装。
发布于 2019-06-28 09:45:02
“我安装了foobar版本2,从源代码编译而来”
在向您的系统中添加自定义软件并在RPM中添加<#>package时,要付出额外的努力。关于如何做到这一点,请参见,2010-01-12构建和分发包、IBM。
然后安装相应的RPM,这样它就可以并且将很好地处理包管理器的冲突和依赖关系处理、升级、降级和删除过程以及安全报告。
发布于 2019-06-28 18:04:13
另一个选项(虽然肯定不是最好的答案):创建一个带有所讨论的名称的虚拟rpm文件。
您将需要安装rpmbuild
和一个虚拟的tarball。
mkdir ~/rpmbuild/{RPMS,SOURCES}
touch empty.txt
tar -zcf ~/rpmbuild/SOURCES/example.tar.gz empty.txt
编写虚拟规范文件。这个在费多拉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
。
发布于 2019-06-28 08:39:49
这不是rpm
的工作方式。
rpm
使用db存储系统上安装了哪些rpm。如果您手动安装一些文件,rpm
将不知道。
解决这个问题的最好方法是安装带有rpm的foobar 2。其他解决方案只能是解决办法,从长远来看是行不通的。
https://serverfault.com/questions/973208
复制相似问题