Introducción
La gestión de paquetes es una de las características fundamentales de un sistema Linux. El formato de empaquetado y las herramientas de gestión de paquetes varían según la distribución, pero la mayoría utiliza uno de dos conjuntos principales de herramientas.
Para las distribuciones basadas en Red Hat Enterprise Linux (como RHEL y Rocky Linux), el formato de empaquetado RPM y las herramientas de empaquetado como rpm
y yum
son comunes. La otra familia principal, utilizada por Debian, Ubuntu y distribuciones relacionadas, utiliza el .deb
formato de empaquetado y las herramientas como apt
y dpkg
.
En los últimos años, han aparecido más administradores de paquetes auxiliares diseñados para ejecutarse en paralelo con el núcleo apt
y dpkg
las herramientas: por ejemplo, snap proporciona más portabilidad y espacio aislado, y Homebrew , portado desde macOS, proporciona herramientas de línea de comandos que los usuarios individuales pueden instalar para evitar conflictos con los paquetes del sistema.
En esta guía, aprenderá algunas de las herramientas de gestión de paquetes más comunes que utilizan los administradores de sistemas en sistemas Debian y Ubuntu. Esta guía le servirá como referencia rápida cuando necesite saber cómo gestionar paquetes en estos sistemas.
Prerrequisitos
- Un servidor Ubuntu 20.04 o Debian y un usuario no root con privilegios sudo. Puede obtener más información sobre cómo configurar un usuario con estos privilegios en nuestra guía “Configuración inicial del servidor con Ubuntu 20.04” .
Paso 1: Descripción general de las herramientas de gestión de paquetes de Debian
El ecosistema Debian/Ubuntu emplea bastantes herramientas de gestión de paquetes diferentes para administrar el software en el sistema.
La mayoría de estas herramientas están interrelacionadas y funcionan con las mismas bases de datos de paquetes. Algunas intentan proporcionar interfaces de alto nivel al sistema de empaquetado, mientras que otras se centran en proporcionar funcionalidad de bajo nivel.
apto
Este apt
comando es probablemente el más utilizado del apt
conjunto de herramientas de empaquetado. Su principal objetivo es interactuar con repositorios remotos gestionados por el equipo de empaquetado de la distribución y ejecutar acciones en los paquetes disponibles.
La apt
suite, en general, funciona extrayendo información de repositorios remotos a una caché del sistema local. El apt
comando se utiliza para actualizar la caché local. También se utiliza para modificar el estado de un paquete, es decir, para instalarlo o eliminarlo del sistema.
En general, apt
se utilizará para actualizar la memoria caché local y realizar modificaciones en el sistema en vivo.
Nota: En versiones anteriores de Ubuntu, el apt
comando principal se conocía como apt-get
. Se ha simplificado, pero aún se puede llamar con , apt-get
ya sea por costumbre o por compatibilidad con versiones anteriores.
apt-cache
Otro miembro importante de la apt
suite es apt-cache
. Esta utilidad utiliza la caché local para consultar información sobre los paquetes disponibles y sus propiedades.
Por ejemplo, buscar un paquete o una herramienta específica que realice una función específica apt-cache
es un buen punto de partida. También puede ser útil para obtener información sobre la versión exacta del paquete a la que se dirigirá un procedimiento. La información sobre dependencias y dependencias inversas es otra área apt-cache
útil.
paquete dpkg
Si bien las herramientas anteriores se centraban en la gestión de paquetes almacenados en repositorios, el dpkg
comando también permite operar con .deb
paquetes individuales. dpkg
De hecho, la herramienta se encarga de la mayor parte del trabajo interno de los comandos mencionados; apt
proporciona tareas de mantenimiento adicionales mientras dpkg
interactúa con los propios paquetes.
A diferencia de los apt
comandos, dpkg
no puede resolver dependencias automáticamente. Su principal característica es la posibilidad de trabajar con .deb
paquetes directamente y analizarlos para obtener más información sobre su estructura. Aunque puede recopilar información sobre los paquetes instalados en el sistema, no debe utilizarse como gestor de paquetes principal. En el siguiente paso, aprenderá las mejores prácticas para la actualización de paquetes.
Paso 2: Actualización de la caché de paquetes y del sistema
Las herramientas de gestión de paquetes de Debian y Ubuntu ayudan a mantener actualizada la lista de paquetes disponibles de su sistema. También ofrecen varios métodos para actualizar los paquetes que tenga instalados en su servidor.
Actualización de la caché de paquetes locales
Los repositorios remotos que utilizan sus herramientas de empaquetado para obtener información de paquetes se actualizan constantemente. Sin embargo, la mayoría de las herramientas de gestión de paquetes de Linux están diseñadas, por razones históricas, para trabajar directamente con una caché local de esta información. Esta caché debe actualizarse periódicamente.
Suele ser recomendable actualizar la caché local de paquetes en cada sesión antes de ejecutar otros comandos. Esto garantizará que esté trabajando con la información más actualizada sobre el software disponible. Algunos comandos de instalación fallarán si trabaja con información de paquetes obsoleta.
Para actualizar la caché local, utilice el apt
comando con el update
subcomando:
sudo apt update
Esto mostrará una lista actualizada de los paquetes disponibles en los repositorios que estás rastreando.
Actualización de paquetes
El apt
comando distingue entre dos procedimientos de actualización diferentes. El primero (que se describe en esta sección) permite actualizar cualquier componente que no requiera su eliminación. Para saber cómo actualizar y permitir apt
la eliminación e intercambio de componentes según sea necesario, consulte la sección siguiente.
Esto puede ser muy importante si no desea eliminar ningún paquete instalado bajo ninguna circunstancia. Sin embargo, algunas actualizaciones implican reemplazar componentes del sistema o eliminar archivos conflictivos. Este procedimiento ignorará cualquier actualización que requiera la eliminación de paquetes:
sudo apt upgrade
El segundo procedimiento actualizará todos los paquetes, incluso aquellos que requieren su eliminación. Esto suele ser necesario a medida que cambian las dependencias de los paquetes.
Normalmente, los paquetes que se eliminan se reemplazan por equivalentes funcionales durante el proceso de actualización, por lo que esto suele ser seguro. Sin embargo, conviene estar atento a los paquetes que se eliminarán, por si acaso se marcan componentes esenciales para su eliminación. Para realizar esta acción, escriba:
sudo apt full-upgrade
Esto actualizará todos los paquetes de su sistema. En el siguiente paso, aprenderá a descargar e instalar nuevos paquetes.
Paso 3: Descargar e instalar paquetes
Buscar paquetes
El primer paso al descargar e instalar paquetes a menudo es buscar en los repositorios de su distribución los paquetes que está buscando.
La búsqueda de paquetes es una operación que busca información en la caché de paquetes. Para ello, utilice apt-cache search
. Recuerde que debe asegurarse de que su caché local esté actualizada utilizando sudo apt update
antes de buscar paquetes:
apt-cache search package
Dado que este procedimiento solo consulta información, no requiere sudo
privilegios. Cualquier búsqueda realizada examinará los nombres de los paquetes, así como sus descripciones completas.
Por ejemplo, si buscas htop
, verás resultados como estos:
apt-cache search htop
Outputaha - ANSI color to HTML converter
htop - interactive processes viewer
libauthen-oath-perl - Perl module for OATH One Time Passwords
Como puedes ver, tienes un paquete llamado htop
, pero también puedes ver otros dos programas, cada uno de los cuales se menciona htop
en el campo de descripción completa del paquete (la descripción junto a la salida es solo un breve resumen).
Instalar un paquete desde los repositorios
Para instalar un paquete desde los repositorios, así como todas las dependencias necesarias, puede utilizar el apt
comando con el install
argumento.
Los argumentos para este comando deben ser el nombre o los nombres del paquete tal como están etiquetados en el repositorio:
sudo apt install package
Puede instalar varios paquetes a la vez, separados por un espacio:
sudo apt install package1 package2
Si el paquete solicitado requiere dependencias adicionales, estas se imprimirán en la salida estándar y se le solicitará que confirme el procedimiento. Se verá así:
sudo apt install apache2
OutputReading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
apache2-data
Suggested packages:
apache2-doc apache2-suexec-pristine apache2-suexec-custom
apache2-utils
The following NEW packages will be installed:
apache2 apache2-data
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 236 kB of archives.
After this operation, 1,163 kB of additional disk space will be used.
Do you want to continue [Y/n]?
Como puede ver, aunque nuestro objetivo de instalación era el apache2
paquete, este apache2-data
se necesita como dependencia. En este caso, puede continuar presionando Intro o “Y”, o cancelar escribiendo “n”.
Instalar una versión específica del paquete desde los repositorios
Si necesita instalar una versión específica de un paquete, puede proporcionar la versión que desea utilizar =
, de la siguiente manera:
sudo apt install package=version
En este caso, la versión debe coincidir con uno de los números de versión del paquete disponibles en el repositorio. Esto implica utilizar el sistema de control de versiones de su distribución. Puede encontrar las versiones disponibles mediante :apt-cache policy package
apt-cache policy nginx
Outputnginx:
Installed: (none)
Candidate: 1.18.0-0ubuntu1.2
Version table:
1.18.0-0ubuntu1.2 500
500 http://mirrors.digitalocean.com/ubuntu focal-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
1.17.10-0ubuntu1 500
500 http://mirrors.digitalocean.com/ubuntu focal/main amd64 Packages
Reconfigurar paquetes
Muchos paquetes incluyen scripts de configuración posteriores a la instalación que se ejecutan automáticamente una vez finalizada. Estos suelen incluir indicaciones para que el administrador tome decisiones de configuración.
Si necesita ejecutar estos pasos de configuración (y otros adicionales) más adelante, puede usar el dpkg-reconfigure
comando. Este comando examina el paquete que se le ha proporcionado y vuelve a ejecutar cualquier comando posterior a la configuración incluido en la especificación del paquete:
sudo dpkg-reconfigure package
Esto le permitirá acceder a las mismas indicaciones (y a menudo más) que encontró durante la instalación.
Realizar un ensayo de las acciones del paquete
Muchas veces, querrás ver los efectos secundarios de un procedimiento antes de comprometerte realmente a ejecutar el comando. apt
te permite agregar la -s
bandera para “simular” un procedimiento.
Por ejemplo, para ver qué se haría si decide instalar un paquete, puede escribir:
apt install -s package
Esto le permitirá ver todas las dependencias y los cambios que se producirán en su sistema si elimina la -s
marca. Una ventaja es que puede ver los resultados de un proceso que normalmente requeriría privilegios de root, sin usar sudo
.
Por ejemplo, si desea evaluar qué se instalaría con el apache2
paquete, puede escribir:
apt install -s apache2
OutputNOTE: This is only a simulation!
apt needs root privileges for real execution.
Keep also in mind that locking is deactivated,
so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
apache2-data
Suggested packages:
apache2-doc apache2-suexec-pristine apache2-suexec-custom
apache2-utils
The following NEW packages will be installed:
apache2 apache2-data
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Inst apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all])
Inst apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64])
Conf apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all])
Conf apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64])
Obtendrás toda la información sobre los paquetes y versiones que se instalarán, sin tener que completar el proceso real.
Esto también funciona con otros procedimientos, como realizar actualizaciones del sistema:
apt -s dist-upgrade
De forma predeterminada, apt
se solicitará confirmación al usuario para muchos procesos, como instalaciones que requieren dependencias adicionales y actualizaciones de paquetes.
Para omitir estas actualizaciones y aceptar de forma predeterminada cualquiera de estas indicaciones, puede pasar la -y
bandera al realizar estas operaciones:
sudo apt install -y package
Esto instalará el paquete y sus dependencias sin necesidad de solicitarlo al usuario. También puede usarse para procedimientos de actualización:
sudo apt dist-upgrade -y
Reparar dependencias y paquetes rotos
A veces, una instalación puede no finalizar correctamente debido a dependencias u otros problemas. Un caso común es al instalar un .deb
paquete con dpkg
, que no resuelve las dependencias.
El apt
comando puede intentar resolver esta situación pasándole el -f
comando.
sudo apt install -f
Esto buscará las dependencias incumplidas e intentará instalarlas para corregir el árbol de dependencias. Si su instalación presentó un problema de dependencia, este debería ser el primer paso para intentar resolverlo. Si no puede resolver el problema de esta manera e instaló un paquete de terceros, debería eliminarlo y buscar una versión más reciente con un mantenimiento más activo.
Descargar paquete desde los repositorios
Hay casos importantes en los que puede ser útil descargar un paquete de los repositorios sin instalarlo. Puedes hacerlo ejecutando apt
el download
argumento.
Dado que esto solo descarga un archivo y no afecta al sistema real, no sudo
se requieren privilegios:
apt download package
Esto descargará los paquetes especificados al directorio actual.
Instalar un paquete .deb
Aunque la mayoría de las distribuciones recomiendan instalar el software desde sus repositorios mantenidos, algunos proveedores suministran .deb
archivos sin procesar que puedes instalar en tu sistema.
Para ello, se utiliza dpkg
. dpkg
Se utiliza principalmente para trabajar con paquetes individuales. No intenta realizar instalaciones desde el repositorio, sino que busca .deb
paquetes en el directorio actual o en la ruta proporcionada:
sudo dpkg --install debfile.deb
Es importante tener en cuenta que la dpkg
herramienta no implementa ningún manejo de dependencias. Esto significa que si hay dependencias incumplidas, la instalación fallará. Sin embargo, marca las dependencias necesarias, por lo que si todas están disponibles en los repositorios, puede completarlas escribiendo lo siguiente después:
sudo apt install -f
Esto instalará las dependencias no satisfechas, incluidas las marcadas con dpkg
. En el siguiente paso, aprenderá a eliminar algunos de los paquetes que ha instalado.
Paso 4: Eliminar paquetes y archivos
En esta sección se explicará cómo desinstalar paquetes y limpiar los archivos que puedan quedar tras las operaciones de paquetes.
Desinstalar un paquete
Para eliminar un paquete instalado, se usa apt remove
. Esto eliminará la mayoría de los archivos que el paquete instaló en el sistema, con una excepción notable.
Este comando conserva los archivos de configuración para que su configuración siga disponible si necesita reinstalar la aplicación posteriormente. Esto es útil porque significa que los archivos de configuración personalizados no se eliminarán si elimina accidentalmente un paquete.
Para completar esta operación, debe proporcionar el nombre del paquete que desea desinstalar:
sudo apt remove package
El paquete se desinstalará con la excepción de los archivos de configuración.
Desinstalar un paquete y todos los archivos de configuración asociados
Si desea eliminar un paquete y todos los archivos asociados de su sistema, incluidos los archivos de configuración, puede utilizar apt purge
.
A diferencia del remove
comando mencionado anteriormente, este purge
lo elimina todo. Esto es útil si no desea guardar los archivos de configuración o si tiene problemas y desea empezar desde cero.
Tenga en cuenta que una vez que se eliminen los archivos de configuración, no podrá recuperarlos:
sudo apt purge package
Ahora, si alguna vez necesita reinstalar ese paquete, se utilizará la configuración predeterminada.
Eliminar cualquier dependencia automática que ya no sea necesaria
Al eliminar paquetes del sistema con apt remove
o apt purge
, se eliminará el destino del paquete. Sin embargo, se conservarán las dependencias que se instalaron automáticamente para cumplir con los requisitos de instalación.
Para eliminar automáticamente cualquier paquete que se haya instalado como dependencia y que ya no sea necesario para ningún paquete, puede utilizar el autoremove
comando:
sudo apt autoremove
Si desea eliminar todos los archivos de configuración asociados a las dependencias que se van a eliminar, deberá añadir la --purge
opción al autoremove
comando. Esto también limpiará los archivos de configuración, al igual que el purge
comando para una eliminación específica:
sudo apt --purge autoremove
Limpiar archivos de paquetes obsoletos
A medida que los mantenedores de paquetes de una distribución agregan y eliminan paquetes de los repositorios, algunos paquetes quedarán obsoletos.
La apt
herramienta puede eliminar cualquier archivo de paquete en el sistema local que esté asociado con paquetes que ya no están disponibles en los repositorios mediante el uso del autoclean
comando.
Esto liberará espacio en su servidor y eliminará cualquier paquete potencialmente obsoleto de su caché local.
sudo apt autoclean
En el siguiente paso, aprenderá más formas de consultar paquetes sin necesariamente instalarlos.
Paso 5 – Obtener información sobre los paquetes
Cada paquete contiene una gran cantidad de metadatos a los que se puede acceder mediante las herramientas de gestión de paquetes. Esta sección mostrará algunas formas comunes de obtener información sobre los paquetes disponibles e instalados.
Para mostrar información detallada sobre un paquete en los repositorios de su distribución, puede usar el comando apt-cache show
. El objetivo de este comando es el nombre de un paquete dentro del repositorio:
apt-cache show nginx
Esto mostrará información sobre cualquier candidato a instalación para el paquete en cuestión. Cada candidato incluirá información sobre sus dependencias, versión, arquitectura, conflictos, el nombre del archivo del paquete, el tamaño del paquete y la instalación, y una descripción detallada, entre otros datos.
OutputPackage: nginx
Architecture: all
Version: 1.18.0-0ubuntu1.2
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Nginx Maintainers <pkg-nginx-maintainers@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 44
Depends: nginx-core (<< 1.18.0-0ubuntu1.2.1~) | nginx-full (<< 1.18.0-0ubuntu1.2.1~) | nginx-light (<< 1.18.0-0ubuntu1.2.1~) | nginx-extras (<< 1.18.0-0ubuntu1.2.1~), nginx-core (>= 1.18.0-0ubuntu1.2) | nginx-full (>= 1.18.0-0ubuntu1.2) | nginx-light (>= 1.18.0-0ubuntu1.2) | nginx-extras (>= 1.18.0-0ubuntu1.2)
Filename: pool/main/n/nginx/nginx_1.18.0-0ubuntu1.2_all.deb
…
Para mostrar información adicional sobre cada candidato, incluyendo una lista completa de dependencias inversas (una lista de paquetes que dependen del paquete consultado), utilice el showpkg
comando. Esto incluirá información sobre la relación de este paquete con otros paquetes:
apt-cache showpkg package
Mostrar información sobre un paquete .deb
Para mostrar detalles sobre un .deb
archivo, puede usar la --info
bandera con el dpkg
comando. El objetivo de este comando debe ser la ruta de un .deb
archivo:
dpkg --info debfile.deb
Esto le mostrará metadatos sobre el paquete en cuestión, como el nombre y la versión, la arquitectura para la que fue creado, el tamaño y las dependencias requeridas, una descripción y los conflictos.
Para enumerar específicamente las dependencias (paquetes de los que depende este paquete) y las dependencias inversas (los paquetes que dependen de este paquete), puede utilizar la apt-cache
utilidad.
Para obtener información de dependencia convencional, puede utilizar el depends
subcomando:
apt-cache depends nginx
Outputnginx
|Depends: nginx-core
|Depends: nginx-full
|Depends: nginx-light
Depends: nginx-extras
|Depends: nginx-core
|Depends: nginx-full
|Depends: nginx-light
Depends: nginx-extras
Esto mostrará información sobre cada paquete que figure como dependencia dura, sugerencia, recomendación o conflicto.
Si necesita saber qué paquetes dependen de un paquete determinado, puede pasar ese paquete a apt-cache rdepends
:
apt-cache rdepends package
Mostrar versiones de paquetes instalados y disponibles
A menudo, existen varias versiones de un paquete en los repositorios, con un único paquete predeterminado. Para ver las versiones disponibles de un paquete, puede usar apt-cache policy
:
apt-cache policy package
Esto le mostrará qué versión está instalada (si hay alguna), el paquete que se instalará de manera predeterminada si no especifica una versión con el comando de instalación y una tabla de versiones de paquetes, completa con el peso que indica la prioridad de cada versión.
Esto permite determinar qué versión se instalará y qué alternativas están disponibles. Dado que también se listan los repositorios donde se encuentra cada versión, permite determinar si hay repositorios adicionales que reemplacen los paquetes de los repositorios predeterminados.
Mostrar paquetes instalados con dpkg -l
Para mostrar los paquetes instalados en su sistema, tiene algunas opciones separadas, que varían en formato y nivel de detalle de salida.
El primer método implica usar el comando dpkg
o el dpkg-query
comando con la -l
bandera. El resultado de ambos comandos es idéntico. Sin argumentos, proporciona una lista de todos los paquetes instalados o parcialmente instalados en el sistema. El resultado será similar a esto:
dpkg -l
OutputDesired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===========================================-=======================================-============-=====================================================================================================================
ii account-plugin-generic-oauth 0.10bzr13.03.26-0ubuntu1.1 amd64 GNOME Control Center account plugin for single signon - generic OAuth
ii accountsservice 0.6.34-0ubuntu6 amd64 query and manipulate user account information
ii acl 2.2.52-1 amd64 Access control list utilities
ii acpi-support 0.142 amd64 scripts for handling many ACPI events
ii acpid 1:2.0.18-1ubuntu2 amd64 Advanced Configuration and Power Interface event daemon
. . .
La salida continúa para cada paquete del sistema. En la parte superior de la salida, se puede ver el significado de los tres primeros caracteres de cada línea. El primer carácter indica el estado deseado del paquete. Puede ser:
- u : Desconocido
- i : Instalado
- r : Eliminado
- p : Purgado
- h : Versión mantenida
El segundo carácter indica el estado real del paquete, tal como lo conoce el sistema de embalaje. Estos pueden ser:
- n : No instalado
- i : Instalado
- c : Los archivos de configuración están presentes, pero la aplicación está desinstalada.
- u : Descomprimido. Los archivos están descomprimidos, pero aún no están configurados.
- f : El paquete está a medio instalar, lo que significa que hubo una falla durante la instalación que detuvo la operación.
- w : El paquete está esperando un disparador de un paquete separado
- p : El paquete ha sido activado por otro paquete.
El tercer carácter, que será un espacio en blanco para la mayoría de los paquetes, solo tiene otra opción potencial:
- r : Esto indica que se requiere una reinstalación. Esto suele significar que el paquete está dañado y no funciona.
El resto de las columnas contienen el nombre del paquete, la versión, la arquitectura y una descripción.
Mostrar estados de instalación de paquetes filtrados
Si añade un patrón de búsqueda después del -l
patrón, dpkg
se mostrarán todos los paquetes (instalados o no) que lo contengan. Por ejemplo, puede buscar bibliotecas de procesamiento YAML aquí:
dpkg -l libyaml*
OutputDesired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===============-============-============-===================================
ii libyaml-0-2:amd 0.1.4-2ubunt amd64 Fast YAML 1.1 parser and emitter li
ii libyaml-dev:amd 0.1.4-2ubunt amd64 Fast YAML 1.1 parser and emitter li
un libyaml-perl <none> (no description available)
un libyaml-syck-pe <none> (no description available)
ii libyaml-tiny-pe 1.51-2 all Perl module for reading and writing
Como puede ver en la primera columna, el tercer y cuarto resultado no están instalados. Esto le muestra todos los paquetes que coinciden con el patrón, así como sus estados actual y deseado.
Una forma alternativa de renderizar los paquetes que están instalados en su sistema es con dpkg –get-selections
.
Esto proporciona una lista de todos los paquetes instalados o eliminados pero no purgados:
dpkg --get-selections
Para diferenciar entre estos dos estados, puede canalizar la salida de dpkg
a awk
para filtrar por estado. Para ver solo los paquetes instalados, escriba:
dpkg --get-selections | awk '$2 ~ /^install/'
Para obtener una lista de paquetes eliminados cuyos archivos de configuración no se han purgado, puede escribir:
dpkg --get-selections | awk '$2 !~ /^install/'
Quizás también desee obtener más información sobre cómo canalizar la salida de comandos a través de awk .
Buscar paquetes instalados
Para buscar un paquete específico en la base de datos de paquetes instalados, puede agregar una cadena de filtro de paquetes después de la --get-selections
opción. Esto permite la coincidencia con comodines. De nuevo, esto mostrará los paquetes instalados o que aún tengan archivos de configuración en el sistema:
dpkg --get-selections libz*
Puedes, una vez más, filtrar utilizando las awk
expresiones de la sección anterior.
Lista de archivos instalados por un paquete
Para saber de qué archivos es responsable un paquete, puede utilizar la -L
bandera con el dpkg
comando:
dpkg -L package
Esto imprimirá la ruta absoluta de cada archivo controlado por el paquete. No se incluirán los archivos de configuración generados por los procesos dentro del paquete.
Para saber qué paquete es responsable de un determinado archivo en su sistema de archivos, puede pasar la ruta absoluta al dpkg
comando con la -S
bandera.
Esto imprimirá el paquete que instaló el archivo en cuestión:
dpkg -S /path/to/file
Tenga en cuenta que cualquier archivo que se mueva a su lugar mediante scripts posteriores a la instalación no se puede vincular nuevamente al paquete con esta técnica.
Descubra qué paquete proporciona un archivo sin instalarlo
Usando dpkg
, puedes averiguar qué paquete contiene un archivo usando la -S
opción. Sin embargo, a veces necesitas saber qué paquete contiene un archivo o comando, incluso si no tienes instalado el paquete asociado.
Para ello, necesitará instalar una utilidad llamada apt-file
. Esta mantiene su propia base de datos, que incluye la ruta de instalación de cada archivo controlado por un paquete en la base de datos.
Instale el apt-file
paquete de forma normal:
sudo apt update
sudo apt install apt-file
Ahora, actualice la base de datos de la herramienta y busque un archivo escribiendo:
sudo apt-file update
sudo apt-file search /path/to/file
Esto solo funcionará con las ubicaciones de archivos instaladas directamente por un paquete. No se pueden consultar los archivos creados mediante scripts posteriores a la instalación. En el siguiente paso, aprenderá a importar y exportar listas de paquetes instalados.
Paso 6: Transferencia de listas de paquetes entre sistemas
Muchas veces, puede que necesite hacer una copia de seguridad de la lista de paquetes instalados de un sistema y usarla para instalar un conjunto idéntico de paquetes en otro. Esto también es útil para realizar copias de seguridad. Esta sección le mostrará cómo exportar e importar listas de paquetes.
Si necesita replicar el conjunto de paquetes instalados en un sistema a otro, primero deberá exportar su lista de paquetes.
Puede exportar la lista de paquetes instalados a un archivo redirigiendo la salida dpkg --get-selections
a un archivo de texto:
dpkg --get-selections > ~/packagelist.txt
Quizás también desee obtener más información sobre la redirección de entrada y salida .
Luego esta lista se puede copiar a la segunda máquina e importar.
También podría necesitar hacer una copia de seguridad de sus listas de fuentes y de su lista de claves de confianza. Puede hacer una copia de seguridad de sus fuentes creando un nuevo directorio y copiándolo desde la configuración del sistema en /etc/apt/
:
mkdir ~/sources
cp -R /etc/apt/sources.list* ~/sources
Cualquier clave que haya agregado para instalar paquetes desde repositorios de terceros se puede exportar usando apt-key exportall
:
apt-key exportall > ~/trusted_keys.txt
Ahora puede transferir el packagelist.txt
archivo, el sources
directorio y el trusted_keys.txt
archivo a otra computadora para importar.
Lista de paquetes de importación
Si ha creado una lista de paquetes utilizando como se demostró anteriormente, también dpkg --get-selections
puede importar los paquetes en otra computadora usando el comando.dpkg
Primero, debe agregar las claves de confianza e implementar las listas de fuentes que copió del primer entorno. Suponiendo que todos los datos respaldados se hayan copiado al directorio de inicio del nuevo equipo, podría escribir:
sudo apt-key add ~/trusted_keys.txt
sudo cp -R ~sources/* /etc/apt/
A continuación, borre el estado de todos los paquetes no esenciales del nuevo equipo. Esto garantizará que los cambios se apliquen desde cero. Debe hacerlo con la cuenta o sudo
privilegios de root:
sudo dpkg --clear-selections
Esto marcará todos los paquetes no esenciales para su desinstalación. Debe actualizar la lista de paquetes local para que su instalación contenga registros de todo el software que planea instalar. El proceso de instalación y actualización se gestionará mediante una herramienta llamada dselect
.
Debe asegurarse de que la dselect
herramienta esté instalada. Esta herramienta mantiene su propia base de datos, por lo que también debe actualizarla antes de continuar:
sudo apt update
sudo apt install dselect
sudo dselect update
A continuación, puede aplicar la lista de paquetes sobre la lista actual para configurar qué paquetes se deben conservar o descargar:
sudo dpkg --set-selections < packagelist.txt
Esto establece los estados correctos del paquete. Para aplicar los cambios, ejecute apt dselect-upgrade
:
sudo apt dselect-upgrade
Esto descargará e instalará los paquetes necesarios. También eliminará los paquetes marcados para deseleccionar. Al final, la lista de paquetes debería coincidir con la del equipo anterior, aunque aún será necesario copiar o modificar los archivos de configuración. Puede usar una herramienta como etckeeper para migrar los archivos de configuración desde el /etc
directorio.
En el siguiente y último paso, aprenderá a trabajar con repositorios de paquetes de terceros.
Paso 7: Agregar repositorios y PPA
Aunque el conjunto predeterminado de repositorios que ofrecen la mayoría de las distribuciones suele ser el más fácil de mantener, a veces pueden ser útiles fuentes adicionales. En esta sección, aprenderá a configurar sus herramientas de empaquetado para consultar fuentes adicionales.
Una alternativa a los repositorios tradicionales en Ubuntu son los PPA, o archivos de paquetes personales . Otras versiones de Linux suelen utilizar conceptos de repositorios de terceros diferentes, pero similares. Normalmente, los PPA tienen un alcance menor que los repositorios y contienen conjuntos específicos de aplicaciones mantenidas por el propietario del PPA.
Añadir PPAs a su sistema le permite gestionar los paquetes que contienen con sus herramientas habituales de gestión de paquetes. Esto puede utilizarse para proporcionar paquetes más actualizados que no están incluidos en los repositorios de la distribución. Asegúrese de añadir únicamente PPAs de confianza, ya que estará permitiendo que un mantenedor no estándar cree paquetes para su sistema.
Para agregar un PPA, puede usar el add-apt-repository
comando. El objetivo debe incluir la etiqueta ppa:
, seguida del nombre del propietario del PPA en Launchpad , una barra diagonal y el nombre del PPA:
sudo add-apt-repository ppa:owner_name/ppa_name
Es posible que se le solicite que acepte la clave del empaquetador. Posteriormente, el PPA se añadirá a su sistema, lo que le permitirá instalar los paquetes con los apt
comandos habituales. Antes de buscar o instalar paquetes, asegúrese de actualizar su caché local con la información sobre su nuevo PPA:
sudo apt update
También puede editar la configuración de su repositorio directamente. Puede editar el /etc/apt/sources.list
archivo o crear una nueva lista en el /etc/apt/sources.list.d
directorio. Si opta por esta última opción, el nombre del archivo que cree debe terminar en .list
:
sudo nano /etc/apt/sources.list.d/new_repo.list
Dentro del archivo, puedes agregar la ubicación del nuevo repositorio utilizando el siguiente formato: /etc/apt/sources.list.d/new_repo.list
deb_or_deb-src url_of_repo release_code_name_or_suite component_names
Las diferentes partes de la especificación del repositorio son:
- deb o deb-src : Identifica el tipo de repositorio. Los repositorios convencionales se marcan con
deb
, mientras que los repositorios de código fuente empiezan condeb-src
. - URL : La URL principal del repositorio. Esta debe ser la ubicación donde se puede encontrar el repositorio.
- nombre del código de lanzamiento o suite : generalmente, este es el nombre del código del lanzamiento de su distribución, pero puede ser cualquier nombre que se use para identificar un conjunto específico de paquetes creados para su versión de la distribución.
- Nombres de componentes : Las etiquetas para la selección de paquetes que desea tener disponibles. Esta suele ser una distinción proporcionada por el responsable del repositorio para indicar la fiabilidad o las restricciones de licencia del software que contiene.
Puede agregar estas líneas dentro del archivo. La mayoría de los repositorios contienen información sobre el formato exacto que debe usarse. En otras distribuciones de Linux, puede agregar fuentes de repositorio adicionales instalando paquetes que solo contienen un archivo de configuración para ese repositorio, lo cual es coherente con el funcionamiento de los administradores de paquetes.
Conclusión
La gestión de paquetes es quizás el aspecto más importante de la administración de un sistema Linux. Existen muchas otras operaciones de gestión de paquetes que puede realizar, pero este tutorial le ha proporcionado una base de los fundamentos de Ubuntu, muchos de los cuales son generalizables a otras distribuciones con pequeños cambios.