====== 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 [[https://forum.proxmox.com/threads/ipmi-tool-error-after-v8-upgrade.129334/|questo post]] per una possibile soluzione.
===== Python telnetlib =====
>>> import telnetlib
: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 **[[rspamd_spamassassin#clamav_on_tcp_socket_in_debian_12|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: **[[debian_11_12_mapserver_upgrade]]**.
===== 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 **[[https://deb-multimedia.org/|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_upgrade]]** 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 //Console// => //Configuration// => //Settings// => //Performance//.
=== 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 //Graphs// => //Preview// sono scomparse le icone a fianco dei grafici. Per tornare a visualizzarle si deve procedere da //Console// => //Configuration// => //Users// => admin => //Permissions// ed attivare l'opzione **Show Graph Action Icons**.
===== Python e pip3 install =====
Debian 12 aderisce al **[[https://peps.python.org/pep-0668/|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 **[[..:..:prog:kivy_debian_12_android_11#solving_the_pip3_install_problem|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//.
{{.:debian:libreoffice-senza-integrazione-gnome.png?320|Libreoffice senza integrazine GNOME}}
{{.:debian:libreoffice-con-integrazione-gnome.png?320|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 //[[https://ask.libreoffice.org/t/why-did-the-icons-disappear-in-the-menus-of-version-6-4/50875|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:
- Avvaire **Libreoffice**.
- Strumenti => Opzioni => Avanzate => **Apri la configurazione avanzata**.
- Cercare la stringa **IconsInMenu** (si trova in //org.openoffice.Office.Common// => //View// => //Menu//).
- Modificare l'impostazione **IsSystemIconsInMenus** in **false**.
- 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:
{{.:debian:okular-senza-icone-kde.png?480|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:
{{.:debian:okular-con-icone-kde.png?480|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:
* **KexAlgorithms**
* **HostKeyAlgorithms**
* **PubkeyAcceptedKeyTypes**
ssh \
-o KexAlgorithms=+diffie-hellman-group1-sha1 \
-o HostKeyAlgorithms=+ssh-dss \
-o PubkeyAcceptedKeyTypes=+ssh-rsa \
root@83.149.110.120