2011-01-18

Link in unix/linux - 4 - utilizzi

Nei post precedenti ho descritto i link nelle piattaforme unix-like poi ho distinto i link tra fisici e simbolici ed ho riportato le differenze tra i due tipi.
Ora passiamo a descrivere qualche utilizzo dei link.

  • Supponiamo di dover mettere a disposizione un file di grosse dimensioni ad alcuni utenti che accedono al nostro server via FTP e non vogliamo sprecare prezioso spazio su disco impegnandolo con più copie dello stesso file, una volta scaricato l'utente avrà cura di cancellarlo dalla sua home directory. Ci vengono in aiuto i link fisici, la soluzione può essere quella di creare un link fisico tra il file originale ed un suo riferimento nella home directory di ogni utente che deve poterlo scaricare, la condizione è che il file originale ed i suoi "alter-ego" devono risiedere nello stesso file system. Se il file originale non dovesse più servire lo si può cancellare in questo caso lo spazio su disco rimarrà impegnato dal file di grandi dimensioni solo fino al momento in cui l'ultimo utente l'avrà scaricato e cancellato. Va fatta attenzione a non modificare il file originale altrimenti si modificherebbero anche tutti quelli destinati agli utenti, sempre che non sia questo che desiderate.
  • Un altro utilizzo molto diffuso è quello che ho già accennato parlando dei link simbolici tra le librerie condivise.
    Se provate ad eseguire il comando
    ls -l /lib
    oppure
    ls -l /usr/lib
    noterete che nel vostro sistema sono presenti tantissime librerie condivise ma guardando meglio l'output dei suddetti comandi si noterà che una larga parte di quelle elencate sono dei link simbolici, questo metodo permette di mantenere su disco un'unica copia di una libreria condivisa ma di renderla disponibile per tutti i programmi che ne richiedono l'utilizzo per una qualsiasi versione di cui è mantenuta la compatibilità. Facciamo un esempio pratico supponendo di avere installato la libreria libxine alla versione 1.27.0 come ho nella mia linux box.
    Il comando
    ls -l /usr/lib/libxine.so*
    potrebbe restituire il seguente risultato:
    lrwxrwxrwx   1 root root       17 2010-01-31 22:29 libxine.so -> libxine.so.1.27.0
    lrwxrwxrwx   1 root root       17 2010-01-22 14:15 libxine.so.1 -> libxine.so.1.27.0
    -rwxr-xr-x   1 root root   385018 2010-01-21 11:55 libxine.so.1.27.0
    
    il vero file contenente la libreria condivisa è libxine.so.1.27.0, gli altri due sono dei link simbolici per permettere al run-time linker di reperire la stessa libreria con i diversi nomi/versioni che gli sviluppatori dei programmi potrebbero aver dichiarato di richiedere.
    Per fortuna a creare tutti questi link simbolici nelle directory contententi le librerie dinamiche ci pensa il comando ldconfig eseguito di solito dai programmi che si occupano di configurare i pacchetti che installiamo sulla nostra linux-box.

Nessun commento:

Posta un commento