как узнать в каком пакете находится файл linux

Как в Linux узнать, в каком пакете содержится файл

Если вы компилируете программы из исходных кодов, то вы, наверняка, сталкивались с ошибками компиляции, когда программа не находит какой-либо файл и компиляция обрывается. Что делать в данной ситуации? Понятно, что нужно установить пакет, который содержит требуемый файл. Но как узнать имя этого пакета?

Вполне возможно, что вас выручит Гугл, достаточно в строке поиска набрать что-нибудь вроде fatal error: ffi.h и уже в первых результатах поиска вы найдёте сайты с ответом на ваш вопрос. Это не самый хороший способ, поскольку:

В этой заметке я расскажу о нескольких способах узнать имя пакета, содержащего требуемый файл.

apt-file

Эта программа предназначена для поиска файлов в пакетах. Также она может показать все файлы в пакете.

Сразу после установки кэш данных о программах пуст. Чтобы его обновить нужно выполнить команду (можно выполнять как от рута, так и от пользователя):

Когда всё готово, то поиск осуществляется так:

К примеру я ищу файл ffi.h:

Как можно увидеть файл найден, но кроме него ещё и много лишнего:

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

На помощь можно призвать умные регулярные выражения, к примеру в следующей строке замените ffi.h на тот файл, который вы ищите — и вы всегда будете получать самый точный результат:

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

Ну и для любителей графического интерфейса, вот вам от меня графический интерфейс:

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

Справка по команде apt-file

whichpkg

whichpkg — это единая оболочка для управления пакетами в Debian. Она является обёрткой вокруг apt, apt-cache, dpkg, aptitude и других. Её цель — простое управление пакетами из одного интерфейса путём унификации главных функций этих инструментов.

Как видно, показаны совпадения в установленных и в неустановленных пакетах. НО мой предыдущий фокус с фильтрацией командой grep здесь не работает.

Как и положено быть унифицированному интерфейсу, у этой команды огромное количество опций и есть встроенный урок по использованию. Но их рассмотрение выходит за рамки этой заметки.

auto-apt

Программа auto-apt предназначена для поиска пакетов по файлу и установке пакетов по требованию.

Инструмент auto-apt проверяет доступ к файлам запущенными программами внутри своего окружения, и если программа пытается получить доступ к файлу про который известно, что он принадлежит к неустановленному пакету, то auto-apt установит этот пакет используя apt-get. Эта функция требует рабочих apt и sudo.

Программа также имеет простую базу данных для поиска пакета, содержащего требуемый файл.

После установки нужно обновить список пакетов следующей командой:

Поиск осуществляется так:

Лично у меня программа не сработала ни на одной из двух систем (на одной не смогла полностью загрузить файлы с содержанием пакетов, как следствие — поиск ничего не нашёл, на другой системе программа вообще ничего не стала загружать).

dlocate

Заключение

Теперь, когда при очередной компиляции возникнет очередная ошибка из-за отсутствующего файла, вам не обязательно открывать Гугл и читать англоязычные форумы. Одной командой прямо в командной строке вы можете найти требуемый пакет.

Источник

Поиск пакетов, содержащих определенный файл

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

В данной статье рассматривается утилита apt-file, которая позволяет найти, к какому пакету относится определенный файл. Утилита работает в Ubuntu-based дистрибутивах.

С ее помощью можно, например, найти в каком пакете находится та или иная программа. Или же можно найти, в какой библиотеке находится заголовочный файл, это иногда нужно при сборке программ из исходных кодов.

Установка apt-file

Установим утилиту apt-file. Выполняем команду:

После установки apt-file должна выполнить индексацию репозиториев, чтобы получить актуальную информацию о пакетах. Для этого выполняем команду:

Поиск пакетов

Синтаксис команды apt-file для поиска пакетов следующий:

имя_файла — имя файла (полный путь), часть имени файла или регулярное выражение для поиска среди репозиториев.

Примеры

Рассмотрим несколько примеров.

Найдем пакеты, которые содержат файл fftw3.h:

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

Найдем пакеты, содержащие файл firefox:

Обратите внимание, что при поиске будут найдены все вхождения слова firefox в путях файлов, это, например, файлы firefox.png и так далее. Поэтому, можно задать более конкретный запрос, указав часть пути:

Пример использования регулярного выражения (используется perl regex):

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

Список файлов в пакете

Еще одна полезная возможность команды apt-file — это вывод списка файлов внутри определенного пакета. Для этого используется действие show.

Например, выведем список файлов в пакете cowsay:

Чтобы получить справку по всем возможностям apt-file выполните в терминале команду:

Источник

Какому пакету принадлежит файл в Linux

В этой краткой заметке я хочу рассказать как узнать какому пакету принадлежит файл Linux, мы рассмотрим как решить эту задачу не только в Ubuntu, но и в других популярных дистрибутивах. Такая задача возникает очень редко. Например, вы чистите систему, увидели странный файл, или файл который занимает много места и хотите узнать какому пакету он принадлежит, и вообще, нужен ли он здесь. Или другая ситуация вы хотите установить или удалить программу но не помните название пакета, но знаете как называется исполняемый файл.

Для получения такой информации в Ubuntu есть несколько способов. Это стандартная утилита dpkg, которая работает только с существующими файлами, а также инструмент apt-file, позволяющий получить название программы зная имя исполняемого файла. Подобные инструменты есть и для других дистрибутивов.

Узнаем какому пакету принадлежит файл в dpkg

Для того чтобы узнать какому пакету принадлежит файл dpkg имеет опцию -S, правда, выведено будет только имя пакета и адрес файла, например:

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

Или объедением эти команды:

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

Как узнать имя пакета по файлу в apt-file

Утилита apt-file не является стандартной для системы Ubuntu, поэтому сначала ее нужно установить:

sudo apt install apt-file

Затем нужно обновить базу данных программы, при обновлении загрузиться около 30 Мегабайт данных:

sudo apt-file update

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

Теперь можно использовать:

apt-file search /usr/bin/ncdu

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

Узнаем какому пакету принадлежит файл в rpm

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

Пакетный менеджер yum, используемый в системах, основанных на Red Hat, тоже умеет искать пакеты по файлу, для этого есть команда whatpovides:

yum whatprovides /bin/ls

как узнать в каком пакете находится файл linux. Смотреть фото как узнать в каком пакете находится файл linux. Смотреть картинку как узнать в каком пакете находится файл linux. Картинка про как узнать в каком пакете находится файл linux. Фото как узнать в каком пакете находится файл linux

Какому пакету принадлежит файл в Arch Linux

Но этот способ работает только для установленных пакетов, если пакет не установлен, можно использовать утилиту pkgfile. Она не поставляется по умолчанию, но ее можно установить:

Теперь посмотрим какому пакету принадлежит /bin/evince:

Теперь вы можете узнать из какого пакета можно получить нужную вам программу.

Поиск пакета по файлу в Gentoo

Еще один интересный дистрибутив со своеобразной системой работы с пакетами. Здесь пакеты поставляются в виде исходных кодов и скриптов для сборки. Найти пакет по файлу вы можете с помощью утилиты equery, передав ей параметр b. Например:

equery b /usr/bin/qtconfig

Такой способ работает только для установленных пакетов. Из-за специфики дистрибутива для не установленных пакетов способа поиска не существует.

Выводы

Теперь вы знаете как понять какому пакету принадлежит файл в любом из самых популярных дистрибутивов Linux. Во всех дистрибутивах, основанных на Ubuntu и Debian, работает dpkg, для RPM-based дистрибутивов подходит утилита rpm. А два остальных менее популярных, но очень интересных мы рассмотрели отдельно. Если у вас остались вопросы, спрашивайте в комментариях!

Источник

дМС УЙУФЕНЩ APT УХЭЕУФЧХЕФ ОЕУЛПМШЛП ПВПМПЮЕЛ, ЛПФПТЩЕ ЪОБЮЙФЕМШОП ХРТПЭБАФ РТПУНПФТ РБЛЕФПЧ, ЛПФПТЩЕ ДПУФХРОЩ ДМС ХУФБОПЧЛЙ ЙМЙ ХЦЕ ХУФБОПЧМЕОЩ, Б ФБЛЦЕ ДМС РПЙУЛБ ТБЪДЕМПЧ, РТЙПТЙФЕФПЧ, ПРЙУБОЙС РБЛЕФПЧ Й Ф.Д.

оП. ОБЫБ ГЕМШ УПУФПЙФ Ч ЙЪХЮЕОЙЙ УБНПЗП APT. фБЛ ЛБЛ ЦЕ ОБКФЙ ЙНС РБЛЕФБ, ЛПФПТЩК ЧБН ОБДП ХУФБОПЧЙФШ?

5.1 оБИПЦДЕОЙЕ ЙНЕО РБЛЕФПЧ

оБРТЙНЕТ, ДПРХУФЙН, ЮФП ЧЩ ИПФЙФЕ ЧУРПНОЙФШ УФБТЩЕ ДПВТЩЕ ДЕОЕЮЛЙ Atari 2600. чЩ ИПФЙФЕ ЙУРПМШЪПЧБФШ APT ДМС ХУФБОПЧЛЙ ЬНХМСФПТБ Atari Й УЛБЮЙЧБОЙС ОЕЛПФПТЩИ ЙЗТ. нПЦЕФЕ УДЕМБФШ ФБЛ:

