Adentrándonos en las profundidades de GNU/Linux
En el último capítulo conocimos lo básico de Linux, las distribuciones más utilizadas y amigables …
leer másEn cualquier sistema operativo, la instalación, actualización y eliminación de software es una tarea fundamental. En GNU/Linux, esta gestión se realiza a través de paquetes, que son colecciones de archivos que se instalan en tu sistema para proporcionar una aplicación o utilidad. Estos paquetes se encuentran almacenados en repositorios, que son básicamente servidores remotos que contienen una gran colección de software empaquetado, listo para ser descargado e instalado.
Los repositorios son almacenes en línea donde se encuentran los paquetes de software listos para ser instalados en una distribución de Linux. Cada distribución tiene sus propios repositorios oficiales, suelen contener software que ha sido probado y verificado para funcionar correctamente con esa distribución en particular. Además de los repositorios oficiales, también es posible añadir repositorios de terceros para obtener software que no está disponible en éstos.
En este artículo vamos a centrarnos en la gestión de paquetes en distribuciones basadas en Debian y Red Hat, que son dos de las familias de distribuciones más populares en el mundo de GNU/Linux. Ejemplos de distribuciones basadas en Debian son Ubuntu, Linux Mint y el propio Debian, mientras que las basadas en Red Hat son Fedora, CentOS y RHEL (Red Hat Enterprise Linux).
Veremos únicamente los repositorios oficiales y de terceros, son los más habituales, los que se suelen utilizar en la mayoría de entornos de usuario final.
Puedes probar todos los comandos que se mencionarán a continuación sin miedo a romper nada virtualizando cada uno de los sistemas con Docker:
docker run -it --name debian-container --restart=no debian:latest # Debian
docker run -it --name fedora-container --restart=no fedora:latest # Fedora
Los repositorios oficiales, como mencionamos antes, son mantenidos por los desarrolladores de la distribución y contienen software que ha sido probado y verificado para funcionar correctamente en ella; se actualizan regularmente para proporcionar a los usuarios las últimas versiones de software.
La gestión de repositorios en GNU/Linux implica agregar, eliminar o modificar las fuentes de las que el sistema descarga los paquetes. La correcta gestión de los repositorios es crucial para mantener la estabilidad y seguridad del sistema, ya que un repositorio mal configurado o con software no confiable puede conllevar riesgos de seguridad.
Se almacenan en la ruta /etc/apt/sources.list.d
en sistemas basados en Debian y /etc/yum.repos.d/
en sistemas
basados en Red Hat.
Se verían tal que así en un Ubuntu 24.04:
betazetadev@desktop:/etc/apt/sources.list.d$ ls
dart_stable.list
librewolf.sources
docker.list
inkscape_dev-ubuntu-stable-noble.sources
ubuntu.sources
ubuntu.sources.curtin.orig
Y así en un Fedora 40, la versión más reciente a fecha de escritura de este artículo:
betazetadev@desktop:/etc/yum.repos.d$ ls
fedora-cisco-openh264.repo
fedora-updates-testing.repo
fedora-updates.repo
fedora.repo
El contenido de estos archivos es parecido en su contenido, la URL del repositorio, la distribución y la rama de la que se descargan los paquetes, entre otros parámetros. Por ejemplo, los repositorios oficiales de Ubuntu se verían así:
Types: deb
URIs: http://es.archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
El formato en sistemas basados en Red Hat es diferente pero similar en su esencia:
[fedora]
name=Fedora $releasever - $basearch
#baseurl=http://download.example/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
enabled=1
countme=1
metadata_expire=7d
repo_gpgcheck=0
type=rpm
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
Es importante resaltar la parte del firmado, ya que los paquetes se firman digitalmente para garantizar su autenticidad y evitar la manipulación de los mismos. Si un paquete no está firmado o la firma no coincide con la clave pública del repositorio, el gestor de paquetes mostrará un mensaje de advertencia y no permitirá la instalación del mismo. Esto es una medida de seguridad para garantizar que los paquetes descargados son auténticos y no han sido modificados por terceros.
En distribuciones basadas en Debian, anteriormente, se utilizaba el archivo /etc/apt/sources.list
(aun presente) para
gestionar los repositorios, pero en la actualidad se recomienda utilizar archivos individuales en el
directorio /etc/apt/sources.list.d/
para una mejor organización y mantenimiento, de esta manera podemos diferenciar
los repositorios en archivos separados y habilitar o deshabilitarlos según sea necesario sin preocupación de afectar a
otros.
Los repositorios pueden ser gestionados también a través de la interfaz gráfica de las herramientas de gestión de
software y actualizaciones integradas en las distribuciones más habituales. En Ubuntu, por ejemplo, se
llama Software & Updates
y permite añadir, eliminar y modificar los repositorios de forma sencilla y visual.
La gestión de paquetes en GNU/Linux se realiza a través de herramientas específicas que permiten instalar, actualizar,
eliminar y buscar paquetes en los repositorios. En distribuciones basadas en Debian, la herramienta más común es apt
,
mientras que en distribuciones basadas en Red Hat se utiliza yum
.
Una vez sabemos de dónde se obtienen las aplicaciones y cómo se organizan los repositorios en el sistema vamos a ver cómo instalar, actualizar y eliminar paquetes en GNU/Linux.
Podemos hacer búsquedas de paquetes en los repositorios para obtener información sobre ellos, su nombre,
descripción, versión y dependencias. Para ello, utilizamos el comando apt search
en distribuciones basadas en Debian
y yum search
en distribuciones basadas en Red Hat. Con “dependencias” nos referimos a otros paquetes o librerías que
un programa necesita para funcionar correctamente. Cuando instalas un paquete, el gestor de paquetes también se encarga
de instalar automáticamente todas las dependencias requeridas para que el software funcione.
La búsqueda nos proporcionará los detalles del paquete, su descripción, número de versión, tamaño, dependencias y otros
detalles. Por ejemplo, para buscar el paquete htop
, que es un monitor de sistema interactivo que se ejecuta
directamente en la terminal, se utilizaría el siguiente comando:
apt search htop
Eso sí, antes de hacer una búsqueda en sistemas basados en Debian, es recomendable actualizar el estado del repositorio en
nuestro sistema utilizando el comando apt update
. Esto actualizará la lista de paquetes disponibles en los repositorios
y su información, permitiendo que el gestor de paquetes encuentre las versiones más recientes. En sistemas basados en Red
Hat, como Fedora, no es necesario realizar un paso previo similar, ya que yum search
actualiza automáticamente la información
del repositorio antes de mostrar los resultados.
En distribuciones basadas en Red Hat, el comando sería similar:
yum search htop
También podemos buscar entre los paquetes instalados en el sistema para saber si tenemos un paquete en concreto. Para ello,
utilizamos el comando apt list --installed
en distribuciones basadas en Debian y yum list installed
en distribuciones
basadas en Red Hat.
Por ejemplo, para buscar si el paquete htop
está instalado en el sistema, se utilizaría el siguiente comando:
apt list --installed | grep htop
En distribuciones basadas en Red Hat, el comando sería similar:
yum list installed | grep htop
Gracias a la combinación de apt list --installed
y grep
podemos buscar entre los paquetes instalados en el sistema, el
comando grep
busca una cadena de texto en la salida de otro comando, en este caso, busca la cadena htop
en la salida
de apt list --installed
o yum list installed
, mediante la tubería |
se envía la salida de un comando a otro.
En este otro artículo
hicimos un recorrido por los comandos más comunes de la terminal de GNU/Linux que te recomiendo visitar, si es que aun no
estás familiarizado con ellos. Nos informará si el paquete está instalado o no, y en caso de estarlo, nos mostrará la versión instalada. Si no aparece
nada en la salida, significa que el paquete no se encuentra en el sistema.
En caso de no encontrar un paquete en los repositorios oficiales, puede que esté en un repositorio de terceros o que ya no
esté disponible para nuestra distribución a través de estos medios, por lo que habría que buscarlo por otras vías. Por lo general,
cuando esto ocurre, lo que se suele hacer es acudir a la página web oficial del software y buscar instrucciones de instalación
para nuestra distribución, que suele incluir la descarga de un paquete .deb
o .rpm
para su instalación manual o indicarnos
cómo añadir el repositorio para utilizar apt
o yum
para gestionarlo.
Los paquetes .deb
son para las derivadas de Debian, mientras que los paquetes .rpm
se utilizan en las basadas en Red Hat.
Estos paquetes contienen el software empaquetado y sus dependencias, se pueden instalar manualmente en el sistema utilizando
herramientas como dpkg
y rpm
respectivamente.
Los paquetes instalados utilizando binarios .deb o .rpm generalmente requieren gestión manual. En el caso de los paquetes
.deb
, no se actualizarán automáticamente a través de apt
, por lo que es importante tener en cuenta este detalle al instalar
software de esta manera. Sin embargo, en sistemas basados en Red Hat, los paquetes .rpm
pueden actualizarse utilizando
el mismo binario con el comando rpm -U
, lo que permite mantener los paquetes actualizados sin necesidad de una gestión
manual constante. Más adelante exploraremos la gestión manual de los paquetes.
Cómo decíamos, utilizaremos los comandos apt
y yum
para acceder a los paquetes del repositorio, ambos comandos requieren
privilegios de superusuario en caso de hacer modificaciones (instalar, eliminar, actualizar), de ser así, es necesario utilizar
sudo
o iniciar una sesión como superusuario antes de ejecutarlos, la consulta (búsqueda) puede hacerse con un usuario
sin privilegios de administración.
Para instalar un paquete con apt
, se utiliza el siguiente comando:
sudo apt install nombre_paquete
Para instalar el paquete htop
, del que previamente hemos hecho la búsqueda oportuna, se utilizaría el siguiente comando:
sudo apt install htop
Para eliminarlo, se utilizaría el parámetro remove
:
sudo apt remove htop
Mientras que para actualizarlo, se utilizaría el comando:
sudo apt install --only-upgrade htop
Hay que tener en cuenta que los programas de la propia distribución se pueden actualizar con estas herramientas, para
ello se utiliza, primero apt update
para actualizar la lista de paquetes disponibles como coméntabamos antes y apt upgrade
para actualizar los paquetes instalados en el sistema. Así podemos, de una tirada, actualizar todo el software.
Esto actualiza las aplicaciones instaladas desde los repositorios oficiales, pero no actualiza el sistema operativo en
sí ni las aplicaciones instaladas desde otros medios, como por ejemplo, aplicaciones de terceros o manualmente. Para
actualizar el sistema operativo a una nueva versión, se utiliza el comando apt dist-upgrade
. Pero es importante
tener en cuenta que en caso de haber problemas con la actualización, el sistema puede quedar inestable o incluso dejar
de funcionar, por lo que se recomienda encarecidamente hacer una copia de seguridad antes de realizar este proceso. Los
paquetes instalados a mano, por lo general, hay que actualizarlos a mano.
La gestión manual de los paquetes requiere de conocer algunos comandos básicos como dpkg
para instalar paquetes .deb
o rpm
para instalar paquetes con esta extensión.
Para manejar un paquete .deb
utilizamos el comando dpkg
:
dpkg -i paquete.deb
: Instala un paquete .deb
.dpkg -r paquete
: Elimina un paquete instalado.dpkg -l | grep paquete
: Muestra información sobre un paquete instalado.Para actualizarlo es necesario descargar la nueva versión del paquete y volver a instalarlo con dpkg -i paquete.deb
.
En distribuciones basadas en Red Hat, el comando yum
se utiliza para instalar, actualizar y eliminar paquetes desde los
repositorios. Para instalar un paquete:
sudo yum install nombre_paquete
Por ejemplo, de nuevo, para instalar el paquete htop
utilizaríamos el comando a continuación:
sudo yum install htop
Para eliminarlo, se utilizaría el parámetro remove
:
sudo yum remove htop
Mientras que para actualizarlo, se utilizaría el comando yum update
:
sudo yum update htop
Al igual que con apt
, yum
también permite actualizar todo el software del sistema con un solo comando, utilizando yum update
.
Este comando actualiza tanto las aplicaciones instaladas como el sistema operativo a las versiones más recientes disponibles
en los repositorios oficiales. No es necesario un comando adicional para actualizar el sistema operativo en sí, ya que yum update
,
cubre, en este caso, ambos aspectos. Sin embargo, como ocurre en otros sistemas, las aplicaciones instaladas manualmente
o desde repositorios de terceros pueden requerir de una gestión independiente.
Para gestionar un paquete .rpm
en Red Hat y derivados, se utiliza el comando rpm
:
rpm -i paquete.rpm
: Instala un paquete .rpm
.rpm -e paquete
: Elimina un paquete instalado.rpm -q paquete
: Muestra información sobre un paquete instalado.rpm -U paquete.rpm
: Actualiza un paquete .rpm
.Mientras que las distribuciones basadas en Red Hat si que permiten actualizar un paquete rpm
con el
comando rpm -U paquete.rpm
siempre será más fiable y seguro hacerlo a través de yum
para que se encargue de las
dependencias y de la actualización de los paquetes relacionados.
Es fácil llegar a tener problemas de dependencias si se instalan paquetes manualmente por lo que es recomendable siempre que sea posible instalar paquetes desde los repositorios oficiales, ya que estos han sido probados y verificados para funcionar correctamente con la distribución en particular. Sin embargo, en algunos casos es necesario instalar software que no está disponible en los repositorios oficiales, por lo que es necesario recurrir a otras fuentes, como repositorios de terceros o instalación manual.
Como hemos hablado en otras ocasiones, (casi) todo en Linux tiene interfaz gráfica y la gestión de paquetes no iba a ser
menos. Todas las grandes distribuciones suelen venir con un programa por defecto integrado que nos permiten instalar,
actualizar y eliminar el software de forma sencilla a través de una interfaz gráfica intuitiva, sin necesidad de introducir
comandos. Esta de abajo, por ejemplo, es la tienda de aplicaciones de snap
de Ubuntu, que permite instalar aplicaciones
empaquetadas en snap
, un formato creado por Canonical (la empresa detrás de Ubuntu) para su sistema operativo, pero que
no es exclusivo de este, ya que se puede instalar en otras distribuciones. En la página de Ubuntu
tienes más información al respecto.
La gestión de paquetes en GNU/Linux es una tarea fundamental que permite instalar, actualizar y eliminar software de forma sencilla y segura, pero sobre todo organizada. Gracias a este sistema de paquetes y repositorios, además de centralizar la gestión del software y sus configuraciones (utilizando las rutas específicas para ello) se garantiza la estabilidad y seguridad del sistema. Te invito a trastear un poco con estos y otros comandos para familiarizarte con la gestión de paquetes en GNU/Linux, es una de las tareas más comunes y útiles que realizarás en tu día a día con el sistema operativo.
Quizá te puedan interesar
En el último capítulo conocimos lo básico de Linux, las distribuciones más utilizadas y amigables …
leer más¿Qué es Linux? Linux es un sistema operativo de código abierto, lo que significa que su código …
leer másEn el último capítulo nos adentramos en las profundidades de GNU/Linux, explorando la gestión de …
leer másDe concepto a realidad