Типичный вопрос перед установкой нового пакета deb в нашей системе заключается в том, какие фактические файлы были установлены и где находятся новые файлы.
Критическая ситуация возникает при замене нежелательного файла, который вы никогда не хотели заменять.
Поэтому сегодня в этом уроке я сосредоточусь на шагах, когда вы, как системный администратор, можете просматривать файлы перед установкой пакета и убедиться, что вы в безопасности.
Мы будем использовать Ubuntu 18.04 для этой статьи, и она должна работать для всех других дистрибутивов Linux, поддерживающих пакеты deb.
Чтобы отобразить содержимое не установленного пакета, нам понадобится пакет .deb. Давайте загрузим пакет Ubuntu для нашего тестирования.
В качестве примера возьмем пакет «curl».
# sudo wget http://archive.ubuntu.com/ubuntu/pool/main/c/curl/curl_7.58.0-2ubuntu3_amd64.deb # ls
curl_7.58.0-2ubuntu3_amd64.deb DEBIAN Desktop Documents Downloads examples.desktop Music Pictures Public Templates Videos
dpkg пакеты
Мы можем захватить информацию о пакете «dpkg -I» … Но он не скажет нам содержимое.
dpkg – это менеджер пакетов для систем на базе Debian.
Чтобы просмотреть содержимое, используйте команду «–contents» или «-c» для команды dpkg.
# dpkg -c curl_7.58.0-2ubuntu3_amd64.deb
ИЛИ
# dpkg-deb -c curl_7.58.0-2ubuntu3_amd64.deb
drwxr-xr-x root/root 0 2018-03-15 17:50 ./ drwxr-xr-x root/root 0 2018-03-15 17:50 ./usr/ drwxr-xr-x root/root 0 2018-03-15 17:50 ./usr/bin/ -rwxr-xr-x root/root 223304 2018-03-15 17:50 ./usr/bin/curl drwxr-xr-x root/root 0 2018-03-15 17:50 ./usr/share/ drwxr-xr-x root/root 0 2018-03-15 17:50 ./usr/share/doc/ drwxr-xr-x root/root 0 2018-03-15 17:50 ./usr/share/doc/curl/ -rw-r--r-- root/root 10955 2018-01-25 01:57 ./usr/share/doc/curl/copyright drwxr-xr-x root/root 0 2018-03-15 17:50 ./usr/share/man/ drwxr-xr-x root/root 0 2018-03-15 17:50 ./usr/share/man/man1/ -rw-r--r-- root/root 38989 2018-03-15 17:50 ./usr/share/man/man1/curl.1.gz drwxr-xr-x root/root 0 2018-03-15 17:50 ./usr/share/zsh/ drwxr-xr-x root/root 0 2018-03-15 17:50 ./usr/share/zsh/vendor-completions/ -rw-r--r-- root/root 12851 2018-03-15 17:50 ./usr/share/zsh/vendor-completions/_curl lrwxrwxrwx root/root 0 2018-03-15 17:50 ./usr/share/doc/curl/NEWS.Debian.gz -> ../libcurl4/NEWS.Debian.gz lrwxrwxrwx root/root 0 2018-03-15 17:50 ./usr/share/doc/curl/changelog.Debian.gz -> ../libcurl4/changelog.Debian.gz
Выше мы можем увидеть детали содержимого данного пакета.
Недостатки – мы должны были загрузить пакет .deb.
Чтобы узнать, из какого пакета появился определенный файл .deb:
# sudo dpkg -S curl libcurl3:amd64: /usr/share/doc/libcurl3/NEWS.Debian.gz libcurl3-gnutls:amd64: /usr/share/doc/libcurl3-gnutls/changelog.Debian.gz bash-completion: /usr/share/bash-completion/completions/curl libpython2.7-stdlib:amd64: /usr/lib/python2.7/macurl2path.py libcurl3:amd64: /usr/share/doc/libcurl3 python3-pycurl: /usr/share/doc/python3-pycurl libcurl3:amd64: /usr/lib/x86_64-linux-gnu/libcurl.so.4.4.0 libcurl3-gnutls:amd64: /usr/share/doc/libcurl3-gnutls/copyright libcurl3-gnutls:amd64: /usr/share/doc/libcurl3-gnutls/NEWS.Debian.gz gnupg: /usr/lib/gnupg/gpgkeys_curl python3-pycurl: /usr/lib/python3/dist-packages/curl libcurl3:amd64: /usr/share/lintian/overrides/libcurl3 python3-pycurl: /usr/share/doc/python3-pycurl/copyright libcurl3:amd64: /usr/share/doc/libcurl3/changelog.Debian.gz libpython3.5-stdlib:amd64: /usr/lib/python3.5/macurl2path.py python3-pycurl: /usr/share/doc/python3-pycurl/changelog.Debian.gz libcurl3:amd64: /usr/share/doc/libcurl3/copyright libcurl3:amd64: /usr/lib/x86_64-linux-gnu/libcurl.so.4 libcurl3:amd64: /usr/lib/x86_64-linux-gnu/libcurl.so.3 python3-pycurl: /usr/lib/python3/dist-packages/curl/__init__.py python3-pycurl: /usr/lib/python3/dist-packages/pycurl.cpython-35m-x86_64-linux-gnu.so libcurl3-gnutls:amd64: /usr/share/lintian/overrides/libcurl3-gnutls libcurl3-gnutls:amd64: /usr/share/doc/libcurl3-gnutls python3-pycurl: /usr/lib/python3/dist-packages/pycurl-7.43.0.egg-info libcurl3-gnutls:amd64: /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 libcurl3-gnutls:amd64: /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.3 libcurl3-gnutls:amd64: /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.4.0 ....
С помощью опции -L мы просим dpkg указать содержимое установленного пакета, указав его имя.
Чтобы просмотреть файлы, установленные пакетом:
# sudo dpkg -L curl /. /usr /usr/bin /usr/bin/curl /usr/share /usr/share/doc /usr/share/doc/curl /usr/share/doc/curl/copyright /usr/share/zsh /usr/share/zsh/vendor-completions /usr/share/zsh/vendor-completions/_curl /usr/share/man /usr/share/man/man1 /usr/share/man/man1/curl.1.gz /usr/share/doc/curl/changelog.Debian.gz /usr/share/doc/curl/NEWS.Debian.gz ...
Просмотр файлов с использованием apt-file
«apt-file» – программный пакет, в котором перечислены содержимое пакетов в ваших репозиториях и вы можете искать определенный файл среди всех доступных пакетов.
Чтобы установить ‘apt-file’:
# sudo apt install apt-file # sudo apt-file update
Теперь вы можете вывести список содержимого любого пакета:
# sudo apt-file list
Пример 1
# sudo apt-file list curl curl: /usr/bin/curl curl: /usr/share/doc/curl/NEWS.Debian.gz curl: /usr/share/doc/curl/changelog.Debian.gz curl: /usr/share/doc/curl/copyright curl: /usr/share/man/man1/curl.1.gz curl: /usr/share/zsh/vendor-completions/_curl
Ниже приведен лучший способ прямого просмотра репозитория пакетов.
http://packages.debian.org/[distro_name]/all/[package_name]/filelist
Пример:
http://packages.debian.org/wheezy/all/transmission-common/filelist
Чтобы извлечь файлы, которые в some_package.deb
# sudo mkdir some_dir # sudo dpkg -x some_package.deb some_dir
Пример:
Для пакета ‘curl’
# sudo mkdir curl_control_data # sudo dpkg -x curl_7.58.0-2ubuntu3_amd64.deb curl_control_data # tree curl_control_data curl_control_data/ ├── control └── md5sums 0 directories, 2 files
ar vx команда
Программа GNU ar создает, изменяет и извлекает из архивов.
Один файл, содержащий коллекцию других файлов в структуре, которая позволяет извлекать исходные отдельные файлы (называемые членами архива), называется Archive.
Проверка содержимого путем извлечения непосредственно самого файла .deb.
# sudo ar vx curl_7.58.0-2ubuntu3_amd64.deb
Эта команда извлекает файл .deb и генерирует следующие 3 вывода
x - debian-binary x - control.tar.xz x - data.tar.xz
GNU / tar или BSD / tar – это программа архивирования, предназначенная для хранения и извлечения файлов из архивного файла, известного как tar-файл.
Вы можете создать tar-файл или сжатый tar-файл (.tar).
Однако иногда вам нужно перечислить содержимое файла tar или tar.gz на экране перед извлечением всех файлов.
где,
t: Перечислить содержимое архива.
v: Перепрограммированные файлы списка вершин (отображение подробной информации).
z: Отфильтровать архив через gzip, чтобы мы могли открыть сжатый (распаковать) tar-файл .gz.
J: Фильтровать архив через bzip2, использовать для распаковки файлов .bz2.
f filename: Использовать архивный файл с именем filename.
# tar -xvJf data.tar.xz ./ ./usr/ ./usr/bin/ ./usr/bin/curl ./usr/share/ ./usr/share/doc/ ./usr/share/doc/curl/ ./usr/share/doc/curl/copyright ./usr/share/man/ ./usr/share/man/man1/ ./usr/share/man/man1/curl.1.gz ./usr/share/zsh/ ./usr/share/zsh/vendor-completions/ ./usr/share/zsh/vendor-completions/_curl ./usr/share/doc/curl/NEWS.Debian.gz ./usr/share/doc/curl/changelog.Debian.gz