[Linuxtrent] sono incappato in GoboLinux ... mi pare una buona idea!

  • From: "Marco Ciampa" <ciampix@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Sun, 24 Aug 2008 19:52:09 +0200

Mi pare mooolto intelligente!

http://www.gobolinux.org/

http://www.gobolinux.org/index.php?page=at_a_glance

GoboLinux in breve
Cos'è GoboLinux?

GoboLinux è una distribuzione Linux modulare che organizza il sistema in
maniera nuova, più logica e intuitiva. Anziché essere sparse tra /usr/bin,
/etc o /usr/share/ancora/un/altro, le componenti di un programma sono
installate ciascuna nella propria cartella, mantenendole nettamente separate
/e permettendoti di sapere facilmente quali programmi sono installati e a
quale programma appartengono determinati file.

Questo è quello che puoi vedere dalla root di un sistema GoboLinux:

~] cd /
/] ls
Programs
Users
System
Files
Mount
Depot

In /Programs risiedono tutti i programmi. Non ci sono eccezioni. Puoi
controllare cosa hai installato guardando il suo contenuto:

/] cd /Programs
/Programs] ls

AfterStep     E2FSProgs    Htop        NTP          Subversion
ALSA-Driver   Ed           HTTPD       OpenOffice   Sudo
ALSA-Lib      Eject        Hydrogen    OpenSSH      Swfdec
ALSA-OSS      Elinks       IBM-Java2   OpenSSL      Synaptics
ALSA-Utils    Ethereal     ID3Lib      Pango        SysFSUtils
Ardour        Expat        IEEE80211   Patch        Sysklogd
Audacity      File         IMLib2      Perl         TCL
Aumix         Firefox      InetUtils   Pkgconfig    TeTeX
Autoconf      Flac         Intltool    PodXTPro     Texinfo
Automake      Flex         IpodSlave   Popt         TIFF
Bash          Fontconfig   Iptables    PPP          TiMidity++

...           ...          ...         ...          ...

Ogni cartella contiene tutti i file di un determinato programma, memorizzati
in una sottocartella etichettata per numero di versione.

/Programs] find Bash
Bash
Bash/3.0
Bash/3.0/bin
Bash/3.0/bin/sh
Bash/3.0/bin/bash
Bash/3.0/bin/bashbug
Bash/3.0/info
Bash/3.0/info/bash.info
Bash/3.0/man
Bash/3.0/man/man1
Bash/3.0/man/man1/bash.1
...

Più versioni dello stesso programma possono essere installate
simultaneamente, così da poterle alternare a piacimento o usarle tutte
contemporaneamente se necessario.

/Programs] ls -l OpenOffice
total 8
drwxr-xr-x  9 root root 4096 2005-09-22 01:07 1.1.4
drwxr-xr-x  3 root root 4096 2005-09-23 04:36 2.0
lrwxrwxrwx  1 root root    5 2005-09-23 04:36 Current -> 2.0

/Programs] ls -l GTK+
total 12
drwxr-xr-x  10 root root 4096 2005-10-02 01:39 1.2.10
drwxr-xr-x   9 root root 4096 2005-08-21 05:48 2.6.7
lrwxrwxrwx   1 root root    6 2005-10-02 01:39 Current -> 2.6.7
drwxr-xr-x   4 root root 4096 2005-10-02 01:39 Settings

Com'è possibile tutto questo?
Il filesystem non viene usato solo per memorizzare in maniera ordinata i
programmi, ma anche per indicizzare i file per categoria in maniera tale che
il sistema possa trovare quelli necessari senza dover cercare tra centinaia
di programmi. In GoboLinux tutto ciò viene realizzato mediante una serie di
cartelle contenenti dei collegamenti simbolici, i quali puntano ai file veri
e propri. In questo modo puoi anche capire facilmente "a quale pacchetto
appartiene il file XYZ".

/System/Links/Libraries] ls -l | cut -b 49-
...
libgtk-1.2.so.0 -> /Programs/GTK+/1.2.10/lib/libgtk-1.2.so.0.9.1
libgtk-1.2.so.0.9.1 -> /Programs/GTK+/1.2.10/lib/libgtk-1.2.so.0.9.1
libgtk.a -> /Programs/GTK+/1.2.10/lib/libgtk.a
libgtk.la -> /Programs/GTK+/1.2.10/lib/libgtk.la
libgtk.so -> /Programs/GTK+/1.2.10/lib/libgtk-1.2.so.0.9.1
libgtk-x11-2.0.la -> /Programs/GTK+/2.6.7/lib/libgtk-x11-2.0.la
libgtk-x11-2.0.so -> /Programs/GTK+/2.6.7/lib/libgtk-x11-2.0.so.0.600.7
libgtk-x11-2.0.so.0 -> /Programs/GTK+/2.6.7/lib/libgtk-x11-2.0.so.0.600.7
libhfs.a -> /Programs/CDRTools/2.01/lib/libhfs.a
libhistory.a -> /Programs/Readline/5.0/lib/libhistory.a
libhistory.so -> /Programs/Readline/5.0/lib/libhistory.so.5.0
libhistory.so.5 -> /Programs/Readline/5.0/lib/libhistory.so.5.0
...

