Portes quatre mòduls escrivint sudo apt install sense preguntar-te d'on surt aquest programari, qui garanteix que no l'ha manipulat ningú pel camí, ni què passa si una matinada el motor de base de dades de Tramontana salta de la versió 15 a la 16 i l'aplicació deixa d'arrencar. Ara que saps exactament què et permet fer sudo, toca entendre què hi fas la majoria de les vegades: instal·lar, actualitzar i fixar programari. Aquesta lliçó cobreix les dues capes de Debian i Ubuntu, la signatura criptogràfica dels dipòsits, la fixació de versions i el debat incòmode de si un servidor s'ha de reiniciar sol després d'una actualització de seguretat.

Contingut

  1. Què resol un gestor de paquets
  2. Anatomia d'un .deb i comparació amb .rpm
  3. Les dues capes: dpkg enfront d'apt
  4. apt en el dia a dia
  5. dpkg i l'arqueologia de fitxers
  6. Dipòsits: deb822, components, pockets i claus
  7. Fixar versions: hold i pinning
  8. Actualitzacions desateses, el reinici i la neteja de la memòria cau
  9. Snap, Flatpak i AppImage enfront de .deb
  10. Compilar des de les fonts quan no queda altre remei
  11. Equivalències amb dnf a RHEL
  12. Cas Tramontana: dependències, versió fixada i auditoria

  1. Què resol un gestor de paquets

Instal·lar programari «a mà» —descarregar un .tar.gz, compilar-lo i copiar-lo a /usr/local— sembla inofensiu fins que arriba la primera actualització de seguretat. Un gestor de paquets resol quatre problemes que a mà no tenen solució raonable:

  • Dependències: sap que la teva aplicació necessita libssl3t64 i que aquesta biblioteca la fan servir altres vint programes, així que la instal·la una vegada i la comparteix.
  • Actualitzacions de seguretat: una ordre actualitza tot el que hi ha instal·lat. Amb programari compilat a mà, el dia que surti un CVE crític te n'hauràs de recordar tu.
  • Integritat i procedència: cada paquet ve signat i amb la suma comprovada. Saps que el que s'instal·la és el que va publicar el mantenidor.
  • Desinstal·lació neta: el gestor sap exactament quins fitxers va portar cada paquet. Un make install no en deixa ni la llista.

Regla operativa: compilar és l'última opció, i quan toqui, a /usr/local per no trepitjar el que administra el gestor.

  1. Anatomia d'un .deb i comparació amb .rpm

