Я пытаюсь установить сторонний RPM-пакет на RHEL5, который зависит от версии 3.4 sqlite. По словам Yum у меня уже установлена 3.3.6.
Есть ли способ перечислить установленные пакеты, которые зависят от sqlite 3.3.6?
package-management
rhel
yum
Богатый
источник
источник
repoquery
может быть использован для создания прекрасного дерева , как структура всех пакетов , которые требуют конкретного пакета, например:repoquery --pkgnarrow=installed --tree-whatrequires sqlite
--installed
это опция для,repoquery
но недействительная дляrpm
.Ответ
Пояснения
rpm -q --whatrequires sqlite
только сообщает о зависимостях от имен пакетов.Наоборот,
repoquery
действует следующим образом (из manpages):пример
Давайте возьмем пакет
libdb
.От пакета ничего не зависит
libdb
, поэтому мы должны быть в состоянии удалить его гладко. Тем не мение...Как вы можете видеть, некоторые другие пакеты зависели не напрямую от пакета, а от
libdb-5.3.so()(64bit)
предоставленного им файла .Наконец, вот реальный список пакетов в зависимости от
libdb
:источник
Для dnf (новая версия yum) вы можете попробовать с помощью команды оболочки repoquery:
Если он недоступен, вы можете установить его с помощью команды:
источник
--installed --recursive
конце вам нужно, чтобы он возвращал только то, что на самом деле установлено, и неВы также можете попробовать эту команду.
Я получил эту команду от ServerFault, а также от форумов Fedora.
источник
Я думаю, что вы действительно хотите знать, это «какие пакеты требуют sqlite-3.3.6, но не будут рады sqlite-3.4.z» ... и единственный хороший способ выяснить это, это попробуй. Подобно:
источник
Как сказал Уэс Хардакер , хороший встроенный метод - это использование
rpm -q --whatrequires <package>
. Дело в том, что онrpm
работает с возможностями разрешения зависимостей, а не просто с пакетами, как, напримерdpkg
, в семействе дистрибутивов Linux Debian / Ubuntu. Как отметили другие, простое выполнениеrpm -q --whatrequires sqlite
не рассказывает всей истории, поэтому некоторые предлагают использоватьrepoquery
.repoquery
однако по умолчанию не установлен в RHEL / CentOS 7 минимальный (может быть, и настольный компьютер тоже?), поэтому он может быть доступен не для всех.Пользователь может
rpm -q --provides <pkgname>
просмотреть все возможности, предоставляемые пакетом, а затемrpm -q --whatrequires <capability>
узнать, какие установленные пакеты требуют этой возможности. Эта информация может быть кратко запрошена с использованием однострочного BASH (разделенного здесь на две строки по длине):При этом используются только встроенные в него параметры
rpm
, и поэтому не требуется устанавливать никаких дополнительных пакетов (например,yum-utils
в CentOS 7, который является пакетом, который содержитrepoquery
).источник