Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 46

Discussione: Parliamo di FHS

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    796

    Parliamo di FHS

    Premessa: questo e` un thread (ispirato da qui.. Andrea, non ce l'ho fatta, alla fine ho ceduto :/ ) dove si evidenziano dei limiti del sistema, se vuoi farti venire un fegato cosi` e` il posto giusto

    Ma se proprio devi flammare, fallo argomentando ; )


    Ordunque, partiamo da qui. Che roba e`? E` la Filesystem Hierarchy Standard, un documento che descrive dei dettami per la struttura dell'albero delle directory in un sistema *nix, seguito abbastanza con rigore da Linux. Oggi la FHS e` arrivata alla release 2.3, che sommariamente descrive un albero di questo tipo:

    codice:
    /bin
    /boot
    /dev
    /etc
    /home
    /lib
    /media
    /mnt
    /opt
    /proc
    /root
    /sbin
    /srv
    /tmp
    /usr
    /var
    Di tale albero, due directory si ramificano in:

    codice:
    /usr/X11R6
    /usr/bin
    /usr/include
    /usr/lib
    /usr/local 
    /usr/local/share
    /usr/sbin
    /usr/share
    /usr/src
    e

    codice:
    /var/account
    /var/cache
    /var/cache/fonts
    /var/cache/man
    /var/crash
    /var/games
    /var/lib
    /var/lock
    /var/log
    /var/mail
    /var/opt
    /var/run
    /var/spool
    /var/tmp
    /var/yp
    Lo scopo di ogni directory e` indicato dettagliatamente nel link.

    A che serve tutto cio`? Principalmente a far si` che un programma progettato per essere installato su un sistema *nix possa distribuirsi nel filesystem allo stesso modo su _tutte_ le versioni che rispettano tale struttura e si aspetti di trovare quanto gli serve sempre _negli stessi posti_.

    Ma c'e` un problema: questa struttura e` paurosamente obsoleta.

    Facciamo un po' di storia e torniamo indietro di quasi quarant'anni. E' il 1969 e ai laboratori Bell ci sono due tizi, tali Dennis Ritchie e Ken Thompson, che insieme ad altri simpatici smanettoni tirano fuori un sistema operativo della madonna progettato per l'allora fantascientifico PDP-7. I punti fermi della progettazione erano:

    - sistema portabile (in grado di girare su piu` architetture)
    - multitasking (in grado di eseguire piu` processi contemporaneamente)
    - multiutente (in grado di eseguire processi di piu` utenti diversi contemporaneamente)
    - sicuro (in grado di proteggere gli elementi di un utente da accessi indesiderati)
    - stabile (in grado di proteggere se` stesso da eventi indesiderati)
    - riparabile (in grado di essere recuperabile agevolmente da un crash)
    - dotato di filesystem gerarchico

    Riguardo all'ultimo punto, che significava? Col termine si indicano due cose:

    - lo hierarchical filesystem introdotto da apple nell'85, che non e` di nostro interesse
    - la struttura gerarchica degli elementi del filesystem cosi` come appaiono nel livello di astrazione immediatamente superiore al fs. In soldoni, la struttura ad albero delle directory.

    In altre parole, indica che ogni elemento del filesystem tranne / deve essere raggiunto tramite l'elemento precedente. Niente di strano, e` una struttura che siamo abituati a vedere piu` o meno in ogni os. Oggi la diamo per scontata, ma tocca tener presente che esistono os dove questa struttura nemmeno esiste, o addirittura os dove nemmeno esiste un filesystem.

    Nelle menti di R., T. & company nasce subito un problemino: come caspita la organizziamo 'sta struttura, fermi restando i punti precedenti? Intanto prendiamo spunto da multics, poi qualcosa ci inventiamo. Et voila`:

    codice:
    /bin
    /dev
    /etc
    /lib
    /tmp
    unix
    /usr
    Beh, tutto qui? Eh gia`. Per una struttura cosi` come la conosciamo oggi ci vorra` ancora molto, molto tempo.

    bin: binaries, i comandi di sistema.
    dev: devices, i device file.
    etc: et cetera (tutto il resto), la config di sistema, il database delle password utente, i comandi riservati all'amministratore e tutto cio` che non trovava gia` una giusta collocazione nelle altre directory. Era una bolgia infernale fatta directory.
    lib: libraries, le librerie di sistema.
    tmp: temporary, i file temporanei.
    unix: il kernel! (una decina di K)
    usr: le directory utente erano qui (indovinate perche` si chiamava usr?), incluse due directory source (piu` avanti src) e include per i sorgenti.

    Perche` questa organizzazione? Per essere a prova di crash. Ogni cosa era montata su un filesystem separato, in modo che se si schiantava / si poteva comunque avere accesso a un sistema minimale da cui agire per il recovery. Non esisteva nemmeno il concetto di "avvio da floppy e monto / su un punto di mount creato al volo".

    Da UnixV5 in poi inizia il caos.

    Mano a mano che il sistema si ingrandisce e l'hardware si evolve nascono esigenze nuove: bisogna separare i comandi di sistema dai comandi riservati all'utente, ci vuole un posto per i file di log, uno per montare i filesystem temporanei, bisogna dar modo agli utenti di accedere alle proprie librerie ma non a quelle di sistema, ci vuole un posto per i file recuperati dopo un crash, i file dell'utente root devono stare totalmente separati dal resto, eccetera. Nascono nuove versioni di Unix, ognuna con la sua struttura. Questo era un Minix nell'84:

    codice:
    /bin
    boot
    /dev
    /etc
    /minix
    /mnt
    /root
    /tmp
    /usr
    Questo uno Xenix nell'89:

    codice:
    /bin
    /dev
    /etc
    /tmp
    unix
    /usr
    Questa la prima pre-alpha di Debian nel '93:

    codice:
    /bin
    /boot
    /dev
    /etc
    /home
    /lib
    /lost+found
    /mnt
    /proc
    /root
    /sbin
    /tmp
    /usr
    /var
    vmlinuz
    A meta` anni '90 si decide di mettere ordine nel caos. Nasce la FHS, una serie di linee guida per l'organizzazione delle directory, con cui si cerca di riorganizzare il tutto con due obiettivi principali:

    - retrocompatibilita`
    - estensione

    Il primo punto e` di immediata comprensione: ogni struttura deve essere pienamente retrocompatibile con quelle esistenti, in modo da poter sfruttare agevolmente i vecchi programmi sulle strutture attuali. Il secondo e` l'esatto opposto e riguarda le strutture future, che dovranno essere adeguate ai programmi esistenti. Una prima versione imponeva che _al minimo_ un sistema fhs compliant dovesse contenere:

    codice:
    /bin
    /boot
    /dev
    /etc
    /lib
    /mnt
    /proc
    /sbin
    /tmp
    /root e /home, ad esempio, erano opzionali. Col tempo sono proliferate una marea di distribuzioni, ed ognuna ha interpretato la fhs a modo suo, a volte aggiungendo e a volte togliendo elementi dalla fhs.

    Ecco come appare una debian oggi:

    codice:
    /bin
    /boot
    /dev
    /etc
    /home
    /initrd
    /lib
    /lost+found
    /media
    /mnt
    /opt
    /proc
    /root
    /sbin
    /srv
    /sys
    /tmp
    /usr
    /var
    Qual e` il problema di una simile struttura? Che _non serve piu` a niente_. E` dispersiva, confusionaria e inutilmente complicata.

    /root, /bin, /sbin e /lib non hanno piu` bisogno di essere nella root directory da almeno una ventina d'anni. Se lo scopo era la separazione su piu` filesystem in modo da risolvere agevolmente un disaster event tramite un sistema minimale, oggi dove sta la difficolta` nell'avviare un sistema da floppy o da cd? Utilita` attuale: zero.

    Allo stesso modo la distinzione fra /bin, /sbin, /usr/bin e /usr/sbin non ha piu` alcun senso: per decidere chi puo` fare cosa esistono i permessi sui file.

    Condividere le librerie per risparmiare spazio su disco? Con in commercio hd da 500Gb e con programmi che funzionano solo con una data versione della libreria e con quella successiva non si sa? Col versioning system si risolve anche il problema del ridondante caricamento in ram.

    A che pro disperdere un programma nell'intera struttura solo perche` certi programmi si aspettano di trovare certi file sempre negli stessi posti? Ma qui ci viene in aiuto il sistema di packaging, tipico di ogni distribuzione Linux: peccato che non fosse mai stato previsto niente di simile, il sistema di packaging stesso e` semplicemente una toppa a una struttura che per la sua stessa esistenza comporta che sia necessario un aiuto dal sistema per sapere cosa viene installato dove.

    C'e` chi a tutto questo sta provando a dire basta. Si tratta del mantainer di Gobolinux, una distribuzione che prevede una riorganizzazione totale e moderna dell'albero delle directory:

    Depot
    Files
    Programs
    System
    Users

    Semplice, ordinato, pulito. Se non fosse che per questioni di retrocompatibilita` coi programmi esistenti significherebbe un nuovo caos. A questo proposito Mac Os X ha tanto, ma veramente tanto da insegnare.

    Questo e` quanto. Stiamo usando un sistema con una struttura obsoleta, siamo onesti e prendiamone atto. Oppure preparate qualche cassetta di pomodori mentre il sottoscritto va a farsi una birra

  2. #2
    Io ne ho "preso atto" da quando ho installato per la prima volta una distro... una Mandrake 7.qualcosa mi pare :master:

    venendo dal mondo DOS e Windows sono rimasto sconcertato dal fatto di "essere costretto" a mettere tale file in tale cartella... con win installi dove ti pare più o meno

    io sarei per semplificare ulteriormente comunque...
    alla fine a noi interessa differenziare i file eseguibili (le applicazioni) dai documenti... il resto chissenefrega


    poi però dopo voglio anche un solo sistema per pacchettizzare eh

  3. #3
    Moderatore di Linux e software L'avatar di francofait
    Registrato dal
    Aug 2001
    Messaggi
    13,559
    Ottima esposizione dAb altro che bonanno , stai dando vita a discussioni di elevato interesse come non si vedevano più da lungo tempo.
    Come problema quello della struttura obsoleta non è esclusivo di linux , è frequente oggetto di regolari discussioni anche per quanto riguarda i SO di microsoft e non solo, che ad eccesso di ramificazioni della loro struttura non si può certo dire che stiano meglio. Purtroppo quando si arriva al sodo con nuovi progetti , in entrambe i casi arriva a rompere le uova nel paniere , la necessità più o meno presunta e più o meno reale nello stesso tempo di mantenere a tutti i costi la miglior possibile retrocompatibilità.
    È di fatto constatato che se non sarà trovato il coraggio di rompere continueremo anche in futuro ad usare SO nuovi obsoleti, comunque si chiamino ; mal comune mezzo gaudio ammesso possa consolare.
    Di certo x linux , essendo ben lontano dalla diffusione dei prodotti microsoft ,chans x una possibile rottura , sull' esempio di ciò che sta tentando di fare Gobolinux non mancano e quantomeno risulterebbe senz'altro meno traumatica di quanto potrebbe esserlo x microsoft fin dall' inizio.
    Senz'altro un errore il tempo che si stà perdendo.

  4. #4
    molto interessante, specie la parte storica.

    Comunque, una armonizzazione è necessaria, ma non vedo la necessità di pensare a stravolgere tutto senza un minimo di continuità.

  5. #5
    Ecco, vaglielo a spiegare a quelli di GoboLinux e ai tizi della Linux Standard Base .
    NeapoliX GNU/Linux
    "Alla maggior parte della gente piace leggere la propria scrittura e annusare l'odore dei propri peti." (Auden)

  6. #6

    Re: Parliamo di FHS

    Originariamente inviato da dAb
    A questo proposito Mac Os X ha tanto, ma veramente tanto da insegnare.
    Postalo

  7. #7
    Utente di HTML.it L'avatar di eddis
    Registrato dal
    Sep 2002
    Messaggi
    662
    Originariamente inviato da francofait
    Ottima esposizione dAb altro che bonanno
    Mi associo
    edo

    I think the future will be different (and better) Patrick J. Volkerding
    Slackware

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    796
    Marco ha detto il termine giusto: continuita`. Il problema di fondo e` proprio riuscire a rinnovare la struttura permettendo contemporaneamente una piena compatibilita` coi programmi esistenti, e tale migrazione sara` un processo lungo, laborioso, delicato e che difficilmente trovera` molti consensi.

    A parer mio il maggior problema e` infatti convincere l'intera comunita` di sviluppatori a lavorare su una struttura completamente nuova. Basta guardarsi un po' in giro per accorgersi che un'innovazione da questo punto di vista non e` bene accolta, alla maggior parte della comunita` [sviluppatori e non] la struttura va bene cosi` com'e`, e non ne vuole sapere di cambiare. A questo proposito mi sono stupito positivamente nel non aver ricevuto pomodori, vi facevo meno elastici e di questo mi scuso, vi ho giudicati male

    Ci vorrebbe un po' di sensibilizzazione in questo senso, cosa che puo` portare buoni risultati solo se si mostra al mondo che la migrazione e` possibile: un esempio concreto e` la citata Gobo, l'altro ben piu` affermato, e qui rispondo ad Andrea, e` rappresentato da Mac Os X. La struttura di Gobolinux in realta` non ha nulla di diverso rispetto alla standard fhs, semplicemente il tutto viene raccolto e riorganizzato tramite una caterva di symlink in una struttura totalmente nuova come quella che ho elencato nel post precedente. In sostanza viene offerto un livello di astrazione in piu`: nello strato sottostante abbiamo la classica struttura fhs, in quello visibile all'utente abbiamo quella nuova. Il risultato e` che i vecchi programmi continuano a funzionare regolarmente, e quelli futuri possono gia` appoggiarsi alla nuova struttura.

    Mac Os X Tiger ha esasperato il concetto portandolo al limite: _tutto_ quel che riguarda un programma [eseguibili, librerie, file di config, ecc.] e` posto in un'_unica_ directory, tanto che installare/disinstallare un programma e` pura questione di spostare la sua intera directory da li` a la`. L'utente vede un'unica directory apps, ma nello strato sottostante batte ancora un cuore stile bsd. L'idea di fondo e` quella di permettere l'avvio delle applicazioni esistenti e contemporaneamente poter sviluppare quelle nuove sulla nuova struttura fino al giorno in cui l'originale fhs non esistera` piu`, e sta funzionando alla grande.

  9. #9
    Originariamente inviato da dAb
    Mac Os X Tiger ha esasperato il concetto portandolo al limite: _tutto_ quel che riguarda un programma [eseguibili, librerie, file di config, ecc.] e` posto in un'_unica_ directory, tanto che installare/disinstallare un programma e` pura questione di spostare la sua intera directory da li` a la`. L'utente vede un'unica directory apps, ma nello strato sottostante batte ancora un cuore stile bsd. L'idea di fondo e` quella di permettere l'avvio delle applicazioni esistenti e contemporaneamente poter sviluppare quelle nuove sulla nuova struttura fino al giorno in cui l'originale fhs non esistera` piu`, e sta funzionando alla grande.
    lo so
    mi domandavo se conoscevi la "struttura delle cartelle" tipo quelle che hai postato all'inizio

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    796
    A memoria non la ricordo, i macachi li uso poco

    /Application, /Application/Utilities, /Users e non mi ricordo che altro, domani vedo. Comunque basta chiedere a quel traditore di Chemako

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.