нЩ ОБЫМЙ ОЕУЛПМШЛП РБЛЕФПЧ, ЙНЕАЭЙИ ПФОПЫЕОЙЕ Л ФПНХ, ЮФП ОБН ФТЕВХЕФУС, ЧНЕУФЕ У ЛТБФЛЙНЙ ПРЙУБОЙСНЙ. юФПВЩ РПУНПФТЕФШ ВПМЕЕ РПМОЩЕ ПРЙУБОЙС, НПЦОП ДБФШ ЛПНБОДХ:

ч ЬФПН ЧЩЧПДЕ НЩ РПМХЮЙМЙ НОПЦЕУФЧП УЧЕДЕОЙК П РБЛЕФЕ, ЛПФПТЩК ЧЩ ИПФЙФЕ (ЙМЙ ОЕ ИПФЙФЕ) ХУФБОПЧЙФШ, ЧНЕУФЕ У РПМОЩН ПРЙУБОЙЕН РБЛЕФБ. еУМЙ РБЛЕФ ХЦЕ ХУФБОПЧМЕО Ч УЙУФЕНЕ ЙМЙ ЕУФШ ВПМЕЕ ОПЧБС ЧЕТУЙС, ФП ЧЩ ХЧЙДЙФЕ ЙОЖПТНБГЙА ПВ ПВПЙИ ЧЕТУЙСИ. оБРТЙНЕТ:

б ЮФПВЩ РПУНПФТЕФШ ФПМШЛП ЕЗП ЪБЧЙУЙНПУФЙ:

ч ПВЭЕН, НЩ ЙНЕЕН РПМОЩК БТУЕОБМ ДМС РПЙУЛБ ЙНЕО ОХЦОЩИ ОБН РБЛЕФПЧ.

5.2 рТЙНЕОЕОЙЕ dpkg ДМС РПЙУЛБ ЙНЕО РБЛЕФПЧ

юФПВЩ ОБКФЙ ЙНС РБЛЕФБ, ХУФБОПЧМЕООПЗП Ч ЧБЫЕК УЙУФЕНЕ, ЮФП РПМЕЪОП, ОБРТЙНЕТ, ЕУМЙ ЧЩ РМБОЙТХЕФЕ РПЮЙУФЙФШ НЕУФП ОБ ДЙУЛЕ, ДБКФЕ ЛПНБОДХ:

ЙМЙ ЙУРПМШЪПЧБФШ ПРЙУБОЙЕ ЙМЙ ЮБУФШ ЕЗП УМЕДХАЭЙН ПВТБЪПН:

5.3 хУФБОПЧЛБ РБЛЕФПЧ «РП ЪБРТПУХ»

дМС ЬФПЗП, Ч ПУОПЧОПН, ЪБРХУФЙФЕ:

пОБ ЪБРТПУЙФ ХУФБОПЧЛХ ОЕПВИПДЙНЩИ РБЛЕФПЧ Й ЧЩЪПЧЕФ apt-get БЧФПНБФЙЮЕУЛЙ. еУМЙ ЧЩ ТБВПФБЕФЕ Ч X, ФП ЗТБЖЙЮЕУЛЙК ЙОФЕТЖЕКУ ВХДЕФ РП ХНПМЮБОЙА ЪБНЕОЕО ОБ ФЕЛУФПЧЩК.

5.4 лБЛ ПРТЕДЕМЙФШ, ЛБЛПНХ РБЛЕФХ РТЙОБДМЕЦЙФ ЖБКМ

фБЛЦЕ ЧЩ НПЦЕФ РПУНПФТЕФШ УРЙУПЛ ЖБКМПЧ Ч РБЛЕФЕ ЛПНБОДПК:

apt-file ИТБОЙФ ВБЪХ ДБООЩИ, Ч ЛПФПТПК ПФУМЕЦЙЧБЕФ ЛБЛЙЕ ЖБКМЩ УПДЕТЦБФ РБЛЕФЩ ФБЛЦЕ, ЛБЛ ЬФП ДЕМБЕФ auto-apt Й ЕНХ ОХЦОП ЕЕ ПВОПЧМСФШ. ьФП ДЕМБЕФУС ФБЛ:

5.5 лБЛ РПМХЮЙФШ ЙОЖПТНБГЙА ПВ ЙЪНЕОЕОЙСИ Ч РБЛЕФЕ.