Un .deb és un arxiu ar amb tres peces: debian-binary (versió del format), control.tar.zst (metadades i scripts) i data.tar.zst (els fitxers que s'instal·len).

$ apt-get download tree >/dev/null && dpkg-deb --info tree_*.deb | sed -n '2,7p'
 Package: tree
 Version: 2.1.1-2ubuntu3
 Depends: libc6 (>= 2.38)
 Installed-Size: 133
 Maintainer: Ubuntu Developers <[email protected]>
 Description: displays an indented directory listing

Els camps de relació entre paquets són els que fan tota la feina:

Camp Significat
Depends Imprescindible: sense ell, el paquet no funciona
Recommends / Suggests Prescindible però s'instal·la (--no-install-recommends) / només informatiu
Conflicts / Breaks / Replaces / Provides No poden conviure / substitueix un altre o aporta una capacitat genèrica

Dins de control hi ha a més scripts de mantenidor —preinst, postinst, prerm, postrm— que s'executen com a root en cada fase. És la raó exacta per la qual afegir un dipòsit de tercers és una decisió de seguretat i no una comoditat: instal·lar un paquet és executar codi aliè com a root.

Aspecte .deb (Debian/Ubuntu) .rpm (RHEL/Fedora/SUSE)
Baix / alt nivell dpkg / apt rpm / dnf (abans yum)
Metadades Fitxer control Capçalera binària i .spec en construir
Configuració conffiles, pregunta en fusionar .rpmnew / .rpmsave
Base de dades /var/lib/dpkg/status /var/lib/rpm

  1. Les dues capes: dpkg enfront d'apt

flowchart LR
    R[Dipòsits<br/>archive.ubuntu.com] -->|descarrega i verifica la signatura| A
    A[apt: resol dependències] -->|invoca| D[dpkg: instal·la UN fitxer]
    L[Un .deb descarregat a mà] --> D
    D --> S[(/var/lib/dpkg)]
    D --> F[Fitxers al sistema]

dpkg sap instal·lar un fitxer .deb i portar la comptabilitat del que hi ha instal·lat; no sap res de dipòsits ni descarrega dependències. apt sap parlar amb els dipòsits, resoldre el graf de dependències, verificar signatures i decidir l'ordre, i després delega en dpkg.

Necessites… Ordre
Instal·lar per nom des del dipòsit apt install paquet
Instal·lar un .deb local amb dependències apt install ./fitxer.deb
Instal·lar un .deb local sense resoldre res dpkg -i fitxer.deb (després apt -f install)
Fitxer → paquet / paquet → fitxers dpkg -S /ruta / dpkg -L paquet

Nota: apt és la interfície per a humans i apt-get/apt-cache les estables per a scripts. En un script fes servir apt-get: apt avisa que la seva interfície pot canviar entre versions.

  1. apt en el dia a dia

sudo apt update        # refresca la LLISTA disponible. No actualitza RES d'instal·lat
sudo apt upgrade       # actualitza l'instal·lat sense eliminar ni instal·lar paquets nous
sudo apt full-upgrade  # igual, però POT eliminar paquets per resoldre el canvi

La confusió clàssica: update només descarrega els índexs. Sense ell, apt treballa amb una foto vella del dipòsit i no veurà l'actualització de seguretat publicada aquest matí. La diferència entre upgrade i full-upgrade importa en un servidor: upgrade és conservador i prefereix no tocar res abans que esborrar res; full-upgrade accepta eliminacions i és el que cal en un canvi de versió de distribució.

sudo apt install nginx=1.24.0-2ubuntu7 # una versió concreta del dipòsit
sudo apt remove nginx                  # esborra binaris, CONSERVA la configuració d'/etc
sudo apt purge nginx                   # esborra també la configuració
sudo apt autoremove --purge            # elimina dependències que ja no necessita ningú

remove enfront de purge és una decisió real: remove et permet reinstal·lar i recuperar la teva configuració; purge deixa el sistema net. En un servidor que es documenta, purge evita que d'aquí a un any aparegui un /etc/aixòquesigui fantasma que ningú no sap d'on ve.

Consulta:

apt search 'servidor web'          # busca al nom i a la descripció
apt show nginx                     # descripció, dependències, mida, origen
apt list --installed | wc -l       # quants paquets hi ha instal·lats
apt list --upgradable              # què hi ha pendent d'actualitzar
apt depends nginx; apt rdepends libssl3t64   # dependències directes i inverses
apt download tree                  # descarrega el .deb sense instal·lar-lo

I l'opció que més disc estalvia en un servidor és sudo apt install --no-install-recommends nginx. Els Recommends arrosseguen extres pensats per a escriptori (documentació, clients gràfics, servidors de correu complets). En un servidor, cada paquet de més és superfície d'atac i disc ocupat. Ho pots fer permanent:

# /etc/apt/apt.conf.d/99sense-recomanats
APT::Install-Recommends "false";
APT::Install-Suggests "false";

  1. dpkg i l'arqueologia de fitxers

$ dpkg -l | grep -c '^ii'   # 712 paquets correctament instal·lats
$ dpkg -S /usr/bin/ss       # de quin paquet va venir aquest fitxer?
iproute2: /usr/bin/ss

Els estats de dpkg -l es llegeixen en dues lletres: la primera és l'estat desitjat i la segona el real. ii és «instal·lat i instal·lat»; rc és «eliminat però queden fitxers de configuració» (candidats a purge); iU o iF indiquen una instal·lació a mitges, que s'arregla amb sudo dpkg --configure -a (acaba configuracions interrompudes) i sudo apt -f install (repara dependències trencades).

Per buscar un fitxer en paquets que no tens instal·lats:

$ sudo apt install apt-file && sudo apt-file update && apt-file search /usr/bin/mkfs.xfs
xfsprogs: /usr/bin/mkfs.xfs

  1. Dipòsits: deb822, components, pockets i claus

Ubuntu 24.04 va abandonar el format d'una línia de /etc/apt/sources.list i fa servir deb822, molt més llegible, a /etc/apt/sources.list.d/*.sources:

# /etc/apt/sources.list.d/ubuntu.sources
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 fitxer porta un segon bloc idèntic amb URIs: http://security.ubuntu.com/ubuntu/ i Suites: noble-security, que és el que porta els pedaços.

Component Què conté Suport
main / restricted Lliure mantingut per Canonical / controladors propietaris Sí, amb pedaços
universe / multiverse Mantingut per la comunitat / amb restriccions de llicència «best effort» (Ubuntu Pro l'amplia) / no
Pocket Què és En producció?
noble La versió congelada del dia del llançament Sí
noble-security Pedaços de seguretat Sí, sempre
noble-updates Correccions de fallades no crítiques Sí, l'habitual
noble-backports Versions noves portades de releases posteriors Només puntualment

La signatura: per què apt-key és obsolet

Cada dipòsit signa el seu índex Release amb una clau GPG. Antigament totes les claus anaven a un clauer global (apt-key add), cosa que significava que qualsevol dipòsit de tercers podia signar qualsevol paquet, inclòs un openssh-server fals que substituís l'oficial. Per això apt-key és obsolet i eliminat a la 24.04. Avui la clau es guarda en un fitxer i es lliga a aquell dipòsit amb Signed-By:.

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://exemple.test/clau.asc | sudo tee /etc/apt/keyrings/exemple.asc >/dev/null
# /etc/apt/sources.list.d/exemple.sources
Types: deb
URIs: https://exemple.test/apt/
Suites: noble
Components: main
Signed-By: /etc/apt/keyrings/exemple.asc

Afegir un dipòsit de tercers és una decisió de seguretat. Estàs autoritzant un tercer a executar codi com a root al teu servidor cada vegada que actualitzis, i a substituir paquets si no n'acotes l'abast. Abans d'afegir-lo: comprova qui el publica, fes servir HTTPS, lliga la clau amb Signed-By, limita Components al que calgui i, si t'importa de debò, aplica fixació de versió perquè només pugui subministrar els paquets previstos. En un entorn corporatiu aquesta decisió l'ha de validar el responsable de seguretat.

Els PPA d'Ubuntu són dipòsits de Launchpad que sudo add-apt-repository ppa:usuari/projecte afegeix amb la seva clau. Còmodes en escriptori; en producció, cada PPA és un mantenidor individual del qual passes a dependre.

  1. Fixar versions: hold i pinning

Hi ha programari que no pot actualitzar-se sol. El motor de base de dades de Tramontana és el cas de manual: un salt de versió major implica migració del format de dades, i fer-ho a les 6:00 sense supervisió significa una aplicació caiguda i una reversió complicada.

La forma senzilla, amb dpkg:

$ sudo apt-mark hold postgresql-16 postgresql-client-16
postgresql-16 set on hold.
$ apt-mark showhold
postgresql-16
postgresql-client-16
$ sudo apt-mark unhold postgresql-16   # en actualitzar: a mà i amb finestra

Un paquet en hold no el toca ni upgrade, ni full-upgrade, ni unattended-upgrades.

La forma amb més control, la fixació de versió (pinning) d'APT, permet decidir de quin origen ve cada cosa:

# /etc/apt/preferences.d/99-tramontana-bd — la BD es queda a la sèrie 16
Package: postgresql-16 postgresql-client-16 postgresql-common
Pin: version 16.*
Pin-Priority: 1001
Prioritat Efecte
< 0 / 100 No s'instal·la mai / només si no hi ha res instal·lat
500 / 990 Normal d'un dipòsit / la del release de destinació
> 1000 S'instal·la encara que suposi baixar de versió
$ apt-cache policy postgresql-16
postgresql-16:
  Installed: 16.3-1.pgdg24.04+1
  Candidate: 16.3-1.pgdg24.04+1
     17.0-1.pgdg24.04+1 500     # existeix, però no guanya
 *** 16.3-1.pgdg24.04+1 1001

apt-cache policy és l'eina que confirma que la teva fixació fa el que et penses. Comprova-ho sempre: una fixació mal escrita no dona error, simplement no s'aplica.

  1. Actualitzacions desateses, el reinici i la neteja de la memòria cau

Un servidor sense pedaços de seguretat és qüestió de temps. Ubuntu inclou unattended-upgrades, que per defecte instal·la només el del pocket -security:

# /etc/apt/apt.conf.d/50unattended-upgrades  (fragment rellevant)
Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Package-Blacklist { "postgresql-16"; };
Unattended-Upgrade::Mail "[email protected]";
Unattended-Upgrade::MailReport "on-change";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Automatic-Reboot "false";
sudo unattended-upgrade --dry-run --debug   # simulació abans d'actuar, com sempre

El debat del reinici automàtic no té resposta universal. Una actualització del nucli o de glibc no fa efecte fins que es reinicien els processos afectats o la màquina:

$ cat /var/run/reboot-required.pkgs 2>/dev/null
linux-image-6.8.0-45-generic
$ sudo needrestart -b        # quins serveis fan servir biblioteques ja actualitzades
NEEDRESTART-SVC: tramontana.service
Postura A favor En contra
Automatic-Reboot "true" El pedaç fa efecte sense dependre de ningú Tall no anunciat; si l'aplicació no arrenca sola, caiguda llarga
"false" + avís Es reinicia en una finestra acordada Si ningú no mira l'avís, el pedaç no protegeix res

Per a Tramontana, amb un sol servidor i sense alta disponibilitat (que és matèria de 07-07), la decisió raonable és false més una alerta que la Marta rebi, més un compromís escrit de finestra setmanal. I el costum imprescindible: instantània de la VM abans d'una actualització grossa, que en un servidor real és una instantània LVM o de l'hipervisor (05-04).

I la neteja, que en un servidor amb /var a la seva pròpia partició —com el que vas particionar a 01-04— evita un disc ple: du -sh /var/cache/apt/archives sol donar centenars de megues, que sudo apt clean esborra completament i apt autoclean només en el que ja s'ha retirat del dipòsit; els nuclis antics els neteja apt autoremove --purge.

  1. Snap, Flatpak i AppImage enfront de .deb

Format Dependències Actualització En un servidor
.deb Compartides amb el sistema apt, controlada L'opció per defecte
snap Empaquetades Automàtica i difícil d'impedir Només si no hi ha .deb: l'autoactualització descol·loca les finestres de canvi
flatpak Runtimes compartits Manual o programada Pensat per a escriptori
AppImage Tot dins d'un fitxer Cap: la fas tu Eina solta; ningú no hi posa pedaços per tu

Ubuntu porta snapd de sèrie, i algunes peces (com lxd o certbot) es distribueixen així. El que cal saber en un servidor: els snaps s'actualitzen sols i el seu ritme es pot posposar però no cancel·lar, cosa que xoca de ple amb una política de canvis controlats.

snap list                              # què hi ha instal·lat
sudo snap refresh --hold=24h certbot   # posposar, no cancel·lar

  1. Compilar des de les fonts quan no queda altre remei

sudo apt install build-essential      # gcc, make, libc6-dev, dpkg-dev
tar -tzvf eina-2.4.tar.gz | head      # inspeccionar ABANS d'extreure, com sempre
tar -xzf eina-2.4.tar.gz && cd eina-2.4
./configure --prefix=/usr/local && make -j"$(nproc)" && sudo make install

--prefix=/usr/local no és un detall: l'FHS de 01-06 reserva aquell arbre per al que instal·la l'administrador, precisament perquè mai no col·lisioni amb el que gestiona dpkg a /usr. I com que make install no deixa registre, existeix checkinstall, que embolcalla la instal·lació en un .deb real:

$ sudo checkinstall --pkgname=eina --pkgversion=2.4 --default
$ dpkg -l eina | tail -1
ii  eina  2.4-1  amd64  Paquet generat amb checkinstall

Ara es desinstal·la netament amb apt purge eina. Tot i així, continua sense haver-hi ningú que t'avisi de les seves fallades de seguretat: aquella vigilància passa a ser teva.

  1. Equivalències amb dnf a RHEL

Reprenent les famílies de 01-03, aquesta taula et permet treballar a Rocky, Alma o RHEL sense tornar a aprendre res:

Tasca Debian/Ubuntu RHEL/Fedora
Refrescar / actualitzar apt update / apt upgrade dnf check-update / dnf upgrade
Instal·lar / eliminar apt install / apt purge dnf install / dnf remove
Buscar / detallar apt search / apt show dnf search / dnf info
Fitxer→paquet / paquet→fitxers dpkg -S / dpkg -L rpm -qf / rpm -ql
Fixar versió / historial apt-mark hold, history.log dnf versionlock, dnf history

La diferència pràctica més cridanera: dnf history undo desfà una transacció sencera, cosa que APT no ofereix. A Debian/Ubuntu la volta enrere es fa reinstal·lant versions concretes a partir de history.log.

  1. Cas Tramontana: dependències, versió fixada i auditoria

Primer, les dependències del servidor, sense recomanats i amb verificació:

sudo apt update && sudo apt install --no-install-recommends -y \
     nginx postgresql-16 postgresql-client-16 rsync curl jq acl logrotate

Segon, fixem la base de dades perquè cap actualització desatesa no la pugi de versió major:

sudo cp -a /etc/apt/apt.conf.d/50unattended-upgrades{,.bak-$(date +%F)}
sudo apt-mark hold postgresql-16 postgresql-client-16

I afegim la fixació explícita d'/etc/apt/preferences.d/99-tramontana-bd que vas veure a l'apartat 7, més la llista negra a 50unattended-upgrades. Verificació obligatòria:

$ apt-cache policy postgresql-16 | head -3
postgresql-16:
  Installed: 16.3-0ubuntu0.24.04.1
  Candidate: 16.3-0ubuntu0.24.04.1   # iguals: res pendent que s'hi pugui colar

Tercer, la pregunta de la Marta aquest matí: «què es va actualitzar ahir a la nit i per què?».

$ grep -A3 '^Start-Date: 2026-08-18' /var/log/apt/history.log
Start-Date: 2026-08-18  06:12:33
Commandline: /usr/bin/unattended-upgrade
Upgrade: libssl3t64:amd64 (3.0.13-0ubuntu3.2, 3.0.13-0ubuntu3.4), openssl:amd64 (...)
End-Date: 2026-08-18  06:12:51
$ apt changelog openssl 2>/dev/null | head -2
openssl (3.0.13-0ubuntu3.4) noble-security; urgency=medium
  * SECURITY UPDATE: denial of service in TLS session handling

Resposta per a la Marta, amb l'estructura de sempre —què protegeix i què no protegeix—: «Ahir a la nit es va actualitzar OpenSSL per una fallada de seguretat que permetia tombar el servei TLS. Protegeix el xifratge de les connexions entrants. No protegeix res més, i no farà efecte complet fins que es reiniciïn els serveis que ja tenien la biblioteca carregada; needrestart indica que tramontana.service n'és un. Proposo reiniciar-lo a la finestra del dijous. La base de dades continua fixada a la sèrie 16 i no s'ha tocat.» I a l'HISTORIAL:

sudo tee -a /opt/tramontana/HISTORIAL >/dev/null <<'FI'
2026-08-18  Paquets (operador)
  - hold + pin de postgresql-16 (sèrie 16.*); unattended-upgrades només -security
  - 06:12 actualització automàtica d'openssl (CVE TLS). Pendent reinici de serveis.
FI

Errors Comuns i Consells

  • Creure que apt update actualitza alguna cosa. Només refresca la llista; el parell correcte és apt update && apt upgrade, i el && no és decoratiu: si l'update falla, actualitzar amb índexs vells és pitjor que no actualitzar.
  • Fer servir apt en scripts en comptes d'apt-get amb DEBIAN_FRONTEND=noninteractive, o dpkg -i i prou, que instal·la sense dependències i deixa el sistema en estat iF (fes servir apt install ./fitxer.deb).
  • Afegir un dipòsit amb apt-key. Eliminat a la 24.04 i insegur per disseny: clau a /etc/apt/keyrings/ i Signed-By: al .sources.
  • Oblidar el pocket -security. Sense ell el servidor es queda sense pedaços, i no dona cap error. I no actualitzis sense instantània ni finestra: el dia que alguna cosa es trenqui, la diferència entre 5 minuts i 5 hores és haver fet la instantània.
  • Deixar el hold posat i oblidar-lo. Un paquet retingut tampoc no rep pedaços de seguretat: revisa apt-mark showhold cada mes i anota qui va decidir cada retenció i fins quan.
  • Consell: guarda apt-mark showmanual > paquets.txt al costat de les teves còpies. Reconstruir un servidor amb aquella llista és qüestió de minuts.

Exercicis

  1. Simulació abans d'actuar. Esbrina quins paquets s'actualitzarien ara mateix i quant disc ocuparien, sense instal·lar res. Després, comprova si algun d'ells exigeix reiniciar el sistema.
  2. Dipòsit de tercers ben muntat. Descriu els passos complets i segurs per afegir un dipòsit fictici https://apt.tramontana.example/ (suite noble, component main) que només hagi de subministrar el paquet tramontana-agent, i indica com verificaries que no pot substituir paquets del sistema.
  3. Forense d'una actualització. Un company diu que «algú va instal·lar nginx a mà el dimarts». Demostra amb ordres quan es va instal·lar, si va venir d'un dipòsit o d'un .deb solt, i quins fitxers de configuració aporta.

Solucions

1.

$ sudo apt update >/dev/null && apt list --upgradable
libssl3t64/noble-security 3.0.13-0ubuntu3.4 amd64 [upgradable from: 3.0.13-0ubuntu3.2]
openssl/noble-security 3.0.13-0ubuntu3.4 amd64 [upgradable from: 3.0.13-0ubuntu3.2]
$ sudo apt-get --simulate upgrade | tail -1
Conf openssl (3.0.13-0ubuntu3.4 ...)
$ sudo apt-get --assume-no upgrade | grep space
After this operation, 0 B of additional disk space will be used.

--simulate (o -s) és el --dry-run d'APT, i encaixa amb la convenció del curs de simular abans d'actuar. Per al reinici: [ -f /var/run/reboot-required ] && cat /var/run/reboot-required.pkgs || echo "No cal reiniciar".

2. Els passos, en ordre:

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://apt.tramontana.example/clau.asc | sudo tee /etc/apt/keyrings/tramontana.asc >/dev/null
sudo chmod 0644 /etc/apt/keyrings/tramontana.asc
# /etc/apt/sources.list.d/tramontana.sources
Types: deb
URIs: https://apt.tramontana.example/
Suites: noble
Components: main
Architectures: amd64
Signed-By: /etc/apt/keyrings/tramontana.asc
# /etc/apt/preferences.d/99-repo-tramontana
Package: *
Pin: origin apt.tramontana.example
Pin-Priority: 1
# ...tret del paquet previst:
Package: tramontana-agent
Pin: origin apt.tramontana.example
Pin-Priority: 700

Verificació: sudo apt update no ha de donar avisos de signatura, i apt-cache policy openssl ha de continuar mostrant noble-security com a origen del candidat. Aquella fixació de prioritat 1 és la xarxa de seguretat que impedeix que un dipòsit de tercers segresti un paquet del sistema.

3.

$ grep -B1 -A2 'Install:.*nginx' /var/log/apt/history.log
Start-Date: 2026-08-13  11:47:02
Commandline: apt install nginx
Requested-By: luis (1001)
Install: nginx:amd64 (1.24.0-2ubuntu7.1), nginx-common:amd64 (..., automatic)
$ apt-cache policy nginx | sed -n '5p'
        500 http://es.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages
$ dpkg-query -W -f='${Conffiles}\n' nginx-common | head -1
 /etc/nginx/nginx.conf 8b1a9953c4611296a827abf8c47804d7

Va venir del dipòsit oficial (noble-updates), el va demanar luis el 13 d'agost amb apt install, i aporta conffiles que apt protegirà en futures actualitzacions. Fixa't en el camp Requested-By: history.log guarda l'UID real darrere del sudo, cosa que enllaça directament amb la traçabilitat de la lliçó anterior.

Conclusió

El programari de srv-tramontana ja no apareix per art de màgia. Saps que un gestor de paquets resol dependències, actualitzacions, integritat i desinstal·lació neta, i que compilar és l'última opció; coneixes l'anatomia d'un .deb —inclosos els scripts de mantenidor que corren com a root, que és la raó de fons de tota la cautela amb els dipòsits— i la seva equivalència amb .rpm; distingeixes la capa dpkg de la capa apt i saps quan toca cadascuna; manegues update/upgrade/full-upgrade, remove enfront de purge, --no-install-recommends, depends/rdepends i l'arqueologia de dpkg -L, dpkg -S i apt-file.

Entens els dipòsits d'Ubuntu 24.04 en format deb822, els seus components i els seus pockets, i per què la clau va a /etc/apt/keyrings/ amb Signed-By: en lloc del difunt apt-key. Saps fixar versions amb apt-mark hold i amb pinning, verificar-ho amb apt-cache policy, i que un hold oblidat deixa un paquet sense pedaços. Has configurat unattended-upgrades perquè instal·li només seguretat, avisi la Marta i no reiniciï sol, sabent llegir /var/run/reboot-required i needrestart. I saps situar snap, Flatpak i AppImage, compilar a /usr/local amb checkinstall quan toca, i traduir-ho tot a dnf.

Queda el recurs del qual depèn tota la resta i que ningú no mira fins que s'acaba: el disc. /srv/tramontana/backups porta setmanes creixent, la còpia de les 4:20 escriu cada nit sense que ningú hagi calculat quant hi cap, i la memòria cau d'apt que acabes de netejar era un símptoma, no la causa. A Gestió de Discs veuràs la pila completa des del dispositiu físic fins al punt de muntatge, particions MBR i GPT, sistemes de fitxers comparats, /etc/fstab camp a camp —i per què una línia mal escrita allà impedeix arrencar el servidor—, el cas del fitxer esborrat que no allibera espai, i LVM, amb el qual afegiràs un disc nou a la VM i mouràs /srv/tramontana/backups al seu propi volum sense perdre ni un sol byte.

Curs de Linux: De Principiant a Administrador de Sistemes

Mòdul 1: Introducció a Linux

Mòdul 2: Comandes Bàsiques de Linux

Mòdul 3: Habilitats Avançades en la Línia de Comandes

Mòdul 4: Scripting en Shell

Mòdul 5: Administració del Sistema

Mòdul 6: Xarxes i Seguretat

Mòdul 7: Temes Avançats

Mòdul 8: Projectes Pràctics

© Copyright 2026. Tots els drets reservats