Одной из наиболее общих задач управления пакетами является задача отслеживания принадлежности отдельных файлов.
Опция -qf позволяет использовать rpm для поиска информации о принадлежности указанного файла конкретному пакету. Основной синтаксис:
# rpm -qf путевое_имя_файла
В первую очередь необходимо определить расположение файла. Для этого в Linux есть несколько штатных средств, наиболее часто используется команда which.
# which grep
В данном примере определяется положение утилиты grep. Теперь можно определить принадлежность grep конкретному пакету.
# rpm -qf /bin/grep
Осталось объединить команды в одну средствами Linux:
# rpm -qf `which grep`
Если используется bash shell, имеется возможность использовать свойства этой оболочки:
# rpm -qf $(which grep)
Если файл не принадлежит пакету (а это пользовательские файлы, документы etc.), будет выведено сообщение:
# rpm -qf mail
file mail is not owned by any package
Одна из причин, почему команда rpm -qf довольно часто используется, это отсутствие связи между именами команд и именами пакетов, в которые они входят. Например:
Источник
Как узнать какому пакету принадлежит файл linux
Для просмотра от каких пакетов зависит пакет gnome-calculator:
$ epm requires gnome-calculator
Для просмотра какие другие пакеты зависят от пакета gnome-calculator:
$ epm whatdepends gnome-calculator
Для просмотра какому пакету принадлежит файл /usr/bin/gnote:
$ epm qf /usr/bin/gnote
(причём для исполняемых файлов можно и epm qf gnote)
Список всех файлов в пакете: $ epm ql gnome-calculator
> Ну а для тех, кому не хочется запоминать все варианты, давно создан EEPM:
Для таких случаев создан XKCD #927.
3.7, Виталий Липатов ( ok ), 13:48, 21/02/2020 [^] [^^] [^^^] [ответить]
+ / –
Ну что ещё ожидать от Анонима. Но EPM не ещё один пакетный менеджер.
2.5 , имя ( ok ), 01:34, 21/02/2020 [^] [^^] [^^^] [ответить]
+ / –
> Лет 8 назад здесь уже писали об этом проекте
Лет 12 назад уже был PackageKit.
3.8, Виталий Липатов ( ok ), 17:56, 21/02/2020 [^] [^^] [^^^] [ответить]
+ / –
>> Лет 8 назад здесь уже писали об этом проекте > Лет 12 назад уже был PackageKit.
Поэтому до сих пор люди пишут полезные советы, как пользоваться пакетными менеджерами. PackageKit предоставляет только базовую функциональность и ограничен теми системами, которые имеют D-BUS. Но у проекта и цели другие — предоставить доступное обычному пользователю управление пакетами через GUI.
Источник
Какому пакету принадлежит файл в Linux
В этой краткой заметке я хочу рассказать как узнать какому пакету принадлежит файл Linux, мы рассмотрим как решить эту задачу не только в Ubuntu, но и в других популярных дистрибутивах.
Такая задача возникает очень редко. Например, вы чистите систему, увидели странный файл, или файл который занимает много места и хотите узнать какому пакету он принадлежит, и вообще, нужен ли он здесь. Или другая ситуация вы хотите установить или удалить программу но не помните название пакета, но знаете как называется исполняемый файл.
Для получения такой информации в Ubuntu есть несколько способов. Это стандартная утилита dpkg, которая работает только с существующими файлами, а также инструмент apt-file, позволяющий получить название программы зная имя исполняемого файла. Подобные инструменты есть и для других дистрибутивов.
Узнаем какому пакету принадлежит файл в dpkg
Для того чтобы узнать какому пакету принадлежит файл dpkg имеет опцию -S, правда, выведено будет только имя пакета и адрес файла, например:
Теперь если хотим получить информацию о пакете, используем опцию -s:
Или объедением эти команды:
Как узнать имя пакета по файлу в apt-file
Утилита apt-file не является стандартной для системы Ubuntu, поэтому сначала ее нужно установить:
Затем нужно обновить базу данных программы, при обновлении загрузиться около 30 Мегабайт данных:
Теперь можно использовать:
Узнаем какому пакету принадлежит файл в rpm
В системах на базе Red Hat Linux тоже можно выполнить аналогичное действие. Здесь вместо dpkg используется консольная утилита rpm. Для получения информации о пакетах используется опция -q, если комбинировать ее с опцией -f и передать адрес файла, мы сможем узнать какому пакету принадлежит файл:
Хотите более подробной информации о пакете, добавьте опцию -i:
Пакетный менеджер yum, используемый в системах, основанных на Red Hat, тоже умеет искать пакеты по файлу, для этого есть команда whatpovides:
Какому пакету принадлежит файл в ArchLinux
ArchLinux использует собственный менеджер пакетов, очень сильно отличающийся от описанных выше. Но здесь тоже можно сделать то, что нам нужно. Для этого есть опция -Qo:
Но этот способ работает только для установленных пакетов, если пакет не установлен, можно использовать утилиту pkgfile. Она не поставляется по умолчанию, но ее можно установить:
Теперь посмотрим какому пакету принадлежит /bin/evince:
Теперь вы можете узнать из какого пакета можно получить нужную вам программу.
Поиск пакета по файлу в Gentoo
Еще один интересный дистрибутив со своеобразной системой работы с пакетами. Здесь пакеты поставляются в виде исходных кодов и скриптов для сборки. Найти пакет по файлу вы можете с помощью утилиты equery, передав ей параметр b. Например:
Такой способ работает только для установленных пакетов. Из-за специфики дистрибутива для не установленных пакетов способа поиска не существует.
Выводы
Теперь вы знаете как понять какому пакету принадлежит файл в любом из самых популярных дистрибутивов Linux. Во всех дистрибутивах, основанных на Ubuntu и Debian, работает dpkg, для RPM-based дистрибутивов подходит утилита rpm. А два остальных менее популярных, но очень интересных мы рассмотрели отдельно. Если у вас остались вопросы, спрашивайте в комментариях!
Источник
Поиск пакетов, содержащих определенный файл
В данной статье рассматривается утилита apt-file, которая позволяет найти, к какому пакету относится определенный файл. Утилита работает в Ubuntu-based дистрибутивах.
С ее помощью можно, например, найти в каком пакете находится та или иная программа. Или же можно найти, в какой библиотеке находится заголовочный файл, это иногда нужно при сборке программ из исходных кодов.
Установка apt-file
Установим утилиту apt-file. Выполняем команду:
После установки apt-file должна выполнить индексацию репозиториев, чтобы получить актуальную информацию о пакетах. Для этого выполняем команду:
Поиск пакетов
Синтаксис команды apt-file для поиска пакетов следующий:
—ignore-case или -i — не учитывать регистр.
—regexp или -x — рассматривать имя_файла, как регулярное выражение. Используется синтаксис регулярных выражений Perl.
—package-only или -l — показывать только имена пакетов. Не показывать имена файлов.
—fixed-string или -F — искать строго по заданному имени_файла (полное вхождение/совпадение).
имя_файла — имя файла (полный путь), часть имени файла или регулярное выражение для поиска среди репозиториев.
Команда apt-file выполняет поиск пакетов, которые содержат внутри себя файлы, соответствующие искомому имени_файла .
Примеры
Рассмотрим несколько примеров.
Найдем пакеты, которые содержат файл fftw3.h:
Найдем пакеты, содержащие файл firefox:
Обратите внимание, что при поиске будут найдены все вхождения слова firefox в путях файлов, это, например, файлы firefox.png и так далее. Поэтому, можно задать более конкретный запрос, указав часть пути:
Пример использования регулярного выражения (используется perl regex):
Список файлов в пакете
Еще одна полезная возможность команды apt-file — это вывод списка файлов внутри определенного пакета. Для этого используется действие show.
Например, выведем список файлов в пакете cowsay:
Чтобы получить справку по всем возможностям apt-file выполните в терминале команду: