11.07.2015 Views

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

106 CAPITOLO 3. LA CONFIGURAZIONE DEI SERVIZI DI BASEdall’altra ha invece il grande vantaggio che le modifiche ad un singolo file di configurazionenon hanno alcun modo di influenzare quelli di altri programmi. Il secondo enorme vantaggio èche essendo i file di configurazione dei file di testo è possibile effettuare ricerche ed operazionicomplesse con i soliti comandi di shell abbondantemente trattati in sez. 2.2, ed eseguire leoperazioni di configurazione con un editor qualunque.Una seconda cosa di cui bisogna tenere conto è che <strong>Linux</strong> è multiutente, per cui è moltospesso possibile per ciascun utente scegliere le impostazioni che si ritengono più appropriateper un programma mettendo un ulteriore file di configurazione nella propria home directory.In genere questi file sono invisibili (iniziano cioè con un “.”) ed hanno lo stesso nome del loroanalogo di /etc/ valido per tutto il sistema. Questa è una forma molto potente e pulita diconsentire a ciascun utente di personalizzare le sue scelte senza dover andare a scomodare leimpostazioni generali di tutto il sistema.È da tenere presente infine che per molti file di configurazione viene installata anche unapagina di manuale che ne spiega il formato, accessibile usualmente con man nomefile, o nel casodi omonimia con un comando o una funzione di sistema, con man 5 nomefile. 2 In seguito, perquelli che prenderemo in esame faremo una descrizione generale, trattando solo le caratteristicheprincipali, per questo varrà sempre la pena controllare la documentazione, che contiene tutti idettagli.3.1.2 La gestione delle librerie condiviseUna delle funzionalità più importanti per l’esecuzione dei programmi in un qualunque sistema èquello della gestione delle librerie condivise, quelle che in Windows vengono chiamate DLL (daDinamically Linked Library) e che nei sistemi unix-like sono chiamate shared object. Questo è ilmeccanismo che permette di inserire tutto il codice comune usato dai programmi all’interno diopportune librerie, 3 in modo che non sia necessario reinserirlo tutte le volte all’interno di ciascunprogramma.Però per far sì che detto codice possa essere utilizzato dai singoli programmi occorre unaapposita infrastruttura. Come brevemente accennato in sez. 2.1.6 uno dei compiti fondamentalidel sistema, quello di mettere in esecuzione i programmi, viene realizzato attraverso il linkloader.Questo non è un vero programma a se stante, quanto una sezione di codice che vienesempre eseguita preventivamente tutte le volte che si deve lanciare un nuovo programma 4 chepermette di identificare le librerie condivise che contengono le funzioni necessarie e di caricarleautomaticamente in memoria, in maniera trasparente all’utente.Per verificare quali librerie dinamiche sono necessarie per l’esecuzione di un programma sipuò usare il comando ldd, che stampa sullo standard output i nomi delle librerie condivise dicui esso ha bisogno. Il comando prende come argomento il pathname assoluto del programmada analizzare e stampa a video il risultato, ad esempio:piccardi@monk:~/Truelite/documentazione/corso$ ldd /bin/lslibrt.so.1 => /lib/librt.so.1 (0x40023000)libacl.so.1 => /lib/libacl.so.1 (0x40035000)libc.so.6 => /lib/libc.so.6 (0x4003c000)libpthread.so.0 => /lib/libpthread.so.0 (0x4016a000)/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)libattr.so.1 => /lib/libattr.so.1 (0x401ba000)2 si ricordi quanto detto in sez. 2.3.1.3 e abbiamo visto in sez. 1.2.3 come ci siano delle directory specifiche previste dal Filesystem Hierarchy Standardche devono contenere i relativi file.4 a meno che questo non sia stato compilato staticamente, cioè in maniera da includere al suo interno tutto ilcodice che altrimenti sarebbe stato disponibile attraverso delle librerie condivise.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!