Установить пакет rpm: отсутствует требование о (установленной) программной ошибке - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь установить созданный мной пакет, который требует 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 ]

1 голос
/ 25 апреля 2019

Хорошо, я исправил это, изменив shebang моего скрипта и:

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

Это явно хак, но он работает, потому что при установке rpm он больше не жалуется на / usr / bin /gnuplot, который не установлен.

0 голосов
/ 12 мая 2019

Вы выяснили в комментариях проблему - RPM не волнует, что находится в вашей системе;он заботится только о том, что находится в его базе данных.Если вы не установили gnuplot через RPM, он не знает, что он там есть.

Единственный «правильный» ответ на это - установка инструментов на вашем компьютере с использованием RPM (то есть yum илиdnf за кадром).Эти инструменты использовались в течение долгого времени по уважительной причине - вы можете легко гарантировать, что ваше программное обеспечение будет работать на целевом компьютере без каких-либо предположений.

Тем не менее, если вы хотите сделать неправильно сформированный RPM, который просто предполагает , что gnuplot есть, вы можете добавить к своему файлу спецификации RPM AutoReqProv: no (см. эту ссылку ).Если вы сделаете это, вы, вероятно, захотите добавить множество ручных Requires строк, охватывающих все остальное.Вы также должны настроить свои скрипты, которые используют gnuplot, чтобы больше не предполагать, что он там есть, и явно проверить его, сначала возвращая полезное сообщение пользователю, если это не так, например, «вам нужно установить gnuplot».

...