You are here: Home » Справка и подсказки » Как узнать, в каком пакете находится файл

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

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

Эта статья поможет вам — в ней рассказано, как искать в пакетах по имени файла. Причём сразу по всем пакетам — независимо от того, установлены они или нет.

Утилита pkgfile ищет в метаданных .files, созданных repo-add, чтобы получить информацию о файлах о пакетах. По умолчанию указанная цель считается именем файла и pkgfile вернёт пакеты, содержащие этот файл. Репозитории, в которых ищет pkgfile, определяются теми, которые включены в /etc/pacman.conf.

Для установки программы выполните команду:

sudo pacman -S pkgfile

Обновите сохранённые файлы метаданных.

sudo pkgfile --update

К примеру, мне нужно узнать, в каком пакете находится файл finger. Тогда я запускаю следующую команду:

pkgfile finger

Как можно увидеть, pkgfile прекрасно справилась со своей задачей — исполнимый файл finger находится в пакете netkit-bsd-finger в репозитории blackarch.

С помощью опции -l, --list можно посмотреть содержимое любого пакета:

pkgfile -l netkit-bsd-finger

Целью считается имя пакета, а не имя файла, и возвращается содержимое указанного пакета. Это позволяет использовать синтаксис стиля репо/пакет (например, "core / pacman"), чтобы ограничить диапазон поиска, но только когда --list используется без параметров --glob или --regex.

Эвристика поиска совпадений

В режиме --search и без опции --regex или --glob, pkgfile попытается сопоставить предоставленную цель как точное имя файла. Если цель содержит символ '/', то будет сделана попытка найти совпадение по полному пути. При включённом поиске --regex и --glob, pkgfile всегда будет соответствовать полному пути.

В режиме --list и без опции --regex или --glob, pkgfile попытается сопоставить предоставленную цель как точное имя пакета. Если цель содержит символ '/', текст перед косой чертой будет считаться репозиторием, и поиск будет ограничен только этим репозиторием.

Все опции pkgfile

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

pkgfile [ОПЦИИ] ЦЕЛЬ

Опции:

 Действия:
  -l, --list              показать содержимое пакета
  -s, --search            поиск пакета, содержащего цель (по умолчанию)
  -u, --update            обновить репозиторий списков файлов

 Совпадение:
  -b, --binaries          возвращать только файлы, содержащиеся в директории bin
  -d, --directories       поиск по именам директорий
  -g, --glob              включить совпадения с подстановочными символами
  -i, --ignorecase        регистронезависимый поиск
  -R, --repo <РЕПОЗИТОРИЙ>       поиск в указанном репозитории
  -r, --regex             включить поиск по регулярным выражениям

 Вывод:
  -q, --quiet             выводить меньше при листинге
  -v, --verbose           выводить больше
  -w, --raw               отключить выравнивание вывода
  -0, --null              окончанием вывода является символ null

 Загрузка:
  -z, --compress[=ТИП]   сжать загруженные репозитории

 Общие:
  -C, --config <ФАЙЛ>     использовать альтернативный конфигурационный файл (по умолчанию: /etc/pacman.conf)
  -D, --cachedir <ДИРЕКТОРИЯ>    использовать альтернативную директорию кэширования (по умолчанию: /var/cache/pkgfile)
  -h, --help              показать справку и выйти
  -V, --version           показать версию и выйти

Смотрите также «Как в Arch Linux (BlackArch, Manjaro) посмотреть информацию о пакете».

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

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