Как определить, к какому пакету относится определенная команда в CentOS?

19

Например, я могу легко найти команду locate, относящуюся к пакету mlocate.i386.

yum search locate
mlocate.i386 : An utility for finding files by name
[mirror@home /]$ rpm -qa | grep locate
mlocate-0.15-1.el5.1

yum search updatedb
Loaded plugins: fastestmirror, protectbase
0 packages excluded due to repository protections
=========================================== Matched: updatedb ===========================================
mlocate.i386 : An utility for finding files by name

Но не так просто найти, к какой команде относится free package:

yum search free   // this command just returns too much informationy 
rpm -qa | grep free
freetype-2.2.1-31.el5_8.1   // obviously not the package by which free command is installed

Так есть ли какой-нибудь удобный способ узнать, к какому пакету относится конкретная команда в Linux? Например CentOS или некоторые другие дистрибутивы

hugemeow
источник

Ответы:

17

Запросите rpmdb.

rpm -qf $(which free)
Игнасио Васкес-Абрамс
источник
почему бы не использовать rpm -qf which free?
огромный
Либо в порядке. $(...)это привычка для меня.
Игнасио Васкес-Абрамс
Трубный путьwhich free | xargs rpm -qf
Eido95
24

Пример Ubuntu / Debian для проверки пакета freeкоманды:

dpkg -S $(which free)
Йерун Вермейлен - MageHost
источник
это работает только для установленных пакетов. я нашел здесь что-то, что работает для $ dpkg -S */free$*
неустановленных
Я боюсь, что это не правильно. Я проверил, dpkg -S */firefox$*что дает несколько результатов на сервере, на котором установлен Firefox, ни один на сервере без Firefox. Я думаю, что это не может работать, потому что dpkgэто команда, работающая с локально установленными пакетами. Для того, чтобы найти не установленные пакеты , которые вы можете пойти в packages.ubuntu.com/...
Jeroen Vermeulen - MageHost
о мой Вы правы, извините за это
бобробоб
1
Если вы получаете DPKG-запрос: путь не найден соответствующий шаблон попробовать это : dpkg -S "$(readlink -fn "$(which free)")".
Пабло А
7

Для CentOS, как насчет Yum?

использование

which free 

узнать где это

Для меня это в

/ USR / бен / бесплатно

Итак, вы можете запустить

yum provides /usr/bin/free

и он скажет вам, в каком пакете есть

отметка
источник
Если the commandне было установлено или доступно в ваших Centos, вы можете использовать yum provides <command>, потому which <command>что вернетсяnot <command> in ...
Lane Ouyang
1

Для всех дистрибутивов Red-Hat вы можете использовать утилиту управления пакетами yum

yum provides `which free`

Аргумент предоставляет указывает, какой пакет предоставляет определенную функцию или файл.

LoveWithMaths
источник