Ghost AcademyGhostLinux · Ghost Academy
GhostLinuxMódulo 102Examen 101-500

Instalación de Linux y gestión de paquetes

LPI 102.1 Diseño de discoLPI 102.2 Gestor de arranqueLPI 102.3 Librerías compartidasLPI 102.4 Paquetes DebianLPI 102.5 Paquetes RPM/YUM/DNFLPI 102.6 Invitado de virtualización

Este módulo es el más largo del Bloque 1 porque junta dos mundos distintos: las decisiones que tomas una vez, al instalar el sistema (particionado, gestor de arranque), y el trabajo del día a día que vas a repetir miles de veces en tu carrera: instalar, actualizar y quitar paquetes. El examen pregunta por los dos gestores de paquetes principales del ecosistema Linux — Debian/APT y RPM/DNF — aunque tu distro use solo uno de ellos.

Objetivos de la unidad

1. LPI 102.1 — Diseñar el particionado del disco

En el módulo 00 usaste el particionado guiado con LVM sin preguntarte por qué. Toca entender el razonamiento: ¿qué ganas separando /home de /, o /var de todo lo demás?

Partición/punto de montajePor qué se separa
/bootEl gestor de arranque necesita leerla antes de que existan drivers de LVM/RAID/cifrado — por eso vive fuera del volumen LVM, como viste en el módulo 00
/homeSi reinstalas el sistema, conservas los datos de los usuarios formateando solo /
/varContiene logs, colas de correo y cachés de paquetes — crece de forma impredecible; separarla evita que un log descontrolado deje sin espacio a / y tumbe el sistema
/tmpSe puede montar con noexec,nosuid (nadie ejecuta binarios ni escala privilegios desde ahí) y limitar su tamaño sin arriesgar el resto del disco
swapMemoria de intercambio — ver reglas de tamaño más abajo
/ (raíz)El resto: binarios del sistema, /etc, /usr... en un portátil o VM de laboratorio sencilla, puede ser la única partición de datos aparte de /boot y swap
Tamaño de swap, la pregunta recurrente del examen: ya no se aplica la vieja regla de "el doble de la RAM" — con equipos de 16/32 GB sería un disparate. La guía moderna: sin hibernación, un par de GB bastan incluso con mucha RAM (cubre picos puntuales); con hibernación, el swap tiene que ser como mínimo igual a la RAM instalada, porque ahí es donde se vuelca el contenido completo de memoria al suspender a disco.

Separar particiones tiene un coste: espacio "atrapado" en una partición que no puedes usar en otra sin redimensionar. Por eso el esquema guiado del módulo 00 usaba LVM — los volúmenes lógicos se pueden agrandar (y con ciertos sistemas de ficheros, encoger) sin mover datos a mano, algo que una tabla de particiones clásica no permite sin herramientas externas.

Las herramientas concretas para crear particiones (fdisk, parted, gdisk) y sistemas de ficheros (mkfs) se detallan en el módulo 104 — aquí lo importante es el criterio de diseño, que es justo lo que pregunta 102.1.

🧰 Recursos relacionados (Ghost Academy)

Practica más — labs ya publicados en Ghost Academy sobre este tema: 💾 GParted (lab) · 🔄 TestDisk: recuperación de particiones (lab) · 💿 Montaje de sistemas de archivos (lab)

2. LPI 102.2 — Instalar un gestor de arranque

El proceso de arranque con GRUB2 ya se vio a fondo en el módulo 101. El objetivo 102.2 mira ese mismo tema desde el momento de la instalación: ¿qué gestor eliges, y qué pasa si en el disco ya hay otro sistema operativo?

Gestor de arranqueEstado
GRUB2Estándar actual en Debian, Ubuntu y la inmensa mayoría de distros
GRUB legacy (0.9x)Predecesor de GRUB2, en desuso — el examen solo espera que sepas que existió
LILOMucho más antiguo que GRUB, sin menú interactivo real, prácticamente abandonado — conocimiento histórico
systemd-bootGestor minimalista solo-UEFI, alternativa moderna a GRUB en algunas distros (no es el caso de Debian/Ubuntu por defecto)
syslinux/isolinuxPensado para medios extraíbles y arranque en red (PXE), no para el disco principal

Si instalas Linux en un equipo que ya tiene Windows, el instalador (a través de os-prober) detecta el otro sistema y añade una entrada de chainload en el menú de GRUB:

root@lpic1:~#
$ os-prober
/dev/sda1:Windows Boot Manager:Windows:efi
root@lpic1:~#
$ update-grub
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.1.0-18-amd64
Found initrd image: /boot/initrd.img-6.1.0-18-amd64
Found Windows Boot Manager on /dev/sda1@/EFI/Microsoft/Boot/bootmgfw.efi
done
Si tu VM de laboratorio está en modo UEFI (lo normal en VirtualBox moderno), GRUB se instala en la partición ESP en vez de en el MBR — mismo concepto de 101.2, soporte de firmware distinto.

3. LPI 102.3 — Gestionar librerías compartidas

La mayoría de binarios en Linux no llevan todo su código dentro: dependen de librerías compartidas (ficheros .so, "shared object") que varios programas reutilizan en memoria. Gestionar esas dependencias es justo lo que pregunta 102.3.

3.1 Ver de qué librerías depende un binario: ldd

root@lpic1:~#
$ ldd /bin/ls
linux-vdso.so.1 (0x00007ffc8b5fe000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f2e1a1b0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2e19fc5000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f2e19f30000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2e1a1f0000)

Si alguna línea muestra not found, el binario no va a ejecutarse — es el síntoma clásico de una librería que falta tras una actualización o una instalación manual fuera del gestor de paquetes.

3.2 Dónde busca el sistema las librerías

RutaQué contiene
/lib, /usr/libLibrerías del sistema y de paquetes instalados
/lib64, /usr/lib64Equivalente de 64 bits en sistemas que distinguen arquitecturas (más habitual en familia RPM)
/etc/ld.so.confLista rutas adicionales de búsqueda — normalmente solo incluye /etc/ld.so.conf.d/*.conf
/etc/ld.so.conf.d/*.confFicheros donde paquetes de terceros añaden sus propias rutas de librerías
/etc/ld.so.cacheCaché binaria precalculada de todas las rutas anteriores — la que realmente consulta el enlazador dinámico en cada ejecución
root@lpic1:~#
$ cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
root@lpic1:~#
$ ldconfig -p | grep libpcre2
	libpcre2-8.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libpcre2-8.so.0
ldconfig, sin argumentos, regenera /etc/ld.so.cache leyendo de nuevo todas las rutas configuradas. Hay que ejecutarlo cada vez que instalas una librería a mano fuera del gestor de paquetes (los gestores de paquetes ya lo llaman automáticamente en sus scripts post-instalación). ldconfig -p en cambio no regenera nada: solo muestra el contenido actual de la caché.

3.3 LD_LIBRARY_PATH: la ruta de emergencia

Puedes forzar que el enlazador busque primero en una ruta concreta con una variable de entorno, sin tocar ld.so.conf:

root@lpic1:~#
$ LD_LIBRARY_PATH=/opt/miapp/lib ./mi_programa
Útil para pruebas puntuales o programas empaquetados a mano con sus propias librerías en una ruta no estándar. No es buena práctica dejarlo fijado de forma permanente para todo el sistema: puede hacer que otros programas carguen por error una versión de librería distinta a la que esperan, con fallos difíciles de rastrear.

4. LPI 102.4 — Gestión de paquetes Debian (dpkg + APT)

Debian y Ubuntu (y toda su familia: Linux Mint, Kali, Raspberry Pi OS...) usan el formato de paquete .deb. Hay dos capas de herramientas, y el examen distingue bien entre ellas:

CapaHerramientaQué resuelve
Baja — paquetes individualesdpkgInstala/consulta/elimina un fichero .deb concreto que ya tienes en disco. No resuelve dependencias de internet.
Alta — repositoriosapt / apt-get / apt-cacheBusca, descarga y resuelve dependencias automáticamente desde los repositorios configurados

4.1 dpkg: el gestor de bajo nivel

ComandoQué hace
dpkg -i paquete.debInstala un .deb local
dpkg -r paqueteElimina el paquete, conserva ficheros de configuración
dpkg -P paqueteElimina el paquete y purga su configuración (--purge)
dpkg -lLista todos los paquetes instalados y su estado
dpkg -l 'nombre*'Lista solo los paquetes que coinciden con un patrón
dpkg -L paqueteLista qué ficheros instaló ese paquete en el sistema
dpkg -S /ruta/ficheroLa pregunta inversa: ¿qué paquete instaló este fichero?
dpkg --configure paqueteTermina la configuración de un paquete que quedó a medias
dpkg-reconfigure paqueteVuelve a lanzar los diálogos de configuración interactiva de un paquete ya instalado
root@lpic1:~#
$ dpkg -l | grep openssh
ii  openssh-client   1:9.2p1-2+deb12u3   amd64   secure shell (SSH) client, for secure access
root@lpic1:~#
$ dpkg -L openssh-client | grep bin
/usr/bin/ssh
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-keygen
root@lpic1:~#
$ dpkg -S /usr/bin/ssh
openssh-client: /usr/bin/ssh
La primera letra de cada línea de dpkg -l indica el estado deseado (i=instalar, r=eliminar) y la segunda el estado real (i=instalado, c=solo queda configuración, n=no instalado). ii es lo normal: instalado y correcto.

4.2 APT: la capa que resuelve dependencias

ComandoQué hace
apt updateDescarga la lista de paquetes disponibles de los repositorios — no instala nada, solo actualiza el índice
apt upgradeActualiza los paquetes instalados a su última versión, sin instalar paquetes nuevos ni eliminar ninguno
apt full-upgrade (antes dist-upgrade)Igual, pero permite instalar/eliminar paquetes si hace falta para resolver cambios de dependencias entre versiones
apt install paqueteInstala un paquete y sus dependencias desde los repositorios
apt remove paqueteDesinstala el paquete, conserva ficheros de configuración
apt purge paqueteDesinstala y borra también la configuración
apt autoremoveElimina dependencias que ya no necesita ningún paquete instalado
apt search textoBusca paquetes por nombre o descripción
apt show paqueteMuestra la ficha completa de un paquete: versión, tamaño, dependencias, descripción
apt-cache policy paqueteMuestra qué versión tienes instalada y qué versiones ofrece cada repositorio configurado
apt list --installedLista los paquetes instalados (equivalente moderno y más legible que dpkg -l)
root@lpic1:~#
$ apt update
Hit:1 http://deb.debian.org/debian bookworm InRelease
Get:2 http://deb.debian.org/debian bookworm-updates InRelease [52.1 kB]
Get:3 http://security.debian.org/debian-security bookworm-security InRelease [48.0 kB]
Fetched 100 kB in 1s (89.4 kB/s)
Reading package lists... Done
root@lpic1:~#
$ apt install tree
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
  tree
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 47.2 kB of archives.
After this operation, 116 kB of additional disk space will be used.
Setting up tree (2.1.1-2) ...
root@lpic1:~#
$ apt-cache policy tree
tree:
  Installed: 2.1.1-2
  Candidate: 2.1.1-2
  Version table:
 *** 2.1.1-2 500
        500 http://deb.debian.org/debian bookworm/main amd64 Packages
        100 /var/lib/dpkg/status

4.3 Repositorios: sources.list

root@lpic1:~#
$ cat /etc/apt/sources.list
deb http://deb.debian.org/debian bookworm main contrib non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware

Cada línea define un repositorio: tipo (deb o deb-src para fuentes), URL, distribución (bookworm) y componentes (main, contrib, non-free-firmware). Los repositorios de terceros se añaden como ficheros independientes en /etc/apt/sources.list.d/*.list, cada uno firmado con una clave GPG propia referenciada con la opción moderna signed-by=/usr/share/keyrings/... — el antiguo apt-key está en desuso desde Debian 11/Ubuntu 22.04 precisamente por depositar todas las claves en un único llavero global, menos seguro.

Términos y utilidades de 102.4: dpkg, dpkg-reconfigure, apt, apt-get, apt-cache, aptitude (interfaz alternativa a APT, mencionada como awareness), /etc/apt/sources.list, /etc/apt/sources.list.d/.

5. LPI 102.5 — Gestión de paquetes RPM y YUM/DNF

Tu laboratorio es Debian/Ubuntu, así que esta sección se memoriza por transcripción de comandos — no vas a ejecutarla en tu VM salvo que montes una tercera máquina AlmaLinux/Fedora. El examen sí la pregunta igual de en serio que la de APT.

La familia RPM (Red Hat, Fedora, CentOS Stream, AlmaLinux, Rocky Linux, openSUSE) usa el mismo esquema de dos capas que Debian: una herramienta de bajo nivel para paquetes sueltos (rpm) y una de alto nivel que resuelve dependencias contra repositorios (yum, sustituido por dnf en las distros modernas).

5.1 rpm: el equivalente de dpkg

ComandoEquivalente en DebianQué hace
rpm -i paquete.rpmdpkg -iInstala un paquete local (sin resolver dependencias)
rpm -U paquete.rpm—Instala o actualiza — es la forma que se usa casi siempre en vez de -i
rpm -e paquetedpkg -rDesinstala un paquete
rpm -q paquetedpkg -l | grepConsulta si un paquete está instalado y su versión
rpm -qadpkg -lLista todos los paquetes instalados
rpm -qf /ruta/ficherodpkg -S¿Qué paquete instaló este fichero?
rpm -ql paquetedpkg -LLista los ficheros que instaló el paquete
rpm -qi paqueteapt showFicha completa del paquete
rpm -i --nodeps paquete.rpm—Fuerza la instalación ignorando dependencias no resueltas — último recurso
rpm2cpio paquete.rpm | cpio -idv—Extrae el contenido de un .rpm sin instalarlo, como un .cpio normal
root@lpic1:~#
$ rpm -qa | grep httpd
httpd-2.4.57-2.el9.x86_64
root@lpic1:~#
$ rpm -qi httpd
Name        : httpd
Version     : 2.4.57
Release     : 2.el9
Architecture: x86_64
Install Date: Mon 15 Sep 2026 10:02:11 AM UTC
Group       : Unspecified
Size        : 1345982
License     : ASL 2.0
Summary     : Apache HTTP Server

5.2 YUM/DNF: el equivalente de APT

dnf es el sucesor directo de yum — mismo propósito, resolución de dependencias más moderna y rápida. En RHEL 8+, Fedora, AlmaLinux y Rocky, yum es literalmente un alias de dnf: los dos comandos funcionan y aceptan la misma sintaxis.

ComandoEquivalente en APTQué hace
dnf install paqueteapt installInstala un paquete y sus dependencias desde los repositorios
dnf remove paqueteapt removeDesinstala un paquete
dnf update / dnf upgradeapt upgradeActualiza todos los paquetes instalados
dnf search textoapt searchBusca paquetes
dnf info paqueteapt showFicha del paquete
dnf list installedapt list --installedLista paquetes instalados
dnf repolistapt-cache policy (parcial)Lista los repositorios configurados y activos
dnf history—Historial de transacciones — permite dnf history undo <id> para deshacer una instalación/actualización completa
dnf clean allapt cleanLimpia la caché local de paquetes descargados
root@lpic1:~#
$ dnf install httpd
Last metadata expiration check: 0:12:34 ago.
Dependencies resolved.
================================================================
 Package     Arch     Version          Repository        Size
================================================================
Installing:
 httpd       x86_64   2.4.57-2.el9     appstream         1.3 M
Installing dependencies:
 httpd-filesystem  noarch  2.4.57-2.el9  appstream       40 k
...
Complete!
root@lpic1:~#
$ dnf history
ID   | Command line | Date and time | Action(s) | Altered
  3  | install httpd | 2026-09-30 11:02 | Install | 3
  2  | update        | 2026-09-28 09:14 | Update  | 14
  1  | install @core | 2026-09-15 10:02 | Install | 342

Los repositorios se definen en ficheros .repo dentro de /etc/yum.repos.d/, uno por repositorio, con una sintaxis de tipo INI ([nombre], baseurl=, gpgcheck=1, gpgkey=) — el equivalente conceptual de sources.list.d en Debian.

Términos y utilidades de 102.5: rpm, rpm2cpio, yum, dnf, /etc/yum.repos.d/.

6. LPI 102.6 — Linux como invitado de virtualización

Tu propia VM de laboratorio es justo el escenario de este objetivo: Linux ejecutándose como invitado dentro de un hipervisor (VirtualBox, VMware, KVM/QEMU, Hyper-V, o un proveedor cloud como AWS/Azure/GCP por debajo). El examen espera que sepas detectarlo y qué paquetes especiales suele necesitar.

root@lpic1:~#
$ systemd-detect-virt
oracle
root@lpic1:~#
$ dmidecode -s system-product-name
VirtualBox

systemd-detect-virt es la forma moderna y más fiable: devuelve none en hardware físico, o el nombre del hipervisor (kvm, oracle para VirtualBox, vmware, microsoft para Hyper-V...) cuando corre virtualizado. dmidecode consulta directamente la tabla DMI/SMBIOS que el hipervisor expone y llega a la misma conclusión por otro camino.

HipervisorPaquete de integración típico
VirtualBoxGuest Additions (ya instaladas en el módulo 00)
VMwareopen-vm-tools
KVM/QEMUqemu-guest-agent
Proveedores cloud (AWS, Azure, GCP...)cloud-init — configura automáticamente red, claves SSH y usuario inicial en el primer arranque a partir de metadatos que entrega la plataforma

Estos paquetes no son opcionales de cara al examen ni de cara al trabajo real: sin el guest agent correcto, cosas como el redimensionado dinámico de la pantalla, las carpetas compartidas o los snapshots consistentes con la aplicación simplemente no funcionan — exactamente los mismos síntomas que ya viste si saltaste algún paso del manual de VirtualBox del módulo 00.

El rendimiento de E/S de un invitado depende además de qué controlador usa: los discos y tarjetas de red virtio (paravirtualizados, diseñados específicamente para entornos virtualizados) son notablemente más rápidos que emular hardware real como el e1000 que viste en el módulo 101 — el examen solo pide que sepas que esta distinción existe, no configurarla a mano.

Práctica guiada

  1. En tu VM: ldd /bin/bash y localiza al menos dos librerías de las que depende.
  2. cat /etc/ld.so.conf y ls /etc/ld.so.conf.d/ — compara con lo explicado en el punto 3.2.
  3. ldconfig -p | wc -l para ver cuántas librerías conoce tu sistema ahora mismo.
  4. apt update y después apt list --upgradable para ver qué paquetes tienen una versión más reciente disponible.
  5. Instala algo inofensivo con apt install tree, confírmalo con dpkg -l tree y revisa qué ficheros trajo con dpkg -L tree.
  6. apt-cache policy tree para ver la versión instalada frente a la disponible en el repositorio.
  7. Desinstálalo del todo: apt purge tree seguido de apt autoremove.
  8. cat /etc/apt/sources.list y localiza qué distribución y qué componentes tiene configurados tu sistema.
  9. systemd-detect-virt para confirmar que tu VM se reconoce a sí misma como tal.

Resumen: APT frente a RPM/DNF, la tabla que hay que saber de memoria

TareaDebian/APTRPM/DNF
Instalar paquete localdpkg -i paquete.debrpm -U paquete.rpm
Instalar desde repositorioapt install paquetednf install paquete
Quitar paqueteapt remove / purgednf remove / rpm -e
Actualizar todo el sistemaapt upgrade / full-upgradednf upgrade
Listar instaladosdpkg -lrpm -qa
¿Qué paquete trajo este fichero?dpkg -Srpm -qf
¿Qué ficheros trajo este paquete?dpkg -Lrpm -ql
Repositorios/etc/apt/sources.list(.d)/etc/yum.repos.d/*.repo

Autoevaluación

  1. ¿Por qué conviene separar /var del resto del sistema en un servidor de producción?
  2. ¿Cuánto swap necesitas como mínimo si quieres poder hibernar un portátil con 16 GB de RAM?
  3. ldd te muestra una librería como not found. ¿Qué comando regenera la caché del enlazador dinámico después de instalarla?
  4. ¿Cuál es la diferencia exacta entre apt remove y apt purge?
  5. ¿Qué comando usarías en una distro basada en RPM para averiguar qué paquete instaló un fichero concreto?
  6. ¿Qué comando te dice, sin ambigüedad, si tu sistema actual corre dentro de un hipervisor y cuál?
← 101 · Arquitectura del sistemaÍndice del curso103 · Comandos GNU y Unix →