Linux: paquetes
Cómo se instala software en Linux: la diferencia entre los gestores que resuelven dependencias y los que no, las órdenes de las dos grandes familias de distribuciones, y los formatos universales que funcionan en todas.
Por qué hay dos gestores y no uno
En Linux el software no se instala bajando un ejecutable de una página, sino pidiéndoselo a un repositorio, que es un almacén de paquetes firmado y mantenido por la distribución. Un paquete es un archivo comprimido con los ficheros del programa y una lista de qué otros paquetes necesita para funcionar, que es lo que se llama sus dependencias.
Ahí está la distinción que más se pregunta. Los gestores de bajo nivel trabajan con un paquete suelto que ya tienes en el disco: lo instalan, lo consultan o lo borran, pero no salen a buscar nada. Si al paquete le falta una dependencia, se quejan y se paran. Los gestores de alto nivel hablan con los repositorios, descargan lo que haga falta y resuelven la cadena entera de dependencias antes de instalar. Por debajo acaban llamando al de bajo nivel.
| Familia | Bajo nivel | Alto nivel | Extensión |
|---|---|---|---|
| Debian, Ubuntu, Mint | dpkg | apt | .deb |
| Red Hat, Fedora, CentOS | rpm | dnf (antes yum) | .rpm |
| openSUSE | rpm | zypper | .rpm |
| Arch | pacman | pacman | .pkg.tar.zst |
dpkg y rpm no resuelven dependencias. apt y dnf sí, porque son los únicos que hablan con los repositorios.
Para el examen
Bajo nivel: dpkg para .deb y rpm para .rpm: instalan el paquete suelto y no resuelven dependencias
Alto nivel: apt en Debian y Ubuntu, dnf en Red Hat y Fedora: repositorios y dependencias
La familia Debian: dpkg y apt
dpkg opera sobre un fichero .deb que ya está en el disco. Se usa cuando alguien te pasa un paquete suelto, y es donde aparece el fallo típico de dependencias no satisfechas.
dpkg -i programa.deb # instalar un .deb que ya tengo
dpkg -l # listar lo instalado
dpkg -l | grep nginx # comprobar si algo concreto está
dpkg -r programa # desinstalar, conservando su configuración
dpkg -P programa # purgar: borra también la configuraciónapt es el de uso diario. Hay dos órdenes suyas que se confunden en examen y conviene separar bien: apt update no actualiza ningún programa, solo refresca el índice de lo que hay disponible en los repositorios; quien actualiza de verdad los paquetes instalados es apt upgrade. Por eso lo normal es encadenarlas.
apt update # refrescar el índice de los repositorios
apt upgrade # actualizar los paquetes ya instalados
apt install nginx # instalar, con sus dependencias
apt remove nginx # desinstalar, dejando la configuración
apt purge nginx # desinstalar y borrar la configuración
apt search servidor web # buscar en los repositorios
apt show nginx # ver la ficha de un paqueteapt update refresca la lista; apt upgrade actualiza los programas. Y remove deja la configuración, purge la borra.
Para el examen
apt update: solo refresca el índice de paquetes
apt upgrade: el que realmente actualiza los paquetes
remove frente a purge: remove deja la configuración; purge la borra también
La familia Red Hat: rpm y dnf
El reparto es el mismo con otros nombres. rpm es el de bajo nivel y trabaja sobre un fichero .rpm concreto; dnf es el de alto nivel y es quien va a los repositorios. dnf sustituyó a yum, que sigue funcionando como alias por compatibilidad y por eso aparece todavía en muchos manuales.
rpm -i programa.rpm # instalar un .rpm que ya tengo
rpm -q nginx # preguntar si un paquete está instalado
rpm -qa # listar todos los instalados
rpm -e nginx # desinstalar
dnf install nginx # instalar, con sus dependencias
dnf remove nginx # desinstalar
dnf search servidor # buscar
dnf upgrade # actualizar el sistemaUna diferencia de detalle que cae: en la familia Red Hat no existe la pareja update y upgrade de apt. dnf upgrade ya refresca los metadatos por su cuenta antes de actualizar, así que no hace falta una orden previa.
Para el examen
dnf: sustituyó a yum, que queda como alias
rpm -i y rpm -qa: instalar un .rpm suelto y listar lo instalado
dnf upgrade: refresca metadatos y actualiza en una sola orden
Los formatos universales: Snap y Flatpak
El sistema clásico tiene un problema: un .deb no sirve en Fedora, y una aplicación que necesita una versión de una biblioteca distinta de la que trae la distribución no hay por dónde cogerla. Los formatos universales lo resuelven empaquetando la aplicación junto con sus dependencias y ejecutándola aislada del resto del sistema.
| Formato | De quién es | Rasgo propio |
|---|---|---|
| Snap | Canonical (Ubuntu) | Tienda centralizada y actualizaciones automáticas |
| Flatpak | Ecosistema freedesktop | Repositorios abiertos, el más usado es Flathub |
| AppImage | Proyecto independiente | Un solo fichero que se ejecuta sin instalar nada |
snap install nombre
snap list
snap remove nombre
flatpak install flathub org.ejemplo.Programa
flatpak list
flatpak run org.ejemplo.ProgramaLa ventaja se paga: como cada aplicación carga sus propias dependencias en vez de compartir las del sistema, ocupan bastante más espacio y arrancan algo más lento que el mismo programa instalado con apt o dnf.
Para el examen
Snap: de Canonical, con tienda centralizada
Flatpak: del ecosistema freedesktop, con repositorios como Flathub
AppImage: un solo fichero, sin instalación
Lo que comparten: llevan sus dependencias dentro y ocupan más