Мы автоматизируем некоторые сценарии развертывания, которые удаляют / устанавливают RPM. Я видел более чем на одном из наших хостов, что rpm -qa возвращает что-то вроде:
# rpm -qa | grep tcl
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
Как это происходит при использовании rpm -e и rpm -i? И есть ли способ предотвратить это? Если я запустил rpm -e в этом случае, я получу
# rpm -e tcl-8.5.7-6.el6
error: "tcl-8.5.7-6.el6" specifies multiple packages:
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
Поэтому мне пришлось использовать -vv --allmatches --nodeps --noscripts --notriggers
переключатели
Анон,
Вы в состоянии попробовать? rpm --rebuilddb
, если вы еще этого не сделали?
http://www.rpm.org/max-rpm/rpm.8.html
В качестве альтернативы можете ли вы использовать yum install
, вместо того rpm
? Yum обычно лучше заботится о вашей базе данных.
Просто чтобы ответить, как предотвратить это (и добавить к другому ответу), в автоматических скриптах я запускаю dcrpm ( https://github.com/facebookincubator/dcrpm ) перед установкой программного обеспечения вы устанавливаете его с помощью pip install dcrpm ... Обычно это помогает со многими проблемами, которые у меня есть