Il sistema è quindi configurato in modo da usare questi indici per la
ricerca di file:

~] cat /etc/ld.so.conf
/System/Links/Libraries

~] echo $PATH
/System/Links/Executables

...

Troverai indici per tutte le principali categorie di file nel sistema:
eseguibili, librerie, headers, dati condivisi, manuali e così via.
L'indicizzazione è ricorsiva, in questo modo se un gruppo di programmi
condivide la medesima cartella per memorizzare un certo tipo di file, ogni
programma otterrà i propri indici automaticamente. Ovvero, una nuova
cartella sarà creata in /System/Links/Shared, e questa conterrà dei
collegamenti simbolici alle cartelle condivise appartenenti ai singoli
programmi (un esempio è /System/Links/Shared/aclocal, contenente i file
relativi alla cartella aclocal di ogni programma che ne fa uso).

Un'altra importante proprietà che deriva dall'indicizzazione tramite
collegamenti simbolici è che i riferimenti a file non esistenti divengono
automaticamente collegamenti non validi, quindi inattivi. Questo rende
semplice l'individuazione e la risoluzione di problemi e, cosa più
importante, assicura che l'indice corrisponda sempre all'attuale stato
funzionante del sistema. Di' pure addio al vecchio problema del gestore di
pacchetti che si lamenta perché la libreria libXYZ non risulta installata
anche se il file è presente. Se il collegamento è valido il file esiste nel
sistema, e viceversa.
E la compatibilità Unix?

La struttura di GoboLinux sembra distaccarsi molto dalla tradizione Unix.
Questo significa forse che tutti i programmi devono essere corretti per
adattarsi alla nuova struttura? Fortunatamente, la risposta è no. Attraverso
una corrispondenza tra i percorsi tradizionali e le loro controparti in
Gobolinux, possiamo mantenere la compatibilità con Unix in maniera del tutto
trasparente.

~] ls -l /dev/null | cut -b 45-
/dev/null

~] ls -l /bin/sh | cut -b 45-
sh -> /Programs/Bash/3.0/bin/bash

~] ls -l /usr/include/stdio.h | cut -b 45-
stdio.h -> /Programs/Glibc/2.3.6/include/stdio.h

Nulla di particolarmente difficile: /bin è un collegamento a
/System/Links/Executables. E lo stesso vale per /usr/bin. E per /usr/sbin...
tutte le directory "binarie" puntano nello stesso luogo. Ironicamente,
/questo ci rende addirittura più compatibili di alcune distribuzioni
classiche. In GoboLinux, i percorsi standard funzionano per qualsiasi file,
/mentre altre distribuzioni potrebbero dover far i conti con incompatibilità
come il malfunzionamento di alcuni script qualora questi facciano
/riferimento a /usr/bin/foo mentre il file risiede in realtà in
/usr/local/bin/foo.

Potresti aver notato dal primissimo esempio che i percorsi standard Unix non
sono visibili nella root di sistema. In realtà ci sono, ma sono nascosti
alla vista usando l'estensione del kernel GoboHide. Questo è tuttavia un
vezzo puramente estetico e del tutto opzionale: GoboLinux non necessita di
alcuna modifica al kernel od a qualsiasi altro componente di sistema. Ma i
nostri utenti sembrano gradire molto questa possibilità :-)
Ancora!

Un tour online può accompagnarti solo fin qui. Non esiste niente di meglio
che "toccare con mano": GoboLinux è convenientemente distribuita come Live
CD, permettendoti di esplorare i pro e i contro del sistema eseguendolo
direttamente da CD, anche prima di installarlo sul tuo pc. Scarica
l'immagine cd e divertiti -- se sei un nuovo arrivato, troverai
probabilmente la nuova struttura più confortevole; se invece sei un utente
navigato, gradirai certamente il maggior controllo che un sistema più
modulare e trasparente può offrirti.
        
bye

-- 

Marco Ciampa

+--------------------+
| Linux User  #78271 |
| FSFE fellow   #364 |
+--------------------+
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: