Módulo 1 — Operación de Sistemas Operativos GNU/Linux
Al finalizar vas a poder:
dnf en Rocky Linux.sudo apt update
sudo apt install htop psmisc
htop y psmisc?Qué se instala y quién lo instala.
| 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.
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.
El uso diario.
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.update, APT compara contra una lista vieja.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.
| 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.
sudo apt install mc
Installing:
mc
Installing dependencies:
libssh2-1t64 mailcap mc-data unzip
Summary:
Upgrading: 0, Installing: 5, Removing: 0, Not Upgrading: 41
Recién después pregunta Continue? [S/n].
| 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 |
apt update no cambió ningún programa?remove y purge?Consultar lo que está instalado.
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.
.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
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../, APT busca un paquete con ese nombre en los repositorios..deb bajado de una página queda en la versión que se instaló..deb. Conviene revisar sources.list.d/ después.dpkg que no hace APT, y al revés?.deb bajado de una página, ¿quién lo actualiza?De dónde viene el software.
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
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./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
Signed-By indica con qué clave se verifica ese repositorio.sudo apt modernize-sources
sources.list al formato .sources.Signed-By cuando puede deducirlo.sources.list.bak.n, muestra lo que haría sin cambiar nada./usr/share/keyrings/.Si apt update da un error de firma, no se usa ese repositorio hasta saber por qué.
Types: deb
URIs: https://repo.ejemplo.com/debian
Suites: trixie
Components: stable
Signed-By: /etc/apt/keyrings/ejemplo.asc
/etc/apt/keyrings/.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 | 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.
apt update da un error de firma?Ubuntu y Rocky Linux.
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 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.apt upgrade no lo toca.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
flatpak update..rpm; rpm consulta lo instalado y dnf maneja repositorios y dependencias.| 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 |
/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.sudo dnf remove mc
advertencia:/etc/mc/mc.menu saved as /etc/mc/mc.menu.rpmsave
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.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
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.| 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.
apt, dnf y los demás gestores?.deb suelto, un repositorio de terceros o un curl | sudo bash obligan a responder:Revisión mínima:
apt list --upgradable
ls /etc/apt/sources.list.d/
Objetivo: instalar, consultar y quitar software con apt en Debian y con dnf en Rocky Linux.
mc, consultarlo con dpkg y quitarlo con remove y purge.tree con dnf, consultarlo con rpm y quitarlo.man apt, man apt-get, man dpkg, man sources.list.