Мы уже знали, как составить список установленных пакетов, а также как вывести список зависимостей пакета на Linux.
Сегодня мы увидим, как составить список содержимого пакета Linux.
Неважно, установлен ли пакет или нет.
Можно прочитать содержимое как установленного , так и неустановленного пакета.
В Linux и Unix большинство программ обычно не попадают в один каталог.
При установке пакета все файлы в этом пакете разбросаны по файловой системе и сохранены по разным путям.
Обычно исполняемые файлы (например, бинарники/скрипты) хранятся в каталогах /bin или /usr/bin или /usr/local/bin, библиотеки /usr/lib, файлы конфигурации в «/etc», статические данные в «/usr/share» и т. д.
Теперь давайте найдем список файлов в пакете и где они на самом деле хранятся на Linux.
Как просмотреть подробную информацию о пакете в Linux
Перечислим содержимое пакета Linux
Сначала мы увидим, как читать содержимое пакета в системах на основе DEB, например, в Ubuntu.
Список содержимого установленного пакета в Ubuntu
Я уже установил пакет Microsoft Teams на свою Ubuntu 20.04.
Чтобы просмотреть содержимое пакета Microsoft Teams, просто запустите:
$ dpkg -L teams
Пример вывода:
/. /usr /usr/bin /usr/bin/teams /usr/share /usr/share/applications /usr/share/applications/teams.desktop /usr/share/pixmaps /usr/share/pixmaps/teams.png /usr/share/teams . . . /usr/share/teams/swiftshader/libEGL.so /usr/share/teams/swiftshader/libGLESv2.so /usr/share/teams/teams /usr/share/teams/v8_context_snapshot.bin
Приведенный выше вывод показывает файлы, установленные пакетом Teams, и их расположение в моей системе Ubuntu.
Вот еще один способ просмотреть содержимое установленного пакета в Ubuntu:
$ dpkg-query -L teams
Перечислим содержимое неустановленного пакета на Ubuntu
Как я уже сказал, приведенные выше команды отображают содержимое установленного пакета.
А что если пакет не установлен и вы хотите прочитать его содержимое?
Это тоже возможно!
Вы можете найти, какие файлы будут установлены пакетом, еще до его установки.
Сначала загрузите файл .deb.
Перейдите в папку, в которую вы скачали файл пакет .deb, и выполните следующую команду, чтобы просмотреть его содержимое:
$ dpkg --contents teams_1.2.00.32451_amd64.deb
или
$ dpkg -c teams_1.2.00.32451_amd64.deb
Пример вывода:
drwxr-xr-x root/root 0 2019-11-20 20:55 ./ drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/ drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/bin/ -rwxr-xr-x root/root 286 2019-11-20 20:54 ./usr/bin/teams drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/share/ drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/share/applications/ -rw-r--r-- root/root 352 2019-11-20 20:54 ./usr/share/applications/teams.desktop . . . -rwxr-xr-x root/root 286264 2019-11-20 20:54 ./usr/share/teams/swiftshader/libEGL.so -rwxr-xr-x root/root 2677296 2019-11-20 20:54 ./usr/share/teams/swiftshader/libGLESv2.so -rwxr-xr-x root/root 114944384 2019-11-20 20:54 ./usr/share/teams/teams -rw-r--r-- root/root 1040824 2019-11-20 20:54 ./usr/share/teams/v8_context_snapshot.bin
Кроме того, вы можете сделать это с помощью инструмента apt-file.
Установите apt-file, как показано ниже, если он еще не установлен:
$ sudo apt install apt-file
Если вы только что установили apt-file, кеш системы может быть пустым.
Вам необходимо запустить «apt-file update» от имени пользователя root, чтобы обновить кеш.
Вы также можете запустить «apt-file update» от обычного пользователя, чтобы использовать кеш в домашнем каталоге.
Давайте обновим кеш базы данных командой:
$ sudo apt-file update
Теперь перечислите содержимое установленного пакета, например vim, как показано ниже:
$ apt-file list vim
Вывод:
vim: /usr/bin/vim.basic vim: /usr/share/bug/vim/presubj vim: /usr/share/bug/vim/script vim: /usr/share/doc/vim/NEWS.Debian.gz vim: /usr/share/doc/vim/changelog.Debian.gz vim: /usr/share/doc/vim/copyright vim: /usr/share/lintian/overrides/vim
Инструмент apt-file также используется для поиска пакетов, предоставляющих определенный файл.
Например, найдем пакет, который предоставляет файл alisp.h командой:
$ apt-file find alisp.h
или
$ apt-file search alisp.h
Пример вывода:
libasound2-dev: /usr/include/alsa/alisp.h
Как видите, пакет «libasound2-dev» предоставляет файл alisp.h.
Список содержимого установленного / неустановленного пакета на CentOS
В системах на основе RPM, таких как CentOS, мы можем найти содержимое пакета, используя команду «repoquery».
Пакет «yum-utils» предоставляет команду repoquery, поэтому давайте установим его с помощью команды:
$ sudo yum install yum-utils
Теперь давайте выясним содержимое пакета редактора «nano» с помощью команды:
# repoquery --installed --list nano
или
# repoquery --list nano
или
# repoquery -l nano
вывод:
Last metadata expiration check: 0:03:02 ago on Tuesday 16 June 2020 06:01:46 PM IST. /etc/nanorc /usr/bin/nano /usr/bin/rnano /usr/lib/.build-id /usr/lib/.build-id/d3 . . . /usr/share/nano/tcl.nanorc /usr/share/nano/tex.nanorc /usr/share/nano/texinfo.nanorc /usr/share/nano/xml.nanorc
Перейдите в папку, в которую вы загрузили rpm-файл, и просмотрите его содержимое, как показано ниже:
# repoquery --list nano-2.9.8-1.el8.x86_64.rpm
см. также:
Как перечислить зависимости пакета в Linux
🐧 Как установить Perl-модули на Linux