Las distribuciones de GNU/Linux tienen un sistema denominado gestor o administrador de paquetes que permite instalar aplicaciones (llamados paquetes en linux) directamente desde la línea de comandos, sin tener que acceder a una página concreta, descargar archivos o ejecutarlos. Todo ello se hace de forma transparente y automática mediante el mencionado gestor, que en distribuciones basadas en Debian se llama apt (Advanced Packaging Tool).
Esta es la forma más cómoda y automática de instalar paquetes desde una línea de comandos. También tenemos el comando dpkg
, que sirve para instalar de forma manual los paquetes (es lo que usa por debajo apt) y, por último, tenemos la forma más manual que existe: compilar el programa de su código fuente a un archivo ejecutable. Pero de eso hablaremos en otro momento.
Volviendo a la instalación automática de paquetes, existen varios comandos relacionados:
Comando | Descripción |
---|---|
dpkg | Gestor de paquetes .deb para instalar aplicaciones Debian manualmente. |
apt-get | Comando de bajo nivel para instalar paquetes y dependencias de forma automática. |
apt-cache | Comando de bajo nivel para consultar la caché de apt . |
apt | Versión moderna y amigable del gestor de paquetes apt-get , destinada a usuarios finales. |
Existen algunos otros comando de gestión de instalación de paquetes como aptitude
, synaptic
(entorno gráfico) o wajig
, pero no son el objeto de este artículo, ya que son menos populares o alternativas para otros contextos.
Instalación
En Linux, más concretamente en Debian (o distribuciones de Linux basadas en él), el formato de paquetería que se utiliza para instalar aplicaciones es .deb
(Debian Packages). Se pueden instalar de forma automática con apt
o apt-get
, o de forma manual con dpkg
.
El gestor de paquetes apt nos permite instalar de forma muy sencilla aplicaciones y programas a través del comando apt
(o apt-get
si queremos usar el comando de bajo nivel). Una vez dicho esto, veamos cuales son los parámetros más frecuentes de apt:
Comando | Descripción |
---|---|
apt update | Actualiza la lista de paquetes disponibles desde los repositorios oficiales. |
apt search <palabra> | Busca una o varias palabras en la lista de paquetes disponibles. |
apt list | Lista todos los paquetes disponibles para instalar o instalados en el sistema. |
apt install <paquete> | Instala el paquete indicado en el sistema. |
apt remove <paquete> | Desinstala el paquete indicado del sistema. |
apt purge <paquete> | Desinstala el paquete indicado y elimina sus archivos de configuración. |
En primer lugar, debemos diferenciar bien un paquete (aplicación o programa), de la lista de paquetes disponibles, que es un índice donde se encuentran todos los paquetes instalables desde apt. Esta lista se suele actualizar (para tener la última disponible) mediante apt update
, como veremos a continuación.
Si quisieramos instalar un paquete de forma manual, tendríamos que descargar este archivo .deb
y desde una línea de comandos escribir:
$ dpkg -i nombre_archivo.deb
Al igual que instalamos un paquete con el parámetro -i
(install), podemos desinstalarlo con el parámetro -r
(remove) o ver su contenido con -l
(list). En la instalación, el comando dpkg
(Debian Package) se encargaría de desempaquetar e instalar el paquete, después de comprobar si tenemos todas las dependencias (otros paquetes) necesarias instaladas.
Como todo este trabajo puede llegar a ser muy laborioso si hay muchas dependencias, se ideó apt, un gestor de paquetes que haría todo esto de forma automática por nosotros, búsqueda e instalación de dependencias incluida.
Actualizar lista de paquetes
Lo primero que se debe hacer es ejecutar la línea de comandos apt update
. Este comando lo que hará es actualizar la lista de paquetes disponibles para instalar, que puede estar obsoleta si han pasado varios días desde la última vez que lo hicimos, o incluso puede estar vacía si no lo hemos hecho nunca.
Consejo: Por defecto (sobre todo si usas Docker), las distribuciones suelen venir con esta lista (índice de paquetes) vacía, por lo que si hacemos un
apt install
oapt search
es probable que no nos encuentre nada. Hay que hacer unapt update
antes.
Si nos aparece un mensaje como el siguiente, es que no tenemos permisos para actualizar listas o instalar paquetes. Lo correcto sería hacerlo con privilegios de root, utilizando sudo
antes del comando apt update
:
$ apt update
Reading package lists... Done
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)
Más adelante veremos como podemos gestionar estas listas de paquetes para incluir más repositorios o mantenerlos bien actualizados.
Buscar paquetes
Para buscar paquetes con apt
, solo tenemos que usar el parámetro apt search
seguido de la palabra (o palabras) que queramos buscar:
$ apt search tint2
Sorting... Done
Full Text Search... Done
gsimplecal/stable 2.1-1+b1 amd64
lightweight GUI calendar application
pnmixer/stable 0.7.2-1 amd64
Simple mixer application for system tray
tint2/stable 16.6.1-1 amd64
lightweight taskbar
Esto nos muestra una lista de paquetes que coinciden con los términos que hemos buscado, ya sea porque es el paquete concreto, porque contiene la palabra en su nombre, o porque se cita en la descripción o en alguna palabra clave relacionada.
Nota: Si lo que queremos es más información sobre un paquete en particular, podemos utilizar el comando
apt show <paquete>
donde se nos mostrarán detalles como la versión, el usuario que mantiene el paquete, tamaño de instalación, dependencias, etc...
Ver paquetes instalados
Un poco más amplio es el objetivo de apt list
, el cuál nos muestra la lista de paquetes disponibles para instalar, en un formato más compacto, donde cada línea es un paquete y no muestra descripción. Esto es útil si queremos filtrar haciendo un apt list | grep tint2
por ejemplo. En este caso, solo filtraremos por nombre del paquete.
Si lo que queremos es ver un listado de los paquetes instalados en nuestro sistema, simplemente hay que escribir: apt list --installed
. Por otro lado, apt list --upgradable
nos muestra un listado de los paquetes que tienen actualización disponible.
Instalar paquetes con apt
Probablemente, lo que más nos interese es saber como instalar un paquete con apt. Es algo tan sencillo como escribir apt install
seguido del nombre del paquete.
En muchas ocasiones, apt nos preguntará si estamos seguros de querer continuar, teniendo que pulsar Y o N. Es posible omitir esta pregunta utilizando el flag -y
:
$ sudo apt install mp3blaster -y
Nota: En el caso de querer instalar varios paquetes, puedes establecer una lista de ellos separados por espacio y
apt
los descargará e instalará uno detrás de otro.
Desinstalar paquetes con apt
En el caso de que queramos desinstalar un paquete de nuestro sistema, podremos utilizar apt remove
seguido del nombre del paquete. Esto eliminará dicho paquete de nuestro sistema, exceptuando los ficheros de configuración que pudieramos haber modificado. En el caso de que desinstalemos un programa sin querer, con volverlo a instalar recuperaremos su configuración habitual.
$ sudo apt remove mp3blaster
En el caso de que estemos seguros completamente y/o queramos eliminar por completo la aplicación, incluyendo también los archivos de configuración, podemos utilizar el comando apt purge
seguido del nombre del paquete, en lugar de utilizar apt remove
.
Operaciones de mantenimiento
Otra de las ventajas de apt, es que también permite realizar tareas de mantenimiento o actualizar nuestro sistema mediante algunos de sus comandos. Los más populares son los siguientes:
Comando | Descripción |
---|---|
apt upgrade | Actualiza todos los paquetes instalados que tengan versiones nuevas. |
apt full-upgrade | Actualiza los paquetes importantes del sistema operativo. |
apt autoremove | Elimina paquetes que ya no son necesarios y quedaron en alguna desinstalación. |
apt edit-sources | Edita los repositorios de donde se obtienen los paquetes (ver más adelante). |
Por ejemplo, apt upgrade
(no confundir con apt update
) permite actualizar todos los paquetes instalados que no se encuentren en su última versión. Es una excelente forma de mantener el software de tu sistema actualizado sin demasiadas complicaciones.
El comando apt full-upgrade
nos permite realizar una actualización completa del sistema. En el caso de apt upgrade
, sólo nos actualizará paquetes que pasan a una nueva versión, pero en el caso de apt full-upgrade
también eliminará paquetes instalados en el caso de que sea necesario, como suele serlo en las actualizaciones importantes del sistema.
Por último, apt autoremove
es un comando que permite eliminar paquetes que, tras una actualización, han pasado a ser paquetes huérfanos (que ya no son utilizados) y pueden eliminarse de forma segura para hacer espacio en el disco.
Del nuevo comando apt edit-sources
hablaremos un poco más adelante, en el apartado de Editar los repositorios.
Equivalencias de apt
y apt-get
Si quieres saber la equivalencia de los comandos entre apt
vs apt-get
, puedes echar un vistazo a la siguiente tabla:
Comando apt | Equivalencia a comando apt-get o forma clásica |
---|---|
apt update | apt-get update |
apt install <paquete> | apt-get install <paquete> |
apt search <paquete> | apt-cache search <paquete> |
apt list | apt-cache search ^ |
apt list --installed | dpkg -l o dpkg --get-selections |
apt remove | apt-get remove <paquete> |
apt reinstall <paquete> | apt-get purge <paquete> && apt-get install <paquete> |
apt upgrade | apt-get upgrade |
apt full-upgrade | apt-get dist-upgrade |
apt edit-sources | sudo vim /etc/apt/sources.list |
Recuerda que las instalaciones se pueden realizar tanto desde apt
como desde el comando de bajo nivel apt-get
. Ambos sirven para lo mismo, pero apt
está destinado a ser una opción más sencilla y atractiva (usa colores, barras de progreso, simplifica tareas, etc...) que apt-get
, el cuál es un comando más a bajo nivel, que puede ser más interesante para crear scripts o realizar tareas automatizadas.
Poderes de super vaca
Si nos fijamos bien, al ejecutar apt
nos aparece al final el mensaje This APT has Super Cow Powers
(Este APT tiene poderes de super vaca). Se trata de un huevo de pascua donde podemos ver a una vaquita escribiendo apt moo
, apt moo moo
o apt moo moo moo
:
El mensaje Have you mooed today?
es una referencia al eslogan de las campañas de Microsoft de los años 90, ¿A dónde quieres ir hoy? Where do you want to go today?.