пРГЙС «Should apt-listchanges be automatically run by apt?» ПЮЕОШ РПМЕЪОБ, ФБЛ ЛБЛ РПЛБЪЩЧБЕФ УРЙУПЛ ЙЪНЕОЕОЙК, УДЕМБООЩИ Ч ЛБЦДПН ХУФБОПЧМЕООПН РТЙ ПВОПЧМЕОЙЙ РБЛЕФЕ, Й РПЪЧПМСЕФ ЧБН РТПБОБМЙЪЙТПЧБФШ УЙФХБГЙА РЕТЕД ФЕН, ЛБЛ РТПДПМЦЙФШ. пРГЙС «Should apt-listchanges prompt for confirmation after displaying changes?» ЪБРТБЫЙЧБЕФ Х ЧБУ ТБЪТЕЫЕОЙС РТПДПМЦБФШ РПУМЕ ЮФЕОЙС УРЙУЛБ ЙЪНЕОЕОЙК. еУМЙ ЧЩ УЛБЦЕФЕ, ЮФП ОЕ ИПФЙФЕ РТПДПМЦБФШ, ФП apt-listchanges ЧЕТОЕФ ПЫЙВЛХ Й apt РТЕТЧЕФ ХУФБОПЧЛХ.

рПУМЕ ХУФБОПЧЛЙ apt-listchanges, ЛБЛ ФПМШЛП РБЛЕФЩ УЛБЮБАФУС (ЙМЙ ВХДХФ РПМХЮЕОЩ У CD ЙМЙ УНПОФЙТПЧБООПЗП ДЙУЛБ) У РПНПЭША apt, НПЦОП ВХДЕФ УНПФТЕФШ УРЙУЛЙ ЙЪНЕОЕОЙК, УДЕМБООЩИ Ч ТБОЕЕ ХУФБОПЧМЕООЩИ РБЛЕФБИ.

Источник

Шпаргалка начинающего Debian/Ubuntu администратора по управлению пакетами

Краткая справка Debian администратора

Основное и общеизвестное

Получение информации о новых/обновлённых пакетах

Поиск пакета по именам пакетов

Поиск пакета по точному названию

Информация о пакете

Полное удаление (вместе с конфигами)

Очистить кэш загруженных пакетов (освободить место)

Для получения доп информации

и смотрим документацию (/usr/share/doc/aptitude/html/en/index.html), кому быструю справку по поисковым шаблонам, тому сюда — /usr/share/doc/aptitude/html/en/ch02s04.html. Если лень ставить доку, то в сети она есть.
Вводная на Debian Wiki: wiki.debian.org/Aptitude

А теперь то что не очевидно или требует полного прочтения документации

1. Как после update посмотреть какие пакеты будут обновлены?

также можно юзать (если поставить)

но после его установки точно также будет себя вести и обычный update

2. Как узнать что изменилось в пакетах которые будут обновлены?
Можно пробовать

для каждого пакета.
Но лучше поставить apt-listchanges, тогда перед любой установкой обновлений будет показан список изменений, по умолчанию настройки не очень удобные, поэтому лучше перенастроить под себя, например, выбрать формат вывода (пока использую текст, при больших обновлениях наверно pager лучше), не слать писем, спрашивать подтверждения, выводить всю информацию. Для этого нужно запустить

3. Что делать если обновление что-то поломало и нужно откатиться?
Отката нет, можно попробовать найти предыдущую версию пакета

4. Как найти все пакеты установленные вручную?
есть вариант команды (aptitude search ‘

M’), но к сожалению он не даёт желаемого результата, так что вопрос остаётся открытым, есть куча способов основанных на анализе логов

но простого и готового решения нет, да информация теоретически может быть потеряна при ротациях, нужно конфигурить

5. Как посмотреть список файлов в пакете?
если пакет установлен

для любых пакетов поставить apt-file и

6. Как посмотреть какому пакету принадлежит файл?

7. Как удалить все пакеты, где есть key в названии пакета?

8. Как удалить оставшиеся конфиги от удалённых пакетов?

9. Как найти пакет пакет, в котором содержится файл lib.so:

10. Как сконвертировать rpm пакет в deb?

11. Как найти список установленных ядер?

12. Как установить пакет из testing или experimental?
На эту тему нужно писать отдельно (например так), но если кратко, то команды для этого есть

13. Как удалить метапакет, но оставить одну из зависимостей?
придётся почитать документацию про ключ unmarkauto или глянуть сюда.

14. Как узнать что попало в файловую систему мимо системы управления пакетами?
Есть утилита cruft, хотя вопрос интерпретации результатов (файла report) пока открыт

15. Какие есть дополнительные репозитории?
Debian — wiki.debian.org/UnofficialRepositories
Ubuntu — множество всяких PPA

16. Что есть ещё?
apt-cdrom
apt-spy
auto-apt. заметка на хабре
apt-key
apt-add-repository
Некоторые вещи умеет только apt-get
Есть альтернативные утилиты для управления пакетами, например wajig, который пытается вобрать в себя функционал всех остальных утилит.

17. Как найти пакеты зависящие от данного

также может пригодится

Благодарю всех кто помог своими советами в рассылке, жж (JackYF) и хабре ( run4way, sledopit, nazarpc, AgaFonOff, amarao, traaance, adrianopol, Karamax). Замечания и дополнения приветствуются.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *