Поиск по сайту:

Найдите пакет, который предоставляет определенный файл в Linux

В этом кратком руководстве объясняется несколько различных способов найти пакет, предоставляющий определенный файл в Linux. Это может быть полезно при компиляции и установке пакета вручную. Когда вы компилируете пакет из исходного кода, есть вероятность, что вы можете получить сообщение об ошибке, например «Нет правила для создания целевого объекта «», необходимого для «». Стоп». . Вы можете не знать точно, какие пакеты содержат недостающий файл. В таких случаях вы можете легко найти пакеты, содержащие недостающие файлы, и установить их в свой компьютер Linux, как описано в этом руководстве.

Найдите пакет, который предоставляет определенный файл в Linux

Arch Linux, Antergos, Manjaro Linux:

В Arch есть небольшой инструмент командной строки под названием pkgfile, который используется для поиска файлов в пакетах.

Pkgfile поставляется с предустановленным Arch Linux. Если это не так, вы можете установить его с помощью следующей команды:

sudo pacman -S pkgfile

Затем выполните следующую команду для синхронизации с базой данных pkgfile:

sudo pkgfile -u

Теперь вы можете найти пакет, предоставляющий определенный файл, например, alisp.h, используя команду:

pkgfile alisp.h
extra/alsa-lib

Как видно из приведенного выше вывода, пакет alsa-lib предоставляет файл alisp.h. Пакет доступен в репозитории extra. Теперь вы можете установить этот пакет, как показано ниже.

sudo pacman -S alsa-lib

Чтобы просмотреть все файлы, предоставленные пакетом alsa-lib, запустите:

pkgfile -l alsa-lib

Fedora, RHEL, CentOS, AlmaLinux, Rocky Linux:

В системах на базе RPM, таких как Fedora, RHEL и их клонах, таких как CentOS, AlmaLinux и Rocky Linux, вы можете найти пакет, владеющий определенным файлом, с помощью следующей команды:

dnf provides '*filename'

Или,

yum whatprovides '*filename'

Если файл уже доступен в вашей системе, например, /bin/ls, вы можете найти пакет, которому принадлежит файл, с помощью команды:

# rpm -qf /bin/ls
coreutils-8.22-18.el7.x86_64

Вы также можете использовать команду repoquery следующим образом:

repoquery -f /bin/ls

Если команда repoquery недоступна в вашей системе, установите пакет yum-utils .

sudo yum install yum-utils

Или,

sudo dnf install yum-utils

Debian, Ubuntu, Linux Mint:

В любой системе на базе DEB вы можете найти пакет, предоставляющий определенный файл, с помощью инструмента apt-file.

Установите apt-файл, как показано ниже, если он еще не установлен:

sudo apt-get install apt-file

Если вы только что установили apt-файл, общесистемный кеш может быть пуст. Вам нужно запустить «apt-file update» от имени пользователя root, чтобы обновить кеш. Вы также можете запустить «обновление apt-файла» от имени обычного пользователя, чтобы использовать кеш в домашнем каталоге пользователя.

Давайте обновим кеш базы данных с помощью команды:

sudo apt-file update

А затем найдите пакеты, содержащие определенный файл, например alisp.h, с помощью команды:

apt-file find alisp.h

Или,

apt-file search alisp.h

Образец будет:

libasound2-dev: /usr/include/alsa/alisp.h

Да, libasound2-dev это так! Вы можете установить этот пакет с помощью команды:

sudo apt-get install libasound2-dev

Если у вас уже есть файл и вы просто хотите узнать, к какому пакету он принадлежит, вы можете использовать команду dpkg, как показано ниже.

dpkg -S $(which alisp.h)

Или,

dpkg -S `which alisp.h`

Если вы знаете полный путь к файлу, например /bin/ls, вы можете найти пакеты, к которым он принадлежит, с помощью следующей команды:

dpkg -S /bin/ls
coreutils: /bin/ls

SUSE/openSUSE:

В SUSE и openSUSE выполните следующую команду, чтобы узнать, к какому пакету принадлежит определенный файл.

zypper wp alisp.h

Или,

zypper se --provides --match-exact alisp.h

И это все. Надеюсь это поможет. Если вам известны какие-либо другие способы найти пакет, содержащий определенный файл, сообщите нам об этом в разделе комментариев ниже. Я проверю и обновлю руководство соответствующим образом.

Рекомендуется прочитать:

  • Как составить список установленных пакетов из определенного репозитория в Linux
  • Как найти зависимости для определенного пакета в CentOS

Статьи по данной тематике