Назад | Перейти на главную страницу

Как обычно происходит повреждение базы данных RPM?

Мы автоматизируем некоторые сценарии развертывания, которые удаляют / устанавливают 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 ... Обычно это помогает со многими проблемами, которые у меня есть