安装rpm软件包:缺少(已安装)程序错误的要求

时间:2019-04-24 15:20:15

标签: gnuplot rpm yum

我正在尝试安装我构建的需要gnuplot的软件包。

我目前在我的CentOS计算机上安装了gnuplot:

$ which gnuplot
/usr/bin/gnuplot

$ gnuplot --version
gnuplot 4.6 patchlevel 2

但是当我尝试安装软件包时,出现以下错误:

$ sudo yum install my_package.rpm 
Loaded plugins: fastestmirror
Examining my_package.rpm: my_package.x86_64
Marking my_package.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package my_package will be installed
--> Processing Dependency: /usr/bin/gnuplot for package: my_package.x86_64
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                             |  30 kB  00:00:00     
 [...]
--> Processing Dependency: /usr/bin/gnuplot for package: my_package.x86_64
--> Processing Dependency: /usr/bin/gnuplot for package: my_package.x86_64
--> Finished Dependency Resolution
Error: Package: my_package.x86_64 (/my_package)
       Requires: /usr/bin/gnuplot
Error: Package: my_package.x86_64 (installed)
       Requires: /usr/bin/gnuplot
 You could try using --skip-broken to work around the problem
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
my_package.x86_64 has missing requires of /usr/bin/gnuplot

如果我使用rpm,则会遇到相同的问题:

$ sudo rpm -ivh my_package.rpm
error: Failed dependencies:
    /usr/bin/gnuplot is needed by my_package.x86_64

由于已安装gnuplot,我不明白为什么yum会抱怨...

2 个答案:

答案 0 :(得分:1)

好的,我通过修改脚本的shebang和:

#!/bin/bash
[...]
gnuplot -persist <<-EOFMarker
[...]
EOFMarker

这显然是一种黑客手段,但是它可以正常工作,因为在安装rpm时,它不再抱怨/ usr / bin / gnuplot未安装。

答案 1 :(得分:0)

您在注释中发现了问题-RPM不在乎您系统上的内容;它只关心数据库中的内容。如果您没有通过RPM安装gnuplot,那么它将不知道它在那里。

唯一的“正确”答案是使用RPM在您的计算机上安装工具(这是幕后的yumdnf)。这些工具已经存在很长时间了,这是有充分的理由的-您可以轻松地确保您的软件无需假设即可在目标计算机上运行。

也就是说,如果您想要制作一个畸形的RPM,而它只是假定 gnuplot,则可以将其添加到RPM规格文件{{1 }}(请参阅this reference)。如果这样做,您可能需要添加许多涵盖所有其他内容的手动AutoReqProv: no行。您还应该调整使用Requires的脚本,使其不再假定它存在,并显式检查它,首先向用户返回有用的消息,例如“您需要安装gnuplot”。