Как я могу узнать, какие программы содержит пакет 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но это потому, что этот пакет не устанавливает исполняемые файлы. Тем не менее, команды работают, попробуйте другой пакет.


Привет, Тердон, ты уверен, что команда должна работать на неустановленных приложениях? когда я пытаюсь, он просто предлагает установить. Что не так странно, поскольку файл .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 без изменений. Однако это может измениться в любое время.
Михаил Кремсер,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.