Table of Contents

Aggiornamento da Debian 11 Bullseye a 12 Bookworm

Update e upgrade

Aggiornamento corrente

Prima di modificare i repository è necessario fare un update all'ultima point-release della distribuzione installata (in effetti l'upgrade non dovrebbe avere alcun effetto):

apt update
apt upgrade
apt --purge autoremove

Cambio dei repository

Rispetto alla versione 11 Bullseye è stata aggiunta la nuova componente non-free-firmware, per distribuire solo i firmware non-free, che prima erano nella più generica non-free. Questo un template del nuovo file /etc/apt/sources.list:

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

Upgrade

Dopo aver aggiornato il file /etc/apt/sources.list si esegue l'upgrade vero e proprio:

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

adduser

A differenza delle release precedenti, Debian 12 aggiunge per default ogni utente creato con adduser al gruppo users. Per evitarlo si deve impostare in /etc/adduser.conf:

USERS_GID=-1

È cambiato anche il valore predefinito di DIR_MODE, che da 0750 è diventato 0700.

impi

Sembra che ci sia un bug nel pacchetto ipmitool. Vedere questo post per una possibile soluzione.

Python telnetlib

>>> import telnetlib
<stdin>:1: DeprecationWarning: 'telnetlib' is deprecated and slated for removal in Python 3.13

PHP

Con l'introduzione di PHP 8.2 la funzione get_magic_quotes_gpc() è stata definitivamente rimossa e quindi generea un errore.

SpamAssassin

Il demone spamd non è più compreso nel pacchetto Debian 12 Bookworm di spamassassin (versione 4.0.0), si deve installare il pacchetto omonimo separato.

ClamAV

Se si utilizza il demone clamd su socket TCP è necessario fare una modifica ai file di configurazione di Systemd perché l'opzione TCPSocket in /etc/clamav/clamd.conf non è sufficiente. Manca infatti l'autorizzazione da parte del sottosistema ad attivare un socket. Vedere ClamAV on TCP socket in Debian 12.

In pratica si crea una unit di Systemd nel file /etc/systemd/system/clamav-daemon.socket.d/tcp-socket.conf con le seguenti dichiarzioni:

[Socket]
ListenStream=127.0.0.1:3310

Quindi si riavvia Systemd:

systemctl daemon-reload
systemctl restart clamav-daemon.socket
systemctl restart clamav-daemon.service

MapServer

A causa dell'upgrade da MapServer 7.6.2 a MapServer 8.0.1 praticamente tutte le applicazioni basate su MapServer hanno smesso di funzionare. Vedere la pagina apposita per alcune note a riguardo: MapServer upgrade from Debian 11 to Debian 12.

LDAP server Slapd

Durante l'aggiornamento si è avuto l'errore a backend being used by the current OpenLDAP installation is not supported anymore e infatti il servizio LDAP non funziona più.

Versioni di Unison

Controllare le varie versioni di Unison installate e verificare se sono allineate a quelle disponibili in Bookworm; se possibile rimuovere quelli obsoleti. I pacchetti disponibili in Bookworm sono:

apt install unison-2.52
apt install unison-2.51+4.13.1

Problema upgrade gstreamer

Se sono installati i pacchetti gstreamer1.0-plugins-* dal repository Deb-Multimedia potrebbe capitare una situazione di stallo durante l'upgrade:

Errors were encountered while processing:
 /tmp/apt-dpkg-install-LZM0mY/293-gstreamer1.0-plugins-good_1.22.0-5+deb12u1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

La soluzione proposta di eseguire apt --fix-broken install non è stata sufficiente, è stato necessario rimuovere (almeno temporaneamente) alcuni pacchetti e forzare l'installazione di altri del repository ufficiale Debian invece che da quello Deb-Multimedia:

dpkg --purge gstreamer1.0-plugins-ugly quodlibet
apt install gstreamer1.0-plugins-good=1.22.0-5+deb12u1

OpenVPN BF-CBC not supported

L'opzione cipher viene usata quando si usa una configurazione con l'opzione secret e pre-shared-key, una situazione che in generale dovrebbe essere rimpiazzata dalle configurazioni TLS (es. EasyRSA).

L'impostazione predefinita per cipher è BF-CBC, che però non è più presente in OpenVPN 2.6.3 (controllare con openvpn --show-ciphers); si deve quindi necessariamente indicare un protocollo diverso, ad esempio:

# The --cipher option is used to connect OpenVPN older than 2.6.0 using pre-shared keys.
# Notice that AES-256-GCM is not supported in pre-shared keys mode.
#cipher AES-256-CBC
#
# Newer connections using TLS uses the --data-ciphers option.
data-ciphers AES-256-GCM:AES-128-GCM

PostgreSQL da 13 a 15

In generale dovrebbe funzionare la procedura pg_upgradecluster. Vedere una descrizione dettagliata in PostgreSQL/PostGIS Upgrade from 9.6 to 11 soprattutto se si hanno database con estensioni PostGIS. In estrema sintesi:

su -
su - postgres
# Siamo utente postgres
pg_lsclusters
# Verificare che la nuova istanza 15 sia sulla porta alternativa 5433.
psql --cluster 13/main
# Verificare con \l che i database esistenti siano in questa istanza.
psql --cluster 15/main
# Verificare che questa istanza sia in effetti vuota
pg_dropcluster --stop 15 main
pg_upgradecluster 13 main
pg_lsclusters
# Verificare che la nuova istanza 15 sia sulla porta predefinita 5432.
pg_dropcluster 13 main
pg_ctlcluster 15 main stop
exit
# Siamo di nuovo utente root
systemctl daemon-reload
systemctl stop postgresql@13-main
systemctl disable postgresql@13-main
systemctl stop postgresql@15-main
systemctl start postgresql@15-main
systemctl enable postgresql@15-main

Cacti da 1.2.16 a 1.2.24

Dopo l'aggiornamento di versione Debian, aprendo l'URL del sistema Cacti si viene accolti da una procedura di aggiornamento (wizard) dalla versione 1.2.16 di Cacti alla 1.2.24. Il sistema effettua una serie di controlli e suggerisce le modifiche da effettuare. In particolare si è dovuto:

Popolazione delle tabelle time zone in MySQL

Anzitutto si verifica che le tabelle timezone non sono state popolate: si esegue il client mysql e quindi:

CONNECT mysql
SELECT * FROM time_zone_name;

Si esegue quindi lo script per la popolazione delle tabelle:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

Conversione database Cacti a Unicode

Collegarsi al database Cacti e eseguire:

CONNECT cacti
ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Modifica collation_server

Cacti suggerisce di impostare il collation_server = utf8mb4_unicode_ci, mentre Debian lo imposta a utf8mb4_general_ci. La modifica va fatta nel file /etc/mysql/mariadb.conf.d/50-server.cnf.

Per consentire alla procedura PHP di aggiungere e/o modificare template ecc., si devono dare (temporaneamente) i seguenti permessi:

chown -R www-data:www-data /usr/share/cacti/site/resource/snmp_queries/
chown -R www-data:www-data /usr/share/cacti/site/resource/script_server/
chown -R www-data:www-data /usr/share/cacti/site/resource/script_queries/
chown -R www-data:www-data /usr/share/cacti/site/scripts/

Al termine della procedura eseguire di nuovo lo script assegnando proprietario e gruppo a root:root.

Attivazione di InnoDB

Il wizard segnala come anomalia che l'impostazione innodb di MySQL sarebbe UNSET. In effetti sembra che già tutte le tabelle della nostra installazione siano gestite dal motore InnoDB (è l'impostazione predefinita del server MariaDB 10.11.3).

Per verificare l'impostazione predefinita collegarsi al database mysql ed eseguire uno dei comandi seguenti:

SHOW ENGINES;
SELECT @@default_storage_engine;

Per verificare le tabelle del database cacti collegarsi a quel database ed eseguire SHOW TABLE STATUS e controllare per ogni riga il valore del campo Engine. Eventualmente convertire le tabelle che fossero ancora MyISAM.

La sintassi è del tipo:

ALTER TABLE TABLE_NAME ENGINE=InnoDB;

Le tabelle che usan l'engine Memory dovrebbero servire per le installazioni con migliaia di data source e i Remote Data Collectors; in tal caso è necessario abilitare l'opzione On-demand RRD Updating in ConsoleConfigurationSettingsPerformance.

Altre impostazioni MariaDB

Altre impostazioni suggerite dal Cacti Server v1.2.24 Installation Wizard possono essere inserite in un file /etc/mysql/mariadb.conf.d/99-local.cnf:

max_heap_table_size = 256M
tmp_table_size = 256M
innodb_doublewrite = OFF
innodb_buffer_pool_size = 4G

Verificare che le impostazioni siano coerenti con il proprio server, in particolar modo innodb_buffer_pool_size si suggerisce di impostarlo al 25% della memoria totale.

Riattivazione icone azione grafico

Nella visualizzazione GraphsPreview sono scomparse le icone a fianco dei grafici. Per tornare a visualizzarle si deve procedere da ConsoleConfigurationUsers ⇒ admin ⇒ Permissions ed attivare l'opzione Show Graph Action Icons.

Python e pip3 install

Debian 12 aderisce al Python Enhancement Proposal 668, cioè l'ambiente Python viene gestito esclusivamente dal sistema di pacchetti Debian (system-wide); per impostazione predefinita non è possibile installare moduli aggiuntivi in user space con il comando pip3 install ... o similari.

La strada suggerita è quella di creare, quando necessario, dei venv in user-space; all'interno di ciascnun venv è possibile installare con pip tutti i moduli aggiuntivi necessari. Vedere in proposito il paragrafo Solving the pip3 install problem.

XFCE e Libreoffice

In Debian 12 l'ambiente desktop XFCE è alla versione 4.18, questo si basa sulle librerie GTK+ 3, le stesse dell'ambiente desktop GNOME.

Per avere una migliore integrazione di Libreoffice (la versione fornita da Debian 12 è la 7.4.7) nell'ambiente XFCE è quindi opportuno installare il progamma libreoffice-gnome che richiede a sua volta l'installazione di libreoffice-gtk3 (in realtà è quest'ultimo a far cambiare il layout del programma). In questo modo la dimensione delle icone e dei menu sarà più omogenea al resto dell'ambiente. Nelle figure che seguono la differenza di layout di Calc: prima dell'installazione e dopo l'installazione di libreoffice-gtk3.

Libreoffice senza integrazine GNOME Libreoffice con integrazine GNOME

ATTENZIONE: In alcune circostanze (forse Debian 11, Libreoffice 7.0.4) potrebbe capitare che le icone accanto alle voci di menu non vengano mostrate quando si attiva l'integrazione GTK+ 3. Stando all'articolo Why did the icons disappear in the menus of version 6.4? dovrebbe trattarsi di un bug di Libreoffice, che si risolve temporaneamente in questo modo:

  1. Avvaire Libreoffice.
  2. Strumenti ⇒ Opzioni ⇒ Avanzate ⇒ Apri la configurazione avanzata.
  3. Cercare la stringa IconsInMenu (si trova in org.openoffice.Office.CommonViewMenu).
  4. Modificare l'impostazione IsSystemIconsInMenus in false.
  5. Lasciare l'impostazione ShowIconsInMenues a true.

La soluzione non è comunque perfetta, come si vede dalla figura le icone sono allineate come testo e non con il normale rientro.

Programmi KDE

Pur essendo l'ambiente desktop XFCE basato sulle librerie GTK+ 3 (quelle nate per l'ambiente GNOME), è possibile installare ed eseguire i programmi creati nativamente per l'ambiente KDE (che usa il toolkit Qt invece di GTK+).

Ad esempio è possibile installare il visualizzatore di PDF okular semplicemente installando il relativo pacchetto Debian. Le dipendenze dalle librerie Qt 5 verrà risolta automaticamente.

Tuttavia l'aspetto del programma potrebbe risultare non perfetto, vediamo ad esempio nella seguente figura:

Okular senza icone KDE

I pulsanti in alto a destra (Show Sidebar, Browse, Tex Selection e Quick Annotations) non contengono l'icona relativa, così anche i quattro tab subito sotto (per Thumbnails, Annotations, Bookmarks e Contents). I pulsanti per pagina precedente e pagina successiva non hanno l'icona e sono quindi praticamente invisibili (sebbene funzionanti).

Per risolvere il problema è sufficiente installare il pacchetto Debian breeze-icon-theme; in questo modo si ottiene una visualizzazione corretta come segue:

Okular con icone KDE

Volendo è possibile installare anche il pacchetto breeze-cursor-theme, in questo modo l'applicazione utilizzerà i puntatori del mouse tipici dell'ambiente KDE (freccia, cursore testo, ecc.).

Altri programmi KDE beneficieranno delle icone installate, ad esempio l'emulatore terminale Konsole oppure l'editor di testi Kate.

Accesso SSH a vecchie installazioni

L'accesso SSH da una nuova installazione Debian 12 Bookworm verso vecchie installazioni (es. Debian 4 Etch) fallisce a causa delle impostazioni predefinite del client SSH, con messaggi del tipo:

Unable to negotiate with 83.149.110.120 port 22: no matching key exchange method found.
Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

oppure:

Unable to negotiate with 83.149.110.120 port 22: no matching host key type found.
Their offer: ssh-rsa,ssh-dss

o anche:

debug1: Next authentication method: publickey
debug1: Offering public key: /home/niccolo/.ssh/id_rsa RSA SHA256:...
debug1: send_pubkey_test: no mutual signature algorithm

La soluzione è forzare uno o più dei seguenti parametri:

ssh \
    -o KexAlgorithms=+diffie-hellman-group1-sha1 \
    -o HostKeyAlgorithms=+ssh-dss \
    -o PubkeyAcceptedKeyTypes=+ssh-rsa \
    root@83.149.110.120