Как я могу узнать, какие программы содержит пакет apt-get?

17

Я хотел бы знать, что устанавливает какой-то конкретный пакет , например, при установке ncursesя обнаружил, что TABключ расширяется:

sudo apt-get install ncurses-

показывать:

ncurses-base      ncurses-doc       ncurses-hexedit
ncurses-bin       ncurses-examples  ncurses-term

Как я мог знать, что, скажем, ncurses-termустанавливает? Меня интересуют в основном программы, но библиотеки и любые другие типы файлов тоже могут быть полезны.

Метод командной строки , если это возможно, будет предпочтительным ( любые другие тоже принимаются).

Сопалахо де Арриерес
источник
Когда вы говорите «программы», вы говорите о двоичных файлах?
Брайам
Двоичные файлы и скрипты, если возможно, спасибо, @Braiam.
Сопалахо де Арриерес

Ответы:

21

Вот несколько вариантов, в них будут перечислены все файлы, установленные пакетом:

A. Перечисление всех файлов, включенных в пакет

  1. Для установленных пакетов

    dpkg -L ncurses-term
    
  2. Для всех пакетов, установленных или нет

    apt-file -F list ncurses-term
    

    В -Fвитках сопоставления с образцом так , что только пакеты , у которых точного названия матчи возвращаются. Возможно, вам придется установить apt-fileс помощью, sudo apt-get install apt-fileа затем обновить свою базу данных с помощью sudo apt-file update.

Б. Перечисление только исполняемых файлов, включенных в пакет

  1. Для установленных пакетов

    Просто установите dlocate( sudo apt-get dlocate) и запустите:

    dlocate -lsbin ncurses-term 
    

    Как объяснено в man dlocate:

    -lsbin Список полного пути / имен файлов исполняемых файлов (если есть) в пакете

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

    apt-file -F list ncurses-term | cut -d ' ' -f 2 | 
        while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
    

    Небольшой скриптлет, приведенный выше, напечатает только путь ( cut -d ' ' -f 2), а затем пропустит его через whileцикл, который проверяет, является ли файл исполняемым ( -x $file) и является ли он обычным файлом, без каталогов или символических ссылок ( -f $file), и печатает его имя только в случае прохождения обоих тестов. ,

  2. Для всех пакетов, установленных или нет

    Я не знаю, как перечислить только исполняемые файлы, включенные в неустановленный пакет. Однако, поскольку большинство исполняемых файлов установлены в binкаталогах, вы можете получить большинство из них, проанализировав вывод:

     apt-file -F list ncurses-term | grep -Ew "bin|sbin"
    

    -wВариант соответствует целым словам, так что вы не получите вещи , установленные, например, trashbinили любой другой .


ПРИМЕЧАНИЕ . Ни одна из вышеперечисленных команд не выдаст никакого вывода, ncurses-termно это потому, что этот пакет не устанавливает исполняемые файлы. Тем не менее, команды работают, попробуйте другой пакет.

terdon
источник
Привет, Тердон, ты уверен, что команда должна работать на неустановленных приложениях? когда я пытаюсь, он просто предлагает установить. Что не так странно, поскольку файл .install (вероятно) загружается вместе с приложением?
Джейкоб Влейм
@Jacob да, я только что попробовал с пакетом, который, как я знаю, не установлен, и apt-fileперечислил содержимое пакета. Работает над тестированием Debian и Ubuntu 13.10.
Тердон
Ага, спасибо, это имеет смысл, о котором я только что подумал, так как зависимости показаны и для неустановленных приложений.
Джейкоб Влейм
4

Вы можете использовать apt-файл:

sudo apt-file update        
apt-file list package_name
Сильвен Пино
источник
3
Если apt-fileне установлено, вы можете установить его с помощью sudo apt-get install apt-file.
Эдвин
3

Существует возможность использования вашего браузера (поэтому не требуется доступ к APT-системе). Например, чтобы просмотреть содержимое файла пакета "ncurses-term", просто введите

https://packages.debian.org/wheezy/all/ncurses-term/filelist

в адресную строку вашего браузера (при необходимости замените «wheezy») на Debian или

http://packages.ubuntu.com/saucy/all/ncurses-term/filelist

для Ubuntu (при необходимости замените "saucy").

Михаил Кремсер
источник
Интересный метод. Этот список предназначен для пакетов Debian, поэтому: должен ли он быть одинаковым для любого другого дистрибутива, такого как Ubuntu или Kali?
Сопалахо де Аррирес
1
@Sopalajo de Arrierez: Читайте точно: я также разместил ссылку на этот же пакет (в этом примере ncurses-term) для Ubuntu. Список файлов может быть таким же, если конкретная версия Ubuntu имеет ту же версию пакета, что и один из наборов Debian, но это не обязательно. Ubuntu, Kali, Aptosid, CrunchBang и все другие дистрибутивы на основе Debian могут вносить изменения в пакеты по своему усмотрению (особенно такие файлы, как «README» или файлы конфигурации для системы init).
Михаил Кремсер,
Я понимаю, @MichaelKremser. Итак, как я вижу, поиск содержимого пакета в Интернете полезен, но, предпочтительно, вам следует искать в официальном списке пакетов вашего конкретного дистрибутива.
Сопалайо де Арриерес
1
@ Сопалахо де Арриерес: Да, верно. Если вы работаете в Debian Wheezy, используйте список пакетов для Debian Wheezy, если вы участвуете в тестировании Debian, используйте его, если вы используете Ubuntu Precise, возьмите его список. Различия всегда могут быть, хотя, например, Ubuntu принимает много пакетов из Debian без изменений. Однако это может измениться в любое время.
Михаил Кремсер,