News - Logiciels Libres

Fedora 40 va fusionner /usr/sbin et /usr/bin

| | Logiciels Libres | 2 Commentaires | 2613
Fedora 40 va fusionner /usr/sbin et /usr/bin
Bonjour à tous,

Dans un précédent article, nous avions abordé l'arrivée dans Fedora de VLC ( https://www.linuxtricks.fr/news/10-logiciels-libres/538-fedora-vlc-arrive-dans-les-depots-officiels-mais/ ). J'ai eu d'excellents retours sur cet article et la vidéo associée, et vous avez été nombreux à me redemander du contenu d'actualité comme celui-ci.

C'est pourquoi, j'aborde avec vous ici un des changement annoncé de Fedora 40, qui pourra entrainer un changement similaire prochainement sur d'autres distributions Linux telles que Debian par exemple : la fusion de /usr/sbin et /usr/bin.

Pour rappel, voici un extrait de l'article détaillé https://www.linuxtricks.fr/wiki/arborescence-du-systeme-linux :
Arborescence du système Linux - Linuxtricks :

/bin (binaries) => Exécutables essentiels au système, utilisables par tous les utilisateurs (ls pwd cp)
/sbin (super binaries) => Contient les programmes système essentiels utilisables par l'admin uniquement.

/usr/bin => contient des exécutables et des commandes utilisées par les utilisateurs du système.
/usr/sbin => contient des exécutables et des commandes utilisées par l'admin système


Il y a quelques années déjà, la plupart des distributions ont déplacé le contenu de /bin dans /usr/bin et le contenu de /sbin dans /usr/sbin
Cette opération (appellée usr-merge) a simplifié l'arborescence du système. Historiquement, /usr pouvait être une partition séparée, et donc on retrouvait directement dans /bin et /sbin des programmes pour les utilisateurs et l'administrateur permettant d'utiliser le système de base et de monter les partitions (cat, cp, ip, ls, pwd, ... fdisk, fsck, init*, iptables**, lvm, mkfs, mount, resize2fs,)
* init est remplacé par systemd maintenant pour la gestion de l'initialisation
** iptables est remplacé par nftables pour contrôler netfilter.

Une des raisons de cette simplification se retrouve à nouveau dans cette deuxième étape, et nous alons détailler cela ensemble.

Alors, vous allez me dire que cette simplification peut sembler mineure, mais elle a des implications très intéressantes, aussi bien pour les développeurs que pour les utilisateurs.

La distinction entre /usr/bin (programmes essentiels exécutables par l'utilisateur) et /usr/sbin (outils d'administration du système nécessitant généralement les privilèges de l'administrateur) avait du sens à l'époque quand les binaires liés statiquement étaient la norme. Je ne m'étends pas sur ce sujet qui peut être complexe, mais ce qu'il faut comprendre, c'est que les systèmes Linux ont maintenant évolué et disposent de bibliothèques liées dynamiquement. Par conséquent, les cette séparation n'est plus utile.

Les binaires contenus dans /usr/bin et /usr/sbin sont installés par les paquets fournis par la distribution Linux. Les binaires installés manuellement le seront généralement dans /usr/local/bin ou éventuellement dans /opt/nom_de_l_application. Il est donc facile de gérer un éventuel doublon, c'est à dire un programme portant le même nom dans /usr/bin et /usr/sbin.

Concrètement, ce qui va se passer lors de la migration sera la chose suivante :
1- Déplacement des binaires de /usr/sbin dans /usr/bin
2- Suppression de /usr/sbin (alors vide)
3- Création d'un lien symbolique de /usr/sbin vers /usr/bin

Ce lien symbolique permettra de garder la compatibilité avec des scripts que vous aviez écrits (ou livrés par des éditeurs) qui appelleraient un programme de la forme suivante :
Code BASH :
/usr/sbin/monprogramme


Tout comme on voit encore des scripts BASH avec le shebang suivant :
Code BASH :
#! /bin/bash


Cela fonctionne encore même si bash est dans /usr/bin car le lien symbolique de /bin pointe dans /usr/bin

Vous pouvez d'ailleurs voir le vrai chemin de la commande avec :
Code BASH :
readlink -f /bin/bash


Cette fusion va offrir de nombreux avantages :
1- Pour les packageurs : Les développeurs de la distribution, qui vous mettent à disposition les paquets pour toutes vos applications n'auront plus à hésiter pour placer le binaire dans /usr/bin ou /usr/sbin. De plus cela va permettre d'harmoniser entre toutes les distributions Linux l'emplacement des exécutables.
Certaines commandes sont accessibles par l'administrateur et par l'utilisateur comme la commande ip. Elle permet d'afficher la configuration IP, les routes (usage utilisateur) mais permet également de définir une adresse IP, modifier une route (usage administrateur). Alors où placer ce binaire ?
A l'heure actuelle, sous Debian le chemin complet est /usr/bin/ip là où dans les Red Hat like, le chemin est /usr/sbin/ip
2- Pour les utilisateurs : Les utilisateurs n'auront plus à chercher où se trouve la commande. Plus de problème de commande qui n'est pas dans le $PATH de l'utilisateur l'obligeant à créer un alias ou faire un lien symbolique dans /usr/bin (ce qui est moche).
3- Amélioration de l'expérience : Une structure de répertoire plus propre permet de simplifier la compréhension du système, et surtout d'améliorer les dépannages en cas de mode dégradé. L'analyse des journaux peut aussi devenir moins fastidieuse.
4- Amélioration des performances : Les programmes lancés ou outils de débugage auront moins de vérifications de répertoires à faire, ce qui peut légèrement améliorer la réactivité du système, mais ça ne sera pas foufou, on est d'accord.


Ce changement est en cours de discussion mais si il est approuvé, cela sera effectif pour Fedora 40.
Dans le cas de Fedora, les infrastructures qui rebuild les paquets, et les macros installant les binaires dans /usr/sbin (%_sbindir) seront mis à jour automatiquement lors du Mass Rebuild.

Certains paquets qui contiennent des binaires dans /usr/bin et /usr/sbin ont été identifiés et seront modifiés en conséquence. C'est le cas de hddtemp :

Code BASH :
rpm -ql hddtemp-0.3-0.54.beta15.fc39.x86_64

Code TEXT :
/usr/bin/hddtemp
...
/usr/sbin/hddtemp


Le travail sur ces paquets identifiés est en cours pour les adapter et ne causer aucune régrassion.

Après cet état des lieux, je vous donne mon avis. Il va être très court : je trouve que c'est en effet une excellente chose, pour une fois qu'on silmplifie les choses, autant en profiter !
Et vous qu'en pensez-vous ?
Pensez-vous aussi que les autres distributions doivent adopter cette simplification ?