Vi siete mai chiesti all’interno di quello che è definito il Linux Hieracy Standard quale sia il significato delle varie directory? Fare un ripassino, prima di raccontare la notizia di oggi, torna molto utile, in particolare citando quella che dovrebbe essere la funzione delle varie directory che contengono i comandi che vengono utilizzati normalmente in tutte le distribuzioni Linux:
- /bin: comandi di sistema essenziali per l’utente non privilegiato (ls , grep , cat).
- /sbin: comandi di sistema essenziali, ma per l’utente root (fsck, mount, etc).
- /usr/bin/: comandi per tutti gli utenti.
- /usr/sbin/: comandi per l’utente root.
- /usr/local/bin: comandi per tutti gli utenti non forniti dal sistema operativo.
- /usr/local/sbin: comandi per l’utente root non forniti dal sistema operativo.
Ora, si fa in fretta a capire come questa struttura rischi di diventare in breve tempo un marasma difficilmente gestibile, sebbene ad oggi un tipico $PATH di un sistema Linux li contenga tutti. Se prendo ad esempio il mio laptop, che è Linux Mint 21.2 (quindi Ubuntu 22.04) ho:
Quindi la sequenza è esattamente invertita rispetto all’elenco presentato sopra, ma la sostanza non cambia: i path sono quelli e, almeno in teoria, dovrebbero far riferimento alle funzioni sopra illustrate. Nelle distribuzioni moderne è in corso da lungo tempo un processo di semplificazione almeno per quanto riguarda /bin e /sbin che sono rispettivamente dei link simbolici a /usr/bin e /usr/sbin, questo avviene in tutte le distribuzioni, da Debian ad AlmaLinux, fino a Fedora.
Chiarito lo stato attuale delle cose, arriviamo alla notizia che racconta della proposta per Fedora 40 di unificare /bin e /sbin quindi di compiere un passo ulteriore verso un’unificazione totale delle directory contenenti gli eseguibili di sistema.
La proposta viene riassunta così:
The /usr/sbin directory becomes a symlink to bin, which means paths like /usr/bin/foo and /usr/sbin/foo point to the same place. /bin and /sbin are already symlinks to /usr/bin and /usr/sbin, so effectively /bin/foo and /sbin/foo also point to the same place. /usr/sbin will be removed from the default $PATH.
La directory /usr/sbin diventa un symlink a bin, significa che path come /usr/bin/foo e /usr/sbin/foo punteranno alla stessa posizione. /bin and /sbin sono già symlink a /usr/bin e /usr/sbin, quindi effettivamente /bin/foo e /sbin/foo punteranno anch’essi alla stessa posizione. /usr/sbin verrà rimossa dal $PATH di default.La ragione del cambiamento risiede nella volontà di rendere Fedora il più compatibile con le altre distribuzioni (qualsiasi cosa voglia dire), e come ulteriore spiegazione viene posto questo esempio:
- Fedora ha /sbin/ip mentre Debian ha /bin/ip
- Fedora ha /bin/chmem e /bin/isosize, ma Debian ha /sbin/chmem e /sbin/isosize
- Fedora ha anche /sbin/{addpart,delpart,lnstat,nstat,partx,ping,rdma,resizepart,ss,udevadm,update-alternatives}, mentre Debian li ha in /bin, ecc.
- Fedora diventa più compatibile con Arch, che ha effettuato la stessa fusione qualche anno fa.
Quindi, chiaramente, avere tutto nella stessa directory permetterà una gestione certamente più semplice di tutto, con i symlink a garantire la retro-compatibilità. In termini di effort richiesto, anche se la modifica sembra qualcosa di estremamente minimale (è solo la creazione di un symlink del resto) in realtà ha diverse implicazioni, poiché coinvolge tutti i gestori di pacchetti e gli sviluppatori, poiché la nuova politica andrà adattata in tutti gli rpm che installeranno pacchetti nel sistema in modo che si riferiscano ai nuovi path.
Una cosa è certa: Fedora 40, dopo quanto abbiamo raccontato su Wayland, potrebbe presentare ancor più sorprese del previsto, sempre che la proposta di cui abbiamo raccontato venga accettata.
Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.