Administración de servidores GNU/Linux

Clase 11: Paquetes y software

Módulo 1 — Operación de Sistemas Operativos GNU/Linux

Temas de la clase 11

Objetivos de la clase

Al finalizar vas a poder:

  • Instalar, actualizar y quitar software con APT.
  • Averiguar qué instaló un paquete y de qué paquete viene un archivo.
  • Leer de dónde descarga Debian el software y por qué confía en él.
  • Reconocer cómo se hace lo mismo con dnf en Rocky Linux.

Retomamos el Laboratorio 9

sudo apt update
sudo apt install htop psmisc
  • ¿Qué hizo cada comando?
  • ¿De dónde salieron htop y psmisc?
  • ¿Por qué el sistema confió en lo que bajó?

Paquetes

Qué se instala y quién lo instala.

Qué trae un paquete .deb

Contenido Ejemplo
Archivos del programa /usr/bin/htop, páginas de manual
Configuración archivos en /etc
Metadatos versión, descripción, dependencias
Scripts se ejecutan al instalar y al quitar

El sistema lleva la cuenta de todo lo que instaló cada paquete. Por eso en un servidor no se instala un programa bajado suelto de una página.

dpkg y APT

repositorio  →  APT  →  dpkg  →  sistema
Herramienta Qué hace
dpkg Instala y consulta un .deb que ya está en el equipo. No descarga ni resuelve dependencias.
APT Busca en los repositorios, descarga, calcula dependencias y le pasa los paquetes a dpkg.

En el día a día usamos APT. dpkg queda para consultar lo instalado.

APT

El uso diario.

update no actualiza programas

sudo apt update     # baja la lista de paquetes disponibles
sudo apt upgrade    # instala las versiones nuevas
  • update actualiza los índices: qué paquetes y versiones hay en los repositorios.
  • upgrade compara lo instalado con esos índices y actualiza.
  • Siempre en ese orden. Sin update, APT compara contra una lista vieja.

¿Qué hay para actualizar?

apt list --upgradable
Listando...
base-files/stable 13.8+deb13u7 amd64 [actualizable desde: 13.8+deb13u6]
bash/stable 5.2.37-2+b10 amd64 [actualizable desde: 5.2.37-2+b9]
bind9-host/stable-security 1:9.20.29-1~deb13u1 amd64 [actualizable desde: 1:9.20.26-1~deb13u1]

Paquete, repositorio, versión nueva y versión instalada. Lo que viene de stable-security es una corrección de seguridad.

upgrade y full-upgrade

Comando Qué hace
sudo apt upgrade Actualiza sin quitar ningún paquete
sudo apt full-upgrade Puede quitar paquetes para resolver dependencias

full-upgrade se usa, por ejemplo, al pasar a una versión nueva de Debian. Antes de confirmar, hay que leer qué va a quitar.

Leer antes de confirmar

sudo apt install mc
Installing:
  mc

Installing dependencies:
  libssh2-1t64  mailcap  mc-data  unzip

Summary:
  Upgrading: 0, Installing: 5, Removing: 0, Not Upgrading: 41
  • Qué instala y qué dependencias agrega.
  • Qué actualiza y qué quita.
  • Cuánto descarga y cuánto espacio ocupa.

Recién después pregunta Continue? [S/n].

Instalar y quitar

Comando Qué hace
sudo apt install mc Instala el paquete y sus dependencias
sudo apt remove mc Quita el programa y deja su configuración en /etc
sudo apt purge mc Quita el programa y su configuración
sudo apt autoremove Quita dependencias que ya nadie usa

Consultas

  • ¿Por qué después de apt update no cambió ningún programa?
  • ¿Qué diferencia hay entre remove y purge?

dpkg

Consultar lo que está instalado.

Consultas con dpkg

dpkg -l tree            # ¿está instalado?
dpkg -L tree            # ¿qué archivos instaló?
dpkg -S /usr/bin/tree   # ¿de qué paquete viene este archivo?
dpkg -S $(which tree)   # lo mismo, sin saber la ruta
Estado en dpkg -l Significado
ii Instalado
rc Quitado, pero queda su configuración

Ninguna de estas consultas necesita sudo.

Un .deb a mano

Se puede instalar un paquete .deb directamente
apt download mc          # baja el .deb, no instala
dpkg-deb -I mc_*.deb     # metadatos
dpkg-deb -c mc_*.deb     # contenido
 Package: mc
 Version: 3:4.8.33-1+deb13u1
 Depends: libc6 (>= 2.38), libext2fs2t64 (>= 1.37), libglib2.0-0t64 (>= 2.78.0), libgpm2 (>= 1.20.7), libslang2 (>= 2.2.4), libssh2-1t64 (>= 1.2.8), mc-data (= 3:4.8.33-1+deb13u1)
 Recommends: mailcap, perl, sensible-utils, unzip

