User Tools

Site Tools


doc:appunti:linux:sa:debian_upgrade_12_13

Aggiornamento da Debian 12 Bookworm a 13 Trixie

Update e upgrade

Aggiornamento corrente

apt update
apt upgrade
apt --purge autoremove

Cambio dei repository

deb     http://deb.debian.org/debian/               trixie           main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian/               trixie           main contrib non-free non-free-firmware
deb     http://security.debian.org/debian-security  trixie-security  main contrib non-free non-free-firmware
deb-src http://security.debian.org/debian-security  trixie-security  main contrib non-free non-free-firmware
deb     http://deb.debian.org/debian/               trixie-updates   main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian/               trixie-updates   main contrib non-free non-free-firmware

Upgrade

apt update
apt upgrade --without-new-pkgs
apt full-upgrade

Syslog

Il sistema di logging predefinito è di systemd-journald installato dal pacchetto systemd. Non viene più installato il pacchetto rsyslog pertanto non vengono più creati i consueti file:

  • /var/log/syslog
  • /var/log/kern.log

I log di sistema vengono creati secondo i criteri stabiliti in /etc/systemd/journald.conf, generalmente nella directory /var/log/journal/.

Anzitutto è possibile decidere se i log di sistema debbano essere conservati in memoria permanente (opzione predefinita) oppure in memoria volatile. Per utilizzare memoria volatile è sufficiente impostare nel file di configurazione:

[Journal]
Storage=volatile

Al restart del servizio systemd-journald viene creato la directory /run/log/journal/ in tmpfs.

Per limitare lo spazio utilizzato su memoria permanente (filesystem su disco) si possono usare diverse opzioni System*, per gestire lo spazio in memoria volatile si usano le omologhe Runtime*:

For persistent file system
SystemMaxUse How much disk space the journal may use up at most. Default to 10% of the partition where /var/log/journal/ resides.
SystemKeepFree How much disk space systemd-journald shall leave free for other uses.
SystemMaxFileSize How large individual journal files may grow at most before rotating.
SystemMaxFiles How many individual journal files to keep at most in rotation.
For volatile in-memory file system
RuntimeMaxUse In Debian, the default /run/log/journal/, resides into the /run tempfs.
RuntimeKeepFree
RuntimeMaxFileSize
RuntimeMaxFiles
Rotation
MaxFileSec The maximum time to store entries in a single journal file before rotating to the next one. Use it to ensure that not too much data is lost at once when old journal files are deleted.
MaxRetentionSec The maximum time to store journal entries. If you need a retention shorter than the one imposed by SystemMaxUse.

This is an example on how to limit the disk space used and to determine rotaton policy (rotate once a day, keep 366 files i.e. one year):

[Journal]
SystemMaxUse=7G
SystemKeepFree=2G
SystemMaxFileSize=256M
SystemMaxFiles=366
MaxFileSec=1day

Cambiamenti nei comandi

ifconfig

Il comando ifconfig non viene installato per default, un sostituto moderno potrebbe essere:

ip address show

Per chi volesse avere il comando legacy compatibile, si installa il pacchetto net-tools, che installa l'eseguibile in /usr/sbin/ e /sbin/.

sniffit

Il pacchetto sniffit era presente in Debian 12 Bookworm con la versione 0.5, ma non è entrato in Debain 13 Trixie.

Per fortuna il vecchio pacchetto sniffit_0.5-3_amd64.deb di Debian 12 si installa senza problemi nella nuova release e funziona correttamente.

Pare che anche il pacchetto sniffit_0.6-1_amd64.deb di testing/forky si installi e funzioni senza problemi. Invece il pacchetto sniffit_0.7-1_amd64.deb non funziona (non produce i file con il dump della session).

mitmproxy

Il pacchetto mitmproxy era presente con la versione 8.1.1 in Debian 12 Bookworm, ma non è entrato in Trixie. Per fortuna in testing/forky esiste il pacchetto mitmproxy_8.1.1-4_all.deb che si installa in Trixie, con la semplice aggiunta di un apt install --fix-broken.

ntp

Già in Debian 12 alcuni pacchetti relativi a ntp erano transitional packages utilizzati per passare ai pacchetti ntpsec, questo l'elenco completo delle transizioni:

  • ntpntpsec
  • ntpdatentpsec-ntpdate
  • sntpntpsec-ntpdig

