LINUX

Cómo enumerar los archivos del paquete Deb antes de la instalación

La pregunta típica antes de instalar un nuevo paquete deb en nuestro sistema es cuáles son los archivos reales instalados y dónde se encuentran los nuevos archivos. La situación crítica ocurre cuando se reemplaza un archivo no deseado que nunca tuvo la intención de reemplazar. Así que hoy, en este tutorial, me centraré en los pasos que usted, como administrador del sistema, puede seguir para escanear los archivos antes de instalar el paquete y asegurarse de que está seguro. Usaremos Ubuntu 18.04 para este artículo y debería funcionar para todas las demás distribuciones de Linux que admiten paquetes deb.

Para enumerar el contenido de un paquete desinstalado, necesitaremos un paquete .deb. dejar descargar un paquete de Ubuntu para nuestras pruebas.

Tomemos el paquete «curl» como ejemplo.

Para descargar 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 Escritorio Documentos Descargas ejemplos.desktop Música Imágenes Público Plantillas Vídeos

Embalaje dpkg

Podemos recuperar información sobre un paquete con «dpkg -I»… Pero no nos dirá el contenido. dpkg es un administrador de paquetes para sistemas basados ​​en Debian.

Para ver el contenido, use la opción «–contents» o «-c» del comando dpkg.

$ dpkg -c curl_7.58.0-2ubuntu3_amd64.deb

## O ##

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

Arriba podemos ver detalles sobre el contenido del paquete dado. Las desventajas son que debe haber descargado el paquete .deb respetado.

Para encontrar de qué paquete proviene un archivo .deb en particular:

$ 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
....

Con la opción -L le pedimos a dpkg que enumere el contenido de un paquete instalado proporcionándole el nombre del paquete.

Para listar los archivos instalados por un paquete:

$ 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
...

Listado de archivos usando apt-file

«apt-file» un paquete de software que enumera el contenido de los paquetes en sus repositorios y le permite buscar un archivo específico entre todos los paquetes disponibles.

Para instalar el archivo apt:

$ sudo apt install apt-file
$ sudo apt-file update

Ahora enumere el contenido de cualquier paquete:

$ sudo apt-file list

Ejemplo 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

Ejemplo 2:

$ sudo apt-file list ssh
ssh: /usr/share/doc/ssh/NEWS.Debian.gz
ssh: /usr/share/doc/ssh/changelog.Debian.gz
ssh: /usr/share/doc/ssh/copyright
ssh: /usr/share/lintian/overrides/ssh

A continuación se muestra la mejor manera de navegar directamente al repositorio de paquetes.

http://packages.debian.org/[distro_name]/todos/[package_name]/listadearchivos

Ejemplo:

http://packages.debian.org/wheezy/all/transmission-common/filelist

Para extraer los archivos que some_package.deb a un directorio:

$ sudo mkdir some_dir
$ sudo dpkg -x some_package.deb some_dir

Ejemplo:
Para el paquete «rizo»

$ sudo mkdir curl_extracts
$ sudo dpkg -x curl_7.58.0-2ubuntu3_amd64.deb curl_extracts
$ tree curl_extracts
curl_extracts/
└── usr
	├── bin
	│   └── curl
	└── share
    	├── doc
    	│   └── curl
    	│   	├── changelog.Debian.gz -> ../libcurl4/changelog.Debian.gz
    	│   	├── copyright
    	│   	└── NEWS.Debian.gz -> ../libcurl4/NEWS.Debian.gz
    	├── man
    	│   └── man1
    	│   	└── curl.1.gz
    	└── zsh
        	└── vendor-completions
            	└── _curl

9 directories, 6 files

Para extraer los datos de control (script del paquete, metadatos, etc.) que some_package.deb en un directorio:

$ sudo mkdir some_dir
$ sudo dpkg -e some_package.deb some_dir

Ejemplo:
Para el paquete «rizo»

$ 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

orden sería vx

El programa GNU construiría, modificaría y extraería de los archivos. Un solo archivo que contiene una colección de otros archivos en una estructura que hace posible recuperar los archivos individuales originales (llamados miembros del archivo) se denomina Archivo.

Comprobación de contenido extrayendo el archivo .deb directamente.

$ sudo ar vx curl_7.58.0-2ubuntu3_amd64.deb

Este comando extraerá el archivo .deb y generará los siguientes 3 resultados.

x - debian-binary
x - control.tar.xz
x - data.tar.xz

GNU/tar o BSD/tar es un programa de archivado diseñado para almacenar y extraer archivos de un archivo conocido como archivo tar. Puede crear un archivo tar o un archivo tar comprimido (.tar). Sin embargo, a veces es necesario enumerar el contenido del archivo tar o tar.gz en la pantalla antes de extraer todos los archivos.

Extraigamos el tercer archivo, es decir, data.tar.xz para ver el contenido del archivo .deb.

Dónde,

t: Listar el contenido de un archivo.
v: Listar los archivos procesados ​​extensamente (mostrar información detallada).
z: filtre el archivo a través de gzip para que podamos abrir el archivo tar .gz comprimido (sin comprimir).
J: Filtre el archivo por bzip2, use para descomprimir archivos .bz2.
f nombre de archivo: use el archivo de almacenamiento llamado nombre de archivo.

$ 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

También arriba donde los pasos que puede buscar en el paquete, espero que encuentre útil este tutorial. Comente otros métodos que conozca y siga leyendo el próximo tutorial.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar