pkgfile (Русский)

From ArchWiki
Jump to: navigation, search

Состояние перевода: На этой странице представлен перевод статьи Pkgfile. Дата последней синхронизации: 2015-02-17. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

pkgfile — это инструмент для поиска файлов внутри пакетов из официальных репозиториев.

Установка

Установите pkgfile из официальных репозиториев или pkgfile-gitAUR из AUR.

Для синхронизации базы данных pkgfile используйте команду:

# pkgfile -u

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

Чтобы найти пакет, который владеет файлом makepkg:

$ pkgfile makepkg
core/pacman

Чтобы отобразить все файлы из пакета archlinux-keyring:

$ pkgfile -l archlinux-keyring
core/archlinux-keyring usr/
core/archlinux-keyring usr/share/
core/archlinux-keyring usr/share/pacman/
core/archlinux-keyring usr/share/pacman/keyrings/
core/archlinux-keyring usr/share/pacman/keyrings/archlinux-revoked
core/archlinux-keyring usr/share/pacman/keyrings/archlinux-trusted
core/archlinux-keyring usr/share/pacman/keyrings/archlinux.gpg

Это аналогично pacman -Ql (смотрите pacman (Русский)#Запросы к базам данных пакетов), за тем исключением, что не требует установки пакета.

Команда не найдена

pkgfile добавляет хук "command not found" для Bash и Zsh, который автоматически выполняет поиск в официальных репозиториях, если была введена неизвестная команда:

$ abiword
abiword may be found in the following packages:
  extra/abiword 2.8.6-7 usr/bin/abiword

Чтобы это работало во всех дочерних оболочках, необходимо прописать этот хук в файле инициализации вашей командной оболочки.

Bash

~/.bashrc
source /usr/share/doc/pkgfile/command-not-found.bash

Zsh

~/.zshrc
source /usr/share/doc/pkgfile/command-not-found.zsh

Fish

pkgfile не предоставляет хук специально для Fish, однако, вы можете создать собственную функцию command-not-found, которая будет запускаться каждый раз, когда Fish обнаруживает неизвестную команду:

~/.config/fish/functions/command-not-found.fish
function command-not-found
        set cmd $argv[2]
        set pkgs (pkgfile -b -v $argv  2>/dev/null)
        set pkgs_test (echo $pkgs[1] / xargs)   ## trim spaces and line feeds
        if test -n $pkgs_test
                echo "$cmd may be found in the following packages:"
                echo -e $pkgs"\n"
                return 0
        else
                echo "Command not found in any package."
        end
        return 127
end

В строке 4 `/` заменить на `|`

Автоматические обновления

pkgfile поставляется вместе со службой и таймером systemd для автоматической синхронизации базы данных. Для включения автоматического обновления включите таймер pkgfile-update.timer.

По умолчанию, база данных обновляется ежедневно. Чтобы это изменить, скопируйте /usr/lib/systemd/system/pkgfile-update.timer в /etc/systemd/system/pkgfile-update.timer и отредактируйте копию файла под ваши нужды.