从源代码安装了软件,怎么说从软件包中不安装呢?


14

在CentOS 7上,我安装了从源代码编译的foob​​ar版本2。

我如何使yum知道该安装,以便它不会安装foob​​ar版本1以获得依赖关系?


安装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,自巴兹需要foobar >= 1或者根本foobarfoobar-1.0.0-0.el7.x86_64.rpm 不应该被安装。


Answers:


27

“我已经安装了foobar版本2,从源代码编译”

将自定义软件添加到系统中并将附加的软件包打包到RPM中时,请付出额外的努力。见马丁施特赖歇尔,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上对我有用。在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


6

这不是rpm工作方式。

rpm使用db来存储系统上安装了哪些rpm。如果您手动安装某些文件,rpm则不知道。

解决此问题的最佳方法是使用rpm安装foobar 2。其他解决方案仅是解决方法,从长远来看将不起作用。


5
您不能手动覆盖依赖项检查吗?因为它读起来就是它的精髓,所以OP想要什么。
桅杆

是的,您可以,但是您可以覆盖所有依赖项检查...之后您将无法进行更新
Chris Maes19年

3

可能rpm --nodeps是您要找的答案?在Serverfault上的较旧线程中对此进行了讨论。

告诉yum忽略单个依赖项


5
这可能会导致问题发展,并且基本上只会推迟问题。在更新系统或稍后安装另一个软件包时,可能会发生某些软件包想要将foobar 1拉为依赖项的情况,可能会覆盖手动构建并安装的foobar 2并导致兼容性问题。
吉里·瓦伦塔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.