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
- Què resol un gestor de paquets
- Anatomia d'un
.debi comparació amb.rpm - Les dues capes:
dpkgenfront d'apt apten el dia a diadpkgi l'arqueologia de fitxers- Dipòsits: deb822, components, pockets i claus
- Fixar versions:
holdi pinning - Actualitzacions desateses, el reinici i la neteja de la memòria cau
- Snap, Flatpak i AppImage enfront de
.deb - Compilar des de les fonts quan no queda altre remei
- Equivalències amb
dnfa RHEL - Cas Tramontana: dependències, versió fixada i auditoria
- 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
libssl3t64i 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 installno 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.
- Anatomia d'un
.deb i comparació amb .rpm
.deb i comparació amb .rpmUn .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 listingEls 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 |
- Les dues capes:
dpkg enfront d'apt
dpkg enfront d'aptflowchart 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.
apt en el dia a dia
apt en el dia a diasudo 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 canviLa 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-loI 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";
dpkg i l'arqueologia de fitxers
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/ssEls 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
- 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.gpgEl 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 |
| 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.ascAfegir 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, limitaComponentsal 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.
- Fixar versions:
hold i pinning
hold i pinningHi 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 finestraUn 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 1001apt-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.
- 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";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.
- Snap, Flatpak i AppImage enfront de
.deb
.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.
- 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 checkinstallAra 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.
- Equivalències amb
dnf a RHEL
dnf a RHELReprenent 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.
- 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 logrotateSegon, 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-16I 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 colarTercer, 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 handlingResposta 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.
FIErrors Comuns i Consells
- Creure que
apt updateactualitza alguna cosa. Només refresca la llista; el parell correcte ésapt update && apt upgrade, i el&&no és decoratiu: si l'updatefalla, actualitzar amb índexs vells és pitjor que no actualitzar. - Fer servir
apten scripts en comptes d'apt-getambDEBIAN_FRONTEND=noninteractive, odpkg -ii prou, que instal·la sense dependències i deixa el sistema en estatiF(fes servirapt install ./fitxer.deb). - Afegir un dipòsit amb
apt-key. Eliminat a la 24.04 i insegur per disseny: clau a/etc/apt/keyrings/iSigned-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
holdposat i oblidar-lo. Un paquet retingut tampoc no rep pedaços de seguretat: revisaapt-mark showholdcada mes i anota qui va decidir cada retenció i fins quan. - Consell: guarda
apt-mark showmanual > paquets.txtal costat de les teves còpies. Reconstruir un servidor amb aquella llista és qüestió de minuts.
Exercicis
- 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.
- Dipòsit de tercers ben muntat. Descriu els passos complets i segurs per afegir un dipòsit fictici
https://apt.tramontana.example/(suitenoble, componentmain) que només hagi de subministrar el paquettramontana-agent, i indica com verificaries que no pot substituir paquets del sistema. - Forense d'una actualització. Un company diu que «algú va instal·lar
nginxa mà el dimarts». Demostra amb ordres quan es va instal·lar, si va venir d'un dipòsit o d'un.debsolt, 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: 700Verificació: 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 8b1a9953c4611296a827abf8c47804d7Va 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
- Què és Linux?
- Història de Linux
- Distribucions de Linux
- Instal·lant Linux
- Primer Contacte amb el Sistema
- Estructura del Sistema de Fitxers de Linux
Mòdul 2: Comandes Bàsiques de Linux
- Introducció a la Línia de Comandes
- Obtenir Ajuda i Documentació del Sistema
- Navegant pel Sistema de Fitxers
- Operacions amb Fitxers i Directoris
- Visualització i Edició de Fitxers
- Enllaços Durs i Simbòlics
- Permisos i Propietat dels Fitxers
Mòdul 3: Habilitats Avançades en la Línia de Comandes
- L'Entorn del Shell: Variables, Àlies i Historial
- Ús de Comodins i Expressions Regulars
- Cerca de Fitxers i Contingut: find, locate i grep
- Canonades i Redirecció
- Processament de Text: cut, sort, uniq, sed i awk
- Gestió de Processos
- Programació de Tasques amb Cron
- Comandes de Xarxa
Mòdul 4: Scripting en Shell
- Introducció al Scripting en Shell
- Variables i Tipus de Dades
- Entrada, Sortida i Arguments d'un Script
- Estructures de Control
- Funcions i Biblioteques
- Depuració i Gestió d'Errors
- Scripts de Producció: Bones Pràctiques
Mòdul 5: Administració del Sistema
- Gestió d'Usuaris i Grups
- sudo i Permisos Especials
- Gestió de Paquets
- Gestió de Discs
- systemd i la Gestió de Serveis
- Registres del Sistema: journald i syslog
- Monitoratge del Sistema i Optimització del Rendiment
- Còpies de Seguretat i Restauració
Mòdul 6: Xarxes i Seguretat
- Configuració de Xarxes
- SSH i Accés Remot
- Tallafocs i Seguretat Perimetral
- Sistemes de Detecció d'Intrusions
- Gestió de Secrets i Certificats TLS
- Assegurant Sistemes Linux
Mòdul 7: Temes Avançats
- El Procés d'Arrencada i la Recuperació del Sistema
- Diagnòstic Avançat: strace, perf i eBPF
- Optimització del Nucli de Linux
- Virtualització amb Linux
- Contenidors de Linux i Docker
- Automatització amb Ansible
- Alta Disponibilitat i Balanceig de Càrrega