dpkg -i no resuelve dependencias

sudo dpkg -i mc_*.deb          # falla por dependencias
sudo apt install ./mc_*.deb    # APT trae lo que falta
dpkg: problemas de dependencias impiden la configuración de mc:
 mc depende de libssh2-1t64 (>= 1.2.8); sin embargo:
  El paquete `libssh2-1t64' no está instalado.
...
 problemas de dependencias - se deja sin configurar
  • dpkg -i deja el paquete a medio instalar: iU en dpkg -l.
  • sudo apt --fix-broken install completa lo que falta.
  • Sin el ./, APT busca un paquete con ese nombre en los repositorios.

Un .deb suelto no se actualiza

  • APT actualiza lo que viene de sus repositorios.
  • Un .deb bajado de una página queda en la versión que se instaló.
  • Algunos proveedores agregan su repositorio al instalar el .deb. Conviene revisar sources.list.d/ después.

Consultas

  • ¿Qué hace dpkg que no hace APT, y al revés?
  • Si instalás un .deb bajado de una página, ¿quién lo actualiza?

Repositorios

De dónde viene el software.

Los repositorios de la VM

cat /etc/apt/sources.list
deb http://deb.debian.org/debian/ trixie main non-free-firmware
deb-src http://deb.debian.org/debian/ trixie main non-free-firmware

deb http://security.debian.org/debian-security trixie-security main non-free-firmware
deb-src http://security.debian.org/debian-security trixie-security main non-free-firmware

deb http://deb.debian.org/debian/ trixie-updates main non-free-firmware
deb-src http://deb.debian.org/debian/ trixie-updates main non-free-firmware

Cómo se lee una línea

deb http://deb.debian.org/debian/ trixie main non-free-firmware

Parte Qué indica
deb / deb-src Paquetes para instalar / código fuente
URL Servidor del repositorio
trixie Versión: Debian 13
main non-free-firmware Componentes
  • trixie-security: correcciones de seguridad. Es el más importante en un servidor.
  • trixie-updates: cambios que no esperan al siguiente lanzamiento menor.

El formato nuevo: deb822

/etc/apt/sources.list.d/debian.sources

Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie
Components: main non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
  • Lo mismo que la línea, un dato por renglón.
  • Signed-By indica con qué clave se verifica ese repositorio.
  • Los dos formatos funcionan en Debian 13.

apt modernize-sources

sudo apt modernize-sources
  • Convierte sources.list al formato .sources.
  • Agrega Signed-By cuando puede deducirlo.
  • Guarda el original como sources.list.bak.
  • Si respondés n, muestra lo que haría sin cambiar nada.

Firmas: por qué confiamos

  • Cada repositorio publica sus índices firmados.
  • APT verifica esa firma con las claves de /usr/share/keyrings/.
  • Los índices tienen la suma de verificación de cada paquete.
  • Un archivo alterado no pasa la verificación, aunque llegue por HTTP.

Si apt update da un error de firma, no se usa ese repositorio hasta saber por qué.

Repositorios de terceros

Types: deb
URIs: https://repo.ejemplo.com/debian
Suites: trixie
Components: stable
Signed-By: /etc/apt/keyrings/ejemplo.asc
  • La clave del proveedor va en /etc/apt/keyrings/.
  • Solo sirve para su repositorio.
  • Agregar un repositorio le permite a ese proveedor instalar y actualizar software como root en el servidor.

¿De dónde viene esta versión?

apt policy htop
htop:
  Instalados: 3.4.1-5
  Candidato:  3.4.1-5
  Tabla de versión:
 *** 3.4.1-5 500
        500 http://deb.debian.org/debian trixie/main amd64 Packages
        100 /var/lib/dpkg/status

Versión instalada, versión que instalaría APT y repositorio de origen.

Antes y ahora

Antes En Debian 13
apt-get y apt-cache apt en la terminal; los anteriores, en scripts
Solo sources.list, una línea por repositorio También archivos .sources (deb822)
apt-key add: una clave valía para todos los repositorios Signed-By: cada clave vale para su repositorio
apt-key Ya no existe
APT 2 con gpgv APT 3 con sqv (Sequoia)

Si un tutorial empieza con apt-key add, es viejo y no funciona en Debian 13.

Consultas

  • ¿Qué pasa si apt update da un error de firma?

Otras distribuciones

Ubuntu y Rocky Linux.

Ubuntu

Misma familia: .deb, dpkg y apt. Todo lo de hoy vale.

Diferencia En Ubuntu
Componentes main, restricted, universe, multiverse
Repositorios /etc/apt/sources.list.d/ubuntu.sources (deb822 desde 24.04)
Repositorios personales PPA, con add-apt-repository
Otro formato Snap, junto a los .deb

Snap en Ubuntu

snap list              # snaps instalados
snap info lxd          # versiones y canales disponibles
sudo snap install lxd
sudo snap refresh      # actualizar los snaps
  • snapd viene instalado en todo Ubuntu, de escritorio y servidor. En escritorio, Firefox ya es un snap; el instalador de servidor ofrece snaps destacados.
  • Un snap trae el programa con sus bibliotecas y corre aislado del resto del sistema.
  • Viene de la tienda de Canonical, no de los repositorios de APT.
  • Se actualiza solo, varias veces por día. apt upgrade no lo toca.

Flatpak

Formato para aplicaciones de escritorio que funcionan igual en cualquier distribución.

sudo apt install flatpak
flatpak remote-add --if-not-exists flathub \
    https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.gimp.GIMP
flatpak update
  • Las aplicaciones vienen de fuentes que se agregan; la más usada es Flathub.
  • Cada aplicación trae lo que necesita y corre aislada.
  • APT no las actualiza: se usa flatpak update.
  • En Fedora, Linux Mint o Pop!_OS ya viene instalado. En Debian y Ubuntu hay que instalarlo.

Rocky Linux 9

  • Familia Red Hat: compatible con Red Hat Enterprise Linux.
  • Paquetes .rpm; rpm consulta lo instalado y dnf maneja repositorios y dependencias.
  • Elegimos la versión 9 porque pide menos hardware que la 10.
  • Soporte de seguridad hasta mayo de 2032.

apt y dnf

Debian / Ubuntu Rocky Linux
apt update dnf check-update
apt update && apt upgrade dnf upgrade (o dnf update)
apt install / remove dnf install / remove
apt search / show dnf search / info
dpkg -L paquete rpm -ql paquete
dpkg -S archivo rpm -qf archivo
/etc/apt/sources.list.d/ /etc/yum.repos.d/*.repo

Repositorios en Rocky

/etc/yum.repos.d/rocky.repo

[baseos]
name=Rocky Linux $releasever - BaseOS
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever$rltype
gpgcheck=1
enabled=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9
  • gpgcheck=1 y gpgkey=: cada repositorio declara su clave, como Signed-By.
  • metadata_expire=6h: dnf actualiza los índices solo. No hay un paso como apt update.
  • dnf repolist muestra los activos: baseos, appstream y extras.

Quitar en Rocky

sudo dnf remove mc
advertencia:/etc/mc/mc.menu saved as /etc/mc/mc.menu.rpmsave
  • No hay purge. Lo que modificaste en la configuración queda como .rpmsave; lo demás se borra.
  • dnf remove quita también las dependencias que ya no hacen falta, sin autoremove.
  • rpm -V paquete muestra qué archivos del paquete cambiaron.

EPEL

dnf info htop                    # no aparece: Rocky no lo trae
sudo dnf install epel-release    # agrega el repositorio EPEL
sudo dnf install htop
Importando llave GPG 0x3228467C:
 Huella    : FF8A D134 4597 106E CE81 3B91 8A38 72BF 3228 467C
 Desde     : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
  • EPEL: paquetes extra para Enterprise Linux, mantenidos por Fedora.
  • La primera vez, dnf pide aceptar su clave. Ahí se decide si se confía en ese repositorio.
  • dnf provides /usr/bin/htop busca qué paquete trae un archivo, aunque no esté instalado.

Otros gestores de paquetes

Distribución Paquetes Gestor Instalar Actualizar todo
Debian, Ubuntu .deb apt apt install apt update && apt upgrade
Rocky, RHEL, Fedora .rpm dnf dnf install dnf upgrade
openSUSE, SLES .rpm zypper zypper install zypper update
Arch Linux .pkg.tar.zst pacman pacman -S pacman -Syu
Alpine Linux .apk apk apk add apk update && apk upgrade

La idea es la misma en todos: repositorios firmados, dependencias y un registro de lo instalado.

Consultas

  • ¿Qué tienen en común apt, dnf y los demás gestores?

Seguridad al instalar software

  • Lo que viene de Debian lo firma y lo actualiza Debian.
  • Un .deb suelto, un repositorio de terceros o un curl | sudo bash obligan a responder:
    • ¿Quién verificó de dónde viene?
    • ¿Quién va a aplicar sus parches?

Revisión mínima:

apt list --upgradable
ls /etc/apt/sources.list.d/

Actividad práctica — Laboratorios 10.1 y 10.2

Objetivo: instalar, consultar y quitar software con apt en Debian y con dnf en Rocky Linux.

  • 10.1, Debian: leer los repositorios, actualizar la lista de paquetes, instalar mc, consultarlo con dpkg y quitarlo con remove y purge.
  • 10.2, Rocky: descargar la VM, comprobar su SHA256, importarla en VirtualBox, instalar tree con dnf, consultarlo con rpm y quitarlo.

Referencias

Volver al índice del curso