我正在尝试安装我构建的需要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会抱怨...
答案 0 :(得分:1)
好的,我通过修改脚本的shebang和:
#!/bin/bash
[...]
gnuplot -persist <<-EOFMarker
[...]
EOFMarker
这显然是一种黑客手段,但是它可以正常工作,因为在安装rpm时,它不再抱怨/ usr / bin / gnuplot未安装。
答案 1 :(得分:0)
您在注释中发现了问题-RPM不在乎您系统上的内容;它只关心数据库中的内容。如果您没有通过RPM安装gnuplot
,那么它将不知道它在那里。
唯一的“正确”答案是使用RPM在您的计算机上安装工具(这是幕后的yum
或dnf
)。这些工具已经存在很长时间了,这是有充分的理由的-您可以轻松地确保您的软件无需假设即可在目标计算机上运行。
也就是说,如果您想要制作一个畸形的RPM,而它只是假定 gnuplot
,则可以将其添加到RPM规格文件{{1 }}(请参阅this reference)。如果这样做,您可能需要添加许多涵盖所有其他内容的手动AutoReqProv: no
行。您还应该调整使用Requires
的脚本,使其不再假定它存在,并显式检查它,首先向用户返回有用的消息,例如“您需要安装gnuplot”。>