apt-file -- утилита поиска пакетов APT -- интерфейс командной строки
apt-file [options] search pattern
apt-file [options] show package
apt-file — это инструмент командной строки для поиска файлов в пакетах для системы управления пакетами APT.
Для запуска поиска необходимы некоторые действия:
Псевдоним для поиска.
Перечислите содержимое пакета. Это действие очень похоже на команду dpkg -L, за исключением того, что пакет не нужно устанавливать или скачивать. По умолчанию действие list интерпретирует свой шаблон так, как если бы был указан --fixed-string.
Перечислите известные индексы контента и их статус в удобочитаемом формате. Эти индексы можно искать с помощью параметра -I (если он включен и после получения индексов). Выходные данные могут быть изменены без предварительного уведомления и поэтому не подходят для использования/автоматизации сценария. Для машиночитаемых форматов (например, автоматизации) используйте дамп apt-config (ищите параметры, начинающиеся с Acquire::IndexTargets) и apt-get indextargets для проверки кеша (ищите записи с полем Идентификатор, начинающимся с Contents-). Обратите внимание, что отдельные записи в sources.list могут переопределять глобальное значение по умолчанию. Обратитесь к sources.list (5) для получения дополнительной информации о расширенной настройке файлов sources.list.
Найдите, в какой пакет включен файл. Возвращается список всех пакетов, содержащих шаблон шаблона. Поскольку файлы Contents не содержат каталогов, шаблон должен соответствовать (частью) имени файла. По умолчанию действие search интерпретирует свой шаблон так, как если бы было указано --substring-match.
Псевдоним для списка.
Это действие просто вызывает apt update или apt-get update (в зависимости от того, доступен ли tty). Единственное преимущество использования этого перед обычным apt update или apt-get update напрямую — это случай, когда вы настроили конкретную конфигурацию apt-файла (через Dir::Etc::apt-file-main). В этом случае указанная конфигурация будет включена автоматически.
Доступны следующие варианты:
Эта опция полезна, если вы ищете пакет для архитектуры, отличной от той, что установлена в вашей системе. Это может быть список, разделенный запятыми, для поиска по нескольким архитектурам.
Конфигурационный файл; Укажите файл конфигурации для использования. Программа прочитает файл конфигурации по умолчанию, а затем этот файл конфигурации. Если перед анализом файлов конфигурации по умолчанию необходимо задать параметры конфигурации, укажите файл с переменной среды APT_CONFIG. См. apt.conf (5) для информации о синтаксисе. Файл конфигурации будет прочитан относительно того, когда он появится в командной строке, и может перезаписать параметры, которые появляются перед ним. Обратите внимание, что файл конфигурации также будет передан всем инструментам APT, вызываемым apt-file.
Использовать содержимое заданных архивов .deb в качестве шаблонов. Полезно для поиска конфликтов файлов с другими пакетами. Подразумевает -Ф.
Читать шаблоны из заданного файла (файлов), по одному в строке. Использовать - как имя файла для стандартного ввода. Если файлы не указаны, то список будет прочитан со стандартного ввода. Это намного быстрее, чем многократный вызов apt-file.
Ищите только индексы из перечисленных источников (например, Debian). Этот фильтр соответствует имени, указанному в поле Происхождение в файле выпуска. Если установлено значение «*», этот фильтр будет отключен (в основном полезно для переопределения параметра в файле конфигурации). Псевдоним параметра конфигурации APT: apt-file::Search-Filter::Origin
Ищите только индексы из перечисленных наборов или кодовых имен (например, нестабильный). Этот фильтр сопоставляется с именем, указанным в полях Codename и Suite в файле Release. Это означает, что либо нестабильный пакет, либо sid будут соответствовать нестабильному пакету Debian. Если установлено значение «*», этот фильтр будет отключен (в основном полезно для переопределения параметра в файле конфигурации). Псевдоним параметра конфигурации APT: apt-file::Search-Filter::Suite
Не расширяйте шаблон поиска общими символами в начале и в конце шаблона. Это значение по умолчанию для действий show и list.
Искать только в индексах с заданным именем(ями). Если установлено специальное значение ALL (с учетом регистра), поиск выполняется по всем индексам apt-file. Имена должны совпадать с одним или несколькими идентификаторами, используемыми в конфигурации APT (минус начальное содержание-). Пример, если в конфигурации есть следующие фрагменты:
Acquire::IndexTargets::deb::Contents-deb { ... }; Acquire::IndexTargets::deb-src::Contents-dsc { ... }; Acquire::IndexTargets::deb::Contents-udeb { ... }; Acquire::IndexTargets::deb::Contents-deb-legacy { # Explicitly named to "Contents-deb" Identifier "Contents-deb"; ...; };
Затем apt-file распознает deb, dsc и udeb как имена индексов. Этот параметр по умолчанию равен значению параметра конфигурации apt-file::Index-Names apt (или deb, если он не указан).
Игнорировать регистр при поиске шаблона.
Отображать только имя пакета; не отображать имена файлов.
Это специальная опция, полезная для работы с поисковыми запросами, дающими большое количество совпадений (более 10 000) или/и автоматической обработкой результатов. Отключите логику дедупликации и немедленно выдайте результат при обнаружении совпадения. Это может значительно снизить требования к памяти для apt-файла при обработке поиска с большим количеством совпадений. Это также уменьшит время до выдачи первого совпадения, что может быть полезно, если совпадения можно обрабатывать по мере их обнаружения, а потребитель может обрабатывать повторяющиеся совпадения.
Установите параметр конфигурации; Это установит произвольный параметр конфигурации. Синтаксис: -o APT::Option=Value. -o и --option можно использовать несколько раз для установки разных параметров. Этот параметр может использоваться для перезаписи других параметров командной строки (например, -o apt-file::Search-Filter::Origin=Debian фактически аналогичен --filter-origins Debian). Обратите внимание, что параметры конфигурации, переданные через этот параметр, также будут переданы всем инструментам APT, вызываемым apt-file.
Соответствует, если заданный шаблон поиска является подстрокой пути или пакета. Это значение по умолчанию для действий search и find.
Запустите apt-файл в подробном/отладочном режиме.
Рассматривайте шаблон как регулярное выражение (perl). Подробнее см. perlreref (1). Без этой опции шаблон обрабатывается как литеральная строка для поиска. Имейте в виду, что этот вариант может быть довольно медленным. Если производительность является проблемой, подумайте о том, чтобы дать apt-файлу слишком много совпадений с шаблоном, не являющимся регулярным выражением, и направьте вывод в perl -ne '/
Отображение краткого экрана справки.
Команда apt-file зависит от конфигурации APT. Примечательно, что конфигурация по умолчанию позволяет apt извлекать файлы содержимого по умолчанию во время вызова apt update.
Информацию о том, как настроить APT для извлечения большего или меньшего количества файлов содержимого, см. в /usr/share/doc/apt-file/README.md.gz.
Следующие файлы особенно интересны:
Обратите внимание, что этот путь на самом деле можно настроить, изменив значение конфигурации APT с именем Dir::Etc::apt-file-main. Указанное значение является просто значением по умолчанию для этой опции. Если этот файл присутствует, apt-file будет читать этот файл после всех файлов конфигурации APT по умолчанию. Любой файл конфигурации -c или параметр (-o) будут оцениваться перед этим файлом (и могут переопределять установленные в нем параметры). Файл также будет передан всем инструментам APT, вызываемым apt-file.
Выбирает файлы содержимого для загрузки. Обратите внимание, что apt-file распознает только цели Acquire, которые начинаются с Contents-.
Вот некоторые рабочие процессы, связанные с apt-file 2, и способы (почти) их эмуляции с помощью apt-file 3. Они задокументированы как начало точка для людей, которые к ним привязаны.
Эмуляция может быть не идеальной для вас из коробки. Патчи приветствуются, чтобы поддерживать актуальность примеров, пока примеры остаются тривиальными.
Сделайте так, чтобы apt-file update извлекал только файлы содержимого. Если вы привыкли к тому, что apt update не извлекает файлы содержимого, вы можете запустить / usr/share/doc/apt-file/examples/apt-file-2-update.sh. Этот скрипт настроит apt и apt-file соответствующим образом после максимальных усилий. Прочтите получившийся файл /etc/apt/apt-file.conf.
Creating/using user caches Previous versions of apt-file had a --cache option, which could be used to denote a directory to store the Contents files. This can be emulated by doing:
# Setup $ mkdir -p ~/.cache/apt-file ~/.config $ touch ~/.cache/apt-file/dpkg-status $ sed '/^Dir::State/ d; /^Dir::Cache/ d;' \ /usr/share/doc/apt-file/examples/apt-file.conf \ > ~/.config/apt-file.conf $ cat <> ~/.config/apt-file.conf Dir::State "$HOME/.cache/apt-file"; Dir::Cache "$HOME/.cache/apt-file"; Dir::State::status "$HOME/.cache/apt-file/dpkg-status"; EOF # Update the cache $ apt-file -c ~/.config/apt-file.conf update # Search using the cache $ apt-file -c ~/.config/apt-file.conf show apt-file # Removal of the cache + config $ rm -fr ~/.cache/apt-file ~/.config/apt-file.conf
(You will probably want to add an alias apt-file in your ~/.bashrc) Please read the resulting ./apt-file-user-cache.conf.
Есть некоторые известные проблемы или особенности, о которых следует помнить.
Файлы содержимого не содержат начальную косую черту в путях. Это означает, что /bin/ls указан как bin/ls в файле содержимого. Если вы ищете что-то в каталоге верхнего уровня, зачастую лучше опустить косую черту. Алгоритм поиска попытается обойти косую черту в начале, но не во всех случаях. В качестве обходного пути попробуйте поставить косую черту в начале регулярных выражений. Например, используйте /(?:usr/bin/vim|sbin/lvm) вместо /usr/bin/vim|/sbin/lvm.
Когда в sources.list добавлена новая строка, а apt update не запущен, apt-file не выводит предупреждающее сообщение.
По умолчанию apt-file предполагает, что файлы содержимого не содержат описательный заголовок (объясняющий, что такое файл и как его интерпретировать). Однако некоторые инструменты генерировали их с таким заголовком (например, для старых версий файлов Contents для архива Debian или файлов Contents, сгенерированных reprepro до версии 5.2.0). Если вы ищете такие файлы, вам нужно установить для параметра apt-file::Parser::Check-For-Description-Header значение true (например, в /etc/apt/apt.conf. d/50apt-file.conf), чтобы apt-file правильно отфильтровывал заголовки во избежание ложных совпадений. Причина, по которой это не используется по умолчанию, заключается в том, что это требует двойных накладных расходов, в то время как большинство распространенных файлов содержимого больше не имеют заголовка. (подробнее см. № 881405).
Не во всех репозиториях APT есть файлы содержимого. Примечательно, что распространенные установочные носители (компакт-диски и т. д.) могут не включать их для экономии места. Конфигурация по умолчанию с помощью apt-file помечает файлы содержимого как необязательные и просто не выполняет поиск в файлах содержимого в таких репозиториях.
apt-file имеет следующие определенные коды выхода, которые можно использовать для сценариев.
apt-file успешно возвращен. Если команда была поиском, был хотя бы один результат.
apt-file успешно завершил поиск, но не дал результатов.
Произошла ошибка (включая недопустимые/конфликтующие параметры пользователя).
apt-file не может выполнить команду, так как кеш пуст. Убедитесь, что в конфигурации APT включены индексы, и запустите apt update, чтобы получить их.
apt-file не может выполнить команду, так как в кеше нет файлов, соответствующих ограничениям. Либо измените ограничения (например, --index-names), либо настройте apt для получения соответствующих файлов и запустите apt update.
Произошла внутренняя ошибка/неперехваченное исключение в apt-файле. Сообщите об ошибке в apt-file.
Любой другой код выхода зарезервирован для использования в будущем.
apt (1), apt-cache (8), apt.conf (5)
The APT users guide in /usr/share/doc/apt/
The example config in /usr/share/doc/apt-file/examples
The README at /usr/share/doc/apt-file/README.md.gz