En ce mardi XX mai, les utilisateurs du Projet Fedora seront ravis d'apprendre la disponibilité de la version Fedora Linux 36.
Fedora Linux est une distribution communautaire développée par le projet Fedora et sponsorisée par Red Hat, qui lui fournit des développeurs ainsi que des moyens financiers et logistiques. Fedora Linux peut être vu comme une sorte de vitrine technologique pour le monde du logiciel libre, c’est pourquoi elle est prompte à inclure des nouveautés.
Fedora garde un rôle central dans le développement de ces nouveautés via le développement en amont. En effet, les développeurs de la distribution contribuent également directement au code d’un certain nombre de logiciels libres contenus dans la distribution, dont le noyau Linux, GNOME, NetworkManager, PackageKit, PulseAudio, Wayland, systemd, la célèbre suite de compilateurs GCC, etc. Cliquez ici pour voir l’ensemble des contributions de Red Hat.
Cela a été aussi abordé dans une série d'articles ici, là et par ici encore.
Expérience utilisateur
Passage à GNOME 42. Cette version apporte de nombreux changements esthétiques et ergonomiques. Tout d'abord il y a une vraie configuration du thème sombre. Auparavant avec l'application Ajustements il était possible de choisir le thème Adwaita-dark pour avoir les applications avec un thème sombre. Maintenant cela est disponible dans le panneau de configuration de GNOME, et elle permet non seulement de configurer le thème des applications, mais aussi les fonds d'écran (s'ils sont compatibles) et les applications peuvent adapter leur affichage également car ils ont accès à cette information. Ce changement n'affecte que les applications écrites avec GTK4 et la nouvelle bibliothèque libadwaita pour le moment.
De manière globale le style des widgets et des applications a été un peu revu. Des icônes ont été également rafraîchies en particulier dans l'application Fichiers.
Ce thème sombre est aussi en lien avec la nouvelle version de la bibliothèque graphique GTK4, de nombreuses applications utilisent cette version maintenant : Paramètres, Fichiers, Analyseur de disques, Polices, To do, Tour, Calendrier, Horloges, Logiciels, Caractères, Contacts, Météo et Calculatrice.
La capture d'écran bénéficie d'un rafraichissement très important. Plutôt qu'une fenêtre classique qui s'ouvre, c'est une application plus discrète en surimpression qui permet de sélectionner la zone à capturer et de configurer les options d'enregistrement. Il permet également d'enregistrer l'écran sous forme de vidéo.
Deux nouvelles applications entrent dans l'arène. Console qui est une version simplifiée de Terminal tout en utilisant GTK4. Les deux doivent s'adresser à des publics un peu différent, Terminal devant être plus complet et complexe à l'usage. Et Éditeur de texte en parallèle de Gedit pour éditer du texte ou programmer. Il est plus simple que Gedit et utilise aussi GTK4, d'autant que que Gedit n'est pour le moment plus officiellement maintenu.
Il est possible de partager son écran à distance avec le protocole RDP dans le panneau de configuration dans l'onglet Partage.
Quelques améliorations de performances, notamment pour Vidéo qui utilise une surface OpenGL pour accélérer le rendu par l'usage de la carte graphique. Le navigateur Web utilise aussi l'accélération matérielle pour le rendu pour améliorer les performances. L'indexation des fichiers avec Tracker qui consomme moins de mémoire et démarre plus rapidement. La gestion des entrées de saisies (clavier, souris, etc.) a été améliorée pour diminuer la latence et améliorer la sensation de fluidité.
GNOME utilise Wayland avec le pilote propriétaire de nVidia par défaut. À partir de la version 495.44, le pilote propriétaire permet d'avoir l'accélération matérielle pour les applications non compatibles avec Wayland, qui passent donc par la couche de compatibilité XWayland. Comme toutes les applications peuvent avoir des performances décentes tout en ayant une bonne stabilité, il devient possible de le proposer par défaut aux utilisateurs. Seuls ceux ayant plusieurs cartes graphiques comme nVidia avec Intel sur les portables garderont X11 par défaut pour le moment.
Notons qu'il est toujours possible d'utiliser X11 si l'utilisateur le souhaite dans tous les cas.
Mise à jour de l'environnement LXQt à la version 1.0.0. Cette version exploite la dernière version LTS de Qt5 à savoir la version 5.15. Un mode ne pas déranger fait son apparition pour ne pas recevoir des notifications quand il est actif. Il est possible d'ajouter sur la barre principale des boutons ayant des commandes personnalisées. Deux nouveaux thèmes font leur apparition avec la possibilité de configurer les palettes Qt également. Le gestionnaire de fichiers peut ajouter des emblèmes aux fichiers ou dossiers. Une option permet de choisir d'afficher ou non les fichiers cachés.
L'installateur anaconda cochera par défaut l'option pour que l'utilisateur soit administrateur du système. En effet par défaut le principal utilisateur doit être l'administrateur via sudo, il est préférable que ceux qui choisissent de procéder autrement décident de décocher cette option plutôt que quelqu'un qui n'a pas les connaissances nécessaires de devoir cliquer dessus.
Par ailleurs les éditions Workstation et Silverblue n'affichent pas cet écran car la configuration est faite via l'utilitaire de GNOME depuis de nombreuses versions, et l'utilisateur créé par ce biais est bien administrateur par défaut ce qui rend cette décision plus cohérente.
La police par défaut devient Noto Font pour plus d'uniformité d'affichage. Jusqu'ici les polices DejaVu étaient employées par défaut pour les langues européennes ou les scripts, Noto étaient employées pour les langues asiatiques pour la meilleure prise en charge de l'ensemble des caractères de ces langues. La police par défaut sera la même pour toutes les langues. Ainsi une application qui affiche plusieurs langues aura un affichage plus propre et cela permet d'économiser quelques 6 Mio dans l'image de base du système en supprimant les polices DejaVu.
Gestion du matériel
L'architecture POWER LE change d'ABI basé sur le standard long double 128-bit IEEE. En effet ce standard est plus commun que ceux d'AIX double-double ou IBM long double (deux doubles de 64 bits groupés ensemble), ce dernier étant celui utilisé dans Fedora. Ces deux alternatives avaient l'inconvénient d'avoir une mantisse discontinue ce qui les rendait peu pratiques à exploiter.
L'ancien pilote de gestion du framebuffer du noyau fbdev est remplacé par simpledrm qui exploite l'infrastructure DRM du noyau tout en fournissant une couche de compatibilité. Cela fait une bonne décennie que le sous système DRM du noyau est devenu la référence pour l'affichage vidéo. Seulement fbdev est toujours utilisé par certains firmwares pour initialiser l'affichage vidéo au démarrage comme aarch64 via le device tree, efifb pour les machines ayant un EFI ou encore vesafb pour les machines avec un affichage VESA. Mais le noyau 5.14 a introduit simpledrm qui peut prendre en charge ce cas d'utilisation avec une couche de compatibilité ce qui rend fbdev facultatif.
Cela simplifie la maintenance et est une étape avant de supprimer totalement le sous système à terme, qui est préservé à cause de la console framebuffer en pur texte.
Suppression de la prise en charge des Wireless Extensions par le noyau et des outils systèmes, qui a été remplacé en 2007 par mac80211/cfg80211. Cette API entre le noyau et l'espace utilisateur est très ancienne et a pour principal inconvénient de n'être compatible qu'avec le chiffrement WEP qui n'est plus du tout sécurisé. De fait cela fait longtemps qu'il n'est plus vraiment utilisé en conditions réelles et sa suppression permet d'améliorer la sécurité en réduisant la surface d'attaque tout en signalant à ses éventuels utilisateurs de changer leur infrastructure pour une solution plus sécurisée.
Le paquet wireless-tools qui fournissait les utilitaires en espace utilisateur est de fait supprimé. Au niveau du noyau cela passe par la désactivation des options suivantes : CONFIG_WEXT_CORE, CONFIG_WEXT_PROC, CONFIG_WEXT_SPY, CONFIG_WEXT_PRIV, CONFIG_CFG80211_WEXT et CONFIG_CFG80211_WEXT_EXPORT.
Internationalisation
La méthode d'entrée par défaut pour la locale zh_HK (Hong Kong) passe à ibus-table-chinese-cangjie. L'ancienne méthode d'entrée ibus-cangjie n'est plus maintenue mais reste disponible pour ceux qui le souhaitent ou pour les configurations existantes.
La police par défaut de la langue malayalam a été mise à jour pour une meilleure lisibilité et pour la compatibilité avec UNICODE 13. Les polices smc-meera-fonts et smc-rachana-fonts (respectivement serif et sans serif) font place à rit-meera-new-fonts et rit-rachana-fonts.
Administration système
Les authentifications systèmes et les périphériques de sécurité associés (les lecteurs d'empreintes ou les cartes à puce) doivent forcément passer par authselect maintenant pour plus d'homogénéité et de sécurité. Il devient plus difficile d'avoir une configuration cassée ou incohérente.
En effet sans authselect, les fichiers de configuration /etc/nsswitch.conf et /etc/pam.d/* ne sont jamais écrasés suite à une mise à jour, à la place un fichier .rpmnew est créé à côté pour laisser à l'utilisateur le soin de tenir compte du nouveau format ou des nouveaux paramètres pour ne pas casser sa configuration existante. Mais du coup même des fichiers de configuration par défaut n'étaient jamais mis à jour. Par conséquent il fallait écrire des scripts un peu compliqués pour mettre à jour ces fichiers sans casser l'existant ou détecter si c'était une configuration par défaut ce qui est source de nombreux bogues.
authselect a la faculté d'avoir des fichiers de configuration auto-générés et a un meilleur contrôle de ceux-ci, il limite en partie ces difficultés et rend ces opérations plus simples.
Ce changement implique donc que le fichier /etc/nsswitch.conf passe du paquet glibc à authselect, et que ce dernier devient une dépendance à de nombreux paquets de base du système comme pam ou glibc. Les paquets systemd, ecryptfs, nss-mdns et fingerprint ne prennent plus en charge la configuration sans authselect.
Cependant si un utilisateur souhaite totalement s'en passer, il faut utiliser la commande authselect opt-out ou supprimer le fichier /etc/authselect/authselect.conf.
Dans les logs de systemd, le nom du service concerné sera indiqué en plus de la description pour plus d'efficacité. Voyez plutôt :
Avant :
Started Journal Service. Finished Load Kernel Modules.
Après :
Started systemd-journald.service - Journal Service. Finished systemd-modules-load.service - Load Kernel Modules.
De manière plus précise, systemd gère ces lignes avec trois types de format différents : name, 'description et combined. Le premier est le nom de l'unité, le second est sa description (ce qui était la configuration par défaut avant) et le dernier est la combinaison des deux sous la forme <Name> - <Description> qui est donc la forme retenue.
Ce choix facilite l'identification de l'unité concernée et éventuellement le copier/coller pour des opérations ultérieures en ligne de commande.
Ajout d'un module Cockpit pour faciliter le partage de fichiers à travers Samba ou NFS. La configuration de ces systèmes de fichiers partagés à travers le réseau devient plus simple et graphique pour ceux qui le souhaitent. Il est disponible à travers le paquet cockpit-file-sharing.
NetworkManager ne fournit plus le support des configurations ifcfg. Ces fichiers qui résidaient dans les répertoires /etc/sysconfig/network-scripts/ifcfg-* étaient créés par l'ancien service network qui n'est plus fourni depuis Fedora... 25 ! Cependant NetworkManager gère bien plus de fonctionnalités que son illustre prédécesseur ce qui rendait difficile l'exploitation de ces fichiers configuration complexes car non prévus pour tous ces cas d'usage et le format est mal documenté. NetworkManager étant incapable de convertir d'un format à un autre sa configuration, cette situation est une importante source de bogues malgré les tests unitaires et de gros effort de maintenance. Fedora 33 a changé le format par défaut pour être keyfile, maintenant les utilisateurs utilisant l'ancien format devront refaire leur configuration.
Cela permet de supprimer quelques 130 000 lignes de code dans le projet NetworkManager.
ostree prend en charge les formats OCI/Docker pour le transport et le mécanisme de déploiement des conteneurs. La fonctionnalité est considérée comme expérimentale encore, les données ou interfaces sont encore susceptibles de changer. Cela permet de bénéficier des outils et de l'écosystème autour de ces technologies pour faciliter le déploiement des applications ou du système. Créer des versions dérivées du système de base devient aussi plus facile, tout en bénéficiant des avantages des delta entre les images pour économiser les ressources.
Pour y parvenir il a fallu faire en sorte que ostree puisse encapsuler ses commits comme des images OCI/Docker, et que rpm-ostree de son côté puisse utiliser ces images tout en conservant l'ensemble de ses fonctionnalités.
L'agent keylime pour établir et maintenir des systèmes distribués sécurisés est découpé en sous paquets pour plus de flexibilité. En effet pour les systèmes Cloud ou IoT, il est possible de n'installer que les composants nécessaires. De plus l'agent keylime a aussi une version alternative en Rust (au lieu de Python) installable via le paquet keylime-agent-rust au lieu de keylime pour la version en Python.
Ajout d'un nouvel outil remove-retired-packages pour supprimer les paquets qui ne sont plus proposés par la nouvelle version de Fedora et de fait qui ne seront plus jamais mis à jour. Cela permet de nettoyer le système de vieux paquets qui ne sont plus à jour, et d'éviter aussi qu'une mise à niveau de Fedora soit bloquée à cause de conflits de dépendances pour un paquet qui de fait n'existe plus.
Les programmes utilisant GnuTLS peuvent réactiver des algorithmes de sécurité au delà de ceux autorisés par la police de sécurité du système sans en altérer sa politique globale.
En effet, l'outil crypto-policies permet de configurer l'ensemble des algorithmes de sécurités autorisés par les outils de base du système ce qui permet une politique de sécurité cohérente. Cependant c'est trop rigide, si un utilisateur souhaite un algorithme interdit dans la politique choisi pour un seul programme, il doit changer la politique pour l'ensemble du système. Le résultat abaisse donc la sécurité globale pour un besoin très localisé.
L'objectif ici est de pouvoir modifier partiellement la politique de sécurité pour la bibliothèque GnuTLS sans affecter le reste du système. GnuTLS a été choisi en lien avec une demande par rapport à un VPN qui utilise cette bibliothèque, il se pourrait qu'un principe plus large soit mis en place plus tard.
Les systèmes basés sur rpm-ostree ont par défaut le répertoire /var monté depuis le sous-volume var si Btrfs est le système de fichier. Ainsi ce point de montage rejoint /home et / qui ont chacun aussi leur propre sous volume. L'objectif est de faciliter la création de clichés du système indépendamment de / qui contient aussi /etc et /usr qui doivent être en lecture seule dans ce contexte. La sauvegarde du système et sa restauration est ainsi plus simple, les volumes /home et /var contiennent l'ensemble des données personnalisées du système. Le reste peut facilement être restauré via ostree ou une réinstallation.
La base de données RPM est déplacée dans /usr/lib/sysimage/rpm, l'ancien chemin /var/lib/rpm devient un lien symbolique pointant vers la nouvelle destination. Cela permet d'unifier la localisation avec les systèmes basés sur rpm-ostree à savoir CoreOS, IoT, Silverblue, Kinoite, mais aussi OpenSUSE qui a déjà acté de ce changement.
Par ailleurs en lien avec le changement précédent, cela simplifie la gestion des clichés du système et des retours en arrière si nécessaire en cas d'une mise à jour ratée. Il est envisagé plus tard de permettre un système de retour en arrière automatique dans ce cas de figure, un peu comme proposé par rpm-ostree.
Le répertoire des dictionnaires hunspell migre de /usr/share/myspell/ vers /usr/share/hunspell/. La plupart des distributions ont déjà opéré ce changement depuis longtemps.
Le programme de recherche de fichiers locate est implémenté par plocate au lieu du vénérable mlocate. Il est en effet plus rapide tout en utilisant un peu moins d'espace disque grâce à l'usage des bibliothèques liburing et libzstd. mlocate sera totalement retiré pour Fedora 37 ou 38.
Pour les conteneurs, podman 4.0 est fourni. Cette version majeure bénéficie de la réécriture de la pile réseau pour utiliser le nouvel outil Netavark et Aardvark. Les performances réseaux sont améliorées, comme la prise en charge d'IPv6 ou d'être connecté à plusieurs réseaux différents. Les Pods peuvent partager plus de ressources comme les volumes, les périphériques, ou les configurations de sécurité et sysctl. Beaucoup d'autres changements sont ajoutés, de même que des corrections de bogues. Cette version a des incompatibilités nombreuses notamment en lien avec les changements liés au réseau, utiliser podman 4.0 puis une version antérieure peut générer des problèmes.
Le gestionnaire de base de données PostgreSQL est stocké dans sa 14e version. Les options CYCLE et SEARCH pour expressions des tables communes ont été implémentées. Les types représentant les intervalles peuvent avoir plusieurs intervalles, pour représenter des intervalles non continus. Les performances ont été améliorées pour les requêtes parallèles, les demandes hautement concurrentes, les tables partitionnées, etc. La bibliothèque libpq permet de mettre plusieurs requêtes successives dans un pipeline pour améliorer la bande passante des résultats. La mise à jour des index B-tree a été améliorée pour en réduire sa taille. De même l'opération VACUUM est moins agressive en évitant des nettoyages non essentiels.
La plateforme de configuration Ansible est configurée pour employer la version 5. Cette version introduit plus de flexibilité dans la collection d'outils fournie. Fedora en profite pour que l'installation du paquet ansible installe ansible-core qui est le moteur et quelques paquets supplémentaires pour fournir une partie des outils en plus par défaut. L'utilisateur peut installer ansible-core et les autres outils manuellement qu'il souhaite si le choix par défaut ne convient pas.
Le gestionnaire de stockage Stratis est géré dans sa 3e version. Son interface DBus a été revue en profondeur avec la suppression de la méthode FetchProperties pour obtenir les propriétés, des propriétés standards de DBus sont utilisées à la place. À la création d'un système de fichiers il devient enfin possible de configurer la taille logique de celui-ci.
OpenLDAP est mis à jour à la version 2.6.1. Cette version retire le backend nbd tandis que ceux en Perl ou SQL sont mis au placard avant une suppression future. Slapd autorise d'enregistrer les journaux d'erreur directement dans un fichier plutôt que de passer par syslog. Un répartiteur de charge interne fait son apparition pour améliorer les performances de l'infrastructure. L'authentification à multiples facteurs fait également son entrée.
La bibliothèque de sécurité OpenSSL évolue vers la version 3.0. Si l'ABI change en profondeur, l'API reste majoritairement inchangée. Outre la grande progression dans les tests automatiques et la documentation, l'un des grands changements est l'ajout du concept de Providers. L'idée est de facilement, pouvoir via la config ou du code, changer le fournisseur pour un algorithme cryptographique considéré. L'un des fournisseurs est par exemple le module FIPS qui est un standard américain et fourni une implémentation certifiée ce qui peut être utile dans certains contextes de développement. L'usage de l'API bas niveau génère des avertissements avant une suppression future, seule l'API de haut niveau pourra être employée par les applications.
Le paquet nscd pour le cache des noms de domaine est définitivement supprimé. Il n'évolue plus trop également, avec une grande dette technique et est remplacé par défaut par systemd-resolved et sssd depuis quelques temps.
Développement
Le vénérable autoconf est mis à jour à la version 2.71. Il est possible de renseigner un répertoire pour contenir des fichiers temporaires le temps des opérations via l'argument runstatedir. La compilation croisée est mieux prise en charge par les macros fournies. Parmi les incompatibilités, notons que les macros sont plus strictes à propos de l'usage des quotes. Il est découragé de configurer un compilateur C comme compilateur C++, plus tard le comportement sera strict à ce sujet à cause des incompatibilités grandissantes entre ces langages. D'ailleurs par défaut il cherchera la compatibilité avec les normes C11 et C++11.
Mise à jour de la chaine de compilation GNU avec GCC 12 et Glibc 2.35. Pour GCC, l'option d'optimisation -O2 active la vectorisation. Les normes OpenMP 5.0 et 5.1 sont mieux prises en charge. Il est d'ailleurs possible pour OpenACC de détecter des choix de parallélisme sous-optimaux avec l'option -Wopenacc-parallelism. La compatibilité avec le langage Ada 2022 s'est aussi améliorée avec plus d'optimisations dans le code généré. Côté famille C, la norme C2X fait ses débuts quand C++20 et C++23 progressent encore. Il peut générer des informations de débogage via les formats CTF ou BTF. Il est enfin possible d'initialiser la pile implicitement, avec notamment un motif défini avec l'option -ftrivial-auto-var-init=motif.
Pour Glibc, il prend en charge la norme d'encodage Unicode 14.0.0 et de la locale C.UTF-8.
La suite de compilateurs LLVM a quant à lui sa 14e collection d'hiver. L'architecture Armv9-A est pleinement prise en charge. Comme GCC 12, il débute la prise en charge de la norme C2X et de NVIDIA CUDA v11.5. La norme C++20 est également mieux gérée. Le format de débogage par défaut devient DWARFv5 au lieu de DWARFv4. Par défaut le compilateur va générer le code avec des adresses indépendantes via l'option -fPIE pour suivre le même chemin que GCC.
Le langage Go passe la 1.18e vitesse. Le principal changement est l'introduction de la programmation générique qui a été longuement attendue. Il fournit aussi un moteur de fuzzing pour générer des entrées pour tester le logiciel compilé et vérifier s'il se comporte normalement malgré des données imprévues. Les protocoles de sécurité TLS 1.1 et 1.0 sont désactivés côtés clients alors qu'un nouveau module net/netip fait son apparition pour corriger quelques défauts du type net.IP.
Pour Java, la JVM de référence OpenJDK passe de la version 11 à 17. Dans les changements, notons la disparition des compilateurs AOT et JIT expérimentaux alors que le ramasse miette à faible latence ZGC a été introduit. La génération des nombres pseudo aléatoires a été améliorée. La filtrage par motif fait son entrée comme fonctionnalité expérimentale quand l'API des Applet tirera bientôt sa révérence. Il est possible de définir des blocs de texte pour limiter le besoin de formatage des grandes chaînes de caractères dans le code. L'algorithme de sécurité EdDSA est également fourni.
Le langage Ruby bénéficie d'une monture à 3.1 carats. Un nouveau compilateur expérimental JIT entre dans la danse : YJIT, le compilateur JIT de référence MJIT n'améliorant pas assez les performances pour les applications réelles bien qu'un progrès ait été noté dans cette version. Le débogueur debug.gem est aussi de la partie qui est plus performant tandis que le gem error_highlight est fourni pour mettre en évidence les erreurs de compilations dans le code de manière similaire à ce qu'on peut retrouver dans l'écosystème C par exemple.
Tandis que sa boîte à outils web préférée Ruby on Rails arrive voie 7.0 en gare. La nouvelle bibliothèque Hotwire permet de réduire l'usage du couple JavaScript / JSON au profit du HTML pour écrire des applications. Avec Active Record il est possible de définir dans un modèle un attribut chiffré qui est transparent à l'utilisation. Enfin des actions du contrôleur peuvent s'exécuter en parallèle grâce à l'usage de Relation#load_async.
Alors que le Rubygem Cucumber 7.1.0 est proposé. La boîte à outils de tests pour le Behaviour Driven Development" bénéficie de nouveaux points d'ancrage InstallPlugin, BeforeAll et AfterAll. Fedora en a profité pour améliorer l'intégration des plugins dans le système.
Le langage PHP pèse dorénavant 8.1 tonnes. Cette version propose les énumérations et les propriétés en lecture seule. Il est possible d'obtenir des références pour n'importe quelle fonction ou de définir des intersections de types pour représenter plusieurs contraintes sur un type. Il défini le mot clé final pour bloquer l'héritage d'une méthode spécifique. Et le travail sur l'amélioration des performances s'est poursuivi.
La célèbre boîte à outils web en Python, Django, est recherchée dans sa version 4.0. Un système de cache a été introduit pour Redis avec RedisCach. Forms, Formsets et ErrorList sont pris en charge par le moteur de template pour personnaliser leur rendu. Le fuseau horaire par défaut est implémenté à partir de la fonction zoneinfo dans la bibliothèque standard de Python.
La suite d'outils Python python-setuptools est proposée à la version 58. Elle a supprimé la prise en charge de 2to3 pour faciliter le portage de Python 2 à 3 depuis la fin de support de Python 2 début 2020 ce qui rompt la compatibilité ascendante.
Les amateurs d'Haskell seront ravis d'apprendre l'existence de paquets sous la forme ghcX.Y pour installer plusieurs versions de leur compilateur préféré en parallèle depuis les dépôts. Cela simplifie le travail de développement et de tests sur plusieurs versions. Alors que la version par défaut via le paquet ghc est 8.10, il est possible d'installer les paquets ghc9.0 ou ghc9.2 (et dérivés) pour tirer profit de ces versions alternatives.
La bibliothèque d'interface de fonctions étrangères libffi saute de la version 3.1 à la version 3.4. Sa principale amélioration est la prise en charge des technologies Intel Control-flow Enforcement Technology ou ARM Pointer Authentication. Les architectures matérielles Power10 et RISC-V sont maintenant gérées.
La boîte à outils d'édition de vidéos MLT en est à son 7e film. Le système de compilation utilise uniquement CMake. L'emplacement des modules et des en-têtes a bougé ce qui rend cette version incompatible avec l'ancienne. De nombreux modules ont été supprimés comme GTK2 ou swfdec.
Les informations de débogage produites par la chaine de compilation MinGW résident dans le dossier /usr/lib/debug. Ce changement permet d'éviter que les fichiers de débogage générés finissent à côté du binaire et soient fournis par le paquet standard.
Projet Fedora
Ajout d'informations pour permettre l'obsolescence et la fin de vie des modules, ainsi la mise à jour du système avec des modules activés permettra de choisir le module le plus adapté pour poursuivre la mise à niveau s'il existe, ou pour entièrement le supprimer s'il est supprimé. En effet jusqu'ici DNF manquait d'informations concernant la mise à niveau des modules. Il est possible de changer le comportement par défaut via les options module_obsoletes et module_stream_switch de DNF.
La macro %set_build_flags est appelée automatiquement au début des phases %build, %check et %install. Cette macro exporte les variables CFLAGS, CXXFLAGS, FFLAGS, FCFLAGS, LDFLAGS, LT_SYS_LIBRARY_PATH, CC et CXX. Ces variables très importantes doivent être définies de manière uniformes lors de ces phases car certains projets peuvent compiler du code, en particulier les tests, en dehors de la compilation principale du logiciel. Cela permet que la compilation de l'ensemble du code d'un projet soit effectuée avec le même environnement. La fonctionnalité peut être désactivée avec la macro %undefine _auto_set_build_flags.
Les fichiers .la générés par autotools / libtool ne sont plus installés dans le buildroot. Ces fichiers sont des archives libtool, un format antédiluvien pour compenser l'absence du format de binaire ELF qui a ajouté de nombreuses informations supplémentaires. Mais beaucoup de projets basés sur autotools les génèrent et les installent par défaut ce qui n'est pas souhaité en réalité. Jusqu'ici le moyen de contournement était d'exécuter la commande find $RPM_BUILD_ROOT -name "*.la" -delete dans la procédure de génération du paquet. Avec ce changement cette opération n'est plus nécessaire et il ne devrait plus avoir ces fichiers dans les paquets par accident.
Tous les binaires ont leurs objets ELF annotés pour préciser le nom du paquet d'où ils proviennent pour faciliter le débogage. D'ailleurs systemd-coredump tire profit de cette information pour rapporter les bogues suite à un crash. Auparavant seulement un ID opaque était fourni selon le format .note.gnu.build-id mais il était sans signification pour l'utilisateur à moins de recourir à la commande dnf repoquery --whatprovides debuginfo(build-id) = …, et regarder la version du paquet dans la base de données RPM n'est pas toujours pertinente car une mise à jour a pu avoir eu lieu entre temps. L'information est contenue dans une nouvelle section .note.package du binaire ELF au format JSON.
Exemple :
$ objdump -s -j .note.package build/libhello.so build/libhello.so: file format elf64-x86-64 Contents of section .note.package: 02ec 04000000 63000000 7e1afeca 46444f00 ....c...~...FDO. 02fc 7b227479 7065223a 2272706d 222c226e {"type":"rpm","n 030c 616d6522 3a226865 6c6c6f22 2c227665 ame":"hello","ve 031c 7273696f 6e223a22 302d312e 66633335 rsion":"0-1.fc35 032c 2e783836 5f363422 2c226f73 43706522 .x86_64","osCpe" 033c 3a226370 653a2f6f 3a666564 6f726170 :"cpe:/o:fedorap 034c 726f6a65 63743a66 65646f72 613a3333 roject:fedora:33 035c 227d0000 "}..
Pour les systèmes Silverblue et Kinoite, un nouveau méta paquet kernel-devel-matched est fourni pour permettre la prise en charge de akmods pour la compilation de modules externes du noyau comme le pilote propriétaire de nVidia permettant de supprimer les paquets kernel-devel et glibc-devel de leur image de base et donc de gagner de la place. Ce nouveau paquet permet de faire la chaine de dépendance akmods ainsi : akmods -> akmod -> kernel-devel-matched -> kernel & kernel-devel.
En effet, comme ces variantes ont le système en lecture seule et que le noyau n'est pas forcément à jour, ce paquet permet de forcer l'installation du paquet de développement correspondant dans la même version du noyau. Ce qui permet la bonne compilation du pilote par la suite. Sans ce système, la dépendance va installer la dernière version de kernel-devel automatiquement ce qui ne colle pas forcément avec le noyau installé et rend ainsi l'opération impossible. Ou alors il fallait préciser la version du paquet de kernel-devel à installer ce qui complexifiait le processus.
L'installation des paquets en tant que dépendance faible ne se fait plus lors de la mise à jour du paquet ayant cette suggestion, cela n'est fait qu'à l'installation de ce dernier. Les dépendances faibles diffèrent des dépendances classiques par leur caractère facultatif. Si le paquet A dépend de B, l'installation de A installe B, et la suppression de B entraine la suppression de A. Si par contre le paquet A dépend faiblement de B, l'installation de A installe B mais la suppression de B n'entraine pas la suppression de A. Cela permet une certaine flexibilité si plusieurs paquets fournissent potentiellement le même service comme community-mysql et mariadb en fournissant une recommandation par défaut sans la forcer, ou d'avoir une installation minimale possible tout en offrant un système complet très facilement aussi.
Cependant de nombreuses dépendances faibles ne sont pas installées dans l'image par défaut pour des raisons de minimalisme et de sécurité. Mais à la première mise à jour du système elles étaient installées ce qui n'était pas le comportement souhaité. De même, si l'utilisateur a supprimé cette dépendance faible manuellement, le paquet supprimé pouvait revenir lors de la mise à jour d'un autre paquet.
L'option exclude_from_weak_autodetect=false peut être insérée dans le fichier /etc/dnf/dnf.conf pour restaurer le comportement précédent.
La communauté francophone
L'association
Borsalinux-fr est l'association qui gère la promotion de Fedora dans l'espace francophone. Nous constatons depuis quelques années une baisse progressive des membres à jour de cotisation et de volontaires pour prendre en main les activités dévolues à l'association.
Nous lançons donc un appel à nous rejoindre afin de nous aider.
L'association est en effet propriétaire du site officiel de la communauté francophone de Fedora, organise des évènements promotionnels comme les Rencontres Fedora régulièrement et participe à l'ensemble des évènements majeurs concernant le libre à travers la France principalement.
Si vous aimez Fedora, et que vous souhaitez que notre action perdure, vous pouvez :
- Adhérer à l'association : les cotisations nous aident à produire des goodies, à nous déplacer pour les évènements, à payer le matériel ;
- Participer sur le forum, les listes de diffusion, à la réfection de la documentation, représenter l'association sur différents évènements francophones ;
- Concevoir des goodies ;
- Organiser des évènements type Rencontres Fedora dans votre ville.
Nous serions ravis de vous accueillir et de vous aider dans vos démarches. Toute contribution, même minime, est appréciée.
Si vous souhaitez avoir un aperçu de notre activité, vous pouvez participer à nos réunions hebdomadaires chaque lundi soir à 20h30 (heure de Paris) sur IRC (canal #fedora-meeting-1 sur Libera).
La documentation
Depuis juin 2017, un grand travail de nettoyage a été entrepris sur la documentation francophone de Fedora, pour rattraper les 5 années de retard accumulées sur le sujet.
Le moins que l'on puisse dire, c'est que le travail abattu est important : près de 90 articles corrigés et remis au goût du jour. Un grand merci à Charles-Antoine Couret, Nicolas Berrehouc, Édouard Duliège, José Fournier et les autres contributeurs et relecteurs pour leurs contributions.
L'équipe se réunit tous les lundis soir après 21h (heure de Paris) sur IRC (canal #fedora-doc-fr sur Libera) pour faire progresser la documentation par un travail collaboratif. Le reste de la semaine cela se passe sur le forum. Pour plus de convivialité, nous avons mis en place également une réunion mensuelle le premier lundi du mois à la même heure en visio-conférence sur Jitsi.
Si vous avez des idées d'articles ou de corrections à effectuer, que vous avez une compétence technique à retransmettre, n'hésitez pas à participer.
Comment se procurer Fedora Linux 36 ?
Si vous avez déjà Fedora Linux 35 ou 34 sur votre machine, vous pouvez faire une mise à niveau vers Fedora Linux 36. Cela consiste en une grosse mise à jour, vos applications et données sont préservées.
Autrement, pas de panique, vous pouvez télécharger Fedora Linux avant de procéder à son installation. La procédure ne prend que quelques minutes.
Nous vous recommandons dans les deux cas de procéder à une sauvegarde de vos données au préalable.
De plus, pour éviter les mauvaises surprises, nous vous recommandons aussi de lire au préalable les bogues importants connus à ce jour pour Fedora Linux 36.