In generale sarà sufficiente aver installato i pacchetti

  • ntpsec - Contiene il demone principale ntpd e diverse utility come ntptime, ntptrace, ecc.
  • ntpsec-ntpdig - Contiene l'utility ntpdig.

Se ci si accontenta di un servizio minimalista per la sincronizzazione dell'ora è sufficiente installare il singolo pacchetto (alternativo a ntpsec):

  • systemd-timesyncd

last

Il comando last dal pacchetto util-linux non c'è più: The last, lastb and lastlog commands have been replaced.

Il comando alternativo è:

wtmpdb last

Una installazione ex-novo dovrebbe creare il link simbolico che riproduce il vecchio comportamento:

lrwxrwxrwx 1 root root 6 Oct 20 20:32 /usr/bin/last -> wtmpdb

gamin

gamin and libgamin0

SSH key exchange

Alcuni client non troppo aggiornati potrebbero avere problemi a collegarsi via SSH alla nuova Debian 13 Trixie, journalctl potrebbe indicare un messaggio di errore del tipo:

sshd-session[98743]: Unable to negotiate with 14.156.24.17 port 60053: 
    no matching key exchange method found. Their offer:
    diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,
    diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 [preauth]

Per vedere i key exchange methods abilitati:

sshd -T | grep kexalgorithms

Per aggiungerne uno si può aggiungere una riga a /etc/ssh/sshd_config.d/90-local.conf:

KexAlgorithms +diffie-hellman-group-exchange-sha256

Python

La nuova versione di Python è più stringente su alcune sintassi, ad esempio quando si usano espressioni regolari contenenti caratteri escape si potrebbe incappare in warning del tipo:

SyntaxWarning: invalid escape sequence '\s'

Tutte le stringhe utilizzate in espressioni del tipo:

re.compile('\regex-string\')

devono usare stringhe raw, quindi con la sintassi:

re.compile('r\regex-string\')

Errore in Bash completion

Quando si esegue il completamento-tab di un comando Bash si ottiene in alcuni casi l'errore _split_longopt: command not found.

Pare che il problema derivi dal fatto che la funzione _split_longopt() è stata tolta dal file /usr/share/bash-completion/bash_completion, ma diversi file in /usr/share/bash-completion/completions/* fanno riferimento ancora ad essa.

Il workaround più veloce è definire la funzione mancante in $HOME/.bashr:

# Workaround for bug "bash: _split_longopt: command not found"
_split_longopt() { _comp__split_longopt "$@"; }

OpenVPN

Come per l'aggiornamento da Debian 11 a Debian 12 una connessione OpenVPN potrebbe non partire con questo messaggio d'errore:

Cipher BF-CBC not supported

Nel corrispondente file .conf è possibile aggiungere la seguente opzione, che ovviemente deve essere supportata anche dall'altra estremità:

cipher AES-256-CBC

iproute2

Sono scomparsi i file di configurazione /etc/iproute2/*. ad esempio il file /etc/iproute2/rt_tables usato per configurare il source routing con un host dual-homed.

udisks2.service

Il servizio udisks2.service viene attivato di default e monta automaticamente FIXME.

Pager e ANSI color escape sequences

Alcuni comandi - ad esmepio apt search oppure git - mostrano il loro output su terminale testuale utilizzando i colori tramite codici escape ANSI. Quando tale output viene visualizzato una pagina per volta tramite un ridirezione pipe su pager (programma che è normalmente linkato a less su Debian) il programma se ne accorge e non produce i codici colore ANSI.

In Debian 13 Trixie alcuni comandi - come appunto apt search - hanno attivato la funzione di pager per default e l'output viene automaticamente dato in pasto a pager. Se per caso l'utente ha configurato la variabile d'ambiente $LESS (nel caso mio era impostata a -i per ignorare la capitalizzazione nelle ricerche) il pager non interpreta i codici colore ANSI e produce un risultato del tipo:

apt search kodi
ESC[32mkodiESC[0m/testing,now 3:21.2+dfsg-4+rpt1 arm64 [installed]
  Open Source Home Theatre (executable binaries)

ESC[32mkodi-addons-devESC[0m/testing 3:21.2+dfsg-4+rpt1 arm64
  Open Source Home Theatre (addon development package)

La soluzione è aggiungere il parametro -R alla variabile $LESS:

export LESS='-iR'
doc/appunti/linux/sa/debian_upgrade_12_13.txt · Last modified: by niccolo