Debian 12 to 13
Quería dejar por escrito el procedimiento exacto que sigo para subir de Debian 12 → 13 sin sobresaltos. Está pensado para que usted lo replique con confianza en su servidor o VM.
En pocas palabras (si ya sabe lo que hace)
- Verifico formato de APT, creo respaldo y cambio bookworm → trixie.
- Hago upgrade mínimo y luego full-upgrade.
- Reinicio y valido.
# 0) Formato APT (rápido)
if find /etc/apt -maxdepth 2 -type f -name '*.sources' -print -quit | grep -q .; then
echo "Formato deb822 (*.sources)";
else
echo "Formato clásico (sources.list / *.list)";
fi
# 1) (Clásico) Edito solo repos oficiales, con respaldo .bak
sudo bash -c '
set -e; shopt -s nullglob
FILES=(/etc/apt/sources.list /etc/apt/sources.list.d/*.list)
[ ${#FILES[@]} -gt 0 ] && sed -i.bak -E "/^[[:space:]]*#/! {/deb\.debian\.org\/debian|security\.debian\.org\/debian-security/ { s/\<bookworm-security\>/trixie-security/g; s/\<bookworm-updates\>/trixie-updates/g; s/\<bookworm\>/trixie/g; }}" "${FILES[@]}"
apt update
apt upgrade --without-new-pkgs -y
apt full-upgrade -y
reboot
'
Si usa deb822 (*.sources), más abajo dejo el bloque exacto.
Requisitos y buenas prácticas que sí me han ahorrado problemas
- Ventana de mantenimiento y, si es VM, snapshot antes de empezar.
- Ejecuto en tmux o screen para no perder la sesión si la conexión cae:
- Espacio libre: al menos 2–3 GB en /:
- Si tiene repos de terceros (Docker, Zabbix, Grafana, NodeSource, etc.), verifico si ya publicaron suite trixie. Si no, los dejo en bookworm o los comento temporalmente.
Paso 1 — Detectar el formato de APT
Debian hoy convive con dos formatos:
- Clásico: /etc/apt/sources.list y .list en sources.list.d/.
- deb822: uno o varios archivos *.sources (p. ej. debian.sources).
Para detectarlo uso:
if find /etc/apt -maxdepth 2 -type f -name '*.sources' -print -quit | grep -q .; then
echo "Formato deb822 (*.sources)"
else
echo "Formato clásico (sources.list / *.list)"
fi
Paso 2A — Cambiar bookworm → trixie (formato clásico)
Yo edito solo los repos oficiales y dejo respaldo .bak por si debo revertir:
sudo bash -c '
set -e
shopt -s nullglob
FILES=(/etc/apt/sources.list /etc/apt/sources.list.d/*.list)
[ ${#FILES[@]} -gt 0 ] && sed -i.bak -E "/^[[:space:]]*#/! {/deb\.debian\.org\/debian|security\.debian\.org\/debian-security/ { s/\<bookworm-security\>/trixie-security/g; s/\<bookworm-updates\>/trixie-updates/g; s/\<bookworm\>/trixie/g; }}" "${FILES[@]}"
Nota: si tiene entradas de terceros, no las toco con el sed anterior. Prefiero revisarlas a mano.
Paso 2B — Cambiar bookworm → trixie (formato deb822)
Si su sistema usa *.sources, el ajuste correcto es sobre el campo Suites:
sudo bash -c '
set -e
shopt -s nullglob
SRC=(/etc/apt/sources.list.d/*.sources /etc/apt/sources.list.d/debian.sources /etc/apt/sources.list.d/*debian*.sources /etc/apt/sources.list.d/*security*.sources)
[ ${#SRC[@]} -gt 0 ] && sed -i.bak -E "/^[[:space:]]*#/! { s/\bSuites:\s*bookworm-security\b/Suites: trixie-security/; s/\bSuites:\s*bookworm(\s+bookworm-updates)?/Suites: trixie trixie-updates/; }" "${SRC[@]}"
Si quiere “modernizar” primero desde formato clásico:
Paso 3 — Actualización en dos fases
Primero sin meter paquetes nuevos; luego el full-upgrade que resuelve cambios de dependencias:
En esta etapa, si aparece una pantalla de conffile (Nginx, SSH, etc.), yo reviso el diff y conservo mi configuración salvo que la nueva traiga algo crítico que necesite.
Paso 4 — Reinicio y validaciones
Al volver:
cat /etc/debian_version # Debe decir 13.x
uname -r # Kernel nuevo (si aplicaba)
grep -R "deb .*debian" /etc/apt/sources.list{,.d/*.list} 2>/dev/null
Limpieza opcional:
Problemas comunes que me he encontrado (y cómo los resuelvo)
- Repos de terceros no listos para TrixieSi apt update arroja 404 o “Release file not found”, dejo esa entrada en bookworm o la comento hasta que el proveedor publique trixie. Ejemplo rápido:
- Paquetes retenidos (held back)
- o fuerzo resolver con:
- dpkg a medio camino (corte de luz, SSH se cayó, etc.)
- Advertencias de “Directory not empty” o usr-is-mergedSon normales durante la transición; tras el reinicio suelen desaparecer. Si persisten como directorios vacíos, verifico que no rompan nada antes de eliminarlos.
- Servicios críticosReviso que todo levante:
**¿Revertir? Lo prudente es **
restaurar el snapshot
Hacer “downgrade del release” no es algo que yo recomiende. Si algo sale mal, para mí la salida profesional es volver al snapshot/backup, corregir, y reintentar el upgrade.
Para pequeños ajustes (solo APT), siempre quedan los *.bak de las fuentes:
sudo mv /etc/apt/sources.list.bak /etc/apt/sources.list
sudo mv /etc/apt/sources.list.d/*.bak /etc/apt/sources.list.d/
sudo apt update
Checklist rápido (lo que yo marco como “listo”)
- Snapshot/backup verificado
- Repos oficiales apuntan a trixie
- Repos de terceros revisados (o comentados)
- apt upgrade --without-new-pkgs OK
- apt full-upgrade OK
- Reinicio, servicios arriba y systemctl --failed vacío
- Limpieza (autoremove, clean)