Capitolo 5. Problemi di cui essere al corrente per stretch

Indice

5.1. Aspetti specifici dell'aggiornamento a stretch
5.1.1. Il montaggio ritardato di /usr non è più supportato
5.1.2. L'accesso FTP ai mirror ospitati da Debian verrà rimosso
5.1.3. Pacchetti obsoleti degni di nota
5.1.4. Cose da fare dopo l'aggiornamento prima di riavviare
5.1.5. Gli eseguibili sono adesso compilati in modo predefinito come eseguibili indipendenti dalla posizione (PIE, Position Independent Executable).
5.1.6. La maggior parte dei pacchetti di compatibilità con LSB sono stati rimossi
5.2. Limitazione nel supporto per la sicurezza
5.2.1. Stato della sicurezza dei browser web
5.2.2. Mancanza di supporto di sicurezza per l'ecosistema di libv8 e Node.js
5.3. Problemi relativi a specifici pacchetti
5.3.1. Protocollo SSH1 e cifrari più vecchi disabilitati in OpenSSH in modo predefinito
5.3.2. Modifiche potenziamente incompatibili all'indietro in APT
5.3.3. I desktop migreranno al driver di Xorg libinput
5.3.4. Upstart rimosso
5.3.5. Lo strumento debhelper ora genera in modo predefinito pacchetti dbgsym
5.3.6. Cambiamenti relativi a OpenSSL
5.3.7. Modifiche a Perl che possono rendere non funzionante software di terze parti
5.3.8. Incompatibilità PostgreSQL PL/Perl
5.3.9. net-tools diventerà deprecato in favore di iproute2
5.3.10. L'opzione di mount _netdev è raccomandata quando si usano dispositivi AoE (ATA over Ethernet)
5.3.11. Avvertimenti non problematici «Unescaped ... in regex is deprecated, ...» durante l'aggiornamento
5.3.12. Migrazione dell'archivio della politica SELinux
5.3.13. iSCSI Enterprise Target non più supportato

A volte i cambiamenti introdotti da un nuovo rilascio comportano effetti collaterali che non si possono ragionevolmente evitare o che espongono errori da altre parti. In questa sezione sono documentati i problemi noti. Si leggano anche le errata corrige, la documentazione dei pacchetti interessati, le segnalazioni di errori e altre informazioni riportate in Sezione 6.1, «Ulteriori letture».

5.1. Aspetti specifici dell'aggiornamento a stretch

Questa sezione tratta le voci relative all'aggiornamento da jessie a stretch.

5.1.1. Il montaggio ritardato di /usr non è più supportato

[Nota]Nota

Questa sezione riguarda solo i sistemi che usano un kernel personalizzato in cui /usr è in un punto di montaggio separato da /. Se si usano i pacchetti del kernel forniti da Debian non si è affetti da questo problema.

Il montaggio di /usr usando solamente strumenti che si trovano in / non è più supportato. Ciò funzionava in passato solamente per poche configurazioni specifiche e ora sono esplicitamente non supportate.

Questo significa che per stretch tutti i sistemi in cui /usr è una partizione separata devono usare un generatore di initramfs che monti /usr. Tutti i generatori di initramfs in stretch lo fanno.

5.1.2. L'accesso FTP ai mirror ospitati da Debian verrà rimosso

I mirror ospitati da Debian smetteranno di fornire l'accesso via FTP. Se si usa il protocollo ftp: nel proprio file sources.list, migrare a http:. Per la migrazione, guardare l'esempio seguente:

deb http://deb.debian.org/debian          stretch         main
deb http://deb.debian.org/debian-security stretch/updates main

# tor variant (requires apt-transport-tor)
# deb  tor+http://vwakviie2ienjx6t.onion/debian          stretch            main
# deb  tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates    main

Gli esempi soprastanti non includono non-free e contrib. Se si ha necessità di avere queste componenti abilitate, ricordarsi di includerle.

Per maggiori informazioni fare riferimento all'annuncio: Chiusura dei servizi FTP pubblici.

5.1.3. Pacchetti obsoleti degni di nota

Quello che segue è un elenco di pacchetti obsoleti noti e degni di nota (vedere Sezione 4.8, «Pacchetti obsoleti» per una descrizione).

L'elenco dei pacchetti obsoleti comprende:

  • La maggior parte dei pacchetti -dbg è stata rimossa dall'archivio principale. Sono stati sostituiti da pacchetti -dbgsym che sono disponibili dall'archivio debian-debug. Vedere Sezione 2.2.8, «Un nuovo archivio per i simboli di debug».

  • I gestori di password fpm2 e kedpm non sono più mantenuti dagli autori originali a monte. Usare un altro gestore di password, come pass, keepassx o keepass2.. Assicurarsi di estrarre le proprie password da fpm2 e kedpm prima di rimuovere i pacchetti.

  • Il pacchetto net-tools è ora deprecato in favore di iproute2. Vedere Sezione 5.3.9, «net-tools diventerà deprecato in favore di iproute2» o il manuale Debian Reference per maggiori informazioni.

  • Gli strumenti di monitoraggio nagios3 sono stati rimossi da stretch. Il pacchetto icinga è il sostituto più vicino. Legge i propri file di configurazione da un percorso diverso rispetto a nagios, ma è per il resto compatibile.

5.1.4. Cose da fare dopo l'aggiornamento prima di riavviare

Quando apt-get dist-upgrade ha terminato, l'aggiornamento è «formalmente» completo. Per l'aggiornamento a stretch non ci sono azioni speciali necessarie prima di effettuare un riavvio.

5.1.5. Gli eseguibili sono adesso compilati in modo predefinito come eseguibili indipendenti dalla posizione (PIE, Position Independent Executable).

In modo predefinito il compilatore GNU GCC 6 fornito da Debian Stretch compila tutti gli eseguibili come indipendenti dalla posizione. Ciò fornisce un alleggerimento da tutta una classe di vulnerabilità.

Sfortunatamente il kernel Linux fornito in Debian 8 (fino a 8.7) ha un problema che fa sì che alcuni programmi compilati come eseguibili indipendenti dalla posizione vadano in crash riportando un errore non descrittivo come segmentation fault. Questo problema è stato risolto nella versione di Linux fornita in 8.8 (versione 3.16.43 o successive) e nel kernel fornito in Debian 9 (versione 4.9 o successive).

We recommend that you upgrade your kernel to a fixed version and then reboot before starting the upgrade to stretch. If you are running the kernel from Debian 8.8 or newer, you are not affected by this issue.

Se si sta eseguendo una versione affetta dal problema del kernel durante l'aggiornamento è fortemente raccomandato fare un riavvio con kernel di stretch immediatamente dopo l'aggiornamento per evitare di incontrare questo problema.

5.1.5.1. Cambiamenti di comportamento di PIE per gli amministratori di sistema e gli sviluppatori

[Nota]Nota

Questa sezione è principalmente rivolta agli sviluppatori o agli amministratori di sistema. Gli utenti desktop difficilmente saranno interessati dal problema descritto in questa sezione.

Quanto detto sopra porta anche ad alcuni cambiamenti che è bene conoscere.

  • Lo strumento file (tra gli altri) classifica tali binari come «oggetti condivisi» invece che come «eseguibili». Se si hanno filtri basati su file binari, potrebbe essere necessario aggiornarli (es. filtri anti-spam).

  • Anche le librerie statiche compilate in un eseguibile ora devono essere compilate come codice indipendente dalla posizione. Il seguente messaggio di errore da un linker è un sintomo di un problema relativo a questo:

    relocation ... against '[SYMBOL]' can not be used when making a shared object; recompile with -fPIC
    

    Notare che anche se il messaggio di errore riporta -fPIC è sufficiente ricompilare con -fPIE (che è il valore predefinito nei pacchetti GCC 6 che fanno parte di stretch).

  • Storicamente gli eseguibili indipendenti dalla posizione sono stati associati su certo hardware ad una perdita di prestazioni. In particolare per l'architettura Debian i386 (macchine Intel a 32 bit). Mentre GCC 5 e GCC 6 hanno fortemente migliorato le prestazioni per eseguibili indipendenti dalla posizione su Intel a 32 bit, questa ottimizzazione potrebbe non essere applicabile a tutte le architetture. Considerare di valutare le prestazioni del proprio codice se si ha come obiettivo architetture di macchine con un numero molto limitato di registri.

5.1.6. La maggior parte dei pacchetti di compatibilità con LSB sono stati rimossi

A causa di una mancanza di interessa e di testabilità, Debian ha rimosso la stragrande maggioranza dei pacchetti di compatibilità LSB (Linux Standard Base).

Debian continuerà a fornire poche utilità chiave LSB selezionate utilizzate internamente ed esternamente, come lsb-release e le funzioni init di sysvinit in lsb-base. Inoltre Debian conferma la sua forte adesione alla versione 2.3 del Filesystem Hierarchy Standard (FHS) con le modifiche minori descritte nel manuale Debian Policy.

5.2. Limitazione nel supporto per la sicurezza

Ci sono alcuni pacchetti per i quali Debian non può garantire di fornire i backport minimi per ragioni di sicurezza. Questi verranno trattati nelle sottosezioni che seguono.

Notare che il pacchetto debian-security-support aiuta a tenere traccia dello stato del supporto di sicurezza per i pacchetti installati.

5.2.1. Stato della sicurezza dei browser web

Debian 9 contiene diversi motori per browser che sono affetti da varie vulnerabilità di sicurezza. L'alto tasso di vulnerabilità e la parziale mancanza di supporto a lungo termine da parte degli autori originali complica l'attività di supporto di questi browser tramite l'applicazione delle correzioni di sicurezza alle versioni precedenti. Inoltre la dipendenza reciproca delle librerie rende impossibile aggiornare a una nuova versione. Perciò, in stretch sono presenti browser basati sui motori webkit, qtwebkit e khtml, ma non sono coperti dal supporto di sicurezza. Non si dovrebbe usare questi browser con siti web non fidati.

Per un browser web di uso generico si raccomanda Firefox oppure Chromium.

Chromium, pur essendo costruito sul codice Webkit, è un pacchetto foglia che verrà mantenuto aggiornato ricompilando i rilasci correnti di Chromium per stable. Firefox e Thunderbird verranno anch'essi mantenuti aggiornati ricompilando i rilasci ESR correnti per stable.

5.2.2. Mancanza di supporto di sicurezza per l'ecosistema di libv8 e Node.js

La piattaforma Node.js è costruita sulla base di libv8-3.14 che ha un grande volume di problemi di sicurezza ma al momento non ci sono volontari all'interno del progetto o nel Team di sicurezza sufficientemente interessati e con la volontà di investire la grande quantità di tempo richiesto per limitare questi problemi in arrivo.

Sfortunatamente ciò significa che libv8-3.14, nodejs e l'ecosistema di pacchetti node-* associati attualmente non dovrebbe essere usato con contenuti non fidati, come dati non ripuliti presi da Internet.

In aggiunta questi pacchetti non riceveranno alcun aggiornamento di sicurezza durante la vita del rilascio stretch.

5.3. Problemi relativi a specifici pacchetti

Nella maggior parte dei casi i pacchetti dovrebbero aggiornarsi senza problemi da jessie a stretch. C'è un numero limitato di casi dove può essere necessario un qualche intervento, prima o durante l'aggiornamento; questi casi sono descritti in dettaglio di seguito, pacchetto per pacchetto.

5.3.1. Protocollo SSH1 e cifrari più vecchi disabilitati in OpenSSH in modo predefinito

Il rilascio di OpenSSH 7 ha disabilitato in modo predefinito alcuni vecchi cifrari e il protocollo SSH1. Fare attenzione quando si aggiornano macchine a cui si ha accesso solo via SSH.

Inoltre il valore predefinito dell'opzione di configurazione "UseDNS" è stato cambiato da si a no. Ciò può far sì che gli utenti che usano la funzionalità "from=" in authorized_keys per limitare l'accesso ssh in base all'host rimangano bloccati fuori, il che è particolarmente problematico se si aggiorna da remoto.

Fare riferimento alla documentazione di OpenSSH per maggiori informazioni.

5.3.2. Modifiche potenziamente incompatibili all'indietro in APT

Questa sezione copre alcune delle modifiche incompatibili ad APT che potrebbero influenzare il sistema.

5.3.2.1. APT ora recupera i file con un utente non privilegiato (_apt)

APT ora cerca di liberarsi di tutti i privilegi di root prima di recuperare i file dai mirror. APT può rilevare alcuni casi d'uso comuni dove ciò porterebbe a un fallimento e ripiega sul recuperare il materiale come root dando un avvertimento. Tuttavia può non riuscire a rilevare alcune configurazioni particolari (es. regole di firewall specifiche per UID).

Se si incontrano problemi con questa funzionalità, diventare l'utente _apt e controllare che:

  • abbia accesso in lettura ai file in /var/lib/apt/lists e /var/cache/apt/archives;

  • abbia accesso in lettura all'archiviazione della fiducia di APT (/etc/apt/trusted.gpg e /etc/apt/trusted.gpg.d/);

  • possa risolvere nomi DNS e scaricare file. Esempi di metodi per testarlo sono:

    # Dal pacchetto dnsutils (se si usa tor, controllare invece con tor-resolve).
    $ nslookup debian.org >/dev/null || echo "Cannot resolve debian.org"
    $ wget -q https://debian.org/ -O- > /dev/null || echo "Impossibile scaricare la pagina indice di debian.org"
    

    Per problemi con DNS controllare che /etc/resolv.conf sia leggibile.

5.3.2.2. Nuovo motore di pin di APT

APT 1.1 ha introdotto un nuovo motore di pin che corrisponde ora alla descrizione nella pagina di manuale.

Il vecchio motore assegnava una priorità di pin per pacchetto, quello nuovo assegna le priorità di pin per versione. Sceglie poi la versione con il più alto pin che non sia una retrocessione o che ha un pin > 1000.

Questo cambia l'effetto di alcuni pin, specialmente quelli negativi. In precedenza, fare il pin di una versione a -1 di fatto evitava che il pacchetto venisse installato (il pin del pacchetto era -1), ora evita solamente che venga installata la versione di questo pacchetto.

5.3.2.3. Nuovi requisiti per repository APT

[Nota]Nota

Questa sezione è rilevante solo se si hanno (o si intendono usare) repository di terze parti abilitati o se si mantiene un repository APT.

Per migliorare la stabilità degli scaricamenti e garantire la sicurezza dei contenuti scaricati, APT ora ha per i repository APT i seguenti requisiti:

  • Il file InRelease deve essere disponibile.

  • Tutti i metadati devono includere almeno i codici di controllo SHA256 di tutti gli elementi. Ciò include la firma GPG del file InRelease.

  • Le firme del file InRelease devono essere fatte con una chiave di dimensione uguale o maggiore di 2048 bit.

Se ci si affida ad un repository di terze parti che non può conformarsi con i requisiti suddetti, invitare i responsabili ad aggiornare il proprio repository. Ulteriori informazioni sul file InRelease possono essere trovate sul Debian Wiki.

5.3.3. I desktop migreranno al driver di Xorg libinput

[Nota]Nota

Questa sezione è rilevante solo se è stata toccata o si ha necessità di modificare la configurazione di input predefinita di Xorg.

In jessi, il driver di input predefinito per Xorg è il driver evdev. In stretch, la scelta predefinita è modificata in libinput. Se si ha una configurazione di Xorg che si basa sul driver evdev, si deve convertirla al driver libinput o riconfigurare il sistema in modo che usi il driver evdev.

Quello che segue è un esempio di configurazione per libinput per abilitare la funzionalità «Emulate3Buttons».

Section "InputClass"
        Identifier "mouse"
        MatchIsPointer "on"
        Driver "libinput"
        Option "MiddleEmulation" "on"
EndSection

Inserirla in /etc/X11/xorg.conf.d/41-middle-emulation.conf, riavviare il sistema (o riavviare il server X) e dovrebbe essere abilitata.

Il driver evdev è sempre disponibile nel pacchetto xserver-xorg-input-evdev.

5.3.4. Upstart rimosso

A causa della mancanza di manutenzione da parte degli autori a monte, il sistema init Upstart è stato rimosso da stretch. Se il proprio sistema fa affidamento su questo pacchetto, tenere a mente che non verrà aggiornato durante la vita di Debian 9 e che, a partire da Debian 10 (buster), i compiti upstart potrebbero essere rimossi dai pacchetti.

Considerare il passaggio a un sistema init supportato, come systemd o OpenRC.

5.3.5. Lo strumento debhelper ora genera in modo predefinito pacchetti dbgsym

[Nota]Nota

Questa sezione è pensata principalmente per gli sviluppatori o le organizzazione che compilano i propri pacchetti Debian.

La suite di strumenti debhelper genera ora in modo predefinito pacchetti dbgsym per i binari ELF. Se si sviluppano e impacchettano binari, controllare che i propri strumenti supportino questo pacchetti extra generati automaticamente.

Se si usa reprepro si vorrà aggiornare almeno alla versione 4.17.0. Per aptly sarà necessaria almeno la versione 1.0.0 che sfortunatamente non è disponibile in Debian stretch.

Se i propri strumenti non sono in grado di lavorare in modo pulito con essi, si può chiedere a debhelper di disabilitare questa funzionalità aggiungendo «noautodbgsym» nella variabile DEB_BUILD_OPTIONS del proprio servizio di compilazione. Vedere la pagina di manuale di dh_strip per ulteriori informazioni.

5.3.6. Cambiamenti relativi a OpenSSL

L'applicazione openssl si aspetta gli argomenti opzione prima degli argomenti non opzione. Per esempio questo non funziona più:

openssl dsaparam 2048 -out file

mentre questo lo fa ancora:

openssl dsaparam -out file 2048

Il comando openssl enc ha cambiato il digest predefinito (usato per creare la chiave dalla passphrase) da MD5 a SHA256. Il digest può essere specificato con l'opzione -md nel caso in cui vecchi file debbano essere decifrati con il nuovo OpenSSL (o viceversa).

I cifrari 3DES e RC4 non sono più disponibili per la comunicazione TLS/SSL. I server con link a OpenSSL non possono offrirli e i client non possono connettersi a server che offrono solo quelli. Ciò significa che OpenSSL e Windows XP non hanno alcun cifrario comune.

Il pacchetto libssl-dev fornisce file header per compilare con OpenSSL 1.1.0. L'API è cambiata molto ed è possibile che il software non compili più. È disponibile una panoramica dei cambiamenti. Se non si può aggiornare il proprio software c'è anche libssl1.0-dev che fornisce header per OpenSSL 1.0.2.

5.3.7. Modifiche a Perl che possono rendere non funzionante software di terze parti

[Nota]Nota

Questa sezione riguarda il codice mantenuto al di fuori di Debian: script e moduli Perl locali, di terze parti od obsoleti.

  • Alcuni moduli sono stati rimossi dal nucleo centrale di Perl e sono ora forniti in pacchetti separati. Esempi degni di nota sono CGI, disponibile nel pacchetto libcgi-pm-perl, e Module::Build, disponibile nel pacchetto libmodule-build-perl.

  • La directory di lavoro corrente (.) è stata rimossa dall'elenco predefinito di directory per gli include: @INC. Questo può avere un effetto sull'uso di require(), do(), ecc. in cui gli argomenti sono file nella directory corrente.

    Tutti i programmi e i moduli Perl forniti in Debian dovrebbero essere corretti per affrontare ogni incompatibilità causata da quanto detto; segnalare bug se ciò non è vero. Dato che la modifica è stata fatta in Perl 5.26.0, anche il software di terze parti dovrebbe iniziare ad essere corretto. Informazioni per gli sviluppatori su come correggere questo problema sono fornite nelle note di rilascio di Perl 5.26 (vedere la sezione SECURITY).

    Se è necessario si può temporaneamente ripristinare . in @INC globalmente commentando la riga in /etc/perl/sitecustomize.pl, ma lo si dovrebbe fare solamente se si comprendono i potenziali rischi. Questa soluzione temporanea verrà rimossa in Debian 10. Si può anche impostare la variabile d'ambiente PERL_USE_UNSAFE_INC in un contesto specifico, ottenendo lo stesso effetto.

  • L'elenco completo delle modifiche in Perl a partire dalla versione in Debian 8 è disponibile in perl522delta e perl524delta.

5.3.8. Incompatibilità PostgreSQL PL/Perl

Il pacchetto del linguaggio procedurale PostgreSQL PL/Perl in jessie è incompatibile con la versione di Perl in stretch. Il pacchetto postgresql-plperl-9.4 verrà rimosso durante l'aggiornamento, rendendo non funzionanti le procedure Perl lato server. L'aggiornamento a PostgreSQL 9.6 non dovrebbe essere disturbato, le procedure funzioneranno nel nuovo cluster PostgreSQL se è installato il pacchetto postgresql-plperl-9.6. Se non si è sicuri, fare un backup dei propri cluster PostgreSQL 9.4 prima dell'aggiornamento a stretch.

5.3.9. net-tools diventerà deprecato in favore di iproute2

Il pacchetto net-tools in modo predefinito non fa più parte delle nuove installazioni data che la sua priorità è stata abbassata da importante ad opzionale. È consigliato invece agli utenti di usare il moderno insieme di strumenti iproute2 (che fa parte delle nuove installazioni già da diversi rilasci). Se si preferisce continuare ad usare i programmi net-tools, li si può semplicemente installare con

apt install net-tools

[Avvertimento]Avvertimento

Tenere a mente che net-tools può essere disinstallato durante l'aggiornamento se era stato installato solamente per soddisfare una dipendenza. Se si fa affidamento su net-tools ricordarsi di contrassegnarlo come pacchetto installato manualmente prima dell'aggiornamento usando:

apt-mark manual net-tools

Quello che segue è un riassunto dei comandi net-tools insieme ai loro equivalenti per iproute2:

vecchi comandi net-toolscomandi iproute2 sostitutivi
arpip n (ip neighbor)
ifconfigip a (ip addr), ip link, ip -s (ip -stats)
iptunnelip tunnel
nameifip link
netstatss, ip route (per netstat -r), ip -s link (per netstat -i), ip maddr (per netstat -g)
routeip r (ip route)

5.3.10. L'opzione di mount _netdev è raccomandata quando si usano dispositivi AoE (ATA over Ethernet)

[Nota]Nota

Questa sezione si applica solo ai sistemi che hanno dispositivi AoE (ATA over Ethernet). Se il sistema non monta alcuna condivisione di rete si può saltare questa sezione senza problemi.

A causa di una ripulitura della gestione della deconfigurazione della rete, i dispositivi AoE in uso non vengono più gestiti come atteso durante lo spegnimento e ciò può risultare in blocchi o perdite di dati. Per mitigare questa situazione è suggerito montare questi dispositivi usando l'opzione di mount _netdev. Tale opzione è disponibile anche quando si usa lo swap via AoE.

5.3.11. Avvertimenti non problematici «Unescaped ... in regex is deprecated, ...» durante l'aggiornamento

Durante l'aggiornamento potrebbero essere visualizzati avvertimenti come:

Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^(.*?)(\\)?\${ <-- HERE ([^{}]+)}(.*)$/ at /usr/share/perl5/Debconf/Question.pm line 72.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ([^}]+)}/ at /usr/share/perl5/Debconf/Config.pm line 30.

Sono innocui e si verificano se perl-base viene aggiornato prima del pacchetto debconf.

5.3.12. Migrazione dell'archivio della politica SELinux

[Nota]Nota

Questa sezione si applica solo ai sistemi che usano SELinux, che non è abilitato in modo predefinito.

In stretch, l'archivio delle politiche SELinux è stato spostato da /etc/selinux/<nome_politica> a /var/lib/selinux/<nome_politica>. Inoltre è cambiato il formato usato all'interno dell'archivio.

Le politiche fornite da Debian (ad esempio dal pacchetto selinux-policy-default) verranno migrate automaticamente. Tuttavia la migrazione delle politiche specifiche del sistema deve essere fatta manualmente.

Il pacchetto semanage-utils fornisce lo script /usr/lib/selinux/semanage_migrate_store per fare questa transizione.

5.3.13. iSCSI Enterprise Target non più supportato

IET (iSCSI Enterprise Target), pacchettizzato nel pacchetto iscsitarget nei precedenti rilasci, non è più in Debian dato che non funziona con le versioni recenti del kernel e il progetto non ha visto ultimamente alcuna attività di sviluppo.

Gli utenti di IET sono incoraggiati a passare allo stack LIO che è completamente supportato in Debian Stretch. Il pacchetto targetcli-fb fornisce l'utilità di configurazione per il tarsget iSCSI LIO.

Dato che lo stack LIO è stato sviluppato indipendentemente da IET la configurazione deve essere migrata manualmente.