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

Gnuplot 安装rpm软件包:缺少(已安装)程序错误,gnuplot,rpm,yum,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.

我正在尝试安装一个需要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,我不明白为什么百胜会抱怨…

好的,我通过修改脚本的shebang来修复它,并且:

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

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

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


这就是说,如果您想要生成一个格式错误的RPM,而该RPM只是假设存在
gnuplot
,那么您可以将其添加到RPM规范文件
AutoReqProv:no
(请参阅)。如果这样做,您可能需要添加许多手动
Requires
行,涵盖所有其他内容。您还应该调整使用
gnuplot
的脚本,使其不再假设它在那里,并明确检查它,如果它不在那里,则首先向用户返回有用的消息,如“您需要安装gnuplot。”

尝试
rpm-q gnuplot
rpm-q/usr/bin/gnuplot
。所需的包名是
gnuplot
。您的定制rpm将需求列为
/usr/bin/gnuplot
。你应该用正确的名称/版本来修复你的软件包。我不太清楚。我的规范文件说“Requires:gnuplot>=4.2”,我安装了一个“gnuplot 4.2 patchlevel 6”。。。所以应该可以吗?在这种情况下,您确定当前的gnuplot安装了rpm吗?请参阅我在上面的评论前面添加的命令。如果手动安装,则无法满足要求。它需要是通过yum或rpmOk安装的rpm包,我了解根本原因。我的软件包正在打包一个以
#开头的脚本/usr/bin/gnuplot--persist
和/usr/bin/gnuplot未随rpm一起安装。。。这就是rpm抱怨的原因。。。但我不知道如何解决这个问题。你能卸载gnuplot并用rpm重新安装吗?在过去,我从未很幸运地从一个包管理系统中获得我构建的东西来尊重依赖关系,反之亦然;我的回答中给出了禁用此功能的正确方法。