簡體   English   中英

安裝rpm軟件包:缺少(已安裝)程序錯誤的要求

[英]Install rpm package: missing requires of (installed) program error

我正在嘗試安裝需要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抱怨...

好的,我通過修改腳本的shebang和修復了它:

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

顯然,這是一種破解,但是它可以正常工作,因為在安裝rpm時,不再抱怨/ usr / bin / gnuplot未安裝。

您在注釋中發現了問題-RPM不在乎系統中的內容; 它只關心數據庫中的內容。 如果您沒有通過RPM安裝gnuplot ,則它不知道它在那里。

唯一的“正確”答案是使用RPM在計算機上安裝工具(這是幕后的yumdnf )。 這些工具已經存在很長時間了,這是有充分的理由的-您可以輕松地確保您的軟件無需假設即可在目標計算機上運行。

就是說,如果您制作一個格式錯誤的RPM(僅假設 gnuplot存在),則可以將AutoReqProv: no文件AutoReqProv: no添加AutoReqProv: no (請參閱此參考資料 )。 如果這樣做,您可能需要添加許多涵蓋所有其他內容的手動“ Requires行。 您還應該調整使用gnuplot的腳本,使其不再假定已存在,並明確檢查它,首先向用戶返回有用的消息,例如“您需要安裝gnuplot”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM