Chapitre 5. Problèmes à connaître pour Stretch

Table des matières

5.1. Mise à niveau d'éléments spécifiques pour Stretch
5.1.1. Le montage tardif de /usr n'est plus pris en charge
5.1.2. Suppression de l'accès par FTP aux miroirs hébergés par Debian
5.1.3. Paquets obsolètes
5.1.4. Choses à faire avant de redémarrer après la mise à niveau
5.1.5. Les binaires sont maintenant compilés par défaut comme des exécutables indépendants de l'emplacement (PIE).
5.1.6. Suppression de la plupart des paquets de compatibilité LSB
5.2. Limitations de la prise en charge de sécurité
5.2.1. État de sécurité des navigateurs web
5.2.2. Manque de prise en charge de sécurité pour l'écosystème autour de libv8 et Node.js
5.3. Problèmes spécifiques à des paquets
5.3.1. Anciens algorithmes de chiffrement et protocole SSH1 désactivés dans OpenSSH par défaut
5.3.2. Possibles modifications non rétrocompatibles dans APT
5.3.3. Les bureaux vont migrer vers le pilote Xorg libinput
5.3.4. Upstart supprimé
5.3.5. L'outil debhelper génère maintenant les paquets dbgsym par défaut
5.3.6. Modifications liées à OpenSSL
5.3.7. Modifications de Perl pouvant casser des logiciels tiers
5.3.8. Incompatibilité avec PostgreSQL PL/Perl
5.3.9. Le paquet net-tools sera déconseillé en faveur de iproute2
5.3.10. L'option de montage _netdev est recommandée lors de l'utilisation de périphériques AoE (ATA over ethernet)
5.3.11. Avertissements « Unespaced ... in regex is deprecated, ... » sans conséquence pendant la mise à niveau.
5.3.12. Migration du stockage de politiques SELinux
5.3.13. iSCSI Enterprise Target no longer supported

Parfois, des changements ont des effets de bord que nous ne pouvons pas raisonnablement éviter sans nous exposer à des bogues à un autre endroit. Cette section documente les problèmes que nous connaissons. Veuillez également lire l'errata, la documentation des paquets concernés, les rapports de bogues et les autres sources d'informations mentionnées en Section 6.1, « Lectures pour aller plus loin ».

5.1. Mise à niveau d'éléments spécifiques pour Stretch

Cette section concerne les éléments liés à la mise à niveau de Jessie vers Stretch

5.1.1. Le montage tardif de /usr n'est plus pris en charge

[Note]Note

Cette section ne s'applique qu'aux systèmes utilisant un noyau personnalisé, où /usr se trouve dans un point de montage séparé de /. Si vous utilisez les paquets du noyau fournis par Debian, ce problème ne vous affecte pas.

Le montage de /usr en n'utilisant que des outils trouvés dans / n'est plus pris en charge. Cela n'a fonctionné dans le passé que pour quelques configurations spécifiques et est désormais explicitement non pris en charge.

Cela signifie que pour Stretch tous les systèmes dans lesquels /usr est une partition séparée doivent utiliser un générateur d'initramfs qui montera /usr. Tous les générateurs d'initramfs présents dans Stretch le font.

5.1.2. Suppression de l'accès par FTP aux miroirs hébergés par Debian

Les miroirs hébergés par Debian vont cesser de fournir un accès FTP. Si vous utilisez le protocole ftp: dans votre sources.list, veuillez migrer vers http:. Vous pouvez utiliser l'exemple suivant :

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

# variante tor (nécessite apt-transport-tor)
# deb  tor+http://vwakviie2ienjx6t.onion/debian          stretch            main
# deb  tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates    main

Les exemples ci-dessus ne comprennent pas non-free ni contrib. N'oubliez pas de les inclure si vous avez besoin de ces composants.

Pour davantage d'informations, veuillez consulter l'annonce : Fermeture des services FTP publics.

5.1.3. Paquets obsolètes

La liste suivante contient des paquets connus et obsolètes (voir Section 4.8, « Paquets obsolètes » pour une description).

La liste des paquets obsolètes contient :

  • la plupart des paquets -dbg ont été supprimés de l'archive principale. Ils ont été remplacés par des paquets -dbgsym qui sont disponibles dans l'archive debian-debug. Veuillez consulter la Section 2.2.8, « Une nouvelle archive pour les symboles de débogage ».

  • Les gestionnaires de mots de passe fpm2 et kedpm ne sont plus maintenus en amont. Veuillez utiliser un autre gestionnaire de mots de passe tel que pass, keepassx ou keepass2. Assurez-vous d'avoir extrait vos mots de passe de fpm2 et kedpm avant de supprimer les paquets.

  • Le paquet net-tools est déconseillé en faveur de iproute2. Veuillez consulter la Section 5.3.9, « Le paquet net-tools sera déconseillé en faveur de iproute2 » ou le manuel de référence Debian pour de plus amples informations.

  • Les outils de surveillance nagios3 ont été supprimés de Stretch. Le paquet icinga en est le remplaçant le plus proche. Il est globalement compatible, mais lit les fichiers de configuration à un emplacement différent.

5.1.4. Choses à faire avant de redémarrer après la mise à niveau

Lorsque apt-get dist-upgrade a terminé, la mise à niveau « formelle » est complète. Pour la mise à niveau vers Stretch il n'y a rien de particulier à faire avant de redémarrer.

5.1.5. Les binaires sont maintenant compilés par défaut comme des exécutables indépendants de l'emplacement (PIE).

Par défaut, le compilateur GNU GCC 6 fourni par Debian Stretch compilera tous les exécutables pour être indépendants de l'emplacement. Cela fournit une limitation de toute une classe de vulnérabilités.

Malheureusement, le noyau Linux fournit dans Debian 8 (jusqu'à 8.7) cause un problème avec certains programmes compilés pour être des exécutables indépendants de l'emplacement en les faisant planter avec une erreur peu descriptive comme erreur de segmentation. Ce problème est corrigé dans la version de Linux fournit dans Debian 8.8 (version 3.16.43 ou ultérieure) et dans le noyau fourni dans Debian 9 (version 4.9 ou ultérieure).

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.

Si vous exécutez une version affectée du noyau pendant la mise à niveau, nous vous recommandons fortement de procéder à un redémarrage vers le noyau de Stretch juste après la mise à niveau pour éviter les problèmes.

5.1.5.1. Changement de comportement lié au PIE pour les administrateurs système et les développeurs

[Note]Note

Cette section est principalement destinée aux développeurs ou aux administrateurs système. Les utilisateurs classiques ne devraient pas être affectés par cette section.

Ce qui précède conduit également à quelques changements qu'il est bon de connaître.

  • L'outil file (entre autres) classera ces exécutables en tant qu'« objets partagés » plutôt que comme des « exécutables ». Si vous avez des filtres basés sur les fichiers exécutables, ceux-ci pourraient devoir être mis à jour (par exemple les filtres anti-pourriels).

  • Les bibliothèques statiques compilées en exécutables doivent maintenant être compilées comme du code indépendant de l'emplacement. Le message d'erreur suivant de l'éditeur de liens en est un symptôme :

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

    Veuillez noter que bien que le message d'erreur mentionne -fPIC, il est suffisant de recompiler avec -fPIE (qui est l’option par défaut dans les paquets GCC 6 faisant partie de Stretch).

  • Historiquement, les exécutables indépendants de l'emplacement étaient associés avec une perte de performance sur certains matériels, notamment pour l'architecture Debian i386 (machines Intel 32 bits). Bien que GCC 5 et GCC 6 aient grandement amélioré les performances des exécutables indépendants de l'emplacement sur l'architecture Intel 32 bits, cette optimisation pourrait ne pas s'appliquer à toutes les architectures. Veuillez évaluer la performance de votre code si vous visez des architectures ayant un nombre de registres très limité.

5.1.6. Suppression de la plupart des paquets de compatibilité LSB

En raison d'un manque d'intérêt et de testabilité, Debian a supprimé la majeure partie des paquets de compatibilité LSB (« Linux Standard Base »).

Debian continuera à fournir quelques utilitaires clés de LSB utilisés en interne et en dehors du projet, comme lsb-release et les fonctions de démarrage de sysvinit dans lsb-base. De plus, Debian soutient toujours la version 2.3 du standard de hiérarchie de système de fichiers FHS (« Filesystem Hierarchy Standard ») à quelques modifications mineures près décrites dans le manuel de la charte Debian.

5.2. Limitations de la prise en charge de sécurité

Il y a certains paquets pour lesquels Debian ne peut pas garantir de rétroportages minimaux pour les problèmes de sécurité. Ceux-ci sont couverts dans les sous-sections suivantes.

Veuillez noter que le paquet debian-security-support aide à suivre le statut de la prise en charge du suivi de sécurité des paquets installés.

5.2.1. État de sécurité des navigateurs web

Debian 9 inclut plusieurs moteurs de navigateur web qui sont affectés par un flot continu de vulnérabilités de sécurité. Ce taux élevé de vulnérabilités ainsi que le manque partiel de prise en charge amont sous la forme de branches maintenues à long terme rendent difficiles les corrections de sécurité rétroportées. De plus, les interdépendances des bibliothèques rendent impossible la mise à niveau vers une nouvelle version. Par conséquent les navigateurs basés sur les moteurs webkit, qtwebkit et khtml sont inclus dans Stretch mais ne sont pas couverts par une prise en charge complète de la sécurité. Ces navigateurs ne devraient pas être utilisés sur des sites web non fiables.

Pour un usage général de navigation web, nous recommandons Firefox et Chromium.

Chromium − bien qu'il soit construit sur Webkit − est un paquet sans dépendance, qui sera maintenu à jour en reconstruisant les versions actuelles de Chromium pour stable. Firefox et Thunderbird seront également maintenus à jour en reconstruisant les versions ESR actuelles pour stable.

5.2.2. Manque de prise en charge de sécurité pour l'écosystème autour de libv8 et Node.js

La plate-forme Node.js est construite sur libv8-3.14 qui souffre d'un grand nombre de problèmes de sécurité, mais le projet et l'équipe de sécurité manquent de volontaires suffisamment intéressés et souhaitant investir beaucoup de temps pour corriger ces problèmes.

Malheureusement, cela signifie que libv8-3.14, nodejs et l'écosystème de paquets node-* associé ne devraient pas être actuellement utilisés avec du contenu non sûr, par exemple des données non validées depuis Internet.

De plus, ces paquets ne recevront aucune mise à jour de sécurité pendant la durée de vie de la distribution Stretch.

5.3. Problèmes spécifiques à des paquets

Dans la plupart des cas, les paquets devraient se mettre à jour sans incident entre Jessie et Stretch. Il existe un petit nombre de cas pour lesquels une intervention pourrait être nécessaire, avant ou pendant la mise à niveau ; ces cas sont détaillés ci-dessous paquet par paquet.

5.3.1. Anciens algorithmes de chiffrement et protocole SSH1 désactivés dans OpenSSH par défaut

La version 7 d'OpenSSH a désactivé certains anciens algorithmes de chiffrement et le protocole SSH1 par défaut. Soyez prudents en mettant à niveau des machines pour lesquelles vous n'avez qu'un accès SSH.

Moreover, the default of the "UseDNS" configuration option has changed from yes to no. This may cause users who use the "from=" functionality in authorized_keys to limit ssh access by host to be locked out, which is especially troublesome if upgrading remotely.

Veuillez vous référer à la documentation d'OpenSSH pour plus d'informations.

5.3.2. Possibles modifications non rétrocompatibles dans APT

Cette section couvre certaines des modifications d'APT qui pourraient affecter votre système.

5.3.2.1. APT récupère maintenant les fichiers avec un utilisateur sans privilège (_apt)

APT essaiera désormais de se passer des droits du superutilisateur avant de récupérer des fichiers depuis les miroirs. APT peut détecter certains cas courants pour lesquels cela échouera et se rabattra sur une récupération avec les droits du superutilisateur avec un avertissement. Néanmoins, il pourrait échouer à détecter certaines configurations exotiques (comme par exemple des règles de pare-feu spécifiques à un UID).

Si vous rencontrez des problèmes avec cette fonctionnalité, veuillez vous authentifier comme l'utilisateur _apt et vérifier que :

  • il peut lire les fichiers dans /var/lib/apt/lists et /var/cache/apt/archives ;

  • il peut lire dans le dépôt de confiance APT (/etc/apt/trusted.gpg et /etc/apt/trusted.gpg.d/) ;

  • il peut résoudre les noms DNS et télécharger des fichiers. Exemples de méthodes pour tester :

    # Depuis le paquet dnsutils (si vous utilisez tor, veuillez plutôt vérifier avec tor-resolve).
    $ nslookup debian.org >/dev/null || echo "Ne peut pas résoudre debian.org"
    $ wget -q https://debian.org/ -O- > /dev/null || echo "Ne peut pas télécharger la page d'index de debian.org"
    

    Pour les problèmes de DNS, veuillez vérifier que /etc/resolv.conf est accessible en lecture.

5.3.2.2. Nouveau moteur d'épinglage (pinning) APT

APT 1.1 a introduit un nouveau moteur d'épinglage que correspond maintenant à la description de la page de manuel.

L'ancien moteur affectait une priorité d'épinglage par paquet, tandis que le nouveau affecte les priorités d'épinglage par version. Il choisit ensuite la version ayant la priorité la plus élevée qui n'est pas une rétrogradation ou il choisit la version ayant une priorité supérieure à 1000.

Cela modifie l'effet de certaines priorités, en particulier les priorités négatives. Auparavant, fixer une version à -1 empêchait le paquet d'être installé (la priorité du paquet était -1), maintenant cela empêche juste cette version du paquet d'être installée.

5.3.2.3. Nouveaux prérequis pour les dépôts APT

[Note]Note

Cette section ne s'applique que si vous avez (ou comptez utiliser) des dépôts tiers activés ou si vous maintenez un dépôt APT.

Pour améliorer la stabilité de téléchargement et assurer la sécurité du contenu téléchargé, APT requiert maintenant ce qui suit des dépôts APT :

  • le fichier InRelease doit être disponible ;

  • Toutes les métadonnées doivent inclure au moins les sommes de contrôle SHA256 de tous les éléments. Cela comprend la signature GPG du fichier InRelease.

  • Les signatures du fichier InRelease doivent être faites au moyen d'une clé de taille 2048 bits ou plus.

Si vous utilisez des dépôts tiers qui ne peuvent se conformer aux prérequis mentionnés, veuillez les inciter à mettre leur dépôt à jour. Plus d'informations sur le fichier InRelease sont disponibles sur le wiki Debian.

5.3.3. Les bureaux vont migrer vers le pilote Xorg libinput

[Note]Note

Cette section n'est pertinente que si vous avez personnalisé ou avez besoin de modifier la configuration par défaut des entrées de Xorg.

Dans Jessie, le pilote d'entrée par défaut est evdev. Dans Stretch, le pilote par défaut est libinput. Si votre configuration de Xorg dépend du pilote evdev, il vous faudra soit la convertir pour le pilote libinput, soit reconfigurer votre système pour utiliser le pilote evdev.

Ce qui suit est un exemple de configuration pour activer la fonctionnalité « Emulate3Buttons » avec libinput.

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

Insérez-le dans /etc/X11/xorg.conf.d/41-middle-emulation.conf, redémarrez (ou relancez votre serveur X) et la fonctionnalité devrait maintenant être activée.

Le pilote evdev est toujours disponible dans le paquet xserver-xorg-legacy.

5.3.4. Upstart supprimé

À cause du manque de mainteneurs amont, le système de démarrage Upstart a été supprimé de Stretch. Si votre système dépend de ce paquet, notez qu'il ne sera pas mis à jour pendant le cycle de vie de Debian 9 et que les tâches upstart pourraient être supprimées des paquets à partir de Debian 10 (Buster).

Veuillez envisager de passer à un système de démarrage pris en charge, comme systemd ou OpenRC.

5.3.5. L'outil debhelper génère maintenant les paquets dbgsym par défaut

[Note]Note

Cette section est principalement destinée aux développeurs ou aux organisations construisant leurs propres paquets Debian.

La suite d'outils debhelper génère maintenant les paquets dbgsym par défaut pour les exécutables ELF. Si vous développez et empaquetez des exécutables, veuillez vérifier que vos outils prennent en charge ces paquets supplémentaires générés automatiquement.

Si vous utilisez reprepro, il vous faudra mettre à niveau vers la version 4.17.0 au minimum. Pour aptly, il vous faudra au minimum la version 1.0.0, qui n'est malheureusement pas disponible dans Debian Stretch.

Si vos outils ne sont pas capables de gérer cela, vous pouvez demander à debhelper de désactiver cette fonctionnalité en ajoutant « noautodbgsym » à la variable DEB_BUILD_OPTIONS de votre service de compilation. Veuillez consulter la page de manuel de dh_strip pour plus d'informations.

5.3.6. Modifications liées à OpenSSL

L'application openssl attend les arguments optionnels avant les arguments obligatoires. Par exemple, ceci ne fonctionne plus :

openssl dsaparam 2048 -out file

mais ceci fonctionne toujours :

openssl dsaparam -out file 2048

La commande openssl enc a changé son algorithme par défaut (utilisé pour créer la clé depuis une phrase de passe) de MD5 vers SHA256. L'algorithme peut être indiqué avec l'option -md au cas où d'anciens fichiers devraient être déchiffrés avec une nouvelle version d'OpenSSL (ou l'inverse).

Les algorithmes de chiffrement 3DES et RC4 ne sont plus disponibles pour la communication par TLS/SSL. Les serveurs liés à OpenSSL ne peuvent plus les proposer et les clients ne peuvent plus se connecter à des serveurs ne proposant que ces algorithmes. Cela signifie qu'OpenSSL et Windows XP n'ont aucun algorithme de chiffrement en commun.

Le paquet libssl-dev fournit les fichiers d'en-tête pour compiler avec OpenSSL 1.1.0. L'API a beaucoup changé et il est possible que des logiciels ne soient plus compilables. Il existe un aperçu des modifications. Si vous ne pouvez mettre votre logiciel à jour, il existe également libssl1.0-dev qui fournit les en-têtes pour OpenSSL 1.0.2.

5.3.7. Modifications de Perl pouvant casser des logiciels tiers

[Note]Note

Cette section s'applique au code maintenu en dehors de Debian – les scripts et modules Perl locaux, tiers ou anciens.

  • Certains modules ont été supprimés du cœur de Perl et sont maintenant livrés dans des paquets séparés. Les exemples notables sont CGI, disponible dans le paquet libcgi-pm-perl, et Module::Build, disponible dans le paquet libmodule-build-perl.

  • Le répertoire de travail courant (.) a été supprimé de la liste par défaut des répertoires inclus, @INC. Cela pourrait affecter l'utilisation de require(), do(), etc., quand les arguments sont des fichiers dans le répertoire courant.

    Tous les programmes et modules Perl fournis par Debian devraient avoir été corrigés pour éviter toute incompatibilité causée par les modifications mentionnées ci-dessus ; veuillez rapporter les bogues si ce n'est pas le cas. Les modifications ayant été faites dans Perl 5.26.0, les logiciels tiers devraient également commencer à être corrigés. Des informations pour les développeurs concernant le moyen de corriger ce problème sont disponibles dans les notes de publication de perl 5.26 (voir la section SECURITY).

    En cas de besoin, vous pouvez remettre temporairement . dans @INC globalement en commentant la ligne dans /etc/perl/sitecustomize.pl mais vous ne devriez le faire qu'en pleine connaissance des risques potentiels. Ce contournement sera supprimé dans Debian 10. Vous pouvez aussi régler la variable d'environnement PERL_USE_UNSAFE_INC dans un contexte spécifique, ce qui aura le même effet.

  • La liste complète des modifications dans Perl depuis la version de Debian 8 est disponible dans perl522delta et perl524delta.

5.3.8. Incompatibilité avec PostgreSQL PL/Perl

Le paquet du langage procédural PL/Perl pour PostgreSQL dans Jessie est incompatible avec la version de Perl dans Stretch. Le paquet postgresql-plperl-9.4 sera supprimé pendant la mise à jour, rendant les procédures Perl dysfonctionnelles côté serveur. La mise à niveau vers PostgreSQL 9.6 ne devrait pas être affectée ; les procédures fonctionneront dans la nouvelle grappe PostgreSQL si le paquet postgresql-plperl-9.6 est installé. En cas de doute, faites une sauvegarde de vos grappes PostgreSQL 9.4 avant de mettre à niveau vers Stretch.

5.3.9. Le paquet net-tools sera déconseillé en faveur de iproute2

Le paquet net-tools ne fait plus partie des nouvelles installations par défaut car sa priorité est passée d'importante à optionnelle. Il est conseillé aux utilisateurs d'utiliser à la place l'ensemble d'outils iproute2 (qui fait partie des nouvelles installations depuis déjà plusieurs versions). Si vous préférez continuer à utiliser les programmes de net-tools, vous pouvez simplement l'installer grâce à :

apt install net-tools

[Avertissement]Avertissement

Veuillez garder à l'esprit que net-tools pourrait être désinstallé pendant la mise à niveau s'il n'était installé que pour satisfaire une dépendance. Si vous utilisez net-tools, veuillez penser à le marquer en tant que paquet manuellement installé avant la mise à jour grâce à :

apt-mark manual net-tools

Voici une liste des commandes de net-tools, avec la commande équivalente dans iproute2 :

anciennes commandes net-toolscommandes iproute2 de remplacement
arpip n (ip neighbor)
ifconfigip a (ip addr), ip link, ip -s (ip -stats)
iptunnelip tunnel
nameifip link
netstatss, ip route (pour netstat -r), ip -s link (pour netstat -i), ip maddr (pour netstat -g)
routeip r (ip route)

5.3.10. L'option de montage _netdev est recommandée lors de l'utilisation de périphériques AoE (ATA over ethernet)

[Note]Note

Cette recommandation ne s'applique qu'aux systèmes ayant monté des périphériques ATA over ethernet (AoE). Si votre système ne monte aucun partage réseau, vous pouvez passer cette section.

À cause d'un nettoyage dans la gestion de la déconfiguration réseau, les périphériques AoE en cours d'utilisation ne sont plus gérés comme prévu pendant l'extinction, ce qui pourrait résulter en des ralentissements et/ou des pertes de données. Pour éviter cette situation, il est recommandé de monter ces périphériques avec l'option de montage _netdev. Cette option est aussi disponible pour l'utilisation de swap sur AoE.

5.3.11. Avertissements « Unespaced ... in regex is deprecated, ... » sans conséquence pendant la mise à niveau.

Pendant la mise à niveau, vous pourriez voir des avertissements tels que :

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.

Il s'agit de messages sans conséquence pouvant s'afficher si perl-base est mis à niveau avant le paquet debconf.

5.3.12. Migration du stockage de politiques SELinux

[Note]Note

Cette section ne concerne que les systèmes utilisant SELinux, qui n'est pas activé par défaut.

Dans Stretch, le stockage de politiques SELinux a été déplacé de /etc/selinux/<policy_name> vers /var/lib/selinux/<policy_name>. De plus, le format utilisé au sein du stockage a changé.

Les politiques fournies par Debian (par exemple par le paquet selinux-policy-default) seront déplacées automatiquement. Cependant, la migration des politiques spécifiques au système doit se faire manuellement.

Le paquet semanage-utils fournit le script /usr/lib/selinux/semanage_migrate_store pour accomplir cette transition.

5.3.13. iSCSI Enterprise Target no longer supported

The iSCSI Enterprise Target (IET), packaged in the iscsitarget package in previous releases, is no longer in Debian, as it will not work with recent kernel versions, and the project has seen no development activity in recent years.

Users of IET are encouraged to switch to the LIO stack, which is fully supported in Debian stretch. The package targetcli-fb provides the configuration utility for the LIO iSCSI target.

As the LIO stack was developed independently of the IET, the configuration has to be migrated manually.