Ya sabíamos cómo listar paquetes instalados y también cómo enumerar las dependencias de un paquete en linux Hoy veremos cómo listar el contenido de un paquete en Linux. No importa si el paquete está instalado o no. Es posible leer el contenido de un paquete instalado o no instalado.
En Linux y Unix, la mayoría de los programas no suelen terminar en un solo directorio. Cuando instala un paquete, todos los archivos en ese paquete se dispersan a través del sistema de archivos y se guardan en diferentes rutas. Por lo general, los archivos ejecutables (por ejemplo, los binarios/scripts) se almacenan en los directorios '/bin' o '/usr/bin' o '/usr/local/bin', los archivos de biblioteca en '/usr/lib', los archivos de configuración en '/etc', datos estáticos en '/usr/share', etc. Ahora busquemos la lista de archivos en un paquete y dónde están realmente almacenados en Linux.
Lista del contenido de un paquete en Linux
Primero, veremos cómo leer el contenido de un paquete en sistemas basados en DEB, por ejemplo Ubuntu.
Lista del contenido de un paquete instalado en Ubuntu
Ya tengo instalado Microsoft Teams paquete en mi escritorio Ubuntu 20.04.
Para ver el contenido del paquete de Microsoft Teams, simplemente ejecute:
$ dpkg -L teams
Salida de muestra:
/. /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
¿Ver? El resultado anterior muestra los archivos instalados por el paquete Teams y su ubicación en mi sistema Ubuntu.
Aquí hay otra forma de ver el contenido de un paquete instalado en Ubuntu:
$ dpkg-query -L teams
Lista del contenido de un paquete no instalado en Ubuntu
Como ya dije, los comandos anteriores muestran el contenido de un paquete instalado. ¿Qué sucede si el paquete no está instalado y desea leer su contenido? ¡También es posible! Puede encontrar qué archivos instalará un paquete incluso antes de instalarlo.
Primero descargue el archivo .deb. Ya descargué el archivo .deb de la aplicación Teams. Vaya a la ubicación donde descargó el archivo .deb y ejecute el siguiente comando para ver su contenido:
$ dpkg --contents teams_1.2.00.32451_amd64.deb
O,
$ dpkg -c teams_1.2.00.32451_amd64.deb
Salida de muestra:
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
Alternativamente, puede hacer esto usando apt-file herramienta también.
Instale el archivo apt como se muestra a continuación si aún no está instalado:
$ sudo apt install apt-file
Si acaba de instalar apt-file, es posible que la memoria caché de todo el sistema esté vacía. Debe ejecutar 'apt-file update' como root para actualizar el caché. También puede ejecutar 'actualización de archivo apt' como usuario normal para usar un caché en el directorio de inicio del usuario.
Actualicemos la caché de la base de datos usando el comando:
$ sudo apt-file update
Ahora enumere el contenido de un paquete instalado, por ejemplo, vim, como a continuación:
$ apt-file list vim
Salida de muestra:
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
La herramienta apt-file también se usa para buscar los paquetes que proporcionan un archivo específico. Por ejemplo, busque el paquete que proporciona alisp.h archivo con comando:
$ apt-file find alisp.h
O,
$ apt-file search alisp.h
Salida de muestra:
libasound2-dev: /usr/include/alsa/alisp.h
Como puede ver, el paquete "libasound2-dev" proporciona el archivo alisp.h.
Para obtener más detalles, consulte el siguiente enlace.
- Cómo encontrar el paquete que proporciona un archivo específico en Linux
Estas son algunas formas de ver el contenido de un paquete en sistemas basados en DEB. Ahora veamos cómo enumerar el contenido del paquete en sistemas basados en RPM, por ejemplo, CentOS.
Lista del contenido de un paquete instalado/no instalado en CentOS
En sistemas basados en RPM como CentOS, podemos encontrar el contenido de un paquete usando "repoquery" comando.
El paquete "yum-utils" proporciona el comando repoquery, así que vamos a instalarlo usando el comando:
$ sudo yum install yum-utils
Ahora averigüemos el contenido del paquete del editor "nano" usando el comando:
# repoquery --installed --list nano
O,
# repoquery --list nano
O,
# repoquery -l nano
Salida de muestra:
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
De la misma manera, puede enumerar el contenido de un archivo no instalado. Vaya a la ubicación donde descargó el archivo rpm y vea su contenido como se muestra a continuación:
# repoquery --list nano-2.9.8-1.el8.x86_64.rpm
Lectura relacionada:
- Cómo descargar un paquete RPM con todas las dependencias en CentOS
Espero que esto ayude.