====== 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:
* **ntp** => **ntpsec**
* **ntpdate** => **ntpsec-ntpdate**
* **sntp** => **ntpsec-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ù: **[[https://www.debian.org/releases/trixie/release-notes/issues.html#the-last-lastb-and-lastlog-commands-have-been-replaced|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 "$@"; }
* **[[https://unix.stackexchange.com/questions/781758/split-longopt-command-not-found-when-trying-tab-completion|"_split_longopt: command not found" when trying tab-completion]]**
===== OpenVPN =====
Come per l'aggiornamento **[[debian_upgrade_11_12#openvpn_bf-cbc_not_supported|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'