Debian Reference Osamu Aoki Diritto d'autore © 2007-2012 Osamu Aoki Questa guida di riferimento Debian, Debian Reference (v2) (2013-10-02 08:27:59 UTC) è pensata per fornire un'ampia     panoramica del sistema Debian in qualità di guida post-installazione per l'utente. Copre molti aspetti dell'amministrazione di sistema attraverso esempi di uso di comandi di shell, pensati per chi non è sviluppatore. Sommario Questo testo è libero; lo si può ridistribuire e/o modificare nei termini della GNU General Public License in qualsiasi versione aderente alle Linee guida Debian per il Software Libero (DFSG). --------------------------------------------------------------------- Indice Prefazione 1. Note legali 2. Cosa è Debian 3. Informazioni su questo documento 3.1. Linee guida 3.2. Prerequisiti 3.3. Convenzioni 3.4. Popcon 3.5. La dimensione dei pacchetti 3.6. Segnalazioni di bug in questo documento 4. Alcune citazioni per i nuovi utenti 1. Tutorial GNU/Linux 1.1. Nozioni di base sulla console 1.1.1. Il prompt di shell 1.1.2. Il prompt di shell in X 1.1.3. L'account root 1.1.4. Il prompt di shell di root 1.1.5. Strumenti di amministrazione del sistema con interfaccia utente grafica 1.1.6. Console virtuali 1.1.7. Come uscire dal prompt dei comandi 1.1.8. Come spegnere il sistema 1.1.9. Ripristinare una console funzionante 1.1.10. Suggerimenti per pacchetti aggiuntivi per i principianti 1.1.11. Un account utente extra 1.1.12. Configurazione di sudo 1.1.13. Tempo di giocare 1.2. File system stile Unix 1.2.1. Nozioni di base sui file Unix 1.2.2. Aspetti tecnici del file system 1.2.3. Permessi del file system 1.2.4. Controllo dei permessi per i file appena creati: umask 1.2.5. Permessi per gruppi di utenti (gruppi) 1.2.6. Orari 1.2.7. Collegamenti 1.2.8. Pipe con nome (FIFO) 1.2.9. Socket 1.2.10. File di device 1.2.11. File di device speciali 1.2.12. procfs e sysfs 1.2.13. tmpfs 1.3. Midnight Commander (MC) 1.3.1. Personalizzazione di MC 1.3.2. Avvio di MC 1.3.3. Gestore dei file in MC 1.3.4. Trucchetti per la riga di comando di MC 1.3.5. L'editor interno di MC 1.3.6. Il visualizzatore interno di MC 1.3.7. Funzionalità di avvio automatico di MC 1.3.8. File system FTP virtuale di MC 1.4. Ambiente di lavoro di base in stile Unix 1.4.1. La shell di login 1.4.2. Personalizzare bash 1.4.3. Associazioni di tasti speciali 1.4.4. Funzionamento del mouse in stile Unix 1.4.5. Il paginatore 1.4.6. L'editor di testo 1.4.7. Impostare un editor di testi predefinito 1.4.8. Personalizzare vim 1.4.9. Registrare le attività della shell 1.4.10. Comandi Unix di base 1.5. Il semplice comando di shell 1.5.1. Esecuzione dei comandi e variabili d'ambiente 1.5.2. La variabile "$LANG" 1.5.3. La variabile "$PATH" 1.5.4. La variabile "$HOME" 1.5.5. Opzioni della riga di comando 1.5.6. Glob della shell 1.5.7. Valore restituito dal comando 1.5.8. Sequenze tipiche di comandi e ridirezione della shell 1.5.9. Alias di comandi 1.6. Elaborazione di testo stile Unix 1.6.1. Strumenti Unix per il testo 1.6.2. Espressioni regolari 1.6.3. Espressioni di sostituzione 1.6.4. Sostituzione globale con espressioni regolari 1.6.5. Estrarre dati da file con tabelle di testo 1.6.6. Frammenti di script per comandi con pipe 2. Gestione dei pacchetti in Debian 2.1. Prerequisiti per la gestione dei pacchetti Debian 2.1.1. Configurazione dei pacchetti 2.1.2. Precauzioni base 2.1.3. Una vita di aggiornamenti senza fine 2.1.4. Nozioni di base sugli archivi Debian 2.1.5. Debian è al 100% software libero 2.1.6. Dipendenze dei pacchetti 2.1.7. Il flusso di eventi nella gestione dei pacchetti 2.1.8. Prima risposta a problemi di gestione dei pacchetti 2.2. Operazioni base per la gestione dei pacchetti 2.2.1. Confronto apt-get / apt-cache - aptitude 2.2.2. Operazioni base per la gestione dei pacchetti dalla riga di comando 2.2.3. Uso interattivo di aptitude 2.2.4. Associazioni dei tasti per aptitude 2.2.5. Viste dei pacchetti in aptitude 2.2.6. Opzioni per i metodi di ricerca in aptitude 2.2.7. La struttura delle espressioni regolari di aptitude 2.2.8. Risoluzione delle dipendenze di aptitude 2.2.9. Registri delle attività sui pacchetti 2.3. Esempi di operazioni con aptitude 2.3.1. Elencare pacchetti in base alla corrispondenza del nome con espressioni regolari 2.3.2. Sfogliare le corrispondenze ad una espressione regolare 2.3.3. Eliminare completamente i pacchetti rimosssi 2.3.4. Mettere ordine nello stato di installazione automatico /non automatico 2.3.5. Aggiornamento di tutto il sistema 2.4. Operazioni avanzate per la gestione dei pacchetti 2.4.1. Operazioni avanzate per la gestione dei pacchetti dalla riga di comando 2.4.2. Verifica dei pacchetti installati 2.4.3. Salvaguardarsi da problemi coi pacchetti 2.4.4. Cercare tra i metadati dei pacchetti 2.5. Aspetti tecnici della gestione dei pacchetti in Debian 2.5.1. Metadati degli archivi 2.5.2. File "Release" nella directory principale ed autenticità 2.5.3. File "Release" a livello di archivio 2.5.4. Recuperare i metadati per un pacchetto 2.5.5. Lo stato dei pacchetti per APT 2.5.6. Lo stato dei pacchetti per aptitude 2.5.7. Copie locali dei pacchetti scaricati 2.5.8. Nomi dei file di pacchetto di Debian 2.5.9. Il comando dpkg 2.5.10. Il comando update-alternatives 2.5.11. Il comando dpkg-statoverride 2.5.12. Il comando dpkg-divert 2.6. Ripristino da un sistema con problemi 2.6.1. Incompatibilità con vecchie configurazioni utente 2.6.2. Pacchetti diversi con file sovrapposti 2.6.3. Risolvere problemi negli script di pacchetto 2.6.4. Ripristinare con il comando dpkg 2.6.5. Ripristinare i dati sui pacchetti selezionati 2.7. Suggerimenti per la gestione dei pacchetti 2.7.1. Come scegliere i pacchetti Debian 2.7.2. Pacchetti da fonti mescolate di archivi 2.7.3. Modificare la versione candidata 2.7.4. Updates e Backports 2.7.5. Bloccare i pacchetti da installare perché "Raccomandati" 2.7.6. Usare e aggiornare testing con alcuni pacchetti da unstable 2.7.7. Usare e aggiornare unstable con alcuni pacchetti da experimental 2.7.8. Scaricare ed aggiornare automaticamente i pacchetti 2.7.9. Limitare l'uso di banda di APT per gli scaricamenti 2.7.10. Retrocessione di emergenza alla versione precedente 2.7.11. Chi ha caricato il pacchetto? 2.7.12. Il pacchetto equivs 2.7.13. Fare il port di un pacchetto nel sistema stabile 2.7.14. Server proxy per APT 2.7.15. Piccolo archivio pubblico per i pacchetti 2.7.16. Registrare e copiare la configurazione di sistema 2.7.17. Convertire o installare un pacchetto binario alieno 2.7.18. Estrarre pacchetti senza dpkg 2.7.19. Ulteriori letture sulla gestione dei pacchetti 3. Inizializzazione del sistema 3.1. Panoramica del processo di avvio 3.2. Stadio 1: il BIOS 3.3. Stadio 2: il bootloader 3.4. Stadio 3: il mini-sistema Debian 3.5. Stadio 4: il normale sistema Debian 3.5.1. Il significato del runlevel 3.5.2. La configurazione del runlevel 3.5.3. Esempio di gestione dei runlevel 3.5.4. Il parametro predefinito per ciascuno script init 3.5.5. Il nome host 3.5.6. Il filesystem 3.5.7. Inizializzazione delle interfacce di rete 3.5.8. Inizializzazione dei servizi di rete 3.5.9. I messaggi di sistema 3.5.10. I messaggi del kernel 3.5.11. Il sistema udev 3.5.12. L'inizializzazione dei moduli del kernel 4. Autenticazione 4.1. Autenticazione Unix normale 4.2. Gestire le informazioni su account e password 4.3. Password buone 4.4. Creare password cifrate 4.5. PAM e NSS 4.5.1. File di configurazione letti da PAM e NSS 4.5.2. La moderna gestione centralizzata del sistema 4.5.3. "Perché GNU su non supporta il gruppo wheel" 4.5.4. Regole più stringenti per le password 4.6. Altri controlli sugli accessi 4.6.1. sudo 4.6.2. PolicyKit 4.6.3. SELinux 4.6.4. Limitare l'accesso ad alcuni servizi server 4.7. Sicurezza dell'autenticazione 4.7.1. Password sicure in Internet 4.7.2. Secure Shell, shell sicura 4.7.3. Misure aggiuntive di sicurezza per Internet 4.7.4. Rendere sicura la password di root 5. Impostazione della rete 5.1. L'infrastruttura base di rete 5.1.1. Risoluzione dei nomi di host 5.1.2. Il nome dell'interfaccia di rete 5.1.3. L'intervallo degli indirizzi di rete per la LAN 5.1.4. Il supporto per i dispositivi di rete 5.2. La configurazione moderna della rete per il desktop 5.2.1. Strumenti grafici di configurazione della rete 5.3. La vecchia connessione e configurazione di rete 5.4. Il metodo di connessione alla rete (datato) 5.4.1. Connessione DHCP con Ethernet 5.4.2. Connessione con IP statico con Ethernet 5.4.3. Connessione PPP con pppconfig 5.4.4. Connessione PPP alternativa con wvdialconf 5.4.5. Connessione PPPoE con pppoeconf 5.5. Configurazione base della rete con ifupdown (metodo vecchio) 5.5.1. Sintassi di base dei comandi 5.5.2. Sintassi di base di "/etc/network/interfaces" 5.5.3. Interfaccia di rete loopback 5.5.4. Interfaccia di rete servita da DHCP 5.5.5. Interfaccia di rete con IP statico 5.5.6. Informazioni di base sull'interfaccia LAN wireless 5.5.7. Interfaccia LAN wireless con WPA/WPA2 5.5.8. Interfaccia LAN wireless con WEP 5.5.9. Connessione PPP 5.5.10. Connessione PPP alternativa 5.5.11. Connessione PPPoE 5.5.12. Lo stato di configurazione della rete di ifupdown 5.5.13. Riconfigurazione base della rete 5.5.14. Pacchetto ifupdown-extra 5.6. Configurazione avanzata della rete con ifupdown (strumento datato) 5.6.1. Il pacchetto ifplugd 5.6.2. Il pacchetto ifmetric 5.6.3. L'interfaccia virtuale 5.6.4. Sintassi avanzata dei comandi 5.6.5. Il blocco di mappatura "mapping" 5.6.6. Configurazione della rete commutabile manualmente 5.6.7. Uso di script con il sistema ifupdown 5.6.8. Mappatura con guessnet 5.7. Configurazione della rete a basso livello 5.7.1. Comandi iproute2 5.7.2. Operazioni sicure a basso livello sulla rete 5.8. Ottimizzazione della rete 5.8.1. Trovare l'MTU ottimale 5.8.2. Impostazione dell'MTU 5.8.3. Ottimizzazione di TCP per la WAN 5.9. Infrastruttura netfilter 6. Applicazioni per la rete 6.1. Browser web 6.1.1. Configurazione del browser 6.2. Il sistema di posta 6.2.1. Nozioni di base sulla posta elettronica 6.2.2. Nozioni di base sui servizi di posta moderni 6.2.3. Strategia di configurazione della posta per postazione PC 6.3. Agente di trasporto della posta (MTA) 6.3.1. La configurazione di exim4 6.3.2. La configurazione di Postfix con SASL 6.3.3. La configurazione dell'indirizzo di posta 6.3.4. Operazioni di base degli MTA 6.4. Programma di posta (MUA, Mail User Agent) 6.4.1. Programma di posta base — Mutt 6.5. L'utilità per il recupero della posta da remoto e l'inoltro 6.5.1. Configurazione di getmail 6.5.2. configurazione di fetchmail 6.6. Agente di consegna della posta (MDA, Mail Delivery Agent) con filtri 6.6.1. configurazione di maildrop 6.6.2. configurazione di procmail 6.6.3. Riconsegna del contenuto di mbox 6.7. Server POP3/IMAP4 6.8. Server ed utilità per la stampa 6.9. Il server e le utilità per l'accesso remoto (SSH) 6.9.1. Nozioni di base su SSH 6.9.2. Forwarding della porta per tunnel SMTP/POP3 6.9.3. Connettersi senza password remote 6.9.4. Gestire client SSH estranei 6.9.5. Impostare ssh-agent 6.9.6. Spegnere il sistema remoto su SSH 6.9.7. Risolvere il problemi con SSH 6.10. Altri server di rete 6.11. Altri client di rete 6.12. Diagnosi dei demoni di sistema 7. Il sistema X Window 7.1. Pacchetti fondamentali 7.2. Impostare l'ambiente desktop 7.2.1. Menu Debian 7.2.2. Menu Freedesktop.org 7.2.3. Il menu Debian nell'ambiente desktop GNOME 7.3. La relazione client/server 7.4. Il server X 7.4.1. La (ri)configurazione del server X 7.4.2. I metodi di connessione al server X 7.5. Avviare il sistema X Window 7.5.1. Avviare la sessione X con gdm3 7.5.2. Personalizzare la sessione X (metodo classico) 7.5.3. Personalizzare la sessione X (metodo nuovo) 7.5.4. Connettersi ad un client X remoto via SSH 7.5.5. Terminale X sicuro via Internet 7.6. Tipi di carattere in X Window 7.6.1. Tipi di carattere base 7.6.2. Tipi di carattere aggiuntivi 7.6.3. Tipi di carattere CJK 7.7. Applicazioni per X 7.7.1. Applicazioni da ufficio per X 7.7.2. Applicazioni di utilità per X 7.8. Informazioni varie su X 7.8.1. Mappatura della tastiera e dei pulsanti del dispositivo di puntamento in X 7.8.2. Client X classici 7.8.3. L'emulatore di terminale per X - xterm 7.8.4. Eseguire client X come root 8. I18N e L10N 8.1. L'input da tastiera 8.1.1. Il supporto per metodo di input con IBus 8.1.2. Un esempio per il giapponese 8.1.3. disabilitare il metodo di input 8.2. L'output sul display 8.3. La localizzazione 8.3.1. Nozioni base sulla codifica 8.3.2. Logica alla base dell'uso della localizzazione UTF-8 8.3.3. La (ri)configurazione della localizzazione 8.3.4. Il valore della variabile di ambiente "$LANG" 8.3.5. Localizzazione specifica solamente in X Window 8.3.6. Codifica per i nomi di file 8.3.7. Messaggi localizzati e documentazione tradotta 8.3.8. Effetti della localizzazione 9. Suggerimenti per il sistema 9.1. Il programma screen 9.1.1. Scenario di uso per screen(1) 9.1.2. Associazioni dei tasti per il comando screen 9.2. Registrazione e presentazione di dati 9.2.1. Demoni di registro 9.2.2. Analizzatori di registro 9.2.3. Registrare le attività della shell in modo pulito 9.2.4. Visualizzazione personalizzata di dati di testo 9.2.5. Visualizzazione personalizzata di date e orari 9.2.6. Output colorato per la shell 9.2.7. Comandi colorati 9.2.8. Registrare le attività dell'editor per ripetizioni complesse 9.2.9. Registrare l'immagine grafica di un'applicazione X 9.2.10. Registrare i cambiamenti a file di configurazione 9.3. Suggerimenti per l'archiviazione dei dati 9.3.1. Uso dello spazio su disco 9.3.2. Configurazione del partizionamento dei dischi 9.3.3. Accedere alle partizioni usando UUID 9.3.4. LVM2 9.3.5. Configurazione del file system 9.3.6. Creare file system e verificarne l'integrità 9.3.7. Ottimizzare il file system con opzioni di mount 9.3.8. Ottimizzare il file system tramite il superblocco 9.3.9. Ottimizzare il disco rigido 9.3.10. Ottimizzare le unità a stato solido 9.3.11. Usare SMART per prevedere danni ai dischi fissi 9.3.12. Specificare una directory per l'archiviazione di dati temporanei usando $TMPDIR 9.3.13. Espandere lo spazio di archiviazione utilizzabile con LVM 9.3.14. Espandere lo spazio di archiviazione utilizzabile montando un'altra partizione 9.3.15. Espandere lo spazio di archiviazione utilizzabile montando un collegamento ad un'altra directory 9.3.16. Espandere lo spazio di archiviazione utilizzabile usando collegamenti simbolici 9.3.17. Espandere lo spazio di archiviazione utilizzabile usando aufs 9.4. Suggerimenti per la cifratura dei dati 9.4.1. Cifratura di dischi removibili con dm-crypt/LUKS 9.4.2. Cifratura della partizione di swap con dm-crypt 9.4.3. Cifratura automatica di file con eCryptfs 9.4.4. Montare automaticamente eCryptfs 9.5. Monitorare, controllare ed avviare l'attività dei programmi 9.5.1. Cronometrare un processo 9.5.2. Priorità di schedulazione 9.5.3. Il comando ps 9.5.4. Il comando top 9.5.5. Elencare i file aperti da un processo 9.5.6. Tenere traccia delle attività di un programma 9.5.7. Identificazione di processi in base a file o socket 9.5.8. Ripetere un comando ad intervalli costanti 9.5.9. Ripetere un comando su diversi file 9.5.10. Avviare un programma dalla GUI 9.5.11. Personalizzare i programmi da avviare 9.5.12. Uccidere un processo 9.5.13. Pianificare compiti da eseguire una volta sola 9.5.14. Pianificare compiti in modo regolare 9.5.15. Tasto Alt-SysRq 9.6. Suggerimenti per l'amministrazione del sistema 9.6.1. Chi è nel sistema? 9.6.2. Avvertire tutti gli utenti 9.6.3. Identificazione dell'hardware 9.6.4. Configurazione dell'hardware 9.6.5. Orario di sistema e hardware 9.6.6. Configurazione del terminale 9.6.7. L'infrastruttura audio 9.6.8. Disabilitare il salvaschermo 9.6.9. Disabilitare i bip sonori 9.6.10. Uso della memoria 9.6.11. Verifica della sicurezza e dell'integrità del sistema 9.7. Il kernel 9.7.1. Kernel Linux 2.6/3.x 9.7.2. Parametri del kernel 9.7.3. Header del kernel 9.7.4. Compilare il kernel ed i moduli relativi 9.7.5. Compilare i sorgenti del kernel: il metodo raccomandato dal Team del Kernel di Debian 9.7.6. Driver per hardware e firmware 9.8. Sistema virtualizzato 9.8.1. Strumenti per la virtualizzazione 9.8.2. Fasi del processo di virtualizzazione 9.8.3. Montare il file immagine di disco virtuale 9.8.4. Sistema chroot 9.8.5. Sistemi desktop multipli 10. Gestione dei dati 10.1. Condividere, copiare ed archiviare 10.1.1. Strumenti di archiviazione e compressione 10.1.2. Strumenti di copia e sincronizzazione 10.1.3. Esempi di invocazione per archivi 10.1.4. Esempi di invocazione per la copia 10.1.5. Esempi di invocazione per la selezione di file 10.1.6. Backup e ripristino 10.1.7. Suite con utilità di backup 10.1.8. Uno script di esempio per il backup di sistema 10.1.9. Uno script di copia per backup di dati 10.1.10. Supporti di archiviazione removibili 10.1.11. Scelta del file system per la condivisione di dati 10.1.12. Condividere dati attraverso una rete 10.1.13. Supporti di archiviazione 10.2. Immagine del disco 10.2.1. Creare un file con un'immagine di disco 10.2.2. Scrivere direttamente sul disco 10.2.3. Montare un file con un'immagine di disco 10.2.4. Pulire un file con un'immagine di disco 10.2.5. Creare un file con immagine di disco vuoto 10.2.6. Creare un file con un'immagine ISO9660 10.2.7. Scrivere direttamente sul CD/DVD-R/RW 10.2.8. Montare un file con un'immagine ISO9660 10.3. I dati binari 10.3.1. Visualizzare e modificare dati binari 10.3.2. Manipolare file senza montare i dischi 10.3.3. Dati ridondanti 10.3.4. recupero di file dati ed analisi forensi 10.3.5. Suddividere un file grande in file più piccoli 10.3.6. Pulire il contenuto di file 10.3.7. File fittizi 10.3.8. Cancellare un intero disco fisso 10.3.9. Cancellare area inutilizzate di un disco fisso 10.3.10. De-cancellare file cancellati ma ancora aperti 10.3.11. Cercare tutti i collegamenti fisici 10.3.12. Consumo invisibile dello spazio su disco 10.4. Infrastruttura di sicurezza dei dati 10.4.1. Gestione delle chiavi per GnuPG 10.4.2. Usare GnuPG su file 10.4.3. Usare GnuPG con Mutt 10.4.4. Usare GnuPG con Vim 10.4.5. Somme di controllo MD5 10.5. Strumenti per la fusione di codice sorgente 10.5.1. Estrarre differenze da file sorgenti 10.5.2. Fondere aggiornamenti per file sorgenti 10.5.3. Aggiornare con fusioni a 3 vie 10.6. Sistemi di controllo delle versioni 10.6.1. Comparazione di comandi VCS 10.7. CVS 10.7.1. Configurazione di archivi CVS 10.7.2. Accesso locale al CVS 10.7.3. Accesso remoto a CVS con pserver 10.7.4. Accesso remoto a CVS con ssh 10.7.5. Importare un nuovo sorgente in CVS 10.7.6. Permessi dei file negli archivi CVS 10.7.7. Sequenza di azioni tipiche nell'uso di CVS 10.7.8. File più recenti dal CVS 10.7.9. Amministrazione del CVS 10.7.10. Bit di esecuzione per il checkout CVS 10.8. Subversion 10.8.1. Configurazione di archivi Subversion 10.8.2. Accedere a Subversion tramite il server Apache2 10.8.3. Accesso locale a Subversion da parte di un gruppo 10.8.4. Accesso remoto a Subversion con SSH 10.8.5. Struttura delle directory di Subversion 10.8.6. Importare un nuovo sorgente in Subversion 10.8.7. Sequenza di azioni tipiche nell'uso di Subversion 10.9. Git 10.9.1. Configurazione del client Git 10.9.2. Documenti di consultazione per Git 10.9.3. Comandi Git 10.9.4. Git per repository Subversion 10.9.5. Git per registrare la cronologia della configurazione 11. Conversione di dati 11.1. Strumenti di conversione di dati testuali 11.1.1. Convertire un file di testo con iconv 11.1.2. Controllare se un file è in UTF-8 con iconv 11.1.3. Convertire nomi di file con iconv 11.1.4. Conversione del carattere di fine riga 11.1.5. Conversione di tabulazioni 11.1.6. Editor con auto-conversione 11.1.7. Estrazione del testo puro 11.1.8. Evidenziare e formattare dati in puro testo 11.2. Dati XML 11.2.1. Suggerimenti base per XML 11.2.2. Elaborazione XML 11.2.3. Estrazione di dati XML 11.3. Dati stampabili 11.3.1. Ghostscript 11.3.2. Unire due file PS o PDF 11.3.3. Utilità per dati stampabili 11.3.4. Stampare con CUPS 11.4. Impaginazione 11.4.1. impaginazione roff 11.4.2. TeX/LaTeX 11.4.3. Fare una bella stampa di una pagina di manuale 11.4.4. Creare una pagina di manuale 11.5. Conversione dei dati di posta 11.5.1. Nozioni di base sui dati di posta 11.6. Strumenti per dati grafici 11.7. Conversioni di dati vari 12. Programmazione 12.1. Script shell 12.1.1. Compatibilità con la shell POSIX 12.1.2. Parametri di shell 12.1.3. Costrutti condizionali della shell 12.1.4. Cicli di shell 12.1.5. La sequenza di elaborazione della riga di comando di shell 12.1.6. Programmi di utilità per script di shell 12.1.7. Dialogo di script di shell 12.1.8. Esempio di script di shell con zenity 12.2. Make 12.3. C 12.3.1. semplice programma in C (gcc) 12.4. Debug 12.4.1. Esecuzione base di gdb 12.4.2. Fare il debug di pacchetti Debian 12.4.3. Ottenere un backtrace 12.4.4. Comandi gdb avanzati 12.4.5. Fare il debug di errori X 12.4.6. Controllare le dipendenze dalle librerie 12.4.7. Strumenti per rilevazione di memory leak 12.4.8. Strumenti di analisi statica del codice 12.4.9. Disassemblatore di binari 12.5. Flex - un Lex migliorato 12.6. Bison - Yacc migliorato 12.7. Autoconf 12.7.1. Compilare ed installare un programma 12.7.2. Disinstallare un programma 12.8. Pazzie con corti script Perl 12.9. Web 12.10. Traduzione di codice sorgente 12.11. Creare pacchetti Debian A. Appendice A.1. Il labirinto Debian A.2. Storia del copyright A.3. Formato del documento Lista delle tabelle 1.1. Elenco di pacchetti con interessanti programmi in modalità testuale 1.2. Elenco di pacchetti con documentazione interessante 1.3. Elenco degli usi delle directory principali 1.4. Elenco dei valori possibili per il primo carattere nell'output di "ls -l" 1.5. Permessi in notazione numerica per i comandi chmod(1) 1.6. Esempi di valori di umask 1.7. Elenco dei principali gruppi forniti dal sistema per accesso ai file 1.8. Elenco dei principali gruppi forniti dal sistema per l'esecuzione di particolari comandi 1.9. Elenco dei tipi di data 1.10. Elenco di file dei device speciali 1.11. Le associazioni dei tasti di MC 1.12. La reazione al tasto Invio in MC 1.13. Elenco di programmi shell 1.14. Elenco di associazioni di tasti per bash 1.15. Elenco delle funzioni del mouse in stile Unix 1.16. Elenco di comandi Unix di base 1.17. Le 3 parti del valore di localizzazione 1.18. Elenco di localizzazioni raccomandate 1.19. Elenco di valori di "$HOME" 1.20. Modelli di glob della shell 1.21. Codici di uscita dei comandi 1.22. Idiomi per comandi di shell 1.23. Descrittori di file predefiniti 1.24. Metacaratteri per BRE e ERE 1.25. L'espressione di sostituzione 1.26. Elenco di frammenti di script per comandi con pipe 2.1. Elenco degli strumenti Debian di gestione dei pacchetti 2.2. Elenco dei siti con l'archivo Debian 2.3. Elenco delle aree dell'archivio Debian 2.4. Relazione tra suite e nome in codice 2.5. Elenco dei siti web importanti per la risoluzione di problemi con un pacchetto specifico 2.6. Operazioni base di gestione dei pacchetti dalla riga di comando usando aptitude(8) e apt-get(8) /apt-cache(8) 2.7. Opzioni degne di nota per il comando aptitude(8) 2.8. Elenco delle associazioni di tasti per aptitude 2.9. Elenco delle viste di aptitude 2.10. Organizzazione delle viste standard dei pacchetti 2.11. Elenco delle regole per espressioni regolari di aptitude 2.12. File di registro per le attività sui pacchetti 2.13. Elenco delle operazioni avanzate per la gestione dei pacchetti 2.14. Il contenuto dei metadati dell'archivio Debian 2.15. La struttura dei nomi dei pacchetti Debian 2.16. I caratteri utilizzabili all'interno di ciascuna porzione del nome dei pacchetti Debian 2.17. I file degni di nota creati da dpkg 2.18. Elenco di valori di priorità di pin che esemplificano la tecnica d'uso dei pin di APT. 2.19. Elenco degli strumenti proxy specifici per l'archivio Debian 3.1. Elenco di bootloader 3.2. Significato dei parametri di GRUB 3.3. Elenco di utilità di avvio per il sistema Debian 3.4. Elenco dei runlevel e descrizione del loro uso 3.5. Elenco dei livelli di errore del kernel 4.1. I 3 importanti file di configurazione per pam_unix(8) 4.2. Il contenuto della seconda voce di "/etc/passwd" 4.3. Elenco di comandi per gestire informazioni su account 4.4. Elenco di strumenti per generare password 4.5. Elenco dei pacchetti degni di nota per i sistemi PAM e NSS 4.6. Elenco di file di configurazione letti da PAM 4.7. Elenco di servizi e porte sicuri e non sicuri 4.8. Elenco di strumenti per fornire misure aggiuntive di sicurezza 5.1. Elenco degli strumenti di configurazione della rete 5.2. Elenco di intervalli di indirizzi di rete 5.3. Elenco dei metodi di connessione alla rete e dei percorsi di connessione 5.4. Elenco di configurazioni della connessione di rete 5.5. Elenco di acronimi per le connessioni di rete 5.6. Elenco dei file di configurazione per la connessione PPP con pppconfig 5.7. Elenco dei file di configurazione per la connessione PPP con wvdialconf 5.8. Elenco dei file di configurazione per la connessione PPPoE con pppoeconf 5.9. Elenco di comandi base per la configurazione della rete con ifupdown 5.10. Elenco dei blocchi in "/etc/network/interfaces" 5.11. Elenco di acronimi per WLAN 5.12. Elenco della terminologia per i device di rete 5.13. Elenco di comandi avanzati per la configurazione della rete con ifupdown 5.14. Elenco delle variabili d'ambiente passate dal sistema ifupdown 5.15. Tabella di traduzione dai comandi obsoleti net-tools ai nuovi comandi iproute2 5.16. Elenco di comandi di rete a basso livello 5.17. Elenco degli strumenti di ottimizzazione della rete 5.18. Linee guida di base per il valore di MTU ottimale 5.19. Elenco di strumenti per firewall 6.1. Elenco di browser web 6.2. Elenco di pacchetti con plugin per browser 6.3. Elenco di pacchetti base relativi ai server di trasporto della posta per postazioni PC 6.4. Elenco delle scelte per l'agente di trasporto della posta (MTA) tra i pacchetti dell'archivio Debian 6.5. Elenco delle pagine di manuale di Postfix importanti 6.6. Elenco dei file di configurazione correlati all'indirizzo di posta 6.7. Elenco di operazioni base degli MTA 6.8. Elenco di programmi di posta (MUA) 6.9. Elenco di utilità per il recupero della posta da remoto e l'inoltro 6.10. Elenco di MDA con filtri 6.11. Elenco di server POP3/IMAP4 6.12. Elenco di server e utilità di stampa 6.13. Elenco dei server e delle utilità per l'accesso remoto 6.14. Elenco dei protocolli e dei metodi di autenticazione di SSH 6.15. Elenco dei file di configurazione per SSH 6.16. Elenco di esempi di avvio di client SSH 6.17. Elenco di client SSH per altre piattaforme 6.18. Elenco di altri server applicativi di rete 6.19. Elenco di altri client applicativi di rete 6.20. Elenco di RFC popolari 7.1. Elenco di (meta)pacchetti fondamentali per X Window 7.2. Elenco della terminologia per server/client 7.3. Elenco di metodi di connessione al server X 7.4. Tabella dei pacchetti che supportano i sistemi dei tipi di carattere in X Window 7.5. Tabella dei tipi di carattere PostScript Type 1 7.6. Tabella dei tipi di carattere TrueType 7.7. Tabella delle parole chiave usate nei nomi dei tipi di carattere CJK per indicarne il tipo 7.8. Elenco di applicazioni base da ufficio per X 7.9. Elenco di applicazioni base di utilità per X 8.1. Elenco di metodi di riconfigurazione della tastiera 8.2. Elenco dei metodi di input supportati da IBus 9.1. Elenco di programmi che supportano connessioni di rete interrotte 9.2. Elenco di associazioni di tasti per screen 9.3. Elenco di analizzatori del registro di sistema 9.4. Esempi di visualizzazione di date e orari per il comando "ls -l" per wheezy 9.5. Elenco di strumenti di manipolazione di immagini grafiche 9.6. Elenco di pacchetti per registrare la cronologia della configurazione in VCS 9.7. Elenco di pacchetti di gestione delle partizioni dei dischi 9.8. Elenco di pacchetti di gestione dei file system 9.9. Elenco di utilità per la cifratura dei dati 9.10. Elenco di strumenti per monitorare e controllare l'attività dei programmi. 9.11. Elenco di valori di nice per la priorità di schedulazione 9.12. Elenco degli stili per il comando ps 9.13. Elenco dei comandi per top 9.14. Elenco dei segnali usati comunemente con il comando kill 9.15. Elenco di tasti per il comando SAK 9.16. Elenco di strumenti per l'identificazione dell'hardware 9.17. Elenco di strumenti di configurazione dell'hardware 9.18. Elenco di pacchetti relativi all'audio 9.19. Elenco di comandi per disabilitare il salvaschermo 9.20. Elenco di dimensioni della memoria riportate 9.21. Elenco di strumenti per verificare la sicurezza e l'integrità del sistema 9.22. Elenco di pacchetti chiave da installare per la ricompilazione del kernel in un sistema Debian 9.23. Elenco di strumenti di virtualizzazione 10.1. Elenco di strumenti di archiviazione e compressione 10.2. Elenco di strumenti di copia e sincronizzazione 10.3. Elenco di suite con utilità di backup 10.4. Elenco di possibili scelte per il file system di dispositivi di archiviazione removibili con scenari di uso tipici 10.5. Elenco dei servizi di rete da scegliere in base allo scenario di uso tipico 10.6. Elenco di pacchetti che visualizzano e modificano dati binari 10.7. Elenco di pacchetti per manipolare file senza montare i dischi 10.8. Elenco di strumenti per aggiungere dati ridondanti a file 10.9. Elenco di pacchetti per recupero di file dati ed analisi forensi. 10.10. Elenco di strumenti per l'infrastruttura di sicurezza dei dati 10.11. Elenco di comandi per GNU Privacy Guard per la gestione delle chiavi 10.12. Elenco dei significati dei codici di fiducia 10.13. Elenco di comandi GNU Privacy Guard per file 10.14. Elenco di strumenti per la fusione di codice sorgente 10.15. Elenco di strumenti per sistemi di controllo delle versioni 10.16. Comparazione di comandi VCS nativi 10.17. Opzioni importanti per comandi CVS (da usare come primi argomenti di cvs(1)) 10.18. Opzioni importanti per comandi Subversion (da usare come primi argomenti di svn(1)) 10.19. Elenco di pacchetti e comandi relativi a Git 11.1. Elenco di strumenti di conversione di dati testuali 11.2. Elenco dei valori delle codifiche e loro uso 11.3. Elenco di stili per EOL per differenti piattaforme 11.4. Elenco di comandi di conversione di TAB dai pacchetti bsdmainutils e coreutils 11.5. Elenco di strumenti per estrarre dati in testo puro 11.6. Elenco di strumenti per evidenziare dati in testo puro 11.7. Elenco di entità predefinite per XML 11.8. Elenco di strumenti XML 11.9. Elenco di strumenti DSSSL 11.10. Elenco di strumenti di estrazione di dati XML 11.11. Elenco di strumenti per belle stampe XML 11.12. Elenco di interpreti PostScript Ghostscript 11.13. Elenco di utilità per dati stampabili 11.14. Elenco di strumenti per impaginazione 11.15. Elenco di pacchetti che aiutano a creare una pagina man 11.16. Elenco di pacchetto che aiutano a convertire dati di posta 11.17. Elenco di strumenti per dati grafici 11.18. Elenco di strumenti di conversione di dati vari 12.1. Elenco di pacchetti di aiuto per la programmazione 12.2. Elenco di bashismi tipici 12.3. Elenco di parametri di shell 12.4. Elenco di espansioni di parametri di shell 12.5. Elenco di sostituzioni chiave di parametri di shell 12.6. Elenco di operatori per paragonare file in espressioni condizionali 12.7. Elenco di operatori per paragonare stringhe in espressioni condizionali 12.8. Elenco di pacchetti contenenti piccoli programmi di utilità per script di shell 12.9. Elenco di programmi per interfaccia utente 12.10. Elenco di variabili automatiche di make 12.11. Elenco di espansioni delle variabili di make 12.12. Elenco di comandi gdb avanzati 12.13. Elenco di strumenti per rilevazione di memory leak 12.14. Elenco di strumenti per l'analisi statica del codice 12.15. Elenco di generatori di parser LALR compatibili con Yacc 12.16. Elenco di strumenti per la traduzione di codice sorgente Prefazione Indice 1. Note legali 2. Cosa è Debian 3. Informazioni su questo documento 3.1. Linee guida 3.2. Prerequisiti 3.3. Convenzioni 3.4. Popcon 3.5. La dimensione dei pacchetti 3.6. Segnalazioni di bug in questo documento 4. Alcune citazioni per i nuovi utenti Questa guida di riferimento Debian Reference (versione 2) (http:// www.debian.org/doc/manuals/debian-reference/) (2013-10-02 08:27:59 UTC) è pensata per fornire un'ampia panoramica dell'amministrazione di un sistema Debian in qualità di guida post-installazione per l'utente. Si rivolge ad un lettore che abbia voglia di imparare gli script di shell, ma che non è pronto a leggere tutti i sorgenti C per scoprire come funzioni il sistema GNU (http://en.wikipedia.org/wiki/GNU) / Linux (http://it.wikipedia.org/wiki/Linux) . 1. Note legali     Non viene fornita alcuna garanzia. Tutti i marchi registrati appartengono ai rispettivi proprietari. Il sistema Debian è, di per sé, un'entità in continuo movimento; ciò rende difficile alla sua documentazione essere aggiornata e     corretta. Sebbene come base per questo testo sia stata usata la versione "unstable" al momento della sua stesura, alcuni contenuti potrebbero essere obsoleti al momento della sua lettura. Si consideri questo documento come un riferimento secondario.     Esso non sostituisce nessuna guida autorevole. L'autore e i collaboratori non si assumono responsabilità per le conseguenze di errori, omissioni o ambiguità presenti in questo documento. 2. Cosa è Debian Il Progetto Debian (http://www.debian.org/index.it.html) è     un'associazione di individui che hanno fatto causa comune per creare un sistema operativo libero. La sua distribuzione è caratterizzata dai seguenti aspetti. * Impegno per la libertà del software: Il Contratto sociale Debian e le Linee Guida Debian per il Software Libero (DFSG). (http://www.debian.org/social_contract.it.html) * Sforzo volontario non pagato, distribuito, basato su Internet http://www.debian.org (http://www.debian.org/index.it.html) .     * Vasto numero di software di alta qualità pre-compilati. * Attenzione alla stabilità e alla sicurezza, con facile accesso agli aggiornamenti di sicurezza. * Attenzione ad aggiornamenti senza problemi alle più recenti versioni dei software con gli archivi unstable e testing. * Vasto numero di architetture hardware supportate. I vari pezzi di Software Libero in Debian provengono da GNU (http://en.wikipedia.org/wiki/GNU) , Linux (http:// it.wikipedia.org/wiki/Linux) , BSD (http://it.wikipedia.org/wiki/ Berkeley_Software_Distribution) , X (http://it.wikipedia.org/wiki /X_Window_System) , ISC (http://it.wikipedia.org/wiki/ Internet_Systems_Consortium) , Apache (http://it.wikipedia.org/ wiki/Apache_Software_Foundation) , Ghostscript (http:// it.wikipedia.org/wiki/Ghostscript) , Common Unix Printing System (http://it.wikipedia.org/wiki/Common_Unix_Printing_System) , Samba (http://it.wikipedia.org/wiki/Samba_(software)) , GNOME (http://it.wikipedia.org/wiki/GNOME) , KDE (http:// it.wikipedia.org/wiki/KDE) , Mozilla (http://it.wikipedia.org/ wiki/Mozilla) , OpenOffice.org (http://it.wikipedia.org/wiki/ OpenOffice.org) , Vim (http://it.wikipedia.org/wiki/Vim_ (editor_di_testo)) , TeX (http://it.wikipedia.org/wiki/TeX) ,     LaTeX (http://it.wikipedia.org/wiki/LaTeX) , DocBook (http:// en.wikipedia.org/wiki/DocBook) , Perl (http://it.wikipedia.org/ wiki/Perl) , Python (http://it.wikipedia.org/wiki/Python) , Tcl (http://it.wikipedia.org/wiki/Tcl) , Java (http:// it.wikipedia.org/wiki/Java_(linguaggio)) , Ruby (http:// it.wikipedia.org/wiki/Ruby) , PHP (http://it.wikipedia.org/wiki/ PHP) , Berkeley DB (http://it.wikipedia.org/wiki/Berkeley_DB) , MySQL (http://it.wikipedia.org/wiki/MySQL) , PostgreSQL (http:// it.wikipedia.org/wiki/PostgreSQL) , Exim (http://en.wikipedia.org /wiki/Exim) , Postfix (http://it.wikipedia.org/wiki/Postfix) , Mutt (http://it.wikipedia.org/wiki/Mutt) , FreeBSD (http:// it.wikipedia.org/wiki/FreeBSD) , OpenBSD (http://it.wikipedia.org /wiki/OpenBSD) , Plan 9 (http://en.wikipedia.org/wiki/ Plan_9_from_Bell_Labs) e molti altri progetti software liberi indipendenti. Debian integra questa diversità del Software Libero in un unico sistema. 3. Informazioni su questo documento 3.1. Linee guida     Nella stesura di questo documento sono state seguite le seguenti linee guida. * Fornire una panoramica ed evitare casi particolari. (Vista d'insieme.) * Mantenere il testo conciso e semplice. * Non reinventare la ruota. (Usare rimandi alle risorse     esistenti.) * Concentrarsi sugli strumenti senza interfaccia utente grafica e sulla console. (Usare esempi shell.) * Essere obiettivi. (Usare popcon (http://popcon.debian.org/) , ecc.) Suggerimento     Si è cercato di spiegare aspetti gerarchici e i più bassi livelli di funzionamento del sistema. 3.2. Prerequisiti Avvertimento     Il lettore deve fare lo sforzo di cercare risposte da solo andando oltre questa documentazione. Questo documento fornisce solo degli efficaci punti di partenza.     Il lettore deve cercare le soluzioni da solo dalle fonti primarie. * Il sito Debian all'indirizzo http://www.debian.org (http:// www.debian.org/index.it.html) per le informazioni generiche. * La documentazione nella directory "/usr/share/doc/ ". * La pagina man in stile Unix: "dpkg -L |grep '/man/man.*/'" . * La pagina info in stile GNU: "dpkg -L |grep '/info/'" . * Le segnalazioni di bug: http://bugs.debian.org/ (http://www.debian.org/Bugs/index.it.html) .     * Il Debian Wiki all'indirizzo http://wiki.debian.org/ (http:// wiki.debian.org/FrontPageItalian) per gli aspetti mutevoli e gli argomenti specifici. * Gli HOWTO del progetto di documentazione di Linux TLDP (The Linux Documentation Project), all'indirizzo http://tldp.org/ (http://tldp.org/) . * Le specifiche Single UNIX Specification dal sito web di The UNIX System di Open Group, all'indirizzo http://www.unix.org/ (http://www.unix.org/) . * L'enciclopedia libera Wikipedia all'indirizzo http:// www.wikipedia.org/ (http://www.wikipedia.org/) . Nota     Per una documentazione dettagliata può essere necessario installare il corrispondente pacchetto di documentazione il cui nome ha il suffisso "-doc" . 3.3. Convenzioni Questo documento fornisce informazioni attraverso il seguente     stile semplificato di rappresentazione con esempi di comandi per la shell bash(1).     # $ Questi prompt di shell distinguono gli account usati e corrispondono a ciò che si ottiene impostando le variabili     d'ambiente in questo modo: "PS1='\$'" e "PS2=' '". Questi valori sono stati scelti per aumentare la leggibilità del documento e non sono quelli tipici di una reale installazione del sistema. Nota     Si veda il significato delle variabili d'ambiente "$PS1" e "$PS2" in bash(1). Le azioni che gli amministratori di sistema devono eseguire sono     scritte all'infinito, ad esempio "Premere il tasto Invio dopo ogni stringa di comando digitata nella shell." La colonna descrizione ed altre simili in tabelle possono contenere un sintagma nominale che segue le convenzioni per le descrizioni brevi dei pacchetti (http://www.debian.org/doc/ manuals/developers-reference/best-pkging-practices# bpp-desc-basics) e che perde l'articolo iniziale quali "un" ed "il". Le colonne possono, in alternativa, contenere una verbo al     presente seguendo la convenzione usata nella descrizione breve dei comandi nelle pagine man. Questa scelta potrà apparire strana per qualcuno, ma fa parte della scelta deliberata dell'autore di mantenere più semplice possibile lo stile di questa documentazione. In entrambi i casi l'iniziale non è maiuscola e manca il punto finale seguendo le dette convenzioni per le descrizioni brevi. Nota     I nomi propri, inclusi i nomi dei comandi mantengono la corretta iniziale maiuscola/minuscola indipendentemente dalla loro posizione. Un breve comando citato all'interno di un paragrafo di testo     viene reso dal carattere a spaziatura fissa racchiuso tra virgolette doppie come in "aptitude safe-upgrade". Dati testuali da un file di configurazione citati all'interno di     un paragrafo di testo vengono resi ‪dal carattere a spaziatura fissa racchiuso tra virgolette doppie come in "deb-src". Un comando viene reso dall'uso del carattere a spaziatura fissa per il suo nome, seguito eventualmente dal numero di sezione     della sua pagina man tra parentesi, come in bash(1). Ci si senta incoraggiati ad ottenere ulteriori informazioni digitando quanto segue.     $ man 1 bash Una pagina man viene resa dall'uso del carattere a spaziatura fissa per il suo nome seguito dal numero della sua sezione nelle     pagine man racchiuso tra parentesi, come in sources.list(5). Ci si senta incoraggiati ad ottenere ulteriori informazioni digitando quanto segue.     $ man 5 sources.list Una pagina info viene resa dal suo comando corrispondente in     carattere a spaziatura fissa racchiuso tra virgolette doppie, come in "info make". Ci si senta incoraggiati ad ottenere ulteriori informazioni digitando quanto segue.     $ info make Un nome di file viene reso dal carattere a spaziatura fissa tra     virgolette doppie, come in "/etc/passwd". Per quanto riguarda i file di configurazione ci si senta incoraggiati ad ottenere ulteriori informazioni digitando quanto segue.     $ sensible-pager "/etc/passwd" Un nome di directory viene reso dal carattere a spaziatura fissa     tra virgolette doppie, come in "/etc/init.d". Ci si senta incoraggiati ad esplorare il suo contenuto digitando quanto segue.     $ mc "/etc/init.d/" Un nome di pacchetto viene reso dal carattere a spaziatura fissa,     come in vim. Ci si senta incoraggiati ad ottenere ulteriori informazioni digitando quanto segue. $ dpkg -L vim     $ apt-cache show vim $ aptitude show vim La posizione di una documentazione può essere indicata con il nome di file in carattere a spaziatura fissa tra virgolette doppie, come in "/usr/share/doc/sysv-rc/README.runlevels.gz" e "/     usr/share/doc/base-passwd/users-and-groups.html", oppure dal suo URL (http://it.wikipedia.org/wiki/Uniform_Resource_Locator) , come in http://www.debian.org (http://www.debian.org/ index.it.html) . Ci si senta incoraggiati a leggere la documentazione digitando quanto segue. $ zcat "/usr/share/doc/sysv-rc/README.runlevels.gz" | sensible-pager     $ sensible-browser "/usr/share/doc/base-passwd/users-and-groups.html" $ sensible-browse "http://www.debian.org" Una variabile d'ambiente viene resa dal suo nome preceduto dal     segno "$" in carattere a spaziatura fissa tra virgolette doppie, come in "$TERM". Ci si senta incoraggiati ad ottenere il suo valore attuale digitando quanto segue.     $ echo "$TERM" 3.4. Popcon I dati da popcon (http://popcon.debian.org/) sono usati come misura oggettiva della popolarità di ciascun pacchetto. Sono     stati scaricati il 2013-08-14 10:05:05 UTC e contengono i dati totali inviati da 147705 rapporti su 132694 pacchetti binari e 23 architetture. Nota     Notare che l'archivio amd64 unstable contiene attualmente solo 40514 pacchetti. I dati di popcon contengono rapporti inviati da molte installazioni su sistemi vecchi. Il numero popcon, preceduto da "V:" che sta per "voti", è     calcolato così: "1000 * (rapporti popcon inviati con il pacchetto eseguito di recente sul PC)/(numero totale di rapporti popcon inviati)". Il numero popcon, preceduto da "I:" che sta per "installazioni",     è calcolato così: "1000 * (rapporti popcon inviati con il pacchetto installato sul PC)/(numero totale di rapporti popcon inviati)". Nota I numeri popcon non dovrebbero essere considerati una misura assoluta dell'importanza dei pacchetti. Ci sono molti fattori che     possono influenzare le statistiche. Per esempio, alcuni sistemi che partecipano a popcon possono avere montato directory quali "/ bin" con l'opzione "noatime" per migliorare le prestazioni di sistema, influenzando di fatto negativamente i "voti" per quel sistema. 3.5. La dimensione dei pacchetti Anche i dati sulla dimensione dei pacchetti sono usati come misura oggettiva per ciascun pacchetto. Sono basati sulla     "Installed-Size:" riportata dal comando "apt-cache show" o "aptitude show" (attualmente sull'architettura amd64 per la versione unstable). La dimensione è riportata in KiB (Kibibyte (http://it.wikipedia.org/wiki/Kibibyte) = unità di 1024 byte). Nota Una piccola dimensione per un pacchetto può indicare che esso è,     nella versione unstable un pacchetto fittizio che installa, attraverso le dipendenze, altri pacchetti con contenuti sostanziosi. Il pacchetto fittizio permette una transizione facile o una suddivisione di pacchetto. Nota     Una dimensione di pacchetto seguita da "(*)" indica che il pacchetto non è presente nella versione unstable ed è stata quindi usata la dimensione del pacchetto in experimental al suo posto. 3.6. Segnalazioni di bug in questo documento Se si trovano errori in questo documento segnalare i bug nel     pacchetto debian-reference usando reportbug(1). Se possibile, includere i suggerimenti di correzione come "diff -u alla versione in puro testo o ai sorgenti. 4. Alcune citazioni per i nuovi utenti     Ecco alcune interessanti citazioni dalla mailing list di Debian che potrebbero illuminare i nuovi utenti. * "Questo è Unix. Ti dà abbastanza corda da impiccarti." --- Miquel van Smoorenburg     * "Unix È amichevole... è solo molto selettivo riguardo i suoi amici." --- Tollef Fog Heen Wikipedia ha un articolo (in inglese) sulla "Filosofia Unix     (http://en.wikipedia.org/wiki/Unix_philosophy) " che elenca citazioni interessanti. Capitolo 1. Tutorial GNU/Linux Penso che imparare un sistema informatico sia come imparare una     lingua straniera. Anche se le guide e la documentazione sono utili, si deve fare pratica diretta. Per aiutare il lettore a iniziare dolcemente, ho elaborato alcuni punti base. Il potente design di Debian (http://www.debian.org/index.it.html) GNU (http://en.wikipedia.org/wiki/GNU) /Linux (http:// it.wikipedia.org/wiki/Linux) deriva dal sistema operativo Unix     (http://it.wikipedia.org/wiki/Unix) , cioè un sistema operativo multiutente (http://en.wikipedia.org/wiki/Multi-user) e multitasking (http://it.wikipedia.org/wiki/Multitasking) . Bisogna imparare a sfruttare la potenza di queste caratteristiche e le somiglianze tra Unix e GNU/Linux. Non bisogna scappare dai testi pensati per Unix e affidarsi     solamente a testi su GNU/Linux dato che in questo modo ci si priva di molte informazioni utili. Nota     Se si è usato tramite strumenti a riga di comando un sistema *nix (http://it.wikipedia.org/wiki/Unix-like) per un certo tempo, probabilmente si sa già tutto ciò che viene spiegato qui. Si usi questa sezione come un ripasso e per consultazioni. 1.1. Nozioni di base sulla console 1.1.1. Il prompt di shell All'avvio del sistema, se non è stato installato il Sistema X Window (http://it.wikipedia.org/wiki/X_Window_System) con un     display manager come gdm3, viene presentata la schermata di login a caratteri. Supponiamo che il proprio nome host sia pippo, il prompt di login apparirà come segue.     pippo login: Se è stato installato un ambiente GUI (http://it.wikipedia.org/ wiki/Interfaccia_grafica) come GNOME (http://it.wikipedia.org/ wiki/GNOME) o KDE (http://it.wikipedia.org/wiki/KDE) , allora ci     si può spostare ad un prompt di login premendo Ctrl-Alt-F1 e si può ritornare all'ambiente grafico con Alt-F7 (vedere Sezione 1.1.6, «Console virtuali» in seguito per maggiori informazioni). Al prompt di login digitare il proprio nome utente, ad esempio     pinguino e premere il tasto Invio, poi digitare la propria password e premere di nuovo Invio. Nota Nella tradizione Unix, il nome utente e la password di un sistema     Debian distinguono le lettere maiuscole dalle minuscole. Il nome utente di solito viene scelto usando solo lettere minuscole. Il primo account utente viene normalmente creato durante l'installazione. Account utente aggiuntivi possono essere creati da root con adduser(8). Il sistema si presenta con il messaggio di benvenuto memorizzato     in "/etc/motd" (Message Of The Day, messaggio del giorno) e fornisce un prompt dei comandi. Debian GNU/Linux lenny/sid foo tty1 pippo login: pinguino Password: Last login: Sun Apr 22 09:29:34 2007 on tty1 Linux snoopy 2.6.20-1-amd64 #1 SMP Sun Apr 15 20:25:49 UTC 2007 x86_64     The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. pippo:~$ La parte centrale del messaggio di benvenuto può essere     personalizzata modificando il file "/etc/motd.tail". La prima riga è generata a partire dalle informazioni sul sistema ottenute usando "uname -snrvm".     Si è ora nella shell (http://it.wikipedia.org/wiki/Shell_ (informatica)) . La shell interpreta i comandi dell'utente. 1.1.2. Il prompt di shell in X Se è stato installato il Sistema X Window (http:// it.wikipedia.org/wiki/X_Window_System) con un display manager come gdm3 di GNOME (http://it.wikipedia.org/wiki/GNOME) , selezionando l'attività "Ambiente desktop" durante     l'installazione, all'avvio del sistema viene presentata una schermata grafica di login. Si inseriscono il nome utente e la password per fare il login come utente non privilegiato. Usare il tasto Tab per spostarsi dal campo del nome utente a quello della password e viceversa, oppure usare il mouse e il clic principale. Si può ottenere il prompt di shell sotto X avviando un programma     emulatore di terminale come gnome-terminal(1), rxvt(1) o xterm(1) . Nell'ambiente desktop GNOME, cliccare su "Applicazioni" → "Accessori" → "Terminale" .     Si può anche fare riferimento alla sezione Sezione 1.1.6, «Console virtuali» in seguito. In altri sistemi Desktop (come fluxbox), potrebbe non esserci un     punto evidente per l'apertura del menu. Se si è in questa condizione, provare a fare clic, con il tasto destro, sullo sfondo della schermata del desktop e sperare che appaia un menu. 1.1.3. L'account root L'account root viene anche indicato come superutente (http://     it.wikipedia.org/wiki/Superuser) o utente privilegiato. Da questo account si possono eseguire i seguenti compiti amministrativi. * Leggere, scrivere e cancellare qualsiasi file sul sistema indipendentemente dai suoi permessi. * Impostare il proprietario e i permessi di qualunque file sul     sistema. * Impostare la password di qualsiasi utente non privilegiato nel sistema. * Fare il login in qualsiasi account senza la password.     Questi poteri illimitati dell'account root rendono necessario essere prudenti e responsabili nel loro uso. Avvertimento     Non comunicare mai la password di root ad altri. Nota I permessi di un file (inclusi i device hardware come CD-ROM, ecc. che sono nient'altro che un altro file per il sistema     Debian) lo possono rendere inutilizzabile o inaccessibile per gli utenti non root. Benché usare l'account root sia un metodo veloce per affrontare questo tipo di situazione, la sua soluzione dovrebbe essere l'impostazione degli appropriati permessi e gruppi proprietari per il file (vedere Sezione 1.2.3, «Permessi del file system»). 1.1.4. Il prompt di shell di root     Ecco alcuni metodi di base per ottenere il prompt di shell per root usando la password di root. * Inserire root al prompt di login a caratteri. * Cliccare su "Applicazioni" → "Accessori" → "Terminale Root", nell'ambiente Desktop GNOME. * Digitare "su -l" al prompt di shell di un utente qualsiasi.     o L'ambiente dell'utente attuale non viene in questo caso preservato. * Digitare "su" al prompt di shell di un utente qualsiasi. o L'ambiente dell'utente attuale viene in questo caso parzialmente preservato. 1.1.5. Strumenti di amministrazione del sistema con interfaccia utente grafica Quando il menu del desktop non avvia gli strumenti con interfaccia grafica per l'amministrazione di sistema con i     privilegi appropriati, si può avviarli dal prompt di shell di root dell'emulatore di terminale per X, quali gnome-terminal(1), rxvt(1) o xterm(1). Vedere Sezione 1.1.4, «Il prompt di shell di root» e Sezione 7.8.4, «Eseguire client X come root». Avvertimento     Non avviare mai il gestore di sessioni/display manager di X dall'account root inserendo root al prompt di un display manager come gdm3(1). Avvertimento     Non eseguire mai in X Window programmi con interfaccia utente grafica non fidati da remoto quando sono visualizzate informazioni critiche, dato che potrebbero spiare lo schermo X. 1.1.6. Console virtuali Nel sistema Debian standard, ci sono sei console a caratteri in stile VT100 (http://it.wikipedia.org/wiki/VT100) disponibili tra cui ci si può spostare per avviare una shell di comando direttamente sull'host Linux. A meno che non si sia in un     ambiente con interfaccia grafica, si può passare da una console virtuale all'altra usando simultaneamente il tasto_Alt_sinistro e uno dei tasti F1 — F6. Ogni console a caratteri permette un login indipendente nell'account e offre un ambiente multiutente. L'ambiente multiutente è una bellissima caratteristica di Unix e ci si può abituare presto a dipendere da esso. Se si è nel Sistema X Window, si accedere alla console a caratteri 1 premendo i tasti Ctrl-Alt-F1, cioè premendo     contemporaneamente il tasto_Ctrl_sinistro, il tasto_Alt_sinistro e il tasto_F1. Si può tornare al Sistema X Window, che di solito è in esecuzione sulla console virtuale 7, premendo Alt-F7.     In alternativa ci si può spostare in un'altra console virtuale, per esempio la console 1, dalla riga di comando.     # chvt 1 1.1.7. Come uscire dal prompt dei comandi Si digita Ctrl-D, cioè il tasto_Ctrl_sinistro e il tasto_d vengono premuti contemporaneamente al prompt dei comandi per chiuderà l'attività della shell. Se si è nella console a     caratteri, in questo modo si ritorna al prompt di login. Anche se questi caratteri di controllo vengono indicati con le lettere maiuscole, come "control D", non è necessario premere il tasto Maiusc. Per indicare Ctrl-D viene anche usata l'espressione abbreviata ^D. In alternativa si può digitare "exit".     In quest'ultimo modo, se si è in un emulatore di terminale ( x-terminal-emulator(1)), lo si può chiudere. 1.1.8. Come spegnere il sistema Esattamente come ogni altro SO moderno in cui le operazioni su file comportano una cache dei dati (http://it.wikipedia.org/wiki/ Cache) in memoria per migliorare le prestazioni, il sistema Debian ha bisogno della appropriata procedura di spegnimento prima che l'alimentazione possa essere staccata in modo sicuro.     Questo serve a preservare l'integrità dei file, forzando la scrittura su disco di tutti i cambiamenti avvenuti in memoria. Se è disponibile il controllo software dell'alimentazione, la procedura di spegnimento automaticamente toglie l'alimentazione al sistema. (In caso contrario può essere necessario tener premuto per alcuni secondi il tasto di accensione/spegnimento.)     Si può spegnere il sistema dalla riga di comando nella normale modalità multiutente.     # shutdown -h now     Si può spegnere il sistema dalla riga di comando nella modalità single-user.     # poweroff -i -f In alternativa, se "/etc/inittab" contiene "ca:12345:ctrlaltdel:/ sbin/shutdown -t1 -a -h now" al suo interno, per spegnere si può     digitare Ctrl-Alt-Canc (il tasto_Ctrl_sinistro, il tasto_Alt_sinistro e Canc sono premuti contemporaneamente). Per i dettagli vedere inittab(5).     Vedere Sezione 6.9.6, «Spegnere il sistema remoto su SSH». 1.1.9. Ripristinare una console funzionante Quando, dopo aver fatto qualcosa di strano come "cat ", lo schermo impazzisce digitare     "reset" al prompt dei comandi. Mentre lo si digita il comando potrebbe non essere visualizzato. Si può anche usare "clear" per pulire lo schermo. 1.1.10. Suggerimenti per pacchetti aggiuntivi per i principianti Sebbene anche l'installazione minima del sistema Debian, senza alcun ambiente desktop, fornisca le funzionalità Unix di base è     una buona idea installare con apt-get(8) alcuni pacchetti aggiuntivi per la riga di comando e i terminali a caratteri basati su curses, come mc e vim con cui i principianti possono fare i primi passi. Eseguire i comandi seguenti. # apt-get update     ... # apt-get install mc vim sudo ...     Se questi pacchetti sono già installati, nessun nuovo pacchetto sarà installato. Tabella 1.1. Elenco di pacchetti con interessanti programmi in modalità testuale +----------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+-------------+----------------------+-------------| | |V:87, I:243 | |Gestore di | |mc (http:// |(http:// |1381 (http:// |file testuale| |packages.debian.org|qa.debian.org|packages.qa.debian.org|a tutto | |/sid/mc) |/popcon.php? |/m/mc.html) |schermo | | |package=mc) | | | |-------------------+-------------+----------------------+-------------| | |V:378, I:757 | |Programma per| |sudo (http:// |(http:// |2039 (http:// |garantire | |packages.debian.org|qa.debian.org|packages.qa.debian.org|privilegi di | |/sid/sudo) |/popcon.php? |/s/sudo.html) |root limitati| | |package=sudo)| |agli utenti | |-------------------+-------------+----------------------+-------------| | | | |Editor di | | |V:152, I:386 | |testi Unix Vi| |vim (http:// |(http:// |1966 (http:// |IMproved, un | |packages.debian.org|qa.debian.org|packages.qa.debian.org|editor di | |/sid/vim) |/popcon.php? |/v/vim.html) |testi per | | |package=vim) | |programmatori| | | | |(versione | | | | |standard) | |-------------------+-------------+----------------------+-------------| | | | |Editor di | | |V:102, I:959 | |testi Unix Vi|     |vim-tiny (http:// |(http:// |891 (http:// |IMproved, un | |packages.debian.org|qa.debian.org|packages.qa.debian.org|editor di | |/sid/vim-tiny) |/popcon.php? |/v/vim-tiny.html) |testi per | | |package= | |programmatori| | |vim-tiny) | |(versione | | | | |compatta) | |-------------------+-------------+----------------------+-------------| | | | |Emacs dal | | |V:43, I:99 | |progetto GNU,| |emacs23 (http:// |(http:// |13103 (http:// |l'editor di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|testi | |/sid/emacs23) |/popcon.php? |/e/emacs23.html) |estensibile | | |package= | |basato su | | |emacs23) | |Lisp | | | | |(versione 23)| |-------------------+-------------+----------------------+-------------| | |V:197, I:879 | | | |w3m (http:// |(http:// |2072 (http:// |Browser Web | |packages.debian.org|qa.debian.org|packages.qa.debian.org|testuali | |/sid/w3m) |/popcon.php? |/w/w3m.html) | | | |package=w3m) | | | |-------------------+-------------+----------------------+-------------| | |V:20, I:32 | |Taglia e | |gpm (http:// |(http:// |500 (http:// |Incolla in | |packages.debian.org|qa.debian.org|packages.qa.debian.org|stile Unix | |/sid/gpm) |/popcon.php? |/g/gpm.html) |nella console| | |package=gpm) | |testuale | | | | |(demone) | +----------------------------------------------------------------------+     Potrebbe essere una buona idea leggere un po' di documentazione. Tabella 1.2. Elenco di pacchetti con documentazione interessante +---------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |---------------------+---------------------+--------------------------+----------------| | |I:858 (http:// | |Documentazione | |doc-debian (http:// |qa.debian.org/ |142 (http:// |del Progetto | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/d/ |Debian, (FAQ | |sid/doc-debian) |doc-debian) |doc-debian.html) |Debian) ed altri| | | | |documenti | |---------------------+---------------------+--------------------------+----------------| |debian-policy (http:/|I:87 (http:// |3648 (http:// |Manuale Debian | |/packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/d/ |Policy e | |sid/debian-policy) |popcon.php?package= |debian-policy.html) |documenti | | |debian-policy) | |correlati | |---------------------+---------------------+--------------------------+----------------| |developers-reference |I:10 (http:// | |Linee guida ed | |(http:// |qa.debian.org/ |1179 (http:// |informazioni per| |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/d/ |gli sviluppatori| |sid/ |developers-reference)|developers-reference.html)|Debian | |developers-reference)| | | |     |---------------------+---------------------+--------------------------+----------------| |maint-guide (http:// |I:7 (http:// |765 (http:// |Guida Debian per| |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/m/ |il nuovo | |sid/maint-guide) |popcon.php?package= |maint-guide.html) |Manutentore | | |maint-guide) | | | |---------------------+---------------------+--------------------------+----------------| |debian-history (http:|I:2 (http:// |4625 (http:// | | |//packages.debian.org|qa.debian.org/ |packages.qa.debian.org/d/ |Storia del | |/sid/debian-history) |popcon.php?package= |debian-history.html) |Progetto Debian | | |debian-history) | | | |---------------------+---------------------+--------------------------+----------------| |debian-faq (http:// |I:826 (http:// |1288 (http:// | | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/d/ |FAQ Debian | |sid/debian-faq) |popcon.php?package= |debian-faq.html) | | | |debian-faq) | | | |---------------------+---------------------+--------------------------+----------------| |sysadmin-guide (http:|I:1 (http:// |964 (http:// |Guida per | |//packages.debian.org|qa.debian.org/ |packages.qa.debian.org/s/ |l'amministratore| |/sid/sysadmin-guide) |popcon.php?package= |sysadmin-guide.html) |di sistema Linux| | |sysadmin-guide) | | | +---------------------------------------------------------------------------------------+     Si possono installare alcuni di questi pacchetti usando i comandi seguenti.     # apt-get install nome_pacchetto 1.1.11. Un account utente extra Se non si vuole usare il proprio account utente principale per le     esercitazioni descritte in seguito, si può creare un account utente per esercitarsi, ad esempio pesce con il comando seguente.     # adduser pesce     Rispondere a tutte le domande. In questo modo si crea un nuovo account chiamato pesce. Dopo aver     fatto pratica si può rimuover questo account e la sua directory home digitando quanto segue.     # deluser --remove-home pesce 1.1.12. Configurazione di sudo Per la tipica postazione di lavoro di un unico utente, come il sistema desktop Debian su un PC portatile, è frequente l'uso di     una semplice configurazione di sudo(8), come qui di seguito descritto, per permettere all'utente non privilegiato, ad esempio pinguino, di ottenere privilegi di amministratore con la sola propria password, senza quella dell'utente root.     # echo "pinguino ALL=(ALL) ALL" >> /etc/sudoers In alternativa è uso comune usare la configurazione seguente per     permettere all'utente non privilegiato, ad esempio pinguino, di ottenere privilegi di amministratore senza alcuna password.     # echo "pinguino ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers Questo trucco dovrebbe essere usato esclusivamente per le     postazioni di lavoro con un solo utente, in cui l'utente è anche l'amministratore. Avvertimento     Non impostare account per utenti regolari su postazioni di lavoro multi-utente in questo modo perché ciò sarebbe un grosso problema per la sicurezza del sistema. Attenzione     Nell'esempio precedente la password e l'account di pinguino richiedono altrettanta protezione della password e account dell'utente root. Attenzione I privilegi di amministrazione in questo contesto sono forniti a     qualcuno che è autorizzato ad eseguire i compiti di amministrazione del sistema sulla macchina. Non dare mai tali privilegi ad un manager del dipartimento di Amministrazione della propria azienda o al proprio capo, a meno che non siano autorizzati e capaci. Nota     Per fornire privilegi di accesso a specifici device e file, si dovrebbe considerare l'uso dei gruppi per dare un accesso limitato, invece di usare i privilegi di root attraverso sudo(8). Nota Con una configurazione più attenta e precisa, sudo(8) può garantire privilegi amministrativi limitati ad altri utenti in un     sistema condiviso, senza rendere nota la password di root. Questo può aiutare la tracciabilità su host con più di un amministratore, in modo che si possa dire chi ha fatto cosa. D'altra parte si potrebbe anche volere che nessuno abbia tali privilegi. 1.1.13. Tempo di giocare     Si è ora pronti a giocare con il sistema Debian senza rischi fintanto che si usa l'account utente non privilegiato. Ciò è possibile perché il sistema Debian è, anche subito dopo l'installazione predefinita, configurato con i permessi dei file corretti che impediscono agli utenti non privilegiati di     danneggiare il sistema. Ci possono essere naturalmente ancora dei punti deboli che possono essere sfruttati, ma chi si preoccupa di tali cose non dovrebbe leggere questa sezione ma piuttosto il manuale Securing Debian (http://www.debian.org/doc/manuals/ securing-debian-howto/) .     Si può imparare il sistema Debian, come sistema *nix (http:// it.wikipedia.org/wiki/Unix-like) nelle sezioni seguenti. * Sezione 1.2, «File system stile Unix» (concetti di base) * Sezione 1.3, «Midnight Commander (MC)» (sopravvivere) * Sezione 1.4, «Ambiente di lavoro di base in stile Unix»     (lavoro di base) * Sezione 1.5, «Il semplice comando di shell» (uso della shell) * Sezione 1.6, «Elaborazione di testo stile Unix» (elaborazione di testi) 1.2. File system stile Unix In GNU/Linux ed altri sistemi operativi *nix (http:// it.wikipedia.org/wiki/Unix-like) , i file (http:// it.wikipedia.org/wiki/File) sono organizzati in directory (http:/     /it.wikipedia.org/wiki/Directory) . Tutti i file e le directory sono organizzati in un unico grande albero che ha la sua radice in "/". Viene chiamato albero perché il file system, se viene disegnato, ha l'aspetto di un albero messo però sottosopra. Questi file e directory possono essere sparsi su diversi dispositivi. mount(8) serve per attaccare il file system trovato su un qualche dispositivo al grande albero dei file. Al contrario, umount(8) lo stacca. Nei kernel Linux recenti mount(8)     con alcune opzioni può collegare parte di un albero dei file in qualche altra posizione o può montare file system come condivisi, privati, slave o non-collegabili. Le opzioni di montaggio supportate per ciascun file system sono disponibili in "/share/ doc/linux-doc-*/Documentation/filesystems/". Nei sistemi Unix vengono chiamate directory quelle che in altri sistemi sono chiamate cartelle. Notare anche che non esiste in     nessun sistema Unix un concetto di unità, come "A:". C'è un solo unico file system e tutto vi è incluso. Questo è un grandissimo vantaggio rispetto a Windows. 1.2.1. Nozioni di base sui file Unix     Ecco alcune nozioni di base sui file Unix. * Nei nomi dei file si distingue tra maiuscole e minuscole. I file "MIOFILE" e "MioFile" sono cioè file diversi. * La directory root indica la radice del file system, indicata semplicemente con "/". Non la si confonda con la directory home dell'utente root: "/root". * Ogni directory ha un nome che può contenere qualsiasi lettera o simbolo tranne"/". La directory radice è un'eccezione; il suo nome è "/" (pronunciato "slash" o "directory root/ radice") e il suo nome non può essere cambiato. * Ogni file o directory è indicato da un nome di file pienamente qualificato, un nome file assoluto o un percorso, fornendo la sequenza di directory attraverso le quali si deve passare per raggiungerlo. I tre termini sono sinonimi. * Tutti i nomi di file pienamente qualificati iniziano con la directory "/" e c'è un carattere "/" tra ciascuna directory o file nel nome del file. Il primo carattere "/" è la directory di più alto livello e gli altri "/" separano le directory successive fino a che non si raggiunge l'ultima voce che è il nome del file stesso. I termini usati possono creare confusione. Prendere in considerazione come esempio il seguente nome file pienamente qualificato come esempio: "/usr /share/keytables/us.map.gz"; anche se ci si riferisce al solo nome base, "us.map.gz" come al suo nome file.     * La directory radice ha un certo numero di rami, come "/etc/" e "/usr/". Queste sottodirectory a loro volta si diramano in ulteriori sottodirectory, come "/etc/init.d/" e "/usr/local/ ". Viste tutte insieme vengono chiamate albero delle directory. Si può pensare ad un nome file assoluto come ad un percorso dalla base dell'albero ("/") alla punta di un ramo (un file). Si può anche sentir parlare dell'albero delle directory come se fosse un albero genealogico che comprende tutti i discendenti di un'unica figura detta directory radice ("/): le sottodirectory hanno perciò dei genitori e un percorso mostra gli antenati completi di un file. Ci sono anche percorsi relativi che iniziano da una qualche posizione che non sia la directory radice. Si dovrebbe tenere a mente che la directory "../" si riferisce alla directory genitore. Questa terminologia si applica anche ad altre strutture simili a quella delle directory, come le strutture di dati gerarchici. * Non c'è alcun nome speciale di percorso di directory che corrisponda ad un dispositivo fisico, come il disco fisso. Questa è una differenza rispetto a RT-11 (http:// it.wikipedia.org/wiki/RT-11) , CP/M (http://it.wikipedia.org/ wiki/CP/M) , OpenVMS (http://it.wikipedia.org/wiki/OpenVMS) , MS-DOS (http://it.wikipedia.org/wiki/MS-DOS) , AmigaOS (http: //it.wikipedia.org/wiki/AmigaOS) e Microsoft Windows (http:// it.wikipedia.org/wiki/Microsoft_Windows) , in cui il percorso contiene una porzione con il nome di dispositivo come "C:\". (Esistono tuttavia directory che si riferiscono ai dispositivi fisici come a parte del file system normale. Vedere Sezione 1.2.2, «Aspetti tecnici del file system».) Nota Benché si possa usare quasi qualsiasi lettera o simbolo nel nome di un file, in pratica farlo non è una bella idea. È meglio evitare qualsiasi carattere che ha spesso un significato     particolare sulla riga di comando, inclusi spazi, tabulazioni, a capo e altri caratteri speciali: { } ( ) [ ] ' ` " \ / > < | ; ! # & ^ * % @ $. Se si vuole separare delle parole all'interno di un nome file, buone alternative sono un punto, un trattino ed il segno di sottolineatura. Si può anche scrivere in maiuscolo ogni parola, "InQuestoModo". Gli utenti Linux esperti tendono ad evitare l'uso degli spazi nei nomi dei file. Nota     La parola "root" può significare l'"utente root" o la "directory root". Il contesto in cui il termine viene usato dovrebbe rendere chiaro il suo significato. Nota     La parola percorso non è usata solamente per un nome di file pienamente qualificato come descritto in precedenza, ma anche per il percorso di ricerca dei comandi. Il significato è di solito reso chiaro dal contesto. Le linee guida raccomandate per la gerarchia dei file sono     descritte in dettaglio nel Filesystem Hierarchy Standard ("/usr/ share/doc/debian-policy/fhs/fhs-2.3.txt.gz" e in hier(7)). Come inizio si dovrebbe tenere a mente quanto segue. Tabella 1.3. Elenco degli usi delle directory principali +---------------------------------------------------------------+ |directory|uso della directory | |---------+-----------------------------------------------------| |/ |la directory root |     |---------+-----------------------------------------------------| |/etc/ |file di configurazione a livello di sistema | |---------+-----------------------------------------------------| |/var/log/|file di registro del sistema | |---------+-----------------------------------------------------| |/home/ |tutte le directory home degli utenti non privilegiati| +---------------------------------------------------------------+ 1.2.2. Aspetti tecnici del file system Nella scia della tradizione Unix, il sistema Debian GNU/Linux fornisce il file system (http://it.wikipedia.org/wiki/ File_system) in cui risiedono i dati fisici nel disco fisso e     negli altri dispositivi di memorizzazione, ed inoltre le interazioni con i dispositivi hardware come gli schermi delle console e le console seriali remote vengono rappresentate in un modo unificato in "/dev/". Ogni file, directory, pipe con nome (un modo per due programmi di scambiare dati) o dispositivo fisico presente in un sistema Debian GNU/Linux ha una struttura di dati chiamata inode (http:// it.wikipedia.org/wiki/Inode) che descrive gli attributi ad esso associati come l'utente che lo possiede (proprietario), il gruppo a cui appartiene, la data dell'ultimo accesso ad esso, ecc. Se si     è interessati a questo aspetto, vedere "/usr/include/linux/fs.h per l'esatta definizione di "struct inode" nel sistema Debian GNU /Linux. L'idea di rappresentare praticamente tutto nel file system è stata un'innovazione di Unix e i kernel Linux moderni hanno sviluppato questa idea e sono andati oltre. Ora anche le informazioni sui processi in esecuzione sul computer possono essere trovate nel file system. La rappresentazione astratta e unificata di entità fisiche e di processi interni è molto potente dato che permette di usare lo     stesso comando per lo stesso tipo di operazione su molti tipi di device completamente diversi l'uno dall'altro. È anche possibile cambiare il modo in cui il kernel funziona scrivendo dati in file speciali che sono collegati ai processi in esecuzione. Suggerimento     Per identificare la corrispondenza tra l'albero dei file e le entità fisiche, eseguire mount(8) senza opzioni. 1.2.3. Permessi del file system I permessi del file system (http://it.wikipedia.org/wiki/     Permessi_(Unix)) di sistemi *nix (http://it.wikipedia.org/wiki/ Unix-like) sono definiti e influenzano tre categorie di utenti. * L'utente che è il proprietario del file (u).     * Gli altri utenti del gruppo a cui appartiene il file (g). * Tutti gli altriutenti (o) a cui ci si riferisce anche con i termini "mondo" e "tutti".     Per un file, a ciascun permesso corrispondono le seguenti azioni. * Il permesso di lettura (r) permette al proprietario di esaminare il contenuto del file.     * Il permesso di scrittura (w) permette al proprietario di modificare il file. * Il permesso di esecuzione (x) permette al proprietario di eseguire il file come comando.     Per una directory, a ciascun permesso corrispondono le seguenti azioni. * Il permesso di lettura (r) permette al proprietario di elencare il contenuto della directory.     * Il permesso di scrittura (w) permette al proprietario di aggiungere o rimuovere file dalla directory. * Il permesso di esecuzione (x) permette al proprietario di accedere ai file nella directory. In questo caso il permesso di esecuzione su una directory non     solo significa poter leggere i file in quella directory ma anche poterne vedere gli attributi, come la dimensione e la data di modifica. Per visualizzare le informazioni sui permessi (ed altro) di file     e directory si usa ls(1). Quando chiamato con l'opzione "-l" mostra, nell'ordine elencato in seguito, le seguenti informazioni. * Tipo di file (primo carattere). * Permessi di accesso al file (nove caratteri, tre ciascuno per utente, gruppo e altri, in questo ordine). * Numero di collegamenti fisici al file.     * Nome dell'utente proprietario del file. * Nome del gruppo a cui il file appartiene. * Dimensione in caratteri (byte) del file. * Data ed ora del file (mtime). * Nome del file. Tabella 1.4. Elenco dei valori possibili per il primo carattere nell'output di "ls -l" +--------------------------------+ |carattere|significato | |---------+----------------------| |- |file normale | |---------+----------------------| |d |directory | |---------+----------------------|     |l |collegamento simbolico| |---------+----------------------| |c |device a caratteri | |---------+----------------------| |b |device a blocchi | |---------+----------------------| |p |pipe con nome | |---------+----------------------| |s |socket | +--------------------------------+ Per cambiare il proprietario di un file da un account root si usa chown(1). Per cambiare il gruppo di un file dall'account del     proprietario o da quello di root si usa chgrp(1). Per cambiare i permessi di accesso di file o directory dall'account del proprietario o da quello di root si usa chmod(1). La sintassi di base per manipolare un file pippo è la seguente. # chown pippo     # chgrp pippo # chmod [ugoa][+-=][rwxXst][,...] pippo Per esempio si può fare in modo che l'utente pippo sia il     proprietario di un albero di directory condivisa dal gruppo pluto con i seguenti comandi. # cd /qualche/posizione/     # chown -R pippo:pluto . # chmod -R ug+rwX,o=rX .     Ci sono altri tre bit speciali di permessi. * Il bit set user ID (s o S al posto del permesso x dell'utente).     * Il bit set group ID (s o S al posto del permesso x del gruppo). * Il bit sticky (t o T al posto del permesso x degli altri).     Nell'output di "ls -l" il valore di questi bit è maiuscolo se il bit di permesso di esecuzione nascosto da essi è non impostato. L'impostazione del bit set user ID per un file eseguibile permette ad un utente di eseguire quel file con l'ID del proprietario del file (per esempio root). In modo simile,     l'impostazione del bit set group ID per un file eseguibile permette ad un utente di eseguire il file con l'ID del gruppo a cui appartiene il file (per esempio root). Poiché l'impostazione di questi bit può causare rischi in termini di sicurezza, il loro uso richiede una particolare cautela. L'impostazione del bit set group ID per una directory abilita lo     schema di creazione di file in stile BSD (http://it.wikipedia.org /wiki/Berkeley_Software_Distribution) , in cui tutti i file creati nella directory appartengono al gruppo della directory. L'impostazione dello sticky bit per una directory impedisce la rimozione di un file nella directory da parte dell'utente che non ne è il proprietario. Per preservare i contenuti di un file in directory con permessi di scrittura per tutti, come "/tmp" o in     directory con permessi di scrittura per un gruppo, non solo si deve impostare il permesso di scrittura per il file, ma anche impostare lo sticky bit per la directory. In caso contrario, qualunque utente con i permessi di scrittura per la directory può rimuovere il file e crearne uno nuovo con lo stesso nome.     Ecco alcuni interessanti esempi di permessi dei file. $ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/exim4 crw------T 1 root root 108, 0 Oct 16 20:57 /dev/ppp -rw-r--r-- 1 root root 2761 Aug 30 10:38 /etc/passwd -rw-r----- 1 root shadow 1695 Aug 30 10:38 /etc/shadow -rwsr-xr-x 1 root root 973824 Sep 23 20:04 /usr/sbin/exim4     $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src drwxrwxrwt 14 root root 20480 Oct 16 21:25 /tmp drwxrwsr-x 10 root staff 4096 Sep 29 22:50 /usr/local drwxr-xr-x 10 root root 4096 Oct 11 00:28 /usr/src drwxrwsr-x 2 root mail 4096 Oct 15 21:40 /var/mail drwxrwxrwt 3 root root 4096 Oct 16 21:20 /var/tmp Esiste un metodo numerico alternativo per descrivere i permessi     dei file con chmod(1); tale metodo numerico usa numeri ottali (base=8) di 3 o 4 cifre. Tabella 1.5. Permessi in notazione numerica per i comandi chmod (1) +---------------------------------------------------------------+ |cifra |significato | |-----------+---------------------------------------------------| |1ª cifra |somma di set user ID (=4), set group ID (=2) e | |opzionale |sticky bit (=1) |     |-----------+---------------------------------------------------| |2ª cifra |somma dei permessi di lettura (=4), scrittura (=2) | | |e esecuzione (=1) per l'utente | |-----------+---------------------------------------------------| |3ª cifra |come sopra, ma per ilgruppo | |-----------+---------------------------------------------------| |4ª cifra |come sopra, ma per gli altri | +---------------------------------------------------------------+ Sembra complicato, ma è in realtà piuttosto semplice. Se si guardano le prime colonne (2-10) nell'output del comando "ls -l" e le si leggono come una rappresentazione binaria (base=2) dei     permessi sui file (dove "-" equivale a "0" e "rwx" equivalgono a "1"), le ultime 3 cifre del valore numerico dei permessi dovrebbero apparire come la corretta rappresentazione dei permessi sui file in numerazione ottale (base=8).     Per esempio, provare a fare quanto segue. $ touch pippo pluto $ chmod u=rw,go=r pippo     $ chmod 644 pluto $ ls -l pippo pluto -rw-r--r-- 1 pinguino pinguino 0 ott 16 21:39 pluto -rw-r--r-- 1 pinguino pinguino 0 ott 16 21:35 pippo Suggerimento     Se si deve aver accesso alle informazioni visualizzate da "ls -l" in script di shell, si dovrebbero usare i comandi pertinenti, come test(1), stat(1) e readlink(1). Si possono usare anche i comandi interni della shell come "[" o "test". 1.2.4. Controllo dei permessi per i file appena creati: umask I permessi che vengono applicati ad un file o una directory     appena creati sono limitati dal comando interno della shell umask. Vedere dash(1), bash(1) e builtins(7).     (permessi del file) = (permessi del file richiesti) & ~(valore di umask) Tabella 1.6. Esempi di valori di umask +---------------------------------------------------------------+ |umask|permessi dei |permessi delle |uso | | |file creati |directory create | | |-----+----------------+---------------------+------------------|     |0022 |-rw-r--r-- |-rwxr-xr-x |scrivibile solo | | | | |dall'utente | |-----+----------------+---------------------+------------------| |0002 |-rw-rw-r-- |-rwxrwxr-x |scrivibile solo | | | | |dal gruppo | +---------------------------------------------------------------+ Il sistema Debian usa, in modo predefinito, uno schema UPG (User Private Group, gruppo privato dell'utente). Ogni volta che viene aggiunto un nuovo utente al sistema, viene creato un UPG; questo ha lo stesso nome dell'utente per il quale è stato creato e     quell'utente è l'unico membro dell'UPG. Lo schema UPG rende sicura l'impostazione della umask a 0002 dato che ogni utente ha il proprio gruppo privato. (In alcune varianti di Unix è abbastanza comune impostare tutti gli utenti normali come appartenenti ad un unico gruppo users ed è in quel caso una buona idea impostare umask a 0022 per ragioni di sicurezza.) Suggerimento     Abilitare UPG inserendo "umask 002" nel file ~/.bashrc. 1.2.5. Permessi per gruppi di utenti (gruppi) Per far sì che i permessi di un gruppo vengano applicati ad un particolare utente, tale utente deve essere inserito come membro     del gruppo usando "sudo vigr" per /etc/group e "sudo vigr -s" per /etc/gshadow. Per abilitare la nuova configurazione dei gruppi è necessario fare il log out e quindi di nuovo il login (oppure eseguire "exec newgrp"). Nota In alternativa, si possono aggiungere dinamicamente gli utenti ai     gruppi durante il processo di autenticazione aggiungendo la riga "auth optional pam_group.so" al file "/etc/pam.d/common-auth" e configurando "/etc/security/group.conf". (Vedere Capitolo 4, Autenticazione.) I dispositivi hardware sono, in un sistema Debian, semplicemente     un altro tipo di file. Se si hanno problemi ad accedere a dispositivi quali CD-ROM e chiavette USB da un account utente, si dovrebbe inserire quell'utente nel gruppo appropriato. Alcuni importanti gruppi pre-impostati dal sistema permettono ai     loro membri l'accesso a file e device particolari senza i privilegi di root. Tabella 1.7. Elenco dei principali gruppi forniti dal sistema per accesso ai file +---------------------------------------------------------------+ |gruppo |descrizione dei file e device accessibili | |-------+-------------------------------------------------------| |dialout|accesso diretto e completo alle porte seriali ("/dev/ | | |ttyS[0-3]") | |-------+-------------------------------------------------------| |dip |accesso limitato alle porte seriali per connessione IP | | |dialup a peer fidati | |-------+-------------------------------------------------------|     |cdrom |unità CD-ROM, DVD+/-RW | |-------+-------------------------------------------------------| |audio |device audio | |-------+-------------------------------------------------------| |video |device video | |-------+-------------------------------------------------------| |scanner|scanner | |-------+-------------------------------------------------------| |adm |registri di monitoraggio del sistema | |-------+-------------------------------------------------------| |staff |alcune directory per compiti minori di amministrazione:| | |""/usr/local", "/home" | +---------------------------------------------------------------+ Suggerimento È necessario far parte del gruppo dialout per riconfigurare il     modem, comporre numeri, ecc. Se però root crea file di configurazione predefiniti per i peer fidati in "/etc/ppp/peers/ ", è necessario solamente far parte del grupo dip per creare una connessione IP dialup a tali peer fidati usando i comandi pppd(8) , pon(1) e poff(1). Alcuni importanti gruppi pre-impostati dal sistema permettono ai     loro membri di eseguire particolari comandi senza i privilegi di root. Tabella 1.8. Elenco dei principali gruppi forniti dal sistema per l'esecuzione di particolari comandi +---------------------------------------------------------------+ |gruppo |comandi accessibili |     |-------+-------------------------------------------------------| |sudo |eseguire sudo senza password | |-------+-------------------------------------------------------| |lpadmin|eseguire comandi per aggiungere, modificare e rimuovere| | |stampanti dal database delle stampanti | +---------------------------------------------------------------+ Per l'elenco completo degli utenti e gruppi forniti dal sistema,     vedere la recente versione del documento "Utenti e gruppi" in "/ usr/share/doc/base-passwd/users-and-groups.html" fornito dal pacchetto base-passwd. Vedere passwd(5), group(5), shadow(5), newgrp(1), vipw(8), vigr     (8) e pam_group(8) per informazioni sui comandi di gestione di utenti e gruppi sul sistema. 1.2.6. Orari     Ci sono tre tipi di orari per un file GNU/Linux. Tabella 1.9. Elenco dei tipi di data +------------------------------------------------------+ |tipo |significato | |-----+------------------------------------------------|     |mtime|orario di modifica del file (ls -l) | |-----+------------------------------------------------| |ctime|orario di cambiamento di stato del file (ls -lc)| |-----+------------------------------------------------| |atime|orario dell'ultimo accesso al file (ls -lu) | +------------------------------------------------------+ Nota     ctime non è l'orario di creazione del file. * La sovrascrittura di un file cambia tutti gli attributi mtime , ctime e atime del file.     * Il cambiamento del proprietario o dei permessi di un file cambia gli attributi ctime e atime del file. * La lettura di un file cambia l'attributo atime di un file. Nota Persino la semplice lettura di un file su un sistema Debian genera normalmente un'operazione di scrittura sul file per     aggiornare l'informazione atime nell'inode. Montando un file system con le opzioni "noatime" o "relatime" fa sì che il sistema salti questa operazione e ciò ha come risultato un accesso ai file in lettura più veloce. Viene spesso raccomandato per i portatili, perché riduce l'attività del disco fisso e fa risparmiare energia. Vedere mount(8).     Usare il comando touch(1) per cambiare l'orario di file esistenti. Per gli orari, il comando ls produce stringhe diverse con le     localizzazioni non in inglese ("it_IT.UTF-8") rispetto alla vecchia ("C"). $ LANG=it_IT.UTF-8 ls -l pippo     -rw-rw-r-- 1 pinguino pinguino 0 ott 16 21:35 pippo $ LANG=C ls -l pippo -rw-rw-r-- 1 pinguino pinguino 0 Oct 16 21:35 pippo Suggerimento     Vedere Sezione 9.2.5, «Visualizzazione personalizzata di date e orari» per personalizzare l'output di "ls -l". 1.2.7. Collegamenti     Ci sono due metodi per associale un file "pippo" ad un diverso nome file "pluto". * Collegamento fisico (http://it.wikipedia.org/wiki/ Collegamento_fisico) o Nome duplicato per un file esistente o "ln pippo pluto"     * Collegamento simbolico o symlink (http://it.wikipedia.org/ wiki/Collegamento_simbolico) o File speciale che punta ad un altro file in base al nome o "ln -s pippo pluto" Vedere l'esempio seguente per notare i cambiamenti nel conteggio     dei collegamenti e le sottili differenze tra i risultati del comando rm. $ umask 002 $ echo "Contenuto originale" > pluto $ ls -li pluto 1449840 -rw-rw-r-- 1 penguin penguin 17 ott 16 21:42 pluto $ ln pluto paper # collegamento fisico $ ln -s pluto pippo # collegamento simbolico $ ls -li pluto paper pippo 1449840 -rw-rw-r-- 2 penguin penguin 17 ott 16 21:42 paper 1450180 lrwxrwxrwx 1 penguin penguin 3 ott 16 21:47 pippo -> pluto     1449840 -rw-rw-r-- 2 penguin penguin 17 ott 16 21:42 pluto $ rm pluto $ echo "Nuovo contenuto" > pluto $ ls -li pluto paper pippo 1449840 -rw-rw-r-- 1 penguin penguin 17 ott 16 21:42 paper 1450180 lrwxrwxrwx 1 penguin penguin 3 ott 16 21:47 pippo -> pluto 1450183 -rw-rw-r-- 1 penguin penguin 12 ott 16 21:48 pluto $ cat paper Contenuto originale $ cat pippo Nuovo contenuto Il collegamento fisico può essere creato all'interno dello stesso     file system e condivide uno stesso numero di inode, come rivela l'opzione "-i" di ls(1). Il collegamento simbolico ha sempre permessi di accesso nominali     "rwxrwxrwx, come mostrato nell'esempio precedente, ma con gli effettivi permessi di accesso stabiliti dai permessi del file a cui punta. Attenzione In generale è una buona idea non creare collegamenti simbolici     complicati o non creare collegamenti fisici per nulla, a meno di non avere una ragione molto buona per farlo. Possono diventare degli incubi quando la combinazione logica dei collegamenti simbolici crea cicli ricorsivi nel file system. Nota     È in generale preferibile usare collegamenti simbolici piuttosto che fisici, a meno che non sia abbia una buona ragione per usare un collegamento fisico. La directory "." punta alla directory in cui appare, perciò il conteggio dei collegamenti per ogni nuova directory inizia da 2.     La directory ".." punta alla directory genitore, perciò il conteggio dei collegamenti di una directory aumenta con l'aggiunta di nuove sottodirectory. Se si è appena passati da Windows a Linux, appare presto chiaro come sia ben progettato il collegamento dei nomi di file in Unix se paragonato con i collegamenti in ambiente Windows che sono     l'equivalente più prossimo in quel sistema. Dato che sono implementati nel file system, le applicazioni non possono vedere alcuna differenza tra un file collegamento ed un originale. Nel caso di collegamenti fisici, non c'è realmente nessuna differenza. 1.2.8. Pipe con nome (FIFO) Una pipe con nome (http://it.wikipedia.org/wiki/Pipe# FIFO_o_named_pipe) è un file che si comporta da pipe. Si mette     qualcosa dentro il file e questa cosa esce dall'altra parte. Questa è chiamata una FIFO (First-In-First_Out, primo ad entrare-primo ad uscire): la prima cosa che viene immessa nella pipe è la prima ad uscire dall'altra estremità. Se si scrive su una pipe con nome, il processo che sta eseguendo la scrittura nella pipe non termina fino a che l'informazione scritta nella pipe non viene letta. Se si legge da una pipe con nome, il processo di lettura attende che non ci sia più nulla da leggere prima di terminare. La dimensione della pipe è sempre     zero: non archivia dati, ma semplicemente collega due processi come fa la funzionalità fornita dalla sintassi per pipe "|" della shell. Tuttavia, dato che questa pipe ha un nome, i due processi non devono essere nella stessa riga di comando e nemmeno essere eseguiti dallo stesso utente. Le pipe sono un'innovazione di Unix di grandissimo impatto.     Per esempio, provare a fare quanto segue. $ cd; mkfifo miapipe $ echo "hello" >miapipe & # messo sullo sfondo [1] 8022 $ ls -l miapipe prw-rw-r-- 1 pinguino pinguino 0 ott 16 21:49 miapipe     $ cat miapipe hello [1]+ Done echo "hello" >miapipe $ ls miapipe miapipe $ rm miapipe 1.2.9. Socket I socket sono usati moltissimo da tutte le comunicazioni Internet, da database e dal sistema operativo stesso. Sono simili alle pipe con nome (FIFO) e permettono ai processi di scambiare informazioni anche tra computer diversi. Per un socket, non è necessario che questi processi siano in esecuzione contemporaneamente, né di essere eseguiti come processi figli di     uno stesso processo antenato. Questo è il punto culminante della comunicazione tra processi (IPC) (http://it.wikipedia.org/wiki/ Comunicazione_tra_processi) . Lo scambio di informazioni può avvenire sulla rete tra host diversi. I due più comuni sono il socket Internet (http://en.wikipedia.org/wiki/Internet_socket) e gli Unix domain socket (http://en.wikipedia.org/wiki/ Unix_domain_socket) . Suggerimento     "netstat -an" fornisce una vista d'insieme molto utile dei socket aperti su un dato sistema. 1.2.10. File di device I file di device (http://en.wikipedia.org/wiki/Device_file) fanno riferimento a dispositivi fisici o virtuali sul sistema, come i     dischi fissi, la scheda video, lo schermo o la tastiera. Un esempio di dispositivo virtuale è la console, rappresentata da "/ dev/console".     Ci sono 2 tipi di file di device. * Device a caratteri o Vi si accede un carattere alla volta. o 1 carattere = 1 byte o Es., device della tastiera, porta seriale, ...     * Device a blocchi o Vi si accede in base a unità più grandi chiamate blocchi. o 1 blocco > 1 byte o Es., dischi fissi, ... I file di device possono essere letti e scritti, anche se è probabile che i file contengano dati binari che appaiono come farfuglii incomprensibili per le persone. La scrittura diretta di dati in questi file è utile a volte per trovare la soluzione a     problemi con le connessioni hardware. Si può, per esempio, fare il dump di un file di testo in un device di stampa "/dev/lp0" o inviare comandi del modem alla porta seriale appropriata "/dev/ ttyS0". Ma, a meno che ciò non venga fatto con cautela, può causare grandissimi disastri. Perciò, essere prudenti. Nota     Per il normale accesso ad una stampante, usare lp(1).     I numeri di nodo dei device sono visualizzati se si esegue ls(1) come nell'esempio seguente. $ ls -l /dev/sda /dev/sr0 /dev/ttyS0 /dev/zero brw-rw---T 1 root disk 8, 0 Oct 16 20:57 /dev/sda     brw-rw---T+ 1 root cdrom 11, 0 Oct 16 21:53 /dev/sr0 crw-rw---T 1 root dialout 4, 64 Oct 16 20:57 /dev/ttyS0 crw-rw-rw- 1 root root 1, 5 Oct 16 20:57 /dev/zero * "/dev/sda" ha major number del device 8 e minor number del device 0. È accessibile in lettura e scrittura dagli utenti che appartengono al gruppo disk. * "/dev/sr0" ha major number del device 11 e minor number del device 0. È accessibile in lettura e scrittura dagli utenti     che appartengono al gruppo cdrom. * "/dev/ttyS0" ha major number del device 4 e minor number del device 64. È accessibile in lettura e scrittura dagli utenti che appartengono al gruppo dialout. * "/dev/zero" ha major number del device 1 e minor number del device 5. È accessibile in lettura e scrittura da chiunque.     Nei sistemi Linux moderni il file system sotto "/dev" viene popolato automaticamente dal meccanismo udev(7). 1.2.11. File di device speciali     Ci sono alcuni file di device speciali. Tabella 1.10. Elenco di file dei device speciali +---------------------------------------------------------------+ |file di|azione |descrizione della risposta | |device | | | |-------+---------+---------------------------------------------| |/dev/ |lettura |restituisce il "carattere EOF (End of File, | |null | |fine del file)" | |-------+---------+---------------------------------------------| |/dev/ |scrittura|non ritorna nulla (un pozzo senza fondo in | |null | |cui buttare via dati) | |-------+---------+---------------------------------------------| |/dev/ |lettura |ritorna il "carattere \0 (NUL)", diverso dal |     |zero | |numero zero in ASCII | |-------+---------+---------------------------------------------| |/dev/ | |ritorna caratteri a caso da un vero | |random |lettura |generatore di numeri casuali che dà reale | | | |entropia (lento) | |-------+---------+---------------------------------------------| |/dev/ | |ritorna caratteri casuali da un generatore di| |urandom|lettura |numeri pseudocasuali crittograficamente | | | |sicuro | |-------+---------+---------------------------------------------| |/dev/ |scrittura|ritorna l'errore di disco pieno (ENOSPC) | |full | | | +---------------------------------------------------------------+ Sono spesso usati insieme alla redirezione di shell (vedere     Sezione 1.5.8, «Sequenze tipiche di comandi e ridirezione della shell»). 1.2.12. procfs e sysfs procfs (http://it.wikipedia.org/wiki/Procfs) e sysfs (http:// en.wikipedia.org/wiki/Sysfs) , montati in "/proc" e "/sys" sono     pseudo-file system ed espongono strutture interne di dati del kernel nello spazio utente. In altre parole, queste voci sono virtuali, funzionano cioè come una comoda finestra sul funzionamento del sistema operativo. La directory "/proc" contiene (tra le altre cose) una sottodirectory per ciascun processo in esecuzione sul sistema che     prende nome dall'ID del processo (PID). Le utilità di sistema, come ps(1), che accedono alle informazioni sui processi, ottengono le loro informazioni da questa struttura di directory. Le directory in "/proc/sys/" contengono un'interfaccia per     cambiare certi parametri del kernel durante l'esecuzione. (Si può fare la stessa cosa tramite comandi sysctl(8) specifici o tramite il suo file di precaricamento/configurazione "/etc/sysctrl.conf". Le persone spesso vanno in panico quando si accorgono di un file in particolare, "/proc/kcore" che è particolarmente enorme. È     (più o meno) una copia del contenuto della memoria del computer ed è usato per fare il debug del kernel. È un file virtuale che punta alla memoria del computer perciò non ci si preoccupi della sua dimensione. La directory "/sys" contiene strutture dati del kernel esportate,     i loro attributi e i collegamenti tra di esse. Contiene anche un'interfaccia per cambiare alcuni parametri del kernel durante l'esecuzione. Vedere proc.txt(.gz)", "sysfs.txt(.gz)" e altri documenti     correlati nella documentazione del kernel Linux ("/usr/share/doc/ linux-doc-*/Documentation/filesystems/*") fornita dai pacchetti linux-doc-*. 1.2.13. tmpfs tmpfs (http://en.wikipedia.org/wiki/Tmpfs#Linux) è un file system temporaneo che contiene tutti i file nella memoria virtuale     (http://it.wikipedia.org/wiki/Memoria_virtuale) . I dati del tmpfs nella page cache (http://en.wikipedia.org/wiki/Page_cache) in memoria possono essere spostati nello spazio di swap (http:// it.wikipedia.org/wiki/Paging) su disco quando necessario. La directory "/run" viene montata come il tmpfs nelle prime fasi del processo di avvio. Ciò vi permette la scrittura anche quando la directory "/" è montata in sola lettura. Questa è la nuova     posizione per la memorizzazione dei file transitori e sostituisce diverse posizioni descritte nella versione 2.3 del Filesystem Hierarchy Standard (http://it.wikipedia.org/wiki/ Filesystem_Hierarchy_Standard) (Standard per la gerarchia del file system): * "/var/run" → "/run"     * "/var/lock" → "/run/lock" * "/dev/shm" → "/run/shm" Vedere "tmpfs.txt(.gz)" nella documentazione del kernel Linux ("/     usr/share/doc/linux-doc-*/Documentation/filesystems/*") fornita dai pacchetti linux-doc-*. 1.3. Midnight Commander (MC) Midnight Commander (MC) (http://it.wikipedia.org/wiki/ Midnight_Commander) è un "coltellino svizzero" GNU per la console     Linux ed altri ambienti in terminale. Dà ai principianti la possibilità di usare una console comandata da menu che è molto più facile da imparare dei comandi Unix standard.     Potrebbe essere necessario installare il pacchetto di Midnight Commander che si chiama "mc" con il seguente comando.     $ sudo apt-get install mc Usare il comando mc(1) per esplorare il sistema Debian. È il modo     migliore di imparare. Esplorare qualche posizione interessante usando semplicemente i tasti freccia e il tasto Invio. * "/etc" e le sue sottodirectory * "/var/log" e le sue sottodirectory     * "/usr/share/doc" e le sue sottodirectory * "/sbin" e "/bin" 1.3.1. Personalizzazione di MC Per far sì che MC cambi la directory di lavoro in uscita e si     sposti con cd nella directory, suggerisco di modificare "~ /.bashrc" per includere uno scipt fornito nel pacchetto mc.     . /usr/lib/mc/mc.sh Vedere mc(1) (sotto l'opzione "-P") per capirne la ragione. (Se     non è chiaro esattamento quello di cui sto parlando, si può tornare a questo più tardi.) 1.3.2. Avvio di MC     MC può essere avviato nel modo seguente.     $ mc MC si prende cura di tutte le operazioni sui file attraverso i suoi menu, richiedendo perciò solo un minimo sforzo da parte     dell'utente. Premere semplicemente F1 per ottenere la schermata di aiuto. Si può giocherellare con MC premendo semplicemente i tasti freccia e i tasti funzione. Nota     In alcune console, come gnome-terminal(1), le battute sui tasti funzione potrebbero essere rubate dal programma di console. Si possono disabilitare queste funzionalità per gnome-terminal in "Modifica" → "Scorciatoie da tastiera". Se si incontrano problemi di codifica dei caratteri con     visualizzazione di caratteri spazzatura, l'aggiunta dell'opzione "-a" alla riga di comando di MC può aiutare a prevenirli.     Se ciò non risolve i problemi di visualizzazione in MC, vedere Sezione 9.6.6, «Configurazione del terminale». 1.3.3. Gestore dei file in MC L'impostazione predefinita è con due pannelli di directory contenenti gli elenchi dei file. Un'altra utile modalità è l'impostazione della finestra destra per contenere le "informazioni" per vedere informazioni sui privilegi di accesso     dei file, ecc. Di seguito sono elencati alcuni tasti essenziali. Con il demone gpm(8) in esecuzione, si può anche usare il mouse in una console a caratteri Linux. (Assicurarsi di premeri il tasto Maiusc per ottenere il comportamento normale di taglia e incolla in MC.) Tabella 1.11. Le associazioni dei tasti di MC +---------------------------------------------------------------+ |tasto |azione associata | |---------+-----------------------------------------------------| |F1 |menu di aiuto | |---------+-----------------------------------------------------| |F3 |visualizzatore interno di file | |---------+-----------------------------------------------------| |F4 |editor interno | |---------+-----------------------------------------------------| |F9 |attiva il menu a tendina | |---------+-----------------------------------------------------|     |F10 |esce da Midnight Commander | |---------+-----------------------------------------------------| |Tab |sposta tra le due finestre | |---------+-----------------------------------------------------| |Insert o |segna il file per una operazione su più file, come la| |Ctrl-T |copia | |---------+-----------------------------------------------------| |Del |cancella il file (essere prudenti: impostare MC per | | |la modalità di cancellazione sicura) | |---------+-----------------------------------------------------| |tasti |intuitivi | |freccia | | +---------------------------------------------------------------+ 1.3.4. Trucchetti per la riga di comando di MC * Il comando cd cambia la directory mostrata nel pannello selezionato. * Ctrl-Invio o Alt-Invio copia un nome di file nella riga di comando. Usarlo con i comandi cp(1) e mv(1) assieme alla modifica della riga di comando. * Alt-Tab mostra le scelte date dall'espansione di shell dei nomi di file.     * Si possono specificare le directory iniziali per entrambe le finestre come argomenti per MC; per esempio, "mc /etc /root". * Esc + tasto n → Fn (cioè, Esc + 1 → F1, ecc.; Esc + 0 → F10) * Premere Esc prima di un tasto ha lo stesso effetto di premere Alt ed il tasto contemporaneamente; premere cioè Esc + c per Alt-C. Esc è chiamato meta-tasto ed è a volte indicato con "M-". 1.3.5. L'editor interno di MC L'editor interno ha un interessante schema per il taglia e incolla. La pressione di F3 marca l'inizio di una selezione, una seconda pressione di F3 marca la fine della selezione e la     evidenzia. Si può poi muovere il cursore. Se si preme F6, l'area selezionata viene spostata nella posizione del cursore. Se si preme F5 l'area selezionata viene copiata ed inserita alla posizione del cursore. F2 salva il file. F10 fa uscire. La maggior parte dei tasti cursore funziona in modo intuitivo.     Si può avviare direttamente questo editor su di un file usando uno dei comandi seguenti.     $ mc -e nome_del_file_da_modificare     $ mcedit nome_del_file_da_modificare Questo non è un editor multi-finestra, ma si possono usare più console Linux per ottenere lo stesso effetto. Per copiare tra     finestre, usare i tasti Alt-F per cambiare console virtuale e usare "File→Insert file" o "File→Copy to file" per spostare una porzione di un file in un altro file.     Questo editor interno può essere rimpiazzato da qualsiasi editor esterno a propria scelta. Inoltre molti programmi usano la variabile d'ambiente "$EDITOR" o "$VISUAL" per decidere quale editor usare. Se inizialmente non ci     si trova a proprio agio con vim(1) o nano(1), si può impostare queste variabili a "mcedit" aggiungendo le righe seguenti al file "~/.bashrc".     export EDITOR=mcedit export VISUAL=mcedit     Io raccomando di impostarle a "vim", se possibile. Se non ci si trova a proprio agio con vim(1), si può continuare     ad usare mcedit(1) per la maggior parte dei compiti di manutenzione del sistema. 1.3.6. Il visualizzatore interno di MC MC è un visualizzatore molto intelligente. È un grande strumento per cercare parole in documenti. Lo uso sempre per i file nella     directory "/usr/share/doc". È il metodo più veloce per navigare tra una massa di informazioni Linux. Questo visualizzatore può essere avviato direttamente usando uno dei comandi seguenti.     $ mc -v percorso/del/nome_file_da_visualizzare     $ mcview percorso/del/nome_file_da_visualizzare 1.3.7. Funzionalità di avvio automatico di MC Se si preme Invio su di un file, un programma appropriato gestirà     il contenuto del file (vedere Sezione 9.5.11, «Personalizzare i programmi da avviare»). Questa è una funzionalità molto comoda di MC. Tabella 1.12. La reazione al tasto Invio in MC +---------------------------------------------------------------+ |tipo di file |reazione al tasto Invio | |------------------+--------------------------------------------| |file eseguibile |esegue comando | |------------------+--------------------------------------------| |file man |invia i contenuti tramite pipe al software |     | |di visualizzazione | |------------------+--------------------------------------------| |file html |invia i contenuti tramite pipe al browser | | |web | |------------------+--------------------------------------------| |file "*.tar.gz" e |naviga i suoi contenuti come se fosse una | |"*.deb" |sottodirectory | +---------------------------------------------------------------+ Per far sì che queste funzionalità di visualizzazione dei file e     di file virtuali funzionino, i file visualizzabili non dovrebbero essere impostati come eseguibili. Cambiare il loro stato usando chmod(1) o attraverso il menu file di MC. 1.3.8. File system FTP virtuale di MC MC può essere usato per accedere a file in Internet usando FTP. Premere F9 per andare nel menu, poi digitare "p" per attivare il     file system FTP virtuale. Inserire un URL nella forma "nomeutente:password@nomehost.nomedominio" e la directory remota apparirà come una directory locale.     Provare "[http.us.debian.org/debian]" come URL e navigare nell'archivio Debian. 1.4. Ambiente di lavoro di base in stile Unix Anche se MC permette di fare quasi tutto, è bene imparare come     usare gli strumenti a riga di comando invocati dal prompt di shell e prendere familiarità con l'ambiente di lavoro in stile Unix. 1.4.1. La shell di login     Si può selezionare la propria shell di login con chsh(1). Tabella 1.13. Elenco di programmi shell +-------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |Shell|descrizione | | | | |POSIX| | |-------------------+-------------+----------------------+-----+----------------------| | |V:868, I:999 | | |Bash (http:// | |bash (http:// |(http:// |3942 (http:// | |it.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sì |Bash) : GNU Bourne | |/sid/bash) |/popcon.php? |/b/bash.html) | |Again SHell (standard | | |package=bash)| | |de facto) | |-------------------+-------------+----------------------+-----+----------------------| | | | | |TENEX C Shell (http://| | |V:26, I:98 | | |it.wikipedia.org/wiki/| |tcsh (http:// |(http:// |1378 (http:// | |Tcsh) : una versione | |packages.debian.org|qa.debian.org|packages.qa.debian.org|No |migliorata di Berkeley| |/sid/tcsh) |/popcon.php? |/t/tcsh.html) | |csh (http:// | | |package=tcsh)| | |en.wikipedia.org/wiki/| | | | | |C_shell) | |-------------------+-------------+----------------------+-----+----------------------| | |V:826, I:906 | | |Debian Almquist Shell | |dash (http:// |(http:// |212 (http:// | |(http:// | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sì |en.wikipedia.org/wiki/| |/sid/dash) |/popcon.php? |/d/dash.html) | |Almquist_shell) , | | |package=dash)| | |buona per script di | | | | | |shell | |-------------------+-------------+----------------------+-----+----------------------| | |V:30, I:68 | | |Z shell (http:// | |zsh (http:// |(http:// |1836 (http:// | |en.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sì |Z_shell) : la shell | |/sid/zsh) |/popcon.php? |/z/zsh.html) | |standard con molti | | |package=zsh) | | |miglioramenti | |-------------------+-------------+----------------------+-----+----------------------| | |V:1, I:13 | | |versione di dominio | |pdksh (http:// |(http:// |44 (http:// | |pubblico della Korn | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sì |shell (http:// | |/sid/pdksh) |/popcon.php? |/p/pdksh.html) | |it.wikipedia.org/wiki/| | |package= | | |Korn_shell) |     | |pdksh) | | | | |-------------------+-------------+----------------------+-----+----------------------| | | | | |C Shell OpenBSD (http:| | |V:4, I:16 | | |//it.wikipedia.org/ | |csh (http:// |(http:// |340 (http:// | |wiki/OpenBSD) , una | |packages.debian.org|qa.debian.org|packages.qa.debian.org|No |versione di Berkeley | |/sid/csh) |/popcon.php? |/c/csh.html) | |csh (http:// | | |package=csh) | | |en.wikipedia.org/wiki/| | | | | |C_shell) | |-------------------+-------------+----------------------+-----+----------------------| | | | | |Stand-alone shell | | |V:1, I:8 | | |(http:// | |sash (http:// |(http:// |946 (http:// | |en.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sì |Stand-alone_shell) con| |/sid/sash) |/popcon.php? |/s/sash.html) | |comandi interni (non | | |package=sash)| | |adatta per essere la "| | | | | |/bin/sh" standard) | |-------------------+-------------+----------------------+-----+----------------------| | |V:5, I:27 | | |la versione reale di | |ksh (http:// |(http:// |3145 (http:// | |AT&T della Korn shell | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sì |(http:// | |/sid/ksh) |/popcon.php? |/k/ksh.html) | |it.wikipedia.org/wiki/| | |package=ksh) | | |Korn_shell) | |-------------------+-------------+----------------------+-----+----------------------| | | | | |implementazione della | | |V:0, I:9 | | |rc shell (http:// | |rc (http:// |(http:// |169 (http:// | |it.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|No |Rc_shell) di AT&T Plan| |/sid/rc) |/popcon.php? |/r/rc.html) | |9 (http:// | | |package=rc) | | |en.wikipedia.org/wiki/| | | | | |Plan_9_from_Bell_Labs)| |-------------------+-------------+----------------------+-----+----------------------| | |V:0, I:0 | | | | |posh (http:// |(http:// |201 (http:// | |Policy-compliant | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Sì |Ordinary SHell | |/sid/posh) |/popcon.php? |/p/posh.html) | |(derivata da pdksh) | | |package=posh)| | | | +-------------------------------------------------------------------------------------+ Suggerimento     Sebbene le shell in stile POSIX condividano la stessa sintassi di base, esse possono differire nel comportamento relativo a cose anche basilari, come le variabili della shell e l'espansione dei modelli glob. Per i dettagli controllare la loro documentazione.     In questo capitolo del tutorial la shell interattiva considerata è sempre bash. 1.4.2. Personalizzare bash     Si può personalizzare il comportamento di bash(1) con "~ /.bashrc".     Per esempio provare quanto segue. # CD quando si esce da MC . /usr/lib/mc/mc.sh # impostare il CDPATH ad un buon valore CDPATH=.:/usr/share/doc:~:~/Desktop:~ export CDPATH     PATH="${PATH}":/usr/sbin:/sbin # impostare PATH in modo che includa la directory bin privata dell'utente se esiste if [ -d ~/bin ] ; then PATH=~/bin:"${PATH}" fi export PATH EDITOR=vim export EDITOR Suggerimento     Si possono trovare altri suggerimenti sulla personalizzazione di bash(1), come Sezione 9.2.7, «Comandi colorati», in Capitolo 9, Suggerimenti per il sistema. 1.4.3. Associazioni di tasti speciali Nell'ambiente *nix (http://it.wikipedia.org/wiki/Unix-like) , ci sono alcune associazioni di tasti che hanno un significato     speciale. Notare che in una console a caratteri Linux normale solo i tasti Ctrl e Altsinistri funzionano come atteso. Ecco alcune combinazioni di tasti che vale la pena ricordare. Tabella 1.14. Elenco di associazioni di tasti per bash +---------------------------------------------------------------+ |tasto |descrizione dell'associazione di tasti | |---------------------+-----------------------------------------| |Ctrl-U |cancella il contenuto della riga prima | | |del cursore | |---------------------+-----------------------------------------| |Ctrl-H |cancella il carattere prima del cursore | |---------------------+-----------------------------------------| |Ctrl-D |termina l'input (se si sta usando la | | |shell, esce dalla shell) | |---------------------+-----------------------------------------| |Ctrl-C |termina un programma in esecuzione | |---------------------+-----------------------------------------| |Ctrl-Z |arresta temporaneamente un programma | | |spostandolo come compito sullo sfondo | |---------------------+-----------------------------------------| |Ctrl-S |ferma l'output a schermo. | |---------------------+-----------------------------------------|     |Ctrl-Q |riattiva l'output a schermo. | |---------------------+-----------------------------------------| |Ctrl-Alt-Del |riavvia/ferma il sistema, vedere inittab | | |(5) | |---------------------+-----------------------------------------| |Left-Alt-key |meta-tasto per Emacs e interfacce utente | |(opzionalmente, tasto|simili | |Windows) | | |---------------------+-----------------------------------------| |freccia in su |avvia la ricerca nello storico dei | | |comandi in bash | |---------------------+-----------------------------------------| |Ctrl-R |inizia una ricerca incrementale nello | | |storico dei comandi in bash | |---------------------+-----------------------------------------| |Tab |completa l'input di un nome di file nella| | |riga di comando in bash | |---------------------+-----------------------------------------| |Ctrl-V Tab |inserisce in input un carattere Tab senza| | |espansione nella riga di comando in bash | +---------------------------------------------------------------+ Suggerimento     La funzionalità di Ctrl-S nel terminale può essere disabilitata usando stty(1). 1.4.4. Funzionamento del mouse in stile Unix     Il funzionamento del mouse in stile Unix è basato sul sistema a 3 pulsanti. Tabella 1.15. Elenco delle funzioni del mouse in stile Unix +---------------------------------------------------------------+ |azione |risposta | |----------------------+----------------------------------------| |Clic sinistro e |seleziona e copia negli appunti | |trascinamento | | |----------------------+----------------------------------------|     |Clic sinistro |marca l'inizio della selezione | |----------------------+----------------------------------------| |Clic destro |marca la fine della selezione e copia | | |negli appunti | |----------------------+----------------------------------------| |Clic di mezzo |incolla gli appunti alla posizione del | | |cursore | +---------------------------------------------------------------+ La rotella centrale presente nei mouse moderni viene considerata come il pulsante di mezzo e può essere usata per fare il corrispondente clic. Cliccare contemporaneamente con i pulsanti     destro e sinistro funziona da clic di mezzo nelle situazioni in cui si hanno mouse a 2 pulsanti. Per poter usare il mouse in una console a caratteri Linux è necessario che gpm(8) sia in esecuzione come demone. 1.4.5. Il paginatore less(1) è il paginatore (navigatore del contenuto dei file) migliorato. Premere "h" per l'aiuto. Può fare molto di più di more(1) e può essere fornito di superpoteri eseguendo "eval $     (lesspipe)" o "eval $(lessfile)" nello script di avvio della shell. Vedere ulteriori informazioni in "/usr/share/doc/lessf/ LESSOPEN". L'opzione "-R" permette output raw e abilita le sequenze di escape ANSI per i colori. Vedere less(1). 1.4.6. L'editor di testo Si dovrebbe diventare competenti in una delle varianti dei     programmi Vim (http://it.wikipedia.org/wiki/Vim_ (editor_di_testo)) o Emacs (http://it.wikipedia.org/wiki/Emacs) che sono popolari sui sistemi *nix. Penso che abituarsi ai comandi Vim sia la cosa giusta da fare, dato che un editor Vi è sempre presente nel mondo Linux/Unix. (In     realtà, il vi originale o il nuovo nvi sono programmi che si trovano ovunque. Io ho scelto invece Vim per i principianti dato che offre l'aiuto attraverso il tasto F1 pur essendo abbastanza simile e più potente.) Se si sceglie invece Emacs (http://it.wikipedia.org/wiki/Emacs) o XEmacs (http://it.wikipedia.org/wiki/XEmacs) come editor preferito, si sta facendo comunque davvero un'ottima scelta, specialmente per la programmazione. Emacs ha una vastità di altre funzionalità, incluso il funzionamento come newsreader, editor di directory, programma di posta, ecc. Quando usato per la     programmazione o la scrittura di script, riconosce intelligentemente il formato che si sta usando e cerca di fornire assistenza. Alcune persone sostengono che l'unico programma di cui hanno bisogno su Linux è Emacs. Dieci minuti spesi ad imparare Emacs ora possono far risparmiare ore in futuro. È caldamente raccomandato avere a portata di mano il manuale di GNU Emacs da consultare quando si sta imparando Emacs. Tutti questi programmi sono di solito forniti con un programma tutor che aiuta ad impararli facendo pratica. Avviare Vim     digitando "vim" e premere il tasto F1. Si dovrebbero leggere come minimo le prime 35 righe. Poi seguire il corso di apprendimento in linea muovendo il cursore su "|tutor|" e premendo Ctrl-]. Nota I buoni editor, come Vim ed Emacs, possono gestire correttamente testi UTF-8 e testi in altre codifiche esotiche. È opportuno     usare l'ambiente X con la localizzazione UTF-8 e installare i programmi e i tipi di carattere necessari. Gli editor hanno opzioni per impostare la codifica dei file indipendentemente dall'ambiente X. Fare riferimento alla loro documentazione sui testi multibyte. 1.4.7. Impostare un editor di testi predefinito     Debian è fornita con svariati editor differenti. Si raccomanda di installare, come detto in precedenza, il pacchetto vim. Debian fornisce un accesso unificato all'editor predefinito di     sistema attraverso il comando "/usr/bin/editor" in modo che altri programmi (ad esempio reportbug(1)) possano richiamarlo. Lo si può modificare con il comando seguente.     $ sudo update-alternatives --config editor Io raccomando ai principianti la scelta di "/usr/bin/vim.basic"     invece di"/usr/bin/vim.tiny" dato che supporta l'evidenziazione della sintassi. Suggerimento Molti programmi usano la variabile d'ambiente "$EDITOR" o     "$VISUAL" per decidere quale editor usare (vedereSezione 1.3.5, «L'editor interno di MC» e Sezione 9.5.11, «Personalizzare i programmi da avviare». Per coerenza, in un sistema Debian, impostare queste variabili a "/usr/bin/editor". (Storicamente "$EDITOR" era "ed" e "$VISUAL" era "vi".) 1.4.8. Personalizzare vim     Si può personalizzare il comportamento di vim(1) tramite "~ /.vimrc".     Per esempio, provare a fare quanto segue. " ------------------------------- " Configurazione locale " set nocompatible set nopaste set pastetoggle= syn on if $USER == "root"     set nomodeline set noswapfile else set modeline set swapfile endif " riempimento per evitare che la riga sopra sia considerata una modeline " riempimento " riempimento 1.4.9. Registrare le attività della shell L'output dei comandi di shell può scorrere fuori dallo schermo e potrebbe essere perduto per sempre. È buona norma registrare le     attività di shell in un file in modo da poterle riguardare in seguito. Questo tipo di registro è essenziale quando si fa una qualsiasi attività di amministrazione del sistema.     Il metodo base per registrare l'attività di shell è di eseguirla sotto script(1).     Per esempio, provare a fare quanto segue.     $ script Script è avviato, il file è typescript     Eseguire qualsiasi comando di shell sotto script.     Premere Ctrl-D per uscire da script.     $ vim typescript     Vedere Sezione 9.2.3, «Registrare le attività della shell in modo pulito». 1.4.10. Comandi Unix di base È bene imparare i comandi Unix di base. Il termine "Unix" è qui usato in senso lato; ogni SO clone di Unix offre di solito comandi equivalenti. Il sistema Debian non fa eccezione. Non ci     si preoccupi se, al momento, alcuni comandi non funzionano come si vorrebbe. Se si usa alias nella shell, i corrispondenti output dei comandi sono diversi. Questi esempi non sono pensati per essere eseguiti necessariamente in questo ordine.     Provare tutti i comandi seguenti da un account utente non privilegiato. Tabella 1.16. Elenco di comandi Unix di base +---------------------------------------------------------------+ |comando |descrizione | |---------------+-----------------------------------------------| |pwd |mostra il nome della directory attuale/di | | |lavoro | |---------------+-----------------------------------------------| |whoami |mostra il nome dell'utente attuale | |---------------+-----------------------------------------------| |id |mostra l'identità dell'utente attuale (nome, | | |uid, gid e gruppi associati) | |---------------+-----------------------------------------------| |file |mostra che tipo di file sia il file "" | |---------------+-----------------------------------------------| |type -p |mostra la posizione del file del comando " | | |" | |---------------+-----------------------------------------------| |which |" " | | | | |---------------+-----------------------------------------------| |type |mostra informazioni sul comando ""| | | | |---------------+-----------------------------------------------| |apropos |trova comandi riguardanti "" | || | |---------------+-----------------------------------------------| |man -k |" " | || | |---------------+-----------------------------------------------| |whatis |mostra una spiegazione di una riga sul comando | | |"" | |---------------+-----------------------------------------------| |man -a |mostra una spiegazione del comando " | | |" (in stile Unix) | |---------------+-----------------------------------------------| |info |mostra una spiegazione piuttosto lunga del | | |comando "" (in stile GNU) | |---------------+-----------------------------------------------| |ls |elenca il contenuto di directory (non i file | | |punto e le directory) | |---------------+-----------------------------------------------| |ls -a |elenca il contenuto di directory (tutti i file | | |e directory) | |---------------+-----------------------------------------------| |ls -A |elenca il contenuto di directory (quasi tutti i| | |file e directory, cioè salta ".." e ".") | |---------------+-----------------------------------------------| |ls -la |elenca tutto il contenuto di directory con | | |informazioni dettagliate | |---------------+-----------------------------------------------| |ls -lai |elenca tutto il contenuto di directory con | | |numeri di inode e informazioni dettagliate | |---------------+-----------------------------------------------| |ls -d |elenca tutte le directory dentro la directory | | |attuale | |---------------+-----------------------------------------------| |tree |mostra il contenuto in forma di albero | |---------------+-----------------------------------------------| |lsof |mostra lo stato aperto per il file "" | |---------------+-----------------------------------------------| |lsof -p |mostra i file aperti dal processo con ID "| | |" | |---------------+-----------------------------------------------| |mkdir |crea una nuova directory "" nella | | |directory attuale | |---------------+-----------------------------------------------| |rmdir |rimuove la directory "" nella directory | | |attuale | |---------------+-----------------------------------------------| | |cambia directory spostandosi nella directory " | |cd |" nella directory attuale o in una | | |directory elencata nella variabile "$CDPATH" | |---------------+-----------------------------------------------| |cd / |cambia directory spostandosi nella directory | | |radice | |---------------+-----------------------------------------------| |cd |cambia directory spostandosi nella directory | | |home dell'utente | |---------------+-----------------------------------------------| |cd / |cambia directory spostandosi nella directory | | |con percorso assoluto "/" | |---------------+-----------------------------------------------| |cd .. |cambia directory spostandosi nella directory | | |genitore | |---------------+-----------------------------------------------| |cd ~ |cambia directory spostandosi nella directory | | |home dell'utente "" | |---------------+-----------------------------------------------| |cd - |cambia directory spostandosi nella directory | | |precedente | |---------------+-----------------------------------------------| |" vuoto | | | | |---------------+-----------------------------------------------| |cp |copia un file "" esistente in un nuovo | | |file "" | |---------------+-----------------------------------------------| |rm |rimuove il file "" | | | | |---------------+-----------------------------------------------| |mv |rinomina un file "" esistente con il | | |nuovo nome "" ("" non deve | | |esistere) | |---------------+-----------------------------------------------|     |mv |muove un file "" esistente nella nuova | | |posizione "/" (la directory " | | |" deve esistere) | |---------------+-----------------------------------------------| |mv |muove un file "" esistente in una nuova | |/ |posizione con il nuovo nome "/| | |" (la directory "" deve esistere ma non | | |deve esistere "/") | |---------------+-----------------------------------------------| |chmod 600 |fa sì che il file "" esistente sia non | | |leggibile e non scrivibile da altri (e non | | |eseguibile per nessuno) | |---------------+-----------------------------------------------| |chmod 644 |fa sì che il file "" esistente sia | | |leggibile ma non scrivibile da altri (e non | | |eseguibile per nessuno) | |---------------+-----------------------------------------------| |chmod 755 |fa sì che il file "" esistente sia | | |leggibile ma non scrivibile da altri (ed | | |eseguibile per tutti) | |---------------+-----------------------------------------------| |find . -name |trova nomi di file corrispondenti al "| | |" di shell (lento) | |---------------+-----------------------------------------------| |locate -d . |trova nomi di file corrispondenti al "| | |" di shell (più veloce, usa un database | | |generato regolarmente) | |---------------+-----------------------------------------------| |grep -e " |trova un "" in tutti i file nella | |" |directory attuale che terminano con ".html" e | |*.html |mostra tutte le corrispondenze | |---------------+-----------------------------------------------| |top |mostra informazioni sui processi a tutto | | |schermo, digitare "q" per uscire | |---------------+-----------------------------------------------| |ps aux | pager |mostra informazioni su tutti i processi in | | |esecuzione usando output in stile BSD | |---------------+-----------------------------------------------| |ps -ef | pager |mostra informazioni su tutti i processi in | | |esecuzione usando output in stile system V Unix| |---------------+-----------------------------------------------| |ps aux | grep |mostra tutti i processi che stanno eseguendo | |-e "[e]xim4*" |"exim" e "exim4" | |---------------+-----------------------------------------------| |ps axf | pager |mostra informazioni su tutti i processi in | | |esecuzione usando output in ASCII art | |---------------+-----------------------------------------------| |kill <1234> |uccide un processo identificato dall'ID "<1234>| | |" | |---------------+-----------------------------------------------| |gzip |comprime " per creare ".gz", | | |usando la codifica Lempel-Ziv (LZ77) | |---------------+-----------------------------------------------| |gunzip |decomprime ".gz" per creare "" | |.gz | | |---------------+-----------------------------------------------| | |comprime "" per creare ".bz2", | | |usando l'algoritmo Burrows-Wheeler per la | |bzip2 |compressione di testo con ordinamento di | | |blocchi e la codifica Huffman (compressione | | |migliore di gzip) | |---------------+-----------------------------------------------| |bunzip2 |decomprime ".bz2" per creare "" | |.bz2 | | |---------------+-----------------------------------------------| | |comprime "" per creare ".xz", | |xz |usando l'algoritmo Lempel–Ziv–Markov chain | | |(compressione migliore di bzip2) | |---------------+-----------------------------------------------| |unxz .xz|decomprime ".xz" per creare "" | |---------------+-----------------------------------------------| |tar -xvf |estrae i file dall'archivio ".tar" | |.tar | | |---------------+-----------------------------------------------| |tar -xvzf |estrae file dall'archivio ".tar.gz" | |.tar.gz |compresso con gzip | |---------------+-----------------------------------------------| |tar -xvjf |estrae file dall'archivio ".tar.bz2" | |.tar.bz2| | |---------------+-----------------------------------------------| |tar -xvJf |estrae file dall'archivio ".tar.xz" | |.tar.xz | | |---------------+-----------------------------------------------| |tar -cvf |archivia i contenuti della directory "/"| |.tar |nell'archivio ".tar" | |/ | | |---------------+-----------------------------------------------| |tar -cvzf |archivia i contenuti della directory "/"| |.tar.gz |nell'archivio compresso ".tar.gz" | |/ | | |---------------+-----------------------------------------------| |tar -cvjf |archivia i contenuti della directory "/| |.tar.bz2|" nell'archivio ".tar.bz2" | |/ | | |---------------+-----------------------------------------------| |tar -cvJf |archivia i contenuti della directory "/| |.tar.xz |" nell'archivio ".tar.xz" | |/ | | |---------------+-----------------------------------------------| |zcat README.gz |mostra i contenuti del file compresso | || pager |"README.gz" usando il paginatore predefinito | |---------------+-----------------------------------------------| |zcat README.gz |crea un file "pippo con i contenuti di | |> pippo |"README.gz" decompressi | |---------------+-----------------------------------------------| |zcat README.gz |aggiunge i contenuti di "README.gz" decompressi| |>> pippo |in coda al file "pippo" (se il file non esiste,| | |lo crea) | +---------------------------------------------------------------+ Nota     Unix tradizionalmente nasconde i nomi di file che iniziano con ".". Sono tradizionalmente file contenenti informazioni di configurazione e preferenze dell'utente. Nota     Per il comando cd vedere builtins(7). Nota Il paginatore predefinito del sistema di base di Debian è more(1)     che non ha lo scorrimento all'indietro. Installando il pacchetto less, con la riga di comando "apt-get install less", less(1) diventa il paginatore predefinito e si può così scorrere il testo all'indietro usando i tasti freccia. Nota I caratteri "[" e "]" nella espressione regolare del comando "ps aux | grep -e "[e]xim4*"" sopra citato, permettono a grep di evitare di trovare corrispondenza con sé stesso. La parte "4*"     nella espressione regolare significa 0 o più ripetizioni del carattere "4" e perciò permette a grep di trovare corrispondenza sia con "exim" sia con "exim4". Sebbene il carattere "*" sia usato nei nomi di file con metacaratteri della shell e nelle espressioni regolari, il suo significato è diverso nei due casi. Si possono imparare le espressioni regolari da grep(1). Come esercizio, esplorare le directory e dare un'occhiata al     sistema usando i comandi citati sopra. Se si hanno domande su uno qualsiasi dei comandi in console, assicurarsi di leggere la pagina di manuale.     Per esempio, provare a fare quanto segue. $ man man $ man bash     $ man builtins $ man grep $ man ls Può essere un po' difficile abituarsi allo stile delle pagine man     perché sono piuttosto concise, in particolar modo le più vecchie e tradizionali. Una volta che ci si fa la mano, però, si apprezza la loro concisione. Notare che molti comandi in stile Unix, inclusi quelli da GNU e     BSD, mostrano una breve informazione di aiuto se li si invoca in uno dei modi seguenti (o in alcuni casi se lo si fa senza usare opzioni).     $ --help $ -h 1.5. Il semplice comando di shell Ora si ha un'idea di come usare il sistema Debian; è tempo di     dare uno sguardo più approfondito al meccanismo di esecuzione dei comandi nel sistema Debian. Qui la realtà è stata semplificata ad uso del principiante. Vedere bash(1) per una spiegazione esatta.     Un semplice comando è formato da una sequenza di componenti. 1. Assegnazioni di variabili (opzionale) 2. Nome del comando     3. Opzioni (opzionali) 4. Ridirezioni (opzionali, > , >> , < , << , ecc.) 5. Operatori di controllo (opzionale, && , || , , ; , & , ( , ) ) 1.5.1. Esecuzione dei comandi e variabili d'ambiente I valori di alcune variabili d'ambiente (http://en.wikipedia.org/     wiki/Environment_variable) cambiano il comportamento di alcuni comandi Unix. I valori predefiniti delle variabili d'ambiente sono impostati     inizialmente dal sistema PAM e poi alcuni di essi possono essere reimpostati da alcuni programmi applicativi. * Il display manager, come gdm3, reimposta variabili d'ambiente.     * La shell reimposta variabili d'ambiente nel suo codice di avvio in "~/bash_profile" e "~/.bashrc". 1.5.2. La variabile "$LANG"     Il valore completo di localizzazione impostato nella variabile "$LANG" consiste di 3 parti: "xx_YY.ZZZZ". Tabella 1.17. Le 3 parti del valore di localizzazione +---------------------------------------------------------------+ |valore di |significato | |localizzazione| | |--------------+------------------------------------------------| |xx |codice ISO 639 della lingua (in minuscole), come|     | |"en" (http://it.wikipedia.org/wiki/ISO_639) | |--------------+------------------------------------------------| |YY |codice ISO 3166 del paese (in maiuscole) come | | |"US" (http://en.wikipedia.org/wiki/ISO_3166-3) | |--------------+------------------------------------------------| |ZZZZ |codeset, impostato sempre ad "UTF-8" (http:// | | |en.wikipedia.org/wiki/Codeset) | +---------------------------------------------------------------+     Per i codici delle lingue e dei paesi, vedere le descrizioni pertinenti in "info gettext". In un sistema Debian moderno il codeset dovrebbe essere sempre     impostato a UTF-8, a meno che non si voglia specificatamente usare uno usato in passato e avendo una buona ragione e le conoscenze per farlo.     Per dettagli più specifici sulla configurazione della localizzazione vedere Sezione 8.3, «La localizzazione». Nota     "LANG=en_US" non è "LANG=C" né "LANG=en_US.UTF-8". È "LANG= en_US.ISO-8859-1" (vedere Sezione 8.3.1, «Nozioni base sulla codifica»). Tabella 1.18. Elenco di localizzazioni raccomandate +---------------------------------------------------------------+ |localizzazione raccomandata|lingua (zona) | |---------------------------+-----------------------------------| |en_US.UTF-8 |inglese (USA) | |---------------------------+-----------------------------------| |en_GB.UTF-8 |inglese (Gran Bretagna) | |---------------------------+-----------------------------------| |fr_FR.UTF-8 |francese (Francia) | |---------------------------+-----------------------------------| |de_DE.UTF-8 |tedesco (Germania) | |---------------------------+-----------------------------------| |it_IT.UTF-8 |italiano (Italia) | |---------------------------+-----------------------------------| |es_ES.UTF-8 |spagnolo (Spagna) | |---------------------------+-----------------------------------|     |ca_ES.UTF-8 |catalano (spagna) | |---------------------------+-----------------------------------| |sv_SE.UTF-8 |svedese (Svezia) | |---------------------------+-----------------------------------| |pt_BR.UTF-8 |portoghese (Brasile) | |---------------------------+-----------------------------------| |ru_RU.UTF-8 |russo (Russia) | |---------------------------+-----------------------------------| |zh_CN.UTF-8 |cinese (Repubblica Popolare Cinese)| |---------------------------+-----------------------------------| |zh_TW.UTF-8 |cinese (Taiwan Repubblica di Cina) | |---------------------------+-----------------------------------| |ja_JP.UTF-8 |giapponese (Giappone) | |---------------------------+-----------------------------------| |ko_KR.UTF-8 |coreano (Corea del Sud) | |---------------------------+-----------------------------------| |vi_VN.UTF-8 |vietnamita (Vietnam) | +---------------------------------------------------------------+     Una tipica esecuzione di un comando usa una sequenza sulla riga della shell come la seguente. $ date     Sun Jun 3 10:27:39 JST 2007 $ LANG=fr_FR.UTF-8 date dimanche 3 juin 2007, 10:27:33 (UTC+0900)     In questo caso il programma date(1) viene eseguito con valori differenti della variabile d'ambiente "$LANG". * Per il primo comando "$LANG" è impostata al valore di localizzazione (http://it.wikipedia.org/wiki/Localizzazione# Il_concetto_di_Locale) predefinito di sistema: "en_US.UTF-8".     * Per il secondo comando "$LANG" è impostata al valore di localizzazione (http://it.wikipedia.org/wiki/Localizzazione# Il_concetto_di_Locale) UTF-8 francese: fr_FR.UTF-8". La maggior parte delle invocazioni di comandi non è solitamente     preceduta da definizioni di variabili d'ambiente. In alternativa all'esempio precedente, si può eseguire quanto segue. $ LANG=fr_FR.UTF-8     $ date dimanche 3 juin 2007, 10:27:33 (UTC+0900) Come si può vedere, l'output del comando è in questo caso influenzato dalla variabile d'ambiente per produrre output in     francese. Se si desidera che una variabile d'ambiente venga ereditata da sottoprocessi, ad esempio quando si invocano script di shell, è necessario invece esportarla nel modo seguente.     $ export LANG Nota     Quando si usa un tipico terminale in console, la variabile d'ambiente "$LANG" è solitamente impostata per essere esportata dall'ambiente desktop. Perciò quello sopra non è veramente un buon esempio per testare l'effetto di export. Suggerimento     Quando si segnala un bug, è una buona idea, se si usa un ambiente non inglese, eseguire e controllare il comando nella localizzazione "LANG=en_US.UTF-8".     Vedere locale(5) e locale(7) per "$LANG" e variabili d'ambiente correlate. Nota     Io raccomando di configurare l'ambiente di sistema usando solo la variabile "$LANG" e di tenersi alla larga dalle variabili "$LC_*" a meno che non sia strettamente necessario. 1.5.3. La variabile "$PATH" Quando si digita un comando nella shell, questa cerca il comando     nelle directory nell'elenco contenuto nella variabile d'ambiente "$PATH". Il valore della variabile d'ambiente "$PATH" è anche chiamato percorso di ricerca della shell. In una installazione Debian standard, la variabile d'ambiente "$PATH" degli account utente può non includere "/sbin" e "/usr/     sbin". Il comando ifconfig, per esempio, deve essere eseguito con il percorso completo, come in "/sbin/ifconfig". (Il comando simile ip si trova in "/bin".)     Si può modificare la variabile d'ambiente "$PATH" della shell Bash tramite il file "~/.bash_profile" o "~/.bashrc". 1.5.4. La variabile "$HOME" Molti comandi memorizzano una configurazione specifica per     l'utente nella directory home e cambiano il loro comportamento in base al suo contenuto. La directory home è identificata dalla variabile d'ambiente "$HOME". Tabella 1.19. Elenco di valori di "$HOME" +---------------------------------------------------------------+ |valore di |situazione di esecuzione del programma | |"$HOME" | | |----------------+----------------------------------------------| |/ |programma eseguito da processo init (demone) | |----------------+----------------------------------------------| |/root |programma eseguito dalla normale shell di root| |----------------+----------------------------------------------| |/home/ |programma eseguito dalla shell di un utente |     ||normale | |----------------+----------------------------------------------| |/home/ |programma eseguito dal menu del desktop | ||grafico di un utente normale | |----------------+----------------------------------------------| |/home/ |programma eseguito come root con "sudo | ||programma" | |----------------+----------------------------------------------| |/root |programma eseguito come root con "sudo -H | | |programma" | +---------------------------------------------------------------+ Suggerimento     La shell espande "~/ nella directory home dell'utente attuale, cioè "$HOME/". La shell espande "~pippo/" nella directory home di pippo, cioè "/home/pippo/". 1.5.5. Opzioni della riga di comando Alcuni comandi accettano argomenti. Gli argomenti che iniziano     con "-" o "--" sono chiamati opzioni e controllano il comportamento del comando. $ date     dom apr 18 23:22:36 CEST 2010 $ date -R Sun, 18 Apr 2010 23:23:08 +0200 In questo caso l'opzione "-R" sulla riga di comando cambia il     comportamento di date(1) producendo in output la data in una stringa conforme alla RFC2822 (http://tools.ietf.org/html/ rfc2822) . 1.5.6. Glob della shell Spesso si desidera che un comando abbia effetto su un gruppo di     file senza dover digitarli tutti. I modelli di espansione dei nomi di file che usano i glob della shell, a volte detti metacaratteri o caratteri jolly, facilitano questo compito. Tabella 1.20. Modelli di glob della shell +---------------------------------------------------------------+ |modello di | | |glob della |descrizione della regola di corrispondenza | |shell | | |--------------+------------------------------------------------| |* |nome file (segmento) che non inizia con "." | |--------------+------------------------------------------------| |.* |nome file (segmento) che inizia con "." | |--------------+------------------------------------------------|     |? |esattamente un carattere | |--------------+------------------------------------------------| |[…] |esattamente un carattere tra quelli racchiusi | | |tra le parentesi quadre | |--------------+------------------------------------------------| |[a-z] |esattamente un carattere che sia un carattere | | |compreso tra "a" e "z" | |--------------+------------------------------------------------| | |esattamente un carattere che non sia uno di | |[^…] |quelli racchiusi tra parentesi quadre (non | | |contando "^") | +---------------------------------------------------------------+     Per esempio, provare a fare quanto segue. $ mkdir prova; cd prova; touch 1.txt 2.txt 3.c 4.h .5.txt ..6.txt $ echo *.txt 1.txt 2.txt $ echo * 1.txt 2.txt 3.c 4.h $ echo *.[hc]     3.c 4.h $ echo .* . .. .5.txt ..6.txt $ echo .*[^.]* .5.txt ..6.txt $ echo [^1-3]* 4.h $ cd ..; rm -rf prova     Vedere glob(7). Nota A differenza della normale espansione dei nomi della shell, il     modello shell "*" cercato dal comando find(1) con la ricerca "-name" ecc., trova corrispondenza anche con nomi di file che iniziano con ".". (Nuova funzionalità POSIX (http:// it.wikipedia.org/wiki/POSIX) .) Nota     Si può manipolare il comportamento di BASH in relazione ai modelli di glob usando le sue opzioni shopt incorporate come "dotglob", "noglob", "nocaseglob", "nullglob", "extglob", ecc. Vedere bash(1). 1.5.7. Valore restituito dal comando     Ogni comando restituisce il suo stato di uscita (variabile "$?") come valore restituito. Tabella 1.21. Codici di uscita dei comandi +---------------------------------------------------------------+ |stato di uscita del |valore numerico |valore logico | |comando |restituito |restituito |     |---------------------+---------------------+-------------------| |successo |zero, 0 |VERO | |---------------------+---------------------+-------------------| |errore |non-zero, -1 |FALSO | +---------------------------------------------------------------+     Per esempio provare quanto segue. $ [ 1 = 1 ] ; echo $?     0 $ [ 1 = 2 ] ; echo $? 1 Nota     Notare che, nel contesto logico della shell, il successo è trattato come il valore logico VERO che ha valore numerico 0 (zero). Questo è in qualche modo non intuitivo ed è bene rimarcarlo. 1.5.8. Sequenze tipiche di comandi e ridirezione della shell È bene cercare di ricordare i seguenti idiomi per comandi di     shell che vengono digitati sulla stessa riga come parte del comando di shell. Tabella 1.22. Idiomi per comandi di shell +---------------------------------------------------------------+ |idioma per |descrizione | |comando | | |------------+--------------------------------------------------| |comando & |esegue comando sullo sfondo in una sotto-shell | |------------+--------------------------------------------------| |comando1 | |invia tramite pipe lo standard output di comando1 | |comando2 |allo standard input di comando2 (esecuzione | | |concorrente) | |------------+--------------------------------------------------| |comando1 2>&|invia tramite pipe sia lo standard output sia lo | |1 | comando2|standard error di comando1 allo standard input di | | |comando2 (esecuzione concorrente) | |------------+--------------------------------------------------| |comando1 ; |esegue comando1 e comando2 in sequenza | |comando2 | | |------------+--------------------------------------------------| |comando1 && |esegue comando1; se ha successo, esegue comando2 | |comando2 |in sequenza (restituisce lo stato di successo se | | |sia comando1 sia comando2 hanno successo) | |------------+--------------------------------------------------| |comando1 || |esegue comando1; se non ha successo, esegue | |comando2 |comando2 in sequenza (restituisce lo stato di | | |successo se comando1 o comando2 ha successo) | |------------+--------------------------------------------------|     |comando > |ridirige lo standard output di comando al file | |pippo |"pippo" (sovrascrivendolo) | |------------+--------------------------------------------------| |comando 2> |ridirige lo standard error di comando al file | |pippo |"pippo" (sovrascrivendolo) | |------------+--------------------------------------------------| |comando >> |ridirige lo standard output di comando al file | |pippo |"pippo" (aggiungendo in coda) | |------------+--------------------------------------------------| |comando 2>> |ridirige lo standard error di comando al file | |pippo |"pippo" (aggiungendo in coda) | |------------+--------------------------------------------------| |comando > |ridirige sia lo standard output sia lo standard | |pippo 2>&1 |error di comando al file pippo | |------------+--------------------------------------------------| |comando < |usa come standard input di comando il file "pippo"| |pippo | | |------------+--------------------------------------------------| |comando << |usa come standard input di comando le righe che | |delimitatore|seguono fino a che non viene incontrato il testo | | |"delimitatore" (inserire un documento) | |------------+--------------------------------------------------| | |usa come standard input di comando le righe che | |comando <<- |seguono fino a che non viene incontrato il testo | |delimitatore|"delimitatore"; i caratteri di tabulazione | | |iniziali vengono eliminate dal testo (inserire un | | |documento) | +---------------------------------------------------------------+ Il sistema Debian è un sistema multi-tasking. I compiti sullo sfondo permettono agli utenti di eseguire più programmi in una     singola shell. La gestione dei processi sullo sfondo coinvolge i comandi interni della shell jobs, fg, bg e kill. Leggere le sezioni "SIGNALS" e "JOB CONTROL" di bash(1) e builtins(1).     Per esempio, provare a fare quanto segue.     $ pippo $ exec 3pluto # apre i file     $ cat <&3 >&4 # ridirige lo stdin in 3, lo stdout in 4 $ exec 3<&- 4>&- # chiude i file $ cat pluto Hello     I descrittori di file 0-2 sono predefiniti. Tabella 1.23. Descrittori di file predefiniti +-------------------------------------------+ |device|descrizione |descrittore del file| |------+---------------+--------------------|     |stdin |standard input |0 | |------+---------------+--------------------| |stdout|standard output|1 | |------+---------------+--------------------| |stderr|standard error |2 | +-------------------------------------------+ 1.5.9. Alias di comandi     Si possono impostare alias per i comandi usati di frequente.     Per esempio, provare a fare quanto segue.     $ alias la='ls -la'     Ora "la" funziona da scorciatoia per "ls -la" che elenca tutti i file nel formato di elencazione esteso.     Si possono elencare tutti gli alias esistenti con alias (vedere la sezione "SHELL BUILTIN COMMANDS" in bash(1)). $ alias     ... alias la='ls -la' Si può identificare il percorso esatto o l'identità di un comando     con type (vedere la sezione "SHELL BUILTIN COMMANDS") di bash(1) ).     Per esempio, provare a fare quanto segue. $ type ls ls is hashed (/bin/ls) $ type la     la is aliased to ls -la $ type echo echo is a shell builtin $ type file file is /usr/bin/file In questo caso ls era stato cercato di recente mentre "file" no,     percio "ls" risulta "hashed", cioè la shell ha un record interno per un accesso veloce alla posizione del comando "ls". Suggerimento     Vedere Sezione 9.2.7, «Comandi colorati». 1.6. Elaborazione di testo stile Unix Nell'ambiente di lavoro Unix, l'elaborazione del testo viene     fatta instradando il testo tramite pipe attraverso catene di strumenti standard per l'elaborazione del testo. Questa è stata un'altra fondamentale innovazione di Unix. 1.6.1. Strumenti Unix per il testo     Ci sono alcuni strumenti di elaborazione del testo che sono usati molto spesso in un sistema *nix. * Senza l'uso di alcuna espressione regolare: o cat(1) concatena file e produce in output il contenuto totale. o tac(1) concatena file e produce l'output in senso inverso. o cut(1) seleziona parti di righe e le produce in output. o head(1) produce in output la prima parte di file. o tail(1) produce in output l'ultima parte di file. o sort(1) ordina righe in file di testo. o uniq(1) rimuove righe duplicate da un file ordinato. o tr(1) trasforma o elimina caratteri. o diff(1) paragona file riga per riga. * Con l'uso di espressioni regolari di base (BRE): o grep(1) trova corrispondenze di testo con modelli. o ed(1) è un primitivo editor di riga.     o sed(1) è un editor di flussi. o vim(1) è un editor a schermo. o emacs(1) è un editor a schermo (con BRE un po' estese) * Con l'uso di espressioni regolari estese (ERE): o egrep(1) trova corrispondenze di testo con modelli. o awk(1) fa semplici elaborazioni di testo. o tcl(3tcl) può fare ogni elaborazione di testo immaginabile: vedere re_syntax(3). Spesso usato con tk (3tk). o perl(1) può fare ogni elaborazione di testo immaginabile. Vedere perlre(1). o pcregrep(1) dal pacchetto pcregrep trova corrispondenze di testo con modelli PCRE (Perl Compatible Regular Expressions) (http://en.wikipedia.org/wiki/ Perl_Compatible_Regular_Expressions) . o python(1) con il modulo re può fare ogni elaborazione di testo immaginabile. Vedere "/usr/share/doc/python/html/ index.html".     Se non si è sicuri di cosa facciano esattamente questi comandi, usare "man comando" per scoprirlo. Nota Il criterio di ordinamento e le espressioni di intervalli     dipendono dalla localizzazione. Se si desidera ottenere il comportamento tradizionale di un comando, usare la localizzazione C invece di quelle UTF-8 anteponendo al comando "LANG=C" (vedere Sezione 1.5.2, «La variabile "$LANG"» e Sezione 8.3, «La localizzazione»). Nota Le espressioni regolari Perl (http://it.wikipedia.org/wiki/Perl)     (perlre(1)), le PCRE (Perl Compatible Regular Expressions) (http: //en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) e le espressioni regolari Python (http://it.wikipedia.org/wiki/Python) fornite dal modulo re hanno molte estensioni comuni delle normali ERE. 1.6.2. Espressioni regolari Le espressioni regolari (http://it.wikipedia.org/wiki/     Espressione_regolare) sono usate in molti strumenti di elaborazione del testo. Sono analoghe ai modelli di glob della shell, ma sono più complesse e potenti. Una espressione regolare descrive il modello a cui trovare     corrispondenza ed è composta da caratteri di testo e metacaratteri. Un metacarattere è semplicemente un carattere con un significato     speciale. Ci sono 2 stili principali, BRE e ERE, a seconda degli strumenti di testo descritti in precedenza. Tabella 1.24. Metacaratteri per BRE e ERE +---------------------------------------------------------------+ |BRE |ERE |descrizione della espressione regolare | |--------+------+-----------------------------------------------| |\ . [ ] |\ . [ | | |^ $ * |] ^ $ |metacaratteri comuni | | |* | | |--------+------+-----------------------------------------------| |\+ \? \(| |metacaratteri protetti dal carattere "\" di | |\) \{ \}|  |escape solo di BRE | |\| | | | |--------+------+-----------------------------------------------| | |+ ? ( |metacaratteri non protetti dal carattere "\" di| |  |) { } |escape solo di ERE | | || | | |--------+------+-----------------------------------------------| |c |c |corrisponde al non metacarattere "c" | |--------+------+-----------------------------------------------| |\c |\c |corrisponde al carattere letterale "c" anche se| | | |"c" è in sé stesso un metacarattere | |--------+------+-----------------------------------------------| |. |. |corrisponde a qualsiasi carattere incluso il | | | |carattere di a capo | |--------+------+-----------------------------------------------| |^ |^ |posizione all'inizio di una stringa | |--------+------+-----------------------------------------------|     |$ |$ |posizione alla fine di una stringa | |--------+------+-----------------------------------------------| |\< |\< |posizione all'inizio di una parola | |--------+------+-----------------------------------------------| |\> |\> |posizione alla fine di una parola | |--------+------+-----------------------------------------------| |[abc…] |[abc…]|corrisponde ad ogni carattere in "abc..." | |--------+------+-----------------------------------------------| |[^abc…] |[^ |corrisponde ad ogni carattere eccetto a quelli | | |abc…] |in "abc..." | |--------+------+-----------------------------------------------| |r* |r* |corrisponde a zero o più occorrenze della | | | |espressione regolare identificata da "r" | |--------+------+-----------------------------------------------| |r\+ |r+ |corrisponde ad una o più occorrenza della | | | |espressione regolare identificata da "r" | |--------+------+-----------------------------------------------| |r\? |r? |corrisponde a zero o una occorrenza | | | |dell'espressione regolare identificata da "r" | |--------+------+-----------------------------------------------| |r1\|r2 |r1|r2 |corrisponde ad una occorrenza della espressione| | | |regolare identificata da "r1" o "r2" | |--------+------+-----------------------------------------------| | | |corrisponde ad una occorrenza dell'espressione | |\(r1\|r2|(r1| |regolare identificata da "r1" o "r2" e la | |\) |r2) |tratta come una espressione regolare tra | | | |parentesi | +---------------------------------------------------------------+ Le espressioni regolari di emacs sono fondamentalmente BRE, ma     sono state estese per trattare "+" e "?" come i metacaratteri nelle ERE. Perciò, nelle espressioni regolari di emacs, non è necessario proteggerli con il carattere di escape "\".     Per effettuare ricerche di testo usando espressioni regolari si può usare grep(1).     Per esempio, provare a fare quanto segue. $ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL     GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE Yoyodyne, Inc., hereby disclaims all copyright interest in the program Suggerimento     Vedere Sezione 9.2.7, «Comandi colorati». 1.6.3. Espressioni di sostituzione     Per le espressioni di sostituzione alcuni caratteri hanno un significato particolare. Tabella 1.25. L'espressione di sostituzione +---------------------------------------------------------------+ |espressione di|descrizione del testo che sostituirà | |sostituzione |l'espressione di sostituzione | |--------------+------------------------------------------------|     |& |ciò che ha ha avuto corrispondenza con | | |l'espressione regolare (usare \& in emacs) | |--------------+------------------------------------------------| | |ciò che ha avuto corrispondenza con la n-esima | |\n |espressione regolare tra parentesi ("n" è un | | |numero) | +---------------------------------------------------------------+     Per sostituzioni di stringhe in Perl "$n" viene usato al posto di "\n" e "&" non ha un significato particolare.     Per esempio, provare a fare quanto segue. $ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/' zzz=1abc2efg3hij4= $ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/'     zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/' zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=&=/' zzz=&= In questo esempio si faccia particolare attenzione allo stile     delle espressioni regolari tra parentesi e come le stringhe corrispondenti siano usate nel processo di sostituzione del testo dai diversi strumenti.     Queste espressioni regolari possono essere usate per spostare il cursore e per fare sostituzioni di testo anche in alcuni editor. La barra inversa, "\" alla fine della prima riga nella riga di     comando di shell protegge il carattere di a capo rendendolo uno spazio e continuando l'input della riga di comando di shell nella riga successiva.     Leggere tutte le pagine man relative per imparare l'uso di questi comandi. 1.6.4. Sostituzione globale con espressioni regolari     Il comando ed(1) può sostituire tutte le occorrenze di "DA_REGEX" con "A_TESTO" in "file". $ ed file <, e Essere prudenti nell'uso di questi trucchetti di shell con IFS.     Possono accadere strane cose quando la shell interpreta alcune parti dello script come suo input. $ IFS=":," # usa ":" e "," come IFS $ echo IFS=$IFS, IFS="$IFS" # echo e' un comando interno di Bash IFS= , IFS=:, $ date -R # un output di comando qualunque     Sat, 23 Aug 2003 08:30:15 +0200 $ echo $(date -R) # sotto-shell --> input alla shell principale Sat 23 Aug 2003 08 30 36 +0200 $ unset IFS # reimposta il valore predefinito di IFS $ echo $(date -R) Sat, 23 Aug 2003 08:30:50 +0200 1.6.6. Frammenti di script per comandi con pipe     Gli script seguenti fanno alcune cose carine se inseriti in una pipe. Tabella 1.26. Elenco di frammenti di script per comandi con pipe +---------------------------------------------------------------+ |frammento di script | | |(digitarlo in un'unica |effetto del comando | |riga) | | |------------------------+--------------------------------------| |find /usr -print |trova tutti i file in "/usr" | |------------------------+--------------------------------------| |seq 1 100 |stampa da 1 a 100 | |------------------------+--------------------------------------| | |esegue ripetutamente il comando con | || xargs -n 1 |ogni elemento dalla pipe come | | |argomento | |------------------------+--------------------------------------| || xargs -n 1 echo |suddivide elementi separati da spazio | | |nella pipe su righe distinte | |------------------------+--------------------------------------| || xargs echo |unisce tutte le righe dalla pipe in | | |una riga | |------------------------+--------------------------------------| || grep -e |estrae dalla pipe le righe che | | |contengono ‪ | |------------------------+--------------------------------------| || grep -v -e |estrae dalla pipe le righe che non | | |contengono | |------------------------+--------------------------------------| || cut -d: -f3 - |estrae dalla il terzo campo, separato | | |da ":" (file passwd, ecc.) | |------------------------+--------------------------------------|     || awk '{ print $3 }' |estrae dalla pipe il terzo campo | | |separato da spazi | |------------------------+--------------------------------------| || awk -F'\t' '{ print $3|estrae dalla pipe il terzo campo | |}' |separato da tabulazioni | |------------------------+--------------------------------------| | |rimuove i caratteri backspace ed | || col -bx |espande le tabulazioni in sequenze di | | |spazi | |------------------------+--------------------------------------| || expand - |espande le tabulazioni | |------------------------+--------------------------------------| || sort| uniq |ordina e rimuove i duplicati | |------------------------+--------------------------------------| || tr 'A-Z' 'a-z' |converte le maiuscole in minuscole | |------------------------+--------------------------------------| || tr -d '\n' |concatena le righe in un'unica riga | |------------------------+--------------------------------------| || tr -d '\r' |rimuove i caratteri di a capo | |------------------------+--------------------------------------| || sed 's/^/# /' |aggiunge "#" all'inizio di ogni riga | |------------------------+--------------------------------------| || sed 's/\.ext//g' |rimuove ".ext" | |------------------------+--------------------------------------| || sed -n -e 2p |stampa la seconda riga | |------------------------+--------------------------------------| || head -n 2 - |stampa le prime due righe | |------------------------+--------------------------------------| || tail -n 2 - |stampa le ultime due righe | +---------------------------------------------------------------+ Uno script di shell di una riga può operare reiteratamente su più file usando find(1) e xargs(1) per fare compiti piuttosto     complicati. Vedere Sezione 10.1.5, «Esempi di invocazione per la selezione di file» e Sezione 9.5.9, «Ripetere un comando su diversi file». Quando usare la shell in modalità interattiva diventa troppo     complicato, considerare la scrittura di uno script di shell (vedere Sezione 12.1, «Script shell»). Capitolo 2. Gestione dei pacchetti in Debian Nota     Questo capitolo è stato scritto assumendo che il rilascio stabile più recente abbia nome in codice: squeeze. Debian (http://www.debian.org/index.it.html) è un'organizzazione     di volontari che crea distribuzioni coerenti di pacchetti binari precompilati di software libero e li distribuisce dal suo archivio. L'archivio Debian (http://ftp.us.debian.org/debian/) viene fornito da molti siti mirror remoti (http://www.debian.org/mirror     /index.it.html) per l'accesso con i metodi HTTP e FTP. È anche disponibile come CD-ROM/DVD (http://www.debian.org/CD/ index.it.html) . Il sistema di gestione dei pacchetti di Debian, se usato in modo     corretto, permette all'utente di installare dall'archivio insiemi coerenti di pacchetti binari sul sistema. Attualmente ci sono 40514 pacchetti disponibili per l'architettura amd64. Il sistema di gestione dei pacchetti di Debian ha una storia ricca e fornisce molti programmi con interfacce per l'utente     finale e molti metodi di backend per l'accesso agli archivi tra cui scegliere. Attualmente le scelte raccomandate sono le seguenti. * apt-get(8) per tutte le operazioni dalla riga di comando, incluse le installazioni e le rimozioni di pacchetti nonché gli aggiornamenti dist-upgrade.     * aptitude(8) per un'interfaccia testuale interattiva per gestire i pacchetti installati e per cercare i pacchetti disponibili. * update-manager(8) per mantenere il sistema aggiornato se si usa il desktop GNOME predefinito. Tabella 2.1. Elenco degli strumenti Debian di gestione dei pacchetti +----------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |--------------------+--------------------+-------------------------+--------------------| | | | |Advanced Packaging | | | | |Tool (APT), frontend| | |V:862, I:999 (http:/| |per dpkg che | |apt (http:// |/qa.debian.org/ |3447 (http:// |fornisce i metodi | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/a/|"http", "ftp" e | |sid/apt) |apt) |apt.html) |"file" per 'accesso | | | | |agli archivi | | | | |(inclusi i comandi | | | | |apt-get/apt-cache) | |--------------------+--------------------+-------------------------+--------------------| |aptitude (http:// |V:228, I:990 (http:/|4541 (http:// |gestore di pacchetti| |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/a/|interattivo basato | |sid/aptitude) |popcon.php?package= |aptitude.html) |su terminale con | | |aptitude) | |aptitude(8) | |--------------------+--------------------+-------------------------+--------------------| | |V:54, I:963 (http://| |strumento per | |tasksel (http:// |qa.debian.org/ |714 (http:// |selezionare attività| |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/t/|per l'installazione | |sid/tasksel) |tasksel) |tasksel.html) |sul sistema Debian | | | | |(frontend per APT) | |--------------------+--------------------+-------------------------+--------------------| | | | |pacchetto di | |unattended-upgrades |V:56, I:454 (http://| |estensione per APT | |(http:// |qa.debian.org/ |312 (http:// |per abilitare | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/u/|l'installazione | |sid/ |unattended-upgrades)|unattended-upgrades.html)|automatica degli | |unattended-upgrades)| | |aggiornamenti di | | | | |sicurezza | |--------------------+--------------------+-------------------------+--------------------| | | | |gestore di pacchetti| | |V:10, I:89 (http:// | |basato su terminale | |dselect (http:// |qa.debian.org/ |2516 (http:// |(standard | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/d/|precedente, frontend| |sid/dselect) |dselect) |dselect.html) |per APT e altri | | | | |vecchi metodi di |     | | | |accesso) | |--------------------+--------------------+-------------------------+--------------------| |dpkg (http:// |V:919, I:999 (http:/|6427 (http:// |sistema di gestione | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/d/|dei pacchetti per | |sid/dpkg) |popcon.php?package= |dpkg.html) |Debian | | |dpkg) | | | |--------------------+--------------------+-------------------------+--------------------| |synaptic (http:// |V:108, I:457 (http:/|7632 (http:// |gestore grafico dei | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/s/|pacchetti (front-end| |sid/synaptic) |popcon.php?package= |synaptic.html) |GNOME per APT) | | |synaptic) | | | |--------------------+--------------------+-------------------------+--------------------| | | | |programmi di utilità| |apt-utils (http:// |V:409, I:997 (http:/|1362 (http:// |APT: | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/a/|apt-extracttemplates| |sid/apt-utils) |popcon.php?package= |apt-utils.html) |(1), apt-ftparchive | | |apt-utils) | |(1) e apt-sortpkgs | | | | |(1) | |--------------------+--------------------+-------------------------+--------------------| |apt-listchanges |V:356, I:734 (http:/| |strumento di | |(http:// |/qa.debian.org/ |203 (http:// |notifica dello | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/a/|storico dei | |sid/apt-listchanges)|apt-listchanges) |apt-listchanges.html) |cambiamenti dei | | | | |pacchetti | |--------------------+--------------------+-------------------------+--------------------| |apt-listbugs (http:/|V:10, I:16 (http:// |443 (http:// |elenca i bug critici| |/packages.debian.org|qa.debian.org/ |packages.qa.debian.org/a/|prima di ogni | |/sid/apt-listbugs) |popcon.php?package= |apt-listbugs.html) |installazione di APT| | |apt-listbugs) | | | |--------------------+--------------------+-------------------------+--------------------| | |V:20, I:92 (http:// | |utilità APT per | |apt-file (http:// |qa.debian.org/ |69 (http:// |ricerca di | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/a/|pacchetti, | |sid/apt-file) |apt-file) |apt-file.html) |interfaccia a riga | | | | |di comando | |--------------------+--------------------+-------------------------+--------------------| |apt-rdepends (http:/|V:1, I:8 (http:// |64 (http:// |elenca le dipendenze| |/packages.debian.org|qa.debian.org/ |packages.qa.debian.org/a/|dei pacchetti in | |/sid/apt-rdepends) |popcon.php?package= |apt-rdepends.html) |modo ricorsivo | | |apt-rdepends) | | | +----------------------------------------------------------------------------------------+ 2.1. Prerequisiti per la gestione dei pacchetti Debian 2.1.1. Configurazione dei pacchetti     Questi sono alcuni punti fondamentali per la configurazione dei pacchetti in un sistema Debian. * La configurazione manuale fatta dall'amministratore di sistema viene rispettata. In altre parole, il sistema di configurazione dei pacchetti non fa configurazioni invadenti per ragioni di comodità. * Ogni pacchetto viene fornito con un proprio script di configurazione per l'interfaccia utente standard debconf(7), per aiutare nel processo di configurazione iniziale del pacchetto. * I Debian Developer cercano di fare del loro meglio per rendere l'aggiornamento un'esperienza senza problemi grazie     agli script di configurazione dei pacchetti. * Sono disponibili per l'amministratore di sistema le complete funzionalità di un pacchetto software, ma quelle con rischi per la sicurezza sono disabilitate nella installazione predefinita. * Se si attiva manualmente un servizio con rischi per la sicurezza, si è responsabili del contenimento del rischio. * L'amministratore di sistema può abilitare manualmente configurazioni esotiche; questo può creare interferenze con popolari programmi generici di supporto per la configurazione del sistema. 2.1.2. Precauzioni base Avvertimento Non installare pacchetti da una miscela casuale di suite. Probabilmente si disgrega la coerenza tra i pacchetti che     richiede una conoscenza approfondita dalla gestione del sistema, come dell'ABI (http://en.wikipedia.org/wiki/ Application_binary_interface) del compilatore, versione delle librerie (http://it.wikipedia.org/wiki/Libreria_software) , funzionalità dell'interprete, ecc. L'amministratore di sistema novizio (http://it.wikipedia.org/wiki /Newbie) dovrebbe rimanere con il rilascio stable di Debian ed     applicare solo gli aggiornamenti di sicurezza. Ciò significa che alcune delle azioni spiegate in seguito, seppur valide, sono, come precauzione, da evitare fino a che non si capisce il sistema Debian molto bene. Ecco alcune cose da ricordare. * Non includere testing o unstable in "/etc/apt/sources.list". * Non mescolare gli archivi standard Debian con altri archivi non Debian, come quelli di Ubuntu, in "/etc/apt/ sources.list". * Non creare il file "/etc/apt/preferences". * Non cambiare il comportamento degli strumenti di gestione dei pacchetti attraverso i loro file di configurazione senza capire a pieno il loro effetto.     * Non installare pacchetti presi qua e là con "dpkg -i ". * Non installare mai pacchetti presi qua e là con "dpkg --force-all -i ". * Non cancellare o alterare i file in "/var/lib/dpkg/". * Non sovrascrivere file di sistema, installando direttamente programmi software compilati dai sorgenti. o Se necessario, installarli in "/usr/local" o "/opt" Gli effetti causati dalle azioni descritte sopra al sistema di     gestione dei pacchetti di Debian portano a incompatibilità che possono lasciare il sistema in uno stato inutilizzabile.     Gli amministratori di sistema Debian seri, che gestiscono server di importanza critica, dovrebbero usare particolari precauzioni. * Non installare alcun pacchetto, compresi quelli di aggiornamenti di sicurezza di Debian, senza averli attentamente testati con la propria particolare configurazione in condizioni sicure.     o Alla fin fine è l'amministratore di sistema ad essere responsabile del proprio sistema. o La lunga tradizione di stabilità dei sistemi Debian non è di per sé una garanzia. 2.1.3. Una vita di aggiornamenti senza fine Nonostante le avvertenze dette prima, si sa che molti lettori di questo documento desiderano usare le suite testing o unstable di     Debian come loro sistema principale per ambienti Desktop auto-amministrati. Ciò accade perché funzionano molto bene, sono aggiornate di frequente e offrono le più recenti funzionalità. Attenzione     Per i server di produzione, è raccomandata la suite stable con gli aggiornamenti di sicurezza. Lo stesso vale per i PC desktop su cui si investono sforzi di amministrazione limitati, ad esempio il PC di un genitore. Non serve far altro che impostare semplicemente la stringa relativa alla distribuzione nel file "/etc/apt/sources.list" con     il nome della suite voluta: "testing" o "unstable", o con il suo nome in codice: "wheezy o "sid". Questo farà vivere una vita di aggiornamenti senza fine. L'uso di testing o unstable è molto divertente ma comporta qualche rischio. Anche se la suite unstable del sistema Debian sembra molto stabile per la maggior parte del tempo, ci sono     stati alcuni problemi con i pacchetti delle suite testing e unstable e qualcuno di questi non era affatto banale da risolvere. Può essere piuttosto doloroso per l'utente. A volte si hanno pacchetti con dipendenze non soddisfatte o funzionalità mancanti per qualche settimana.     Ecco alcune idee per assicurare un recupero facile e veloce da bug nei pacchetti Debian. * Impostare il sistema per avere due partizioni avviabili installando la suite stable di Debian in un'altra partizione * Tenere a portata di mano il CD di installazione per l'avvio di ripristino * Considerare l'installazione di apt-listbugs per controllare le informazioni del Sistema Debian di tracciamento dei Bug     (BTS) (http://www.debian.org/Bugs/index.it.html) prima degli aggiornamenti * Imparare l'infrastruttura del sistema dei pacchetti abbastanza bene da poter aggirare il problema. * Creare un ambiente chroot o simile ed eseguire prima lì il sistema più recente (vedere Sezione 9.8, «Sistema virtualizzato») (Se non si è in grado di intraprendere nessuna di queste azioni     precauzionali, probabilmente non si è pronti per le suite testing e unstable.) L'illuminazione (http://it.wikipedia.org/wiki/Bodhi) data dalla lettura di ciò che segue salva l'utente dall'eterna lotta karmica     (http://it.wikipedia.org/wiki/Karma) con l'inferno (http:// en.wikipedia.org/wiki/Naraka) degli aggiornamenti e gli fa raggiungere il nirvana (http://it.wikipedia.org/wiki/Nirvana) Debian. 2.1.4. Nozioni di base sugli archivi Debian     Guardiamo l'archivio Debian (http://ftp.us.debian.org/debian/) dalla prospettiva dell'utente. Suggerimento     La politica ufficiale per gli archivi Debian è definita nel Capitolo 2 - "L'archivo Debian", del manuale Debian Policy (http: //www.debian.org/doc/debian-policy/ch-archive) . Per il normale accesso HTTP, l'archivio viene specificato nel     file "/etc/apt/sources.list" come nell'esempio seguente per l'attuale sistema stable = squeeze. deb http://ftp.XX.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.XX.debian.org/debian/ squeeze main contrib non-free     deb http://security.debian.org/ squeeze/updates main contrib deb-src http://security.debian.org/ squeeze/updates main contrib Notare che è necessario sostituire a "ftp.XX.debian.org" l'appropriato URL del sito mirror per la propria località che può essere trovato nell'elenco di siti mirror di Debian in tutto il     mondo (http://www.debian.org/mirror/list) ; per gli USA è "ftp.us.debian.org". Si può controllare lo stato di questi server sul Sito di controllo dei mirror Debian (http://ftp.de.debian.org /dmc/) . Viene qui usato il nome in codice "squeeze invece del nome della     suite "stable" per evitare sorprese una volta che venga rilasciata la nuova stable.     La struttura di "/etc/apt/sources.list" è descritta in sources.list(5) ed i punti chiave sono i seguenti. * Le righe "deb" definiscono voci per pacchetti binari. * Le righe "deb-src" definiscono voci per i pacchetti sorgenti. * Il primo argomento è l'URL radice dell'archivio Debian.     * Il secondo argomento è il nome della distribuzione, o il nome della suite o il nome in codice. * Il terzo argomento e quelli seguenti sono l'elenco dei nomi di aree valide dell'archivio Debian. Le righe "deb-src" possono essere tranquillamente omesse (o commentate aggiungendo il carattere "#" all'inizio della riga) se     si usa solo aptitude che non accede ai metadati relativi ai sorgenti. Si velocizza così l'aggiornamento dei metadati dell'archivio. L'URL può essere "http://", "ftp://", "file://", …. Suggerimento Se nell'esempio precedente si usa "sid" invece di "squeeze, in "/     etc/apt/sources.list" non è richiesta la riga "deb: http:// security.debian.org/ …" per gli aggiornamenti di sicurezza. Ciò è dovuto al fatto che non esiste un archivio per gli aggiornamenti di sicurezza per "sid" (unstable).     Ecco l'elenco dei siti degli archivi Debian e dei nomi di suite e nomi in codice usati nel file di configurazione. Tabella 2.2. Elenco dei siti con l'archivo Debian +---------------------------------------------------------------+ |URL dell'archivio |nome suite (nome in |scopo | | |codice) | | |-------------------+-----------------------+-------------------| |http:// | | | |ftp.XX.debian.org/ | |rilascio stable | |debian/ (http:// |stable (squeeze) |(squeeze) | |ftp.us.debian.org/ | | | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | | | |ftp.XX.debian.org/ | |rilascio testing | |debian/ (http:// |testing (wheezy) |(wheezy) | |ftp.us.debian.org/ | | | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | | | |ftp.XX.debian.org/ | |rilascio unstable | |debian/ (http:// |unstable (sid) |(sid) | |ftp.us.debian.org/ | | | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | |pre-rilascio | |ftp.XX.debian.org/ | |sperimentale | |debian/ (http:// |experimental |(opzionale, solo | |ftp.us.debian.org/ | |per sviluppatori) | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | |aggiornamenti per | |ftp.XX.debian.org/ | |il prossimo |     |debian/ (http:// |stable-proposed-updates|rilascio stabile | |ftp.us.debian.org/ | |minore (opzionale) | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | | | |security.debian.org| |aggiornamenti di | |/ (http:// |stable/updates |sicurezza per il | |www.debian.org/ | |rilascio stable | |security/ | |(importante) | |index.it.html) | | | |-------------------+-----------------------+-------------------| |http:// | | | |security.debian.org| |aggiornamenti di | |/ (http:// |testing/updates |sicurezza per il | |www.debian.org/ | |rilascio testing | |security/ | |(importante) | |index.it.html) | | | |-------------------+-----------------------+-------------------| | | |aggiornamenti | |http:// | |compatibili per | |ftp.XX.debian.org/ | |filtri anti-spam, | |debian/ (http:// |squeeze-updates |client di | |ftp.us.debian.org/ | |messaggistica | |debian/) | |istantanea, ecc. | | | |per squeeze | |-------------------+-----------------------+-------------------| |http:// | |pacchetti più | |ftp.XX.debian.org/ | |recenti in versione| |debian/ (http:// |squeeze-backports |backport per | |ftp.us.debian.org/ | |squeeze (opzionale)| |debian/) | | | +---------------------------------------------------------------+ Attenzione Solo il rilascio stable puro con gli aggiornamenti di sicurezza fornisce la massima stabilità. Avere un sistema basato per lo più sul rilascio stable con mescolati alcuni pacchetti dai rilasci testing o unstable è più rischioso che avere un sistema basato su     un puro rilascio unstable per ciò che riguarda conflitti tra le versioni di libreria, ecc. Se si ha veramente bisogno, nel rilascio stable, dell'ultima versione di qualche programma usare pacchetti dai servizi squeeze-updates (http://www.debian.org/News /2011/20110215) e http://backports.debian.org (http:// backports.debian.org) (vedere Sezione 2.7.4, «Updates e Backports»). Questi servizi devono essere usati con estrema cautela. Attenzione Fondamentalmente si dovrebbe mettere una sola tra le suite stable, testing o unstable nelle righe "deb". Se si elenca una     combinazione delle suite stable, testing e unstable nelle righe "deb", il programma APT verrà rallentato e solo l'archivio più recente avrà effetto. Elencare più di una voce ha senso quando viene usato il file "/etc/apt/preferences" con scopi ben precisi (vedere Sezione 2.7.3, «Modificare la versione candidata»). Suggerimento     Per i sistemi Debian con le suite stable e testing è una buona norma includere nel file "/etc/apt/sources.list" le righe con "http://security.debian.org/" per abilitare gli aggiornamenti di sicurezza, come nell'esempio prededente. Nota I bug che riguardano la sicurezza per l'archivio stable vengono risolti dal Debian Security Team, la cui attività è piuttosto rigorosa ed affidabile. I bug per l'archivio testing possono essere risolti dal Debian Security Team. Per svariate (http:// lists.debian.org/debian-testing-security-announce/2008/12/ msg00019.html) ragioni (http://lists.debian.org/     debian-testing-security-announce/2010/01/msg00000.html) questa attività non è così rigorosa come quella per stable e potrebbe essere necessario attendere la migrazione di pacchetti unstable corretti. I bug per l'archivio unstable sono corretti dal manutentore del pacchetto; i pacchetti unstable attivamente mantenuti sono solitamente in una forma piuttosto buona dato che sfruttano le più recenti correzioni a monte relative alla sicurezza. Per informazioni sul modo in cui Debian gestisce i bug relativi alla sicurezza, vedere le FAQ Debian sulla sicurezza (http://www.debian.org/security/faq.it.html) . Tabella 2.3. Elenco delle aree dell'archivio Debian +---------------------------------------------------------------+ |area |numero di |criterio dei componenti del pacchetto | | |pacchetti | | |--------+---------------+--------------------------------------| |main |39765 |aderenti alle DFSG e senza dipendenze |     | | |da non-free | |--------+---------------+--------------------------------------| |contrib |246 |aderenti alle DFSG ma con dipendenze | | | |da non-free | |--------+---------------+--------------------------------------| |non-free|503 |non aderenti alle DFSG | +---------------------------------------------------------------+ Nella tabella soprastante il numero dei pacchetti è per     l'architettura amd64. L'area main fornisce il sistema Debian (vedere Sezione 2.1.5, «Debian è al 100% software libero»). L'organizzazione dell'archivio Debian può essere studiata meglio     puntando il proprio browser a ciascuno degli URL dell'archivio con aggiunto in coda dists o pool. Ci si riferisce alla distribuzione in due modi, con la suite o con il nome in codice (http://www.debian.org/doc/manuals/     developers-reference/resources.html#codenames) . In alternativa la parola distribuzione viene usata come sinonimo di suite in molta documentazione. La relazione tra la suite e il nome in codice può essere riassunta nel modo seguente. Tabella 2.4. Relazione tra suite e nome in codice +---------------------------------------------------------------+ |periodo |suite = stable |suite = testing|suite = | | | | |unstable | |----------------+----------------+---------------+-------------|     |dopo il rilascio|nome in codice =|nome in codice |nome in | |squeeze |squeeze |= wheezy |codice = sid | |----------------+----------------+---------------+-------------| |dopo il rilascio|nome in codice =|nome in codice |nome in | |wheezy |wheezy |= jessie |codice = sid | +---------------------------------------------------------------+ La storia dei nomi in codice è descritta nelle FAQ Debian: 6.2.1     Quali altri nomi in codice sono stati usati in passato? (http:// www.debian.org/doc/manuals/debian-faq/ch-ftparchives# s-oldcodenames) Nella terminologia per gli archivi Debian più precisa, la parola "sezione" è usata specificatamente per la categorizzazione dei     pacchetti in base all'area di applicazione. (Anche se l'espressione "sezione main" può essere a volte usata per descrivere l'area dell'archivio Debian chiamata "main".) Ogni volta che uno sviluppatore Debian (DD) carica un nuovo pacchetto nell'archivio unstable (passando per incoming (http://     incoming.debian.org/) ), gli viene richiesto di assicurare che i pacchetti caricati siano compatibili con l'insieme più recente di pacchetti nell'archivio unstable più recente. Se un DD rompe questa compatibilità intenzionalmente per     importanti aggiornamenti di librerie, ecc. di solito viene fatto un annuncio nella mailing list debian-devel (http:// lists.debian.org/debian-devel/) , ecc. Prima di muovere un insieme di pacchetti dall'archivio unstable all'archivio testing, lo script di gestione degli archivio Debian non solo controlla la maturità (circa 10 giorni di età) e lo     stato delle segnalazioni di bug RC per i pacchetti, ma cerca anche di assicurare che siano compatibili con il più recente insieme di pacchetti nell'archivio testing. Questo processo rende l'archivio testing molto aggiornato e usabile. Attraverso il graduale processo di freeze dell'archivio, giudato dal team di rilascio, l'archivio testing viene fatto maturare con un po' di intervento manuale per renderlo completamente coerente e libero da bug. Quindi viene creato il nuovo rilascio stable     assegnando il nome in codice per il vecchio archivio testing al nuovo archivio stable e creando il nuovo nome in codice per il nuovo archivio testing. Il contenuto iniziale del nuovo archivio testing è esattamente lo stesso dell'archivio stable appena rilasciato.     Sia l'archivio unstable sia l'archivio testing possono soffrire di problemi temporanei a causa di diversi fattori. * Pacchetti difettosi caricati nell'archivio (principalmente per unstable) * Ritardo nell'accettazione di nuovi pacchetti nell'archivio (principalmente per unstable)     * Problemi nei tempi di sincronizzazione degli archivi (sia per testing sia per unstable) * Interventi manuali all'archivio, come rimozione di pacchetti (più per testing) ecc.     Perciò se si decide di usare questi archivi, si dovrebbe essere in grado di risolvere o aggirare questo tipo di problemi. Attenzione Per qualche mese circa dopo un nuovo rilascio stable, la maggior parte degli utenti desktop dovrebbe usare l'archivio stable con i suoi aggiornamenti di sicurezza, anche se di solito usano gli archivi unstable o testing. Durante questo periodo di transizione, entrambi gli archivi unstable e testing non sono adatti alla maggior parte degli utenti. È difficile mantenere il     proprio sistema in condizioni buone di funzionamento con l'archivio unstable dato che è affetto da ondate di aggiornamenti importanti di pacchetti fondamentali. Anche l'archivio testing non è molto utile perché contiene per lo più le stesse cose dell'archivio stable senza il suo supporto per la sicurezza ( Debian testing-security-announce 2008-12 (http://lists.debian.org /debian-testing-security-announce/2008/12/msg00019.html) ). Dopo circa un mese, l'archivio unstable potrebbe essere utilizzabile se si è cauti. Suggerimento     Quando si usa l'archivio testing, i problemi causati da un pacchetto rimosso vengono solitamente aggirati installando il corrispondente pacchetto dall'archivio unstable che è caricato per risolvere un bug.     Vedere il manuale Debian Policy (http://www.debian.org/doc/ debian-policy/) per le definizioni degli archivi. * "Sezioni (http://www.debian.org/doc/debian-policy/ch-archive# s-subsections) " * "Priorità (http://www.debian.org/doc/debian-policy/ch-archive #s-priorities) "     * "Sistema base (http://www.debian.org/doc/debian-policy/ ch-binary#s3.7) " * "Pacchetti essenziali (http://www.debian.org/doc/ debian-policy/ch-binary#s3.8) " 2.1.5. Debian è al 100% software libero     Debian è al 100% software libero perché: * Debian installa in modo predefinito solo software libero per rispettare le libertà dell'utente; * Debian fornisce in main solo software libero.     * Debian raccomanda l'esecuzione del solo software libero contenuto in main. * Nessun pacchetto in main dipende o raccomanda pacchetti in non-free o contrib.     Alcune persone si chiedono se i seguenti due fatti siano in contraddizione o meno tra loro. * «Debian rimarrà libera al 100%». (Prima voce del Contratto sociale Debian (http://www.debian.org/     social_contract.it.html) ) * I server Debian ospitano alcuni pacchetti non-free e contrib.     Queste due cose non sono in contraddizione, perché: * Il sistema Debian è libero al 100% e i suoi pacchetti sono ospitati dai server Debian nell'area main.     * I pacchetti esterni al sistema Debian sono ospitati dai server Debian nelle aree non-free e contrib. Queste sono spiegate in dettaglio nella quarta e nella quinta     voce del Contratto sociale Debian (http://www.debian.org/ social_contract.it.html) : * Le nostre priorità sono gli utenti ed il software libero o Ci faremo guidare dai bisogni dei nostri utenti e della comunità del software libero. Metteremo al primo posto i loro interessi. Supporteremo le necessità dei nostri utenti di operare in molti diversi tipi di ambienti di calcolo. Non ci opporremo alle opere non libere che siano state pensate per l'uso in sistemi Debian e non richiederemo compensi a chi crea o usa queste opere. Permetteremo ad altri di creare distribuzioni contenenti sia il sistema Debian che altre opere, senza richiedere compensi. Per raggiungere questi scopi, forniremo un sistema integrato di materiali di alta qualità senza alcuna restrizione legale che limiti qualsiasi uso del     sistema. * Opere che non rispettano i nostri standard free software o Ci rendiamo conto che alcuni dei nostri utenti richiedono di usare opere non conformi alle Debian Free Software Guidelines. Abbiamo creato le aree «contrib» e «non-free» nel nostro archivio per queste opere. I pacchetti in queste aree non fanno parte del sistema Debian, sebbene siano stati configurati per l'uso con Debian. Invitiamo i realizzatori di CD a leggere le licenze dei pacchetti in queste aree per determinare se possono distribuire i pacchetti sui loro CD. Inoltre, anche se le opere non libere non fanno parte di Debian, supporteremo il loro uso e forniremo infrastrutture per i pacchetti non liberi (come il nostro bug tracking system e le mailing list).     Gli utenti dovrebbero essere a conoscenza dei rischi correlati all'uso di pacchetti nelle aree non-free e contrib: * mancanza di libertà legata a tali pacchetti software * mancanza di supporto da parte di Debian per tali pacchetti     software (Debian non può supportare del software in maniera adeguata senza avere accesso al suo codice sorgente) * contaminazione del sistema Debian libero al 100% Il documento Debian Free Software Guidelines (http:// www.debian.org/social_contract.t.html#guidelines) è lo standard di Debian (http://www.debian.org/index.it.html) per il software     libero. Debian interpreta la parola "software" nel suo senso più ampio includendo documentazione, firmware, logo e dati artistici nel pacchetto. Questo fa sì che gli standard Debian per il software libero siano molto severi. Per potere rimanere conforme a questi severi standard per il software libero richiesti per main, Debian toglie il marchio     (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=354622) dai pacchetti software Mozilla come Firefox, Thunderbird e Seamonkey, rimuovendo i loro logo e alcuni elementi artistici e li fornisce come Iceweasel, Icedove e Iceape rispettivamente.     I pacchetti non-free e contribu tipici includono pacchetti liberamente distribuibili dei seguenti tipi: * Pacchetti di documentazione distribuiti sotto la GNU Free Documentation License (http://it.wikipedia.org/wiki/ GNU_Free_Documentation_License) con sezioni invarianti come quelli per GCC e Make (per lo più presenti nella sezione non-free/doc).     * Pacchetti di firmware contenenti dati binari senza sorgenti come quelli elencati in Sezione 9.7.6, «Driver per hardware e firmware» come non liberi (per lo più presenti nella sezione non-free/kernel). * Pacchetti di giochi e tipi di carattere con restrizioni sull'uso a scopo commerciale o sulla modifica dei contenuti. Notare che il numero dei pacchetti non-free e contrib è meno del 2% di quello dei pacchetti in main. Permettere l'accesso alle aree non-free e contrib non oscura la fonte dei pacchetti. L'uso     interattivo a schermo intero di aptitude(8) fornisce piena visibilità e controllo su quali pacchetti vengano installati e da quali aree, per permettere di mantenere il proprio sistema libero quanto lo si desidera. 2.1.6. Dipendenze dei pacchetti Il sistema Debian offre un insieme coerente di pacchetti binari     grazie al suo meccanismo di dichiarazione, nei campi di controllo dei file, delle dipendenze binarie basate su versioni . Ecco una definizione molto semplificata delle dipendenze. * "Depends" (Dipende) o Dichiara una dipendenza assoluta e tutti i pacchetti elencati in questo campo devono essere installati insieme a quello scelto o prima. * "Pre-Depends" (Pre-dipende) o È come "Depends", tranne che richiede l'installazione completa dei pacchetti elencati in anticipo. * "Recommends" (Raccomanda) o Dichiara una dipendenza forte, ma non assoluta. La maggior parte degli utenti non vorrà il pacchetto in esame a meno che tutti i pacchetti elencati non siano installati. * "Suggests" (Consiglia) o Dichiara una dipendenza debole. La maggior parte degli utenti del pacchetto potrebbe trarre vantaggio dall'installazione dei pacchetti elencati in questo campo, ma può ottenere una funzionalità adeguata senza di essi.     * "Enhances" (Migliora) o Dichiara una dipendenza debole come "Suggests" ma in verso opposto. * "Breaks" (Rompe) o Dichiara un'incompatibilità del pacchetto di solito con qualche specifica versione. Generalmente la soluzione è di aggiornare tutti i pacchetti elencati in questo campo. * "Conflicts" (Va in conflitto) o Dichiara una incompatibilità assoluta. Tutti i pacchetti elencati in questo campo devono essere rimossi per installare il pacchetto in esame. * "Replaces" (Sostituisce) o Viene dichiarata quando i file installati dal pacchetto in esame sostituiscono i file nei pacchetti elencati. * "Provides" (Fornisce) o Viene dichiarata quando il pacchetto fornisce tutti i file e le funzionalità nei pacchetti elencati. Nota Notare che una buona configurazione per un pacchetto virtuale     deve avere "Provides", "Conflicts" e "Replaces" simultaneamente definiti. Questo assicura che in un dato momento possa essere installato un solo pacchetto reale che fornisce il pacchetto virtuale. La definizione ufficiale, compresa quella di dipendenza dei     sorgenti, può essere trovata nel manuale Debian Policy, Capitolo 7, Dichiarare le relazioni tra i pacchetti (http://www.debian.org /doc/debian-policy/ch-relationships) . 2.1.7. Il flusso di eventi nella gestione dei pacchetti     Ecco un riassunto semplificato del flusso di eventi nella gestione dei pacchetti con APT. * Update - aggiorna l'elenco dei pacchetti ("aptitude update" o "apt-get update"): 1. Recupera i metadati dell'archivio dall'archivio remoto 2. Ricostruisce e aggiorna i metadati locali usati da APT * Upgrade - aggiorna ("aptitude safe-upgrade" e "aptitude full-upgrade", o "apt-get upgrade" e "apt-get dist-upgrade"): 1. Sceglie la versione candidata, che è solitamente la più recente disponibile, per tutti i pacchetti installati (per le eccezioni vedere Sezione 2.7.3, «Modificare la versione candidata») 2. Risolve le dipendenze dei pacchetti 3. Se la versione candidata è diversa da quella installata, scarica i pacchetti binari selezionati dall'archivio remoto 4. Spacchetta i pacchetti binari scaricati 5. Esegue gli script preinst 6. Installa i file binari 7. Esegue gli script postinst * Install - installa ("aptitude install …" o "apt-get install …"): 1. Sceglie i pacchetti elencati nella riga di comando 2. Risolve le dipendenze dei pacchetti     3. Scarica i pacchetti binari selezionati dall'archivio remoto 4. Spacchetta i pacchetti binari scaricati 5. Esegue gli script preinst 6. Installa i file binari 7. Esegue gli script postinst * Remove - rimuove ("aptitude remove …" o "apt-get remove …"): 1. Sceglie i pacchetti elencati nella riga di comando 2. Risolve le dipendenze dei pacchetti 3. Esegue gli script prerm 4. Rimuove i file installati tranne i file di configurazione 5. Esegue gli script postrm * Purge - elimina del tutto ("aptitude purge …" o "apt-get purge …"): 1. Sceglie i pacchetti elencati nella riga di comando 2. Risolve le dipendenze dei pacchetti 3. Esegue gli script prerm 4. Rimuove i file installati inclusi i file di configurazione 5. Esegue gli script postrm     Sono stati intenzionalmente omessi dettagli tecnici a favore di una più chiara vista d'insieme. 2.1.8. Prima risposta a problemi di gestione dei pacchetti Si dovrebbe leggere la bella documentazione ufficiale. Il primo documento da leggere è il file specifico per Debian, "/usr/share/     doc//README.Debian". Andrebbe consultata anche l'altra documentazione in "/usr/share/doc//. Se la shell è impostata come in Sezione 1.4.2, «Personalizzare bash» , digitare quanto segue. $ cd     $ pager README.Debian $ mc Per informazioni dettagliate potrebbe essere necessario     installare il pacchetto di documentazione corrispondente il cui nome ha il suffisso "-doc". Se si stanno avendo problemi con un pacchetto specifico,     ricordarsi come prima cosa di controllare il sito del Sistema Debian di tracciamento dei bug (BTS) (http://www.debian.org/Bugs/ index.it.html) . Tabella 2.5. Elenco dei siti web importanti per la risoluzione di problemi con un pacchetto specifico +---------------------------------------------------------------+ |sito web |comando | |---------------------------------------+-----------------------| |Pagina web del Sistema Debian di |sensible-browser "http:| |tracciamento dei bug (BTS) (http:// |//bugs.debian.org/" | |www.debian.org/Bugs/index.it.html) | |     |---------------------------------------+-----------------------| |Segnalazioni di bug di un pacchetto |sensible-browser "http:| |specifico |//bugs.debian.org/ | | |" | |---------------------------------------+-----------------------| |Segnalazione di bug corrispondente ad |sensible-browser "http:| |un numero di bug |//bugs.debian.org/ | | |" | +---------------------------------------------------------------+ Cercare con Google (http://www.google.com) con parole chiave e     aggiungendo "site:debian.org", "site:wiki.debian.org", "site:lists.debian.org", ecc.     Quando si invia una segnalazione di bug, usare il comando reportbug(1). 2.2. Operazioni base per la gestione dei pacchetti Le operazioni di base della gestione dei pacchetti sul sistema Debian possono essere eseguite da qualsiasi strumento di gestione     dei pacchetti disponibile sul sistema Debian. Qui, verranno spiegati gli strumenti base di gestione dei pacchetti: apt-get / apt-cache e aptitude. Per operazioni di gestione dei pacchetti che comportano     l'installazione o l'aggiornamento dei metadati dei pacchetti, è necessario avere privilegi di root. 2.2.1. Confronto apt-get / apt-cache - aptitude     I comandi apt-get e apt-cache sono gli strumenti di gestione dei pacchetti più a livello base. * apt-get e apt-cache offrono solo l'interfaccia utente a riga di comando. * apt-get è più adatto per gli aggiornamenti principali del sistema tra rilasci diversi, ecc. * apt-get offre un sistema solido e stabile di risoluzione dei conflitti dei pacchetti che utilizza i comuni dati sullo stato dei pacchetti. * apt-get è meno avido di risorse di sistema. Consuma meno memoria ed è più veloce durante l'esecuzione.     * apt-get è stato aggiornato per supportare l'installazione e la rimozione automatiche dei pacchetti raccomandati. * apt-get è stato aggiornato per supportare la registrazione delle attività del pacchetto. * apt-cache offre una ricerca standard, basata su espressioni regolari, nei nomi e nelle descrizioni dei pacchetti. * apt-get e apt-cache possono gestire più versioni dei pacchetti usando /etc/apt/preferences, ma è piuttosto elaborato farlo.     Il comando aptitude è lo strumento di gestione dei pacchetti più versatile. * aptitude offre un'interfaccia utente testuale interattiva a schermo intero. * aptitude offre anche un'interfaccia utente a riga di comando. * aptitude è più adatto per la gestione interattiva quotidiana dei pacchetti, come l'ispezione dei pacchetti installati e la ricerca dei pacchetti disponibili. * aptitude è più avido di risorse di sistema. Consuma più memoria ed è più lento durante l'esecuzione. * aptitude offre un sistema migliorato di risoluzione dei     conflitti dei pacchetti che usa anche dati extra sullo stato dei pacchetti utilizzati solo da aptitude. * aptitude supporta l'installazione e la rimozione automatiche dei pacchetti raccomandati. * aptitude supporta la registrazione delle attività del pacchetto. * apt-cache offre una ricerca migliorata, basata su espressioni regolari, su tutti i metadati dei pacchetti. * aptitude può gestire più versioni dei pacchetti senza usare / etc/apt/preferences e farlo è piuttosto intuitivo. Nota Sebbene il comando aptitude sia dotato di moltissime funzionalità come il suo risolutore avanzato di conflitti tra pacchetti,     questa complessità ha causato (o può ancora causare) alcune regressioni quali i Bug # 411123 (http://bugs.debian.org/411123) , Bug # 514930 (http://bugs.debian.org/514930) e Bug # 570377 (http://bugs.debian.org/570377) . In caso di dubbio, preferire i comandi apt-get e apt-cache al comando aptitude. 2.2.2. Operazioni base per la gestione dei pacchetti dalla riga di comando     Ecco alcune operazioni base di gestione dei pacchetti dalla riga di comando usando aptitude(8) e apt-get(8) /apt-cache(8). Tabella 2.6. Operazioni base di gestione dei pacchetti dalla riga di comando usando aptitude(8) e apt-get(8) /apt-cache(8) +---------------------------------------------------------------+ |sintassi per|sintassi per| | |aptitude |apt-get/ |descrizione | | |apt-cache | | |------------+------------+-------------------------------------| |aptitude |apt-get |aggiorna i metadati dell'archivio dei| |update |update |pacchetti | |------------+------------+-------------------------------------| |aptitude |apt-get |installa la versione candidata del | |install |install |pacchetto "pippo" con le sue | |pippo |pippo |dipendenze | |------------+------------+-------------------------------------| |aptitude |apt-get |installa le versioni candidate dei | |safe-upgrade|upgrade |pacchetti installati senza rimuovere | | | |altri pacchetti | |------------+------------+-------------------------------------| |aptitude |apt-get |installa le versioni candidate dei | |full-upgrade|dist-upgrade|pacchetti installati e rimuove, se | | | |necessario, altri pacchetti | |------------+------------+-------------------------------------| |aptitude |apt-get |rimuove il pacchetto "pippo" | |remove pippo|remove pippo|lasciando i suoi file di | | | |configurazione | |------------+------------+-------------------------------------| | |apt-get |rimuove i pacchetti installati | |N/D |autoremove |automaticamente che non sono più |     | | |necessari | |------------+------------+-------------------------------------| |aptitude |apt-get |elimina completamente il pacchetto | |purge pippo |purge pippo |"pippo" con i suoi file di | | | |configurazione | |------------+------------+-------------------------------------| |aptitude |apt-get |pulisce completamente il repository | |clean |clean |locale dei file dei pacchetti | | | |scaricati | |------------+------------+-------------------------------------| |aptitude |apt-get |pulisce il repository locale dei file| |autoclean |autoclean |dei pacchetti scaricati che sono | | | |obsoleti | |------------+------------+-------------------------------------| |aptitude |apt-cache |mostra informazioni dettagliate sul | |show pippo |show pippo |pacchetto "pippo" | |------------+------------+-------------------------------------| |aptitude |apt-cache |cerca i pacchetti che corrispondono | |search |search |all'espressione regolare | | | | | |------------+------------+-------------------------------------| |aptitude why| |spiega le ragioni per cui i pacchetti| | |N/D |che corrispondono a | | | |dovrebbero essere installati | |------------+------------+-------------------------------------| |aptitude | |spiega le ragioni per cui i pacchetti| |why-not |N/D |che corrispondono a non | | | |dovrebbero essere installati | +---------------------------------------------------------------+ Nota Dato che apt-get e aptitude, a partire da lenny, condividono le     informazioni suipacchetti installati automaticamente (vedere Sezione 2.5.5, «Lo stato dei pacchetti per APT»), si può mescolare l'uso diquesti strumenti senza particolari problemi (vedere il Bug #594490 (http://bugs.debian.org/594490) ). La differenza tra "safe-upgrade"/"upgrade" e "full-upgrade"/ "dist-upgrade" viene a galla solamente quando nuove versioni di     pacchetti hanno una diverse relazioni di dipendenza rispetto alle vecchie versioni. Il comando "aptitude safe-upgrade" non installa nuovi pacchetti né rimuove pacchetti installati. "aptitude why " può mostrare ancor più informazioni se     usato come "aptitude -v why ". Informazioni simili possono essere ottenute con "apt-cache rdepends ". Quando il comando aptitude è avviato in modalità a riga di     comando e si trova davanti a problemi come conflitti tra pacchetti, si può passare alla modalità interattiva a tutto schermo premendo successivamente il tasto "e" al prompt.     Si possono usare opzioni per il comando immediatamente dopo "aptitude". Tabella 2.7. Opzioni degne di nota per il comando aptitude(8) +---------------------------------------------------------------+ |opzione per il|descrizione | |comando | | |--------------+------------------------------------------------|     |-s |simula il risultato del comando | |--------------+------------------------------------------------| |-d |scarica solamente ma non installa/aggiorna | |--------------+------------------------------------------------| |-D |mostra delle brevi spiegazioni prima di | | |installazioni e rimozioni automatiche | +---------------------------------------------------------------+     Per maggiori informazioni vedere aptitude(8) e il "manuale utente di aptitude" in "/usr/share/doc/aptitude/README". Suggerimento     Il pacchetto dselect è ancora disponibile ed è stato lo strumento a tutto schermo interattivo di gestione dei pacchetti dei rilasci passati. 2.2.3. Uso interattivo di aptitude Per la gestione interattiva dei pacchetti, si avvia aptitude in     modalità interattiva dal prompt di shell della console nel modo seguente.     $ sudo aptitude -u Password: In questo modo si aggiorna la copia locale delle informazioni     sull'archivio e viene mostrato l'elenco dei pacchetti in una schermata a pieno schermo. Aptitude posiziona la sua configurazione in "~/.aptitude/config". Suggerimento     Se si desidera usare la configurazione di root, invece di quella dell'utente, usare "sudo -H aptitude …" invece di "sudo aptitude …", come nell'esempio precedente. Suggerimento     Aptitude imposta automaticamente le azioni pendenti quando viene avviato in modalità interattiva. Se ciò non piace, si può reimpostarlo usando il menu: "Azioni" → "Annulla azioni in attesa". 2.2.4. Associazioni dei tasti per aptitude Quelle che seguono sono le associazioni di tasti degne di nota     usate, nella modalità a schermo intero, per sfogliare lo stato dei pacchetti e per impostare "azioni pianificate" su di essi. Tabella 2.8. Elenco delle associazioni di tasti per aptitude +---------------------------------------------------------------+ |tasto |azione associata | |----------------+----------------------------------------------| |F10 o Ctrl-t |menu | |----------------+----------------------------------------------| |? |mostra l'aiuto per i tasti (elenco più | | |completo) | |----------------+----------------------------------------------| |F10 → Aiuto → |mostra il Manuale utente | |Manuale utente | | |----------------+----------------------------------------------| |u |aggiorna le informazioni sull'archivio dei | | |pacchetti | |----------------+----------------------------------------------| |+ |segna il pacchetto per l'aggiornamento o l' | | |installazione | |----------------+----------------------------------------------| |- |segna il pacchetto per la rimozione (mantiene | | |i file di configurazione) | |----------------+----------------------------------------------| |_ |segna il pacchetto per l'eliminazione completa| | |(rimuove i file di configurazione) | |----------------+----------------------------------------------|     |= |blocca il pacchetto | |----------------+----------------------------------------------| |U |segna tutti i pacchetti aggiornabili (funziona| | |come full-upgrade) | |----------------+----------------------------------------------| |g |inizia a scaricare e installare i pacchetti | | |selezionati | |----------------+----------------------------------------------| |q |esce dalla schermata attuale e salva i | | |cambiamenti | |----------------+----------------------------------------------| |x |esce dalla schermata attuale e scarta i | | |cambiamenti | |----------------+----------------------------------------------| |Invio |visualizza le informazioni su un pacchetto | |----------------+----------------------------------------------| |C |visualizza il registro dei cambiamenti di un | | |pacchetto | |----------------+----------------------------------------------| |l |cambia la limitazione dei pacchetti | | |visualizzati | |----------------+----------------------------------------------| |/ |cerca la prima corrispondenza | |----------------+----------------------------------------------| |\ |ripete l'ultima ricerca | +---------------------------------------------------------------+ Le espressioni regolari usate per specificare il nome di pacchetto nella riga di comando e nel prompt del menu dopo aver     premuto "l" o "//" sono descritte in seguito. Le espressioni regolari di aptitude possono esplicitamente trovare corrispondenze con nomi di pacchetto usando una stringa che inizia con "~n seguita dal nome del pacchetto. Suggerimento È necessario premere "U" per aggiornare tutti i pacchetti     installati alla versione candidata nell'interfaccia interattiva. Altrimenti vengono aggiornati alla versione candidata solo i pacchetti selezionati e quelli da una cui particolare versione dipendono altri. 2.2.5. Viste dei pacchetti in aptitude Nella modalità interattiva a tutto schermo di aptitude(8), i     pacchetti nell'elenco vengono mostrati come nell'esempio seguente.     idA libsmbclient -2220kB 3.0.25a-1 3.0.25a-2     Il significato degli elementi di questa riga, partendo da sinistra, è il seguente. * Il flag di "stato attuale" (la prima lettera) * Il flag di "azione pianificata" (la seconda lettera) * Il flag "automatico" (la terza lettera)     * Il nome del pacchetto * Il cambiamento in termini di uso dello spazio su disco collegato dall'"azione pianificata" * La versione attuale del pacchetto * La versione candidata del pacchetto Suggerimento     L'elenco completo dei flag è fornito alla fine della schermata mostrata di Aiuto mostrata se si preme "?". La versione candidata è scelta in base alle preferenze locali     attuali (vedere apt_preferences(5) e Sezione 2.7.3, «Modificare la versione candidata»).     Diversi tipi di viste per i pacchetti sono disponibili nel menu "Viste". Tabella 2.9. Elenco delle viste di aptitude +---------------------------------------------------------------+ |vista |stato |descrizione della vista | |-------------+---------+---------------------------------------| |Vista dei | |vedere Tabella 2.10, «Organizzazione | |pacchetti |Buona |delle viste standard dei pacchetti» | | | |(vista standard) | |-------------+---------+---------------------------------------| | | |elenca i pacchetti che sono | |Controlla |Buona |raccomandati da alcuni dei pacchetti | |Raccomandati | |installati, ma non sono ancora | | | |installati |     |-------------+---------+---------------------------------------| |Elenco unico | |elenca i pacchetti senza organizzarli | |dei pacchetti|Buona |in gruppi (per l'uso con espressioni | | | |regolari) | |-------------+---------+---------------------------------------| |Consultazione|Molto |elenca i pacchetti organizzati in base | |per «Debtags»|usabile |alle loro voci Debtags (http:// | | | |debtags.alioth.debian.org/) | |-------------+---------+---------------------------------------| |Consultazione| |elenca i pacchetti organizzati in base | |per categorie|Deprecata|alla loro categoria (usare al suo posto| | | |Consultazione per «Debtags») | +---------------------------------------------------------------+ Nota     È estremamente benvenuto ogni aiuto per migliorare l'assegnazione di etichette Debtags ai pacchetti! (http:// debtags.alioth.debian.org/todo.html)     La "Vista dei pacchetti" standard organizza i pacchetti un po' nello stile di dselect con alcune funzionalità extra. Tabella 2.10. Organizzazione delle viste standard dei pacchetti +---------------------------------------------------------------+ |categoria |descrizione della vista | |-------------------+-------------------------------------------| |Pacchetti |elenca i pacchetti organizzati in sezione →| |aggiornabili |area → pacchetto | |-------------------+-------------------------------------------| |Pacchetti nuovi |" " | |-------------------+-------------------------------------------| |Pacchetti |" " | |installati | |     |-------------------+-------------------------------------------| |Pacchetti non |" " | |installati | | |-------------------+-------------------------------------------| |Pacchetti obsoleti |" " | |e creati localmente| | |-------------------+-------------------------------------------| |Pacchetti virtuali |elenca i pacchetti con la stessa funzione | |-------------------+-------------------------------------------| | |elenca i pacchetti con funzioni diverse | |Task |solitamente necessarie per una stessa | | |attività | +---------------------------------------------------------------+ Suggerimento     La vista dei Task può essere usata per scegliere a uno a uno i pacchetti per le proprie attività. 2.2.6. Opzioni per i metodi di ricerca in aptitude     Aptitude offre diverse opzioni per cercare pacchetti usando il suo schema di espressioni regolari. * Nella riga di comando della shell: o "aptitude search ''" per elencare lo stato di installazione, il nome del pacchetto ed una descrizione breve dei pacchetti che corrispondono. o "aptitude show ''" per elencare una descrizione dettagliata del pacchetto * Nella modalità interattiva a tutto schermo:     o "l" per limitare la vista dei pacchetti ai pacchetti che corrispondono o "/" per cercare un pacchetto che corrisponda o "\" per cercare all'indietro un pacchetto che corrisponda o "n" per trovare il successivo o "N" per trovare il successivo (all'indietro) Suggerimento     La stringa viene usata per trovare una corrispondenza esatta con il nome di pacchetto a meno che non venga esplicitamente fatta iniziare con "~" per indicare una espressione regolare. 2.2.7. La struttura delle espressioni regolari di aptitude La struttura delle espressioni regolari di aptitude è quella di     ERE (vedere Sezione 1.6.2, «Espressioni regolari») estese in stile mutt ed il significato delle speciali regole estese di corrispondenza, specifiche di aptitude, è il seguente. Tabella 2.11. Elenco delle regole per espressioni regolari di aptitude +-----------------------------------------------------------------------+ |descrizione della | | |regola estesa di |struttura della espressione regolare | |corrispondenza | | |--------------------+--------------------------------------------------| |corrispondenza con |~n | |il nome di pacchetto| | |--------------------+--------------------------------------------------| |corrispondenza con |~d | |la descrizione | | |--------------------+--------------------------------------------------| |corrispondenza con |~t | |il nome del task | | |--------------------+--------------------------------------------------| |corrispondenza con |~G | |il debtag | | |--------------------+--------------------------------------------------| |corrispondenza con |~m | |il manutentore | | |--------------------+--------------------------------------------------| |corrispondenza con | | |la sezione del |~s | |pacchetto | | |--------------------+--------------------------------------------------| |corrispondenza con | | |la versione del |~V | |pacchetto | | |--------------------+--------------------------------------------------| |corrispondenza con |~A{squeeze,wheezy,sid} | |l'archivio | | |--------------------+--------------------------------------------------| |corrispondenza con |~O{debian,…} | |l'origine | | |--------------------+--------------------------------------------------| |corrispondenza con |~p{extra,important,optional,required,standard} | |la priorità | | |--------------------+--------------------------------------------------| |corrispondenza con |~E | |pacchetti essenziali| | |--------------------+--------------------------------------------------| |corrispondenza con |~v | |pacchetti virtuali | | |--------------------+--------------------------------------------------| |corrispondenza con |~N | |pacchetti nuovi | | |--------------------+--------------------------------------------------| |corrispondenza con |~a | |azioni pendenti |{install,upgrade,downgrade,remove,purge,hold,keep}| |--------------------+--------------------------------------------------| |corrispondenza con |~i | |pacchetti installati| | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti installati| | |e con l'indicatore A|~M | |(pacchetti | | |installati | | |automaticamente) | | |--------------------+--------------------------------------------------| |corrispondenza con i| | |pacchetti installati| | |e senza l'indicatore|~i!~M | |A (pacchetti | | |selezionati | | |dall'amministratore)| | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti installati|~U | |che sono | | |aggiornabili | | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti rimossi ma|~c | |non eliminati | |     |completamente | | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti rimossi, | | |eliminati o che |~g | |possono essere | | |rimossi | | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti che |~b | |dichiarano problemi | | |di dipendenze | | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti con | | |problemi di |~B | | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti |~D[:] | |con dipendenze di | | |tipo | | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti | | |con dipendenze non |~DB[:] | |soddisfatte di tipo | | | | | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti verso i | | |quali il pacchetto | | |che corrisponde a |~R[:] | | dichiara | | |una dipendenza di | | |tipo | | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti verso i | | |quali il pacchetto | | | dichiara |~RB[:] | |una dipendenza non | | |soddisfatta di tipo | | | | | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti da cui | | |dipende un qualche |~R~i | |altro pacchetto | | |installato | | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti da cui non|!~R~i | |dipende alcun | | |pacchetto installato| | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetti da cui | | |dipende o che |~R~i|~Rrecommends:~i | |vengono raccomandati| | |da qualche altro | | |pacchetto | | |--------------------+--------------------------------------------------| |corrispondenza con | | |pacchetto |~S filtro | |con filtro sulle | | |versioni | | |--------------------+--------------------------------------------------| |corrispondenza con | | |tutti i pacchetti |~T | |(vero) | | |--------------------+--------------------------------------------------| |corrispondenza con | | |nessun pacchetto |~F | |(falso) | | +-----------------------------------------------------------------------+ * Il formato dell'espressione regolare è la stessa di quello ERE usato nei tipici strumenti per il testo in stile Unix "^ ", ".*", "$", ecc. come in egrep(1), awk(1) e perl(1).     * Il di relazione è uno tra depends, predepends, recommends, suggests, conflicts, replaces, provides, e definisce la relazione tra i pacchetti. * Il di dipendenza predefinito è "depends". Suggerimento     Quando è una stringa vuota, mettere "~T" immediatamente dopo il comando.     Ecco alcune scorciatoie. * "~P" == "~Dprovides:"     * "~C" == "~Dconflicts:" * "…~W termine" == "(…|termine)" Gli utenti che hanno familiarità con mutt imparano presto, dato     che la sintassi per le espressioni si è ispirata a mutt. Vedere "SEARCHING, LIMITING, AND EXPRESSIONS" nel "Manuale utente", "/ usr/share/doc/aptitude/README". Nota Con la versione lenny di aptitude(8), può essere usata la nuova     sintassi in forma lunga come "?broken" invece del vecchio equivalente in forma breve " "~b". Il carattere di spazio " " è ora considerato uno dei caratteri che terminano l'espressione regolare, oltre al carattere tilde "~". Vedere il "Manuale utente" per la sintassi della nuova forma lunga. 2.2.8. Risoluzione delle dipendenze di aptitude Se la voce di menuF10 → Opzioni → Preferenze → Gestione delle dipendenze" è impostata in modo appropriato, selezionando un pacchetto in aptitude non si richiamano solamente i pacchetti     definiti nel suo elenco "Depends:", ma anche quelli nell'elenco "Recommends:". Questi pacchetti installati automaticamente vengo rimossi automaticamente se non sono più necessari secondo aptitude. Nota     Prima del rilascio lenny, apt-get e gli altri strumenti APT standard non offrivano la funzionalità di rimozione automatica. 2.2.9. Registri delle attività sui pacchetti     Si può controllare lo storico delle attività sui pacchetti nei file di registro. Tabella 2.12. File di registro per le attività sui pacchetti +---------------------------------------------------------------+ |file |contenuto | |--------------+------------------------------------------------| |/var/log/ |Registro delle attività a livello dpkg per tutte| |dpkg.log |le attività sui pacchetti |     |--------------+------------------------------------------------| |/var/log/apt/ |Registro delle attività APT generiche | |term.log | | |--------------+------------------------------------------------| |/var/log/ |Registro delle attività di comandi aptitude | |aptitude | | +---------------------------------------------------------------+ In realtà non è facile ottenere delle informazioni immediatamente     comprensibili da questi file di registro. Vedere Sezione 9.2.10, «Registrare i cambiamenti a file di configurazione» per un metodo più facile. 2.3. Esempi di operazioni con aptitude     Ecco alcuni esempi di operazioni con aptitude(8). 2.3.1. Elencare pacchetti in base alla corrispondenza del nome con espressioni regolari     Il seguente comando elenca i pacchetti i cui nomi corrispondono alle espressioni regolari specificate. $ aptitude search '~n(pam|nss).*ldap'     p libnss-ldap - NSS module for using LDAP as a naming service p libpam-ldap - Pluggable Authentication Module allowing LDAP interfaces     È piuttosto utile se si desidera trovare il nome esatto di un pacchetto. 2.3.2. Sfogliare le corrispondenze ad una espressione regolare L'espressione regolare "~dipv6" nel prompt di "l" nella vista "Nuovo elenco unico dei pacchetti", limita la visualizzazione dei     pacchetti a quelli la cui descrizione corrisponde all'espressione "ipv6" e permette di sfogliare interattivamente le loro informazioni. 2.3.3. Eliminare completamente i pacchetti rimosssi     Si possono eliminare tutti i file di configurazione rimasti di pacchetti rimossi.     Controllare il risultato del comando seguente.     # aptitude search '~c'     Se si pensa che sia giusto rimuover i pacchetti elencati, eseguire il comando seguente.     # aptitude purge '~c'     Si può fare la stessa cosa in modalità interattiva per avere un controllo più dettagliato. Fornire l'espressione regolare "~c" al prompt di "l" nella vista "Nuova vista dei pacchetti". In questo modo si limita la     visualizzazione a quei pacchetti che corrispondono all'espressione regolare, cioè "rimossi ma non eliminati completamente". Tutte le corrispondenze trovate possono essere mostrate premendo "[" nelle intestazioni di primo livello. Premere poi "_" nell'intestazione di primo livello, come "Pacchetti non installati". In questo modo vengono selezionati     per l'eliminazione completa solo quei pacchetti contenuti sotto l'intestazione che hanno fatto corrispondenza con l'espressione regolare. Si possono escludere alcuni pacchetti in modo interattivo dall'eliminazione premendo "=" per ciascuno di essi.     Questa tecnica è piuttosto comoda e funziona per molti altri tasti di comando. 2.3.4. Mettere ordine nello stato di installazione automatico/non automatico Ecco come faccio per mettere ordine nello stato di installazione     automatico/non automatico per i pacchetti (dopo aver usato un installatore che non sia aptitude, ecc.). 1. Avviare da root aptitude in modalità interattiva. 2. Digitare "u", "U", "f" e "g" per aggiornare l'elenco dei pacchetti e i pacchetti stessi. 3. Digitare "l" per impostare la limitazione della visualizzazione con "~i(~R~i|~Rrecommends:~i)" e digitare "M" su "Pacchetti installati" per marcarli come installati automaticamente. 4. Digitare "l" per impostare la limitazione della visualizzazione dei pacchetti con "~prequired|~pimportant| ~pstandard|~E" e digitare "m" su "Pacchetti installati" per marcarli come installati manualmente. 5. Digitare "l" per impostare la limitazione della visualizzazione dei pacchetti con "~i!~M" e rimuovere i pacchetti inutilizzati digitando "-" su ciascuno di essi dopo averli visualizzati digitando "[" su "Pacchetti installati".     6. Digitare "l" per impostare la limitazione della visualizzazione dei pacchetti con "~i"; poi digitare "m" su "Task" per marcare quei pacchetti come installati manualmente. 7. Uscire da aptitude. 8. Avviare "apt-get -s autoremove|less" da root per controllare quelli che non sono usati. 9. Riavviare aptitude in modalità interattiva e segnare i pacchetti necessari con "m". 10. Riavviare "apt-get -s autoremove|less" da root per controllare che in REMOVED siano contenuti soltanto i pacchetti attesi. 11. Avviare "apt-get autoremove|less" da root per rimuovere automaticamente i pacchetti non utilizzati.     L'azione "m" sopra "Task" è opzionale e server per prevenire situazioni di rimozioni di massa di pacchetti in futuro. 2.3.5. Aggiornamento di tutto il sistema Nota Quando si passa ad un nuovo rilascio, ecc. si dovrebbe considerare una installazione pulita di un nuovo sistema anche se è possibile aggiornare Debian nel modo descritto in seguito. Ciò     dà la possibilità di rimuovere la spazzatura raccolta nel tempo e fornisce la migliore combinazione dei pacchetti più nuovi. Naturalmente si dovrebbe fare un backup completo del sistema in un posto sicuro (vedere Sezione 10.1.6, «Backup e ripristino») prima di farlo. Raccomando di creare una configurazione con due sistemi avviabili usando due diverse partizioni per avere una transizione il più lineare possibile. Si può fare l'aggiornamento completo del sistema ad un nuovo     rilascio cambiando il contenuto del file "/etc/apt/sources.list" facendolo puntare al nuovo rilascio ed eseguendo il comando "apt-get update; apt-get dist-upgrade". Per aggiornare da stable a testing o unstable, sostituire     ""squeeze" nel file "/etc/apt/sources.list" di esempio descritto in Sezione 2.1.4, «Nozioni di base sugli archivi Debian» con "wheezy" o "sid". In realtà si possono dover affrontare alcune complicazioni a causa di problemi di transizione dei pacchetti, per lo più a causa di dipendenze. Più è grande la differenza nell'aggiornamento, più è probabile dover affrontare problemi più     grossi. Per la transizione dal vecchio rilascio stable al nuovo stable si possono leggere le nuove Note di rilascio (http:// www.debian.org/releases/stable/releasenotes.it.html) e seguire esattamente la procedura che vi è descritta per minimizzare i problemi. Quando si decide di passare da stable a testing prima del suo rilascio formale non ci sono Note di rilascio (http://     www.debian.org/releases/stable/releasenotes.it.html) che possano aiutare. La differenza tra stable e testing potrebbe essere diventata piuttosto grande dopo il precendente rilascio stable e potrebbe rendere l'aggiornamento complicato. SI dovrebbero prendere misure precauzionali per l'aggiornamento     completo raccogliendo le informazioni più aggiornate da mailing list ed usando il buon senso. 1. Leggere le "Note di rilascio" precedenti. 2. Fare il backup dell'intero sistema (specialmente dei dati e della configurazione). 3. Tenere a portata di mano supporti avviabili in caso di problemi con il bootloader. 4. Informare con un buon anticipo gli utenti nel sistema. 5. Registrare l'attività di aggiornamento con script(1). 6. Applicare l'opzione "unmarkauto" ai pacchetti richiesti, ad esempio "aptitude unmarkauto vim, per prevenire la loro rimozione. 7. Minimizzare i pacchetti installati per ridurre le probabilità     di conflitti tra i pacchetti, ad esempio rimuovere i pacchetti dell'attività desktop. 8. Rimuovere il file "/etc/apt/preferences" (disabilitare apt-pinning). 9. Cercare di aggiornare per gradi: oldstable → stable → testing → unstable. 10. Aggiornare il file "/etc/apt/sources.list per farlo puntare solamente al nuovo archivio ed eseguire "aptitude update". 11. Installare, opzionalmente i nuovi pacchetti partendo dai pacchetti fondamentali, ad esempio "aptitude install perl". 12. Eseguire il comando "apt-get -s dist-upgrade" per avere un'idea dell'impatto dell'aggiornamento. 13. Eseguire da ultimo il comando "apt-get dist-upgrade". Attenzione     Non è saggio saltare un rilascio principale Debian quando si aggiorna da un rilascio stable ad un altro. Attenzione     Nelle "Note di rilascio" precedenti GCC, il kernel Linux, initrd-tools, Glibc, Perl, APT tool chain, ecc. hanno richiesto un po' di attenzione particolare per gli aggiornamenti dell'intero sistema.     Per gli aggiornamenti quotidiani in unstable, vedere Sezione 2.4.3, «Salvaguardarsi da problemi coi pacchetti». 2.4. Operazioni avanzate per la gestione dei pacchetti 2.4.1. Operazioni avanzate per la gestione dei pacchetti dalla riga di comando Ecco un elenco di altre operazioni di gestione dei pacchetti per     i quali aptitude è di livello troppo altro o manca delle funzionalità richieste. Tabella 2.13. Elenco delle operazioni avanzate per la gestione dei pacchetti +---------------------------------------------------------------+ |comando |azione | |------------------------+--------------------------------------| |COLUMNS=120 dpkg -l |elenca lo stato di un pacchetto | ||installato per una segnalazione di bug| |------------------------+--------------------------------------| |dpkg -L |elenca il contenuto di un pacchetto | | |installato | |------------------------+--------------------------------------| |dpkg -L |elenca le pagine man di un pacchetto | || egrep '/usr/share/man/|installato | |man.*/.+' | | |------------------------+--------------------------------------| |dpkg -S |elenca i pacchetti installati che uno | | |un file con un nome che corrisponde al| | |modello | |------------------------+--------------------------------------| |apt-file search |elenca i pacchetti nell'archivio che | | |hanno un file con un nome che | | |corrisponde al modello | |------------------------+--------------------------------------| |apt-file list |elenca il contenuto dei pacchetti | ||nell'archivio che corrispondono al | | |modello | |------------------------+--------------------------------------| |dpkg-reconfigure |riconfigura il pacchetto con | | |esattamente quel nome | |------------------------+--------------------------------------| |dpkg-reconfigure -p=low |riconfigura il pacchetto con | | |esattamente quel nome ponendo le | | |domande più dettagliate | |------------------------+--------------------------------------| |configure-debian |riconfigura i pacchetti da | | |un'interfaccia a tutto schermo a menu | |------------------------+--------------------------------------| |dpkg --audit |controlla il sistema alla ricerca di | | |pacchetti parzialmente installati | |------------------------+--------------------------------------| |dpkg --configure -a |configura tutti i pacchetti | | |parzialmente installati | |------------------------+--------------------------------------| |apt-cache policy |mostra la versione disponibile, la | ||priorità e le informazioni | | |nell'archivio di un pacchetto binario | |------------------------+--------------------------------------| |apt-cache madison |informazioni nell'archivio di un | | |pacchetto | |------------------------+--------------------------------------|     |apt-cache showsrc |mostra informazioni sul pacchetto | ||sorgente di un pacchetto binario | |------------------------+--------------------------------------| |apt-get build-dep |installa i pacchetti richiesti per | | |compilare un pacchetto | |------------------------+--------------------------------------| |aptitude build-dep |installa i pacchetti richiesti per | | |compilare un pacchetto | |------------------------+--------------------------------------| |apt-get source |scarica un sorgente (da un archivio | | |standard) | |------------------------+--------------------------------------| |dget |scarica un pacchetto sorgente (da un | | |altro archivio) | |------------------------+--------------------------------------| |dpkg-source -x |crea un albero dei sorgenti a partire | |_ |da un insieme di pacchetti sorgenti | |- |("*.orig.tar.gz" e "*.debian.tar.gz"/ | |.dsc |"*.diff.gz") | |------------------------+--------------------------------------| |debuild binary |compila pacchetti da un albero dei | | |sorgenti locale | |------------------------+--------------------------------------| |make-kpkg |compila un pacchetto kernel a partire | |immagine_kernel |da un albero dei sorgenti del kernel | |------------------------+--------------------------------------| |make-kpkg --initrd |compila un pacchetto kernel con | |immagine_kernel |initramfs abilitato, a partire da un | | |albero dei sorgenti | |------------------------+--------------------------------------| |dpkg -i | | |_- |installa un pacchetto locale nel | |_ |sistema | |.deb | | |------------------------+--------------------------------------| |debi _ | | |- |installa pacchetti locali nel sistema | |_ | | |.dsc | | |------------------------+--------------------------------------| |dpkg --get-selections |salva le informazioni di stato sui | |'*' >selection.txt |pacchetti selezionati a livello di | | |dpkg | |------------------------+--------------------------------------| |dpkg --set-selections |imposta le informazioni di stato sui | | |imposta lo stato di selezione di un | |hold | dpkg |pacchetto a livello di dpkg a hold | |--set-selections |(equivalente a "aptitude hold | | |") | +---------------------------------------------------------------+ Attenzione Gli strumenti per i pacchetti a più basso livello, come "dpkg -i …" e "debi …" dovrebbero essere usati con molta cura     dall'amministratore di sistema. Non si prendono cura in modo automatico delle dipendenze richieste dai pacchetti. Le opzioni "--force-all" e simili, per la riga di comando di dpkg (vedere dpkg(1), sono pensate per essere usate solamente da utenti esperti. Usarle senza comprenderne pienamente l'effetto potrebbe portare tutto il sistema in uno stato problematico.     Notare quanto segue. * Tutti i comandi di configurazione ed installazioni di sistema devono essere eseguiti da root. * A differenza di aptitude che usa espressioni regolari (vedere Sezione 1.6.2, «Espressioni regolari»), gli altri comandi di gestione dei pacchetti usano espansioni di modelli in stile shell (vedere Sezione 1.5.6, «Glob della shell»). * Per apt-file(1), fornito dal pacchetto apt-file, è necessario eseguire prima "apt-file update". * configure-debian(8), fornito dal pacchetto configure-debian esegue dpkg-reconfigure(8) come suo backend. * dpkg-reconfigure(8) esegue gli script dei pacchetti usando debconf(1) come suo backend.     * I comandi "apt-get build-dep", "apt-get source" e "apt-cache showsrc" richiedono la voce "deb-src" in "/etc/apt/ sources.list". * dget(1), debuild(1) e debi(1) richiedono il pacchetto devscripts. * Vedere la procedura per (ri)creare pacchetti usando "apt-get source" in Sezione 2.7.13, «Fare il port di un pacchetto nel sistema stabile». * Il comando make-kpkg richiede il pacchetto kernel_package (vedere Sezione 9.7, «Il kernel»). * Vedere Sezione 12.11, «Creare pacchetti Debian» per informazioni generali sulla creazione di pacchetti. 2.4.2. Verifica dei pacchetti installati L'installazione di debsums permette la verifica dei file di pacchetto installati in base ai valori delle somme di controllo     MD5sum nei file "/var/lib/dpkg/info/*.md5sums" con debsums(1). Per il funzionamento di MD5sum vedere Sezione 10.4.5, «Somme di controllo MD5». Nota     Dato che il database MD5sum può essere manomesso da un intruso, debsums ha un'utilità limitata come strumento di sicurezza. È adatto solo per controllare modifiche fatte dall'amministratore o danni dovuti ad errori dei supporti. 2.4.3. Salvaguardarsi da problemi coi pacchetti Molti utenti preferiscono usare il rilascio unstable del sistema     Debian per avere le nuove funzionalità ed i nuovi pacchetti. Questo rende il sistema più esposto a bug critici sui pacchetti. L'installazione del pacchetto apt-listbugs salvaguarda il sistema     dai bug critici controllando automaticamente, al momento degli aggiornamenti fatti con il sistema APT, il BTS Debian alla ricerca dei bug critici. L'installazione del pacchetto apt-listchanges fornisce importanti     notizie contenute in NEWS.Debian quando si fanno aggiornamenti con il sistema APT. 2.4.4. Cercare tra i metadati dei pacchetti Sebbene visitare il sito Debian http://packages.debian.org/     (http://www.debian.org/distrib/packages.it.html) faciliti oggi giorno la ricerca nei metadati dei pacchetti, ci sono metodi più tradizionali per farlo. I comandi grep-dctrl(1), grep-status(1) e grep-available(1)     possono essere usati per cercare in qualsiasi file che sia nel formato generico dei file di controllo dei pacchetti di Debian. "dpkg -S " può essere usato per cercare i     pacchetti che contengono al loro interno file installati da dpkg il cui nome corrisponde al modello. Ma non trova i file creati dagli script dei manutentori. Se è necessario fare ricerche più elaborate sui metadati dei pacchetti, è necessario eseguire il comando "grep -e     modello_regex *" nella directory "/var/lib/dpkg/info/". In questo modo si cercano le parole indicate negli script e nei testi con le domande di installazione dei pacchetti.     Se si desiderano vedere in modo ricorsivo le dipendenze dei pacchetti, si dovrebbe usare apt-rdepends(8). 2.5. Aspetti tecnici della gestione dei pacchetti in Debian Verranno ora trattati alcuni aspetti tecnici interni del     funzionamento del sistema di gestione dei pacchetti Debian. Queste informazioni dovrebbero aiutare a trovare soluzioni proprie ai problemi con i pacchetti. 2.5.1. Metadati degli archivi I file con i metadati per ciascuna distribuzione sono archiviati in "dists/" su ciascun sito mirror di Debian, ad     esempio "http://ftp.us.debian.org/debian/". La struttura del suo archivio può essere navigata con il browser web. Ci sono 6 tipi di metadati. Tabella 2.14. Il contenuto dei metadati dell'archivio Debian +---------------------------------------------------------------+ |file |posizione |contenuto | |--------------+--------------------------+---------------------| | |directory della |descrizione | |Release |distribuzione di più alto |dell'archivio e | | |livello |informazioni | | | |sull'integrità | |--------------+--------------------------+---------------------| | |directory della |file di firma per il | |Release.gpg |distribuzione di più alto |file "Release" | | |livello |firmato con la chiave| | | |dell'archivio | |--------------+--------------------------+---------------------| | |directory della |elenca tutti i file | |Contents- |distribuzione di più alto |per tutti i pacchetti|     ||livello |nell'archivio | | | |relativo | |--------------+--------------------------+---------------------| | |directory più elevata per |descrizione | |Release |ciascuna combinazione |dell'archivio usata | | |distribuzione/area/ |per le regole di | | |architettura |apt_preferences(5) | |--------------+--------------------------+---------------------| | |directory più elevata per |dati debian/control | |Packages |ciascuna combinazione |concatenati dei | | |distribuzione/area/ |pacchetti binari | | |architettura-binaria | | |--------------+--------------------------+---------------------| | |directory più elevata per |dati debian/control | |Sources |ciascuna combinazione |concatenati dei | | |distribuzione/area/source |pacchetti sorgenti | +---------------------------------------------------------------+     Negli archivi recenti questi metadati sono memorizzati come file compressi e file di differenze per ridurre il traffico di rete. 2.5.2. File "Release" nella directory principale ed autenticità Suggerimento     Il file "Release" nella directory di livello più alto è usato per firmare gli archivi nel sistema secure APT. Ogni suite dell'archivio Debian ha un file "Release" nella sua     directory di livello più alto, ad esempio "http:// ftp.us.debian.org/debian/dists/unstable/Release", di questo tipo. Origin: Debian Label: Debian Suite: unstable Codename: sid Date: Sat, 14 May 2011 08:20:50 UTC Valid-Until: Sat, 21 May 2011 08:20:50 UTC     Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc Components: main contrib non-free Description: Debian x.y Unstable - Not Released MD5Sum: bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz 9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz 3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz ... Nota Qui si può scoprire il motivo per cui in questa guida si è scelto     di usare "suite" e "codename" (nome in codice) in Sezione 2.1.4, «Nozioni di base sugli archivi Debian». Il termine "distribuzione" è usato per riferirsi sia a "suite" sia a "codename". Tutti i nomi delle "aree" dell'archivio offerte da un archivio sono elencate in "Componente". L'integrità del file "Release" nella directory base viene     verificata usando l'infrastruttura crittografica chiamata secure apt (http://wiki.debian.org/SecureApt) . * Il file "Release.gpg" con la firma crittografica viene creato a partire dal file "Release" nella directory base e dalla chiave segreta dell'archivio Debian. * La chiave pubblica dell'archivio Debian può essere inserita in "/etc/apt/trusted.gpg" o automaticamente installando il portachiavi con il file     base-files più recente o o manualmente dagli strumenti gpg o apt-key con la più recente chiave pubblica dell'archivio pubblicata su ftp-master.debian.org (http://ftp-master.debian.org/) . * Il sistema secure APT verifica crittograficamente l'integrità del file "Release" di più alto livello scaricato con questo file "Release.gpg" e la chiave pubblica dell'archivio Debian in "/etc/apt/trusted.gpg". L'integrità di tutti i file "Packages" e "Sources" viene verificata usando i valori MD5sum nel file "Release" nella     ripsettiva directory base. L'integrità di tutti i file di pacchetto viene verificata usando i valori MD5sum nei file "Packages" e "Sources". Vedere debsums(1) e Sezione 2.4.2, «Verifica dei pacchetti installati». Dato che la verifica crittografica della firma è un processo molto più dispendioso in termini di uso della CPU rispetto al calcolo di valori MD5sum, l'uso di valori MD5sum per ciascun     pacchetto mentre viene usata la firma crittografica per il file "Release" principale, fornisce una buona sicurezza con buone prestazioni (http://www.infodrom.org/~joey/Writing/Linux-Journal/ secure-apt/) (vedere Sezione 10.4, «Infrastruttura di sicurezza dei dati»). 2.5.3. File "Release" a livello di archivio Suggerimento     I file "Release" a livello di archivio sono usati per le regole di apt_preferences(5). Ci sono file "Release" a livello di archivio per tutte le posizioni nell'archivio specificate dalla riga "deb" in "/etc/apt     /sources.list", come "http://ftp.us.debian.org/debian/dists/ unstable/main/binary-amd64/Release" o "http://ftp.us.debian.org/ debian/dists/sid/main/binary-amd64/Release" nell'esempio seguente. Archive: unstable Origin: Debian     Label: Debian Component: main Architecture: amd64 Attenzione Nell'archivio Debian (http://ftp.us.debian.org/debian/) , per la     voce "Archive: vengono usati i nomi di suite ("stable", "testing", "unstable", …), mentre vengono usati i nomi in codice ("dapper", "feisty", "gutsy", "hardy", "intrepid", …) nell' archivio Ubuntu (http://archive.ubuntu.com/ubuntu/) . Per alcuni archivi, come experimental e squeeze-backports, che contengono pacchetti che non dovrebbero essere installati     automaticamente, c'è una riga aggiuntiva, come "http:// ftp.us.debian.org/debian/dists/experimental/main/binary-amd64/ Release" nell'esempio seguente. Archive: experimental Origin: Debian     Label: Debian NotAutomatic: yes Component: main Architecture: amd64 Notare che per gli archivi normali senza la riga "NotAutomatic: yes", il valore predefinito per la priorità di Pin è 500, mentre     per gli archivi speciali con "NotAutomatic: yes", il valore predefinito per la priorità di Pin è 1 (vedere apt_preferences(5) e Sezione 2.7.3, «Modificare la versione candidata»). 2.5.4. Recuperare i metadati per un pacchetto Quando si usano strumenti APT, quali aptitude, apt-get, synaptic, apt-file, auto-apt, … è necessario aggiornare le copie locali dei metadati contenenti le informazioni sull'archivio Debian. Queste     copie locali hanno i seguenti nomi di file che corrispondono ai nomi di distribuzione, area e architettura specificati in "/etc/ apt/sources.list" (vedere Sezione 2.1.4, «Nozioni di base sugli archivi Debian»). * "/var/lib/apt/lists/ftp.us.debian.org_debian_dists_ _Release" * "/var/lib/apt/lists/ftp.us.debian.org_debian_dists_ _Release.gpg"     * "/var/lib/apt/lists/ftp.us.debian.org_debian_dists_ __binary-_Packages" * "/var/lib/apt/lists/ftp.us.debian.org_debian_dists_ __source_Sources" * "/var/cache/apt/apt-file/ftp.us.debian.org_debian_dists_ _Contents-.gz" (per apt-file) I primi quattro tipi di file sono condivisi da tutti i comandi APT pertinenti e vengono aggiornati dalla riga di comando con     "apt-get update" e "aptitude update". I metadati "Packages" sono aggiornati se esiste la riga "deb" in "/etc/apt/sources.list". I metadati "Sources" sono aggiornati se esiste la riga "deb-src" in "/etc/apt/sources.list". I metadati "Packages" e "Sources" contengono la voce "Filename:" che punta alla posizione dei file dei pacchetti binari e     sorgenti. Attualmente questi pacchetti sono posizionati nell'albero di directory "pool/" per una transizione migliore tra i rilasci. Le copie locali dei metadati "Packages" possono essere ricercate     interattivamente con l'aiuto di aptitude. Il comando specializzato di ricerca grep-dctrl(1) può cercare nelle copie locai dei metadati "Packages" e "Sources". La copia locale dei metadati "Contents-" può essere aggiornata con "apt-file update" e la sua posizione è diversa da     quella degli altri quattro file. Vedere apt-file(1). (auto-apt usa in modo predefinito una posizione differente per la copia locale di "Contents-.gz".) 2.5.5. Lo stato dei pacchetti per APT In aggiunta ai metadati recuperati da remoto, lo strumento APT, a partire da lenny, memorizza le informazioni generate localmente     sullo stato delle installazioni in "/var/lib/apt/extended_states" che è usato da tutti gli strumenti APT per tenere traccia dei pacchetti installati automaticamente. 2.5.6. Lo stato dei pacchetti per aptitude In aggiunta ai metadati recuperati da remoto, il comando aptitude     memorizza le informazioni generate localmente sullo stato delle installazioni in "/var/lib/aptitude/pkgstates" che è usato solo da esso. 2.5.7. Copie locali dei pacchetti scaricati Tutti i pacchetti scaricati da remoto attraverso il meccanismo     APT vengono salvati nella directory "/var/cache/apt/archives" fino a che non vengono cancellati. Questa politica di pulizia dei file della cache per aptitude può     essere impostata in "Opzioni" → "Preferenze" e può essere forzata usando la sua voce di menu "Pulisci la cache dei pacchetti" o "Cancella i file vecchi" in "Azioni". 2.5.8. Nomi dei file di pacchetto di Debian     I file di pacchetto Debian hanno nomi con una particolare struttura. Tabella 2.15. La struttura dei nomi dei pacchetti Debian +---------------------------------------------------------------+ |tipo di pacchetto |struttura del nome | |--------------------------+------------------------------------| |Il pacchetto binario |_: | |(alias deb) |- | | |-.deb| |--------------------------+------------------------------------| |Il pacchetto binario per |_: | |l'installatore Debian |- | |(alias udeb) |- | | |.udeb | |--------------------------+------------------------------------| |Il pacchetto sorgente |_: |     |(sorgenti originali) |- | | |.orig.tar.gz | |--------------------------+------------------------------------| |Il pacchetto sorgente 1.0 |_: | |(modifiche Debian) |- | | |.diff.gz | |--------------------------+------------------------------------| |Il pacchetto sorgente 3.0 |_: | |(quilt) (modifiche Debian)|- | | |.debian.tar.gz | |--------------------------+------------------------------------| |Il pacchetto sorgente |_: | |(descrizione) |- | | |.dsc | +---------------------------------------------------------------+ Suggerimento     Sono qui descritti solamente i formati base dei pacchetti sorgenti. Per ulteriori informazioni vedere dpkg-source(1). Tabella 2.16. I caratteri utilizzabili all'interno di ciascuna porzione del nome dei pacchetti Debian +---------------------------------------------------------------+ |nome porzione |caratteri utilizzabili |presenza | | |(espressione regolare) | | |--------------------+--------------------------------+---------|     | |[a-z,A-Z,0-9,.,+,-]+ |richiesta| |--------------------+--------------------------------+---------| |: |[0-9]+: |opzionale| |--------------------+--------------------------------+---------| ||[a-z,A-Z,0-9,.,+,-,:]+ |richiesta| |--------------------+--------------------------------+---------| | |[a-z,A-Z,0-9,.,+,~]+ |opzionale| +---------------------------------------------------------------+ Nota     Si può controllare l'ordine delle versioni dei pacchetti con dpkg (1), per esempio con "dpkg --compare-versions 7.0 gt 7.~pre1 ; echo $?". Nota L'installatore Debian (d-i) (http://www.debian.org/devel/ debian-installer/index.it.html) usa come estensione per i suoi pacchetti binari udeb invece della normale deb. Un pacchetto udeb     è un pacchetto deb ridotto al minimo, con rimossi alcuni contenuti non essenziali come la documentazione, per risparmiare spazio seguendo meno rigorosamente i requisiti richiesti dalle norme per i pacchetti. Entrambi i pacchetti deb e udeb condividono la stessa struttura di pacchetto. La "u" sta per micro. 2.5.9. Il comando dpkg dpkg(1) è lo strumento di più basso livello per la gestione dei     pacchetti Debian. È molto potente e deve essere usato con cautela.     Quando installa un pacchetto chiamato "", dpkg fa nell'ordine elencato le seguenti operazioni. 1. Spacchetta il file deb (equivalente di "ar -x") 2. Esegue ".preinst" usando debconf(1)     3. Installa il contenuto del pacchetto nel sistema (equivalente di "tar -x") 4. Esegue ".postinst" usando debconf(1) Il sistema debconf fornisce un'interazione standard con l'utente     con supporto per internazionalizzazione e localizzazione ( Capitolo 8, I18N e L10N). Tabella 2.17. I file degni di nota creati da dpkg +---------------------------------------------------------------+ |file |descrizione del contenuto | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |elenco di file di configurazione | |.conffiles|(modificabile dall'utente) | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |elenco dei file e delle directory | |.list |installate dal pacchetto | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |elenco dei valori degli hash MD5 per| |.md5sums |i file installati dal pacchetto | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |script del pacchetto da eseguire | |.preinst |prima dell'installazione del | | |pacchetto | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |script del pacchetto da eseguire | |.postinst |dopo l'installazione del pacchetto | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |script del pacchetto da eseguire | |.prerm |prima della rimozione del pacchetto | |--------------------------+------------------------------------| |/var/lib/dpkg/info/ |script del pacchetto da eseguire | |.postrm |dopo la rimozione del pacchetto | |--------------------------+------------------------------------|     |/var/lib/dpkg/info/ |script per il sistema debconf | |.config | | |--------------------------+------------------------------------| |/var/lib/dpkg/alternatives|informazioni sulle alternative usate| |/ |dal comando update-alternatives | |--------------------------+------------------------------------| |/var/lib/dpkg/available |informazioni sulla disponibilità per| | |tutti i pacchetti | |--------------------------+------------------------------------| | |le informazioni sulle deviazioni | |/var/lib/dpkg/diversions |usate da dpkg(1) e impostate da | | |dpkg-divert(8) | |--------------------------+------------------------------------| | |le informazioni per la | |/var/lib/dpkg/statoverride|sovrascrittura dello stato usate da | | |dpkg(1) e impostate da | | |dpkg-statoverride(8) | |--------------------------+------------------------------------| |/var/lib/dpkg/status |le informazioni sullo stato per | | |tutti i pacchetti | |--------------------------+------------------------------------| |/var/lib/dpkg/status-old |la prima generazione di backup del | | |file "var/lib/dpkg/status" | |--------------------------+------------------------------------| | |la seconda generazione e le | |/var/backups/dpkg.status* |generazioni precedenti di backup del| | |file "var/lib/dpkg/status" | +---------------------------------------------------------------+     Il file "status" è anche usato da altri strumenti come dpkg(1): "dselect update" e "apt-get -u dselect-upgrade".     Il comando di ricerca specializzato grep-dctrl(1) può ricercare nelle copie locali dei metadati "status" e "available" Suggerimento     Nell'ambiente dell'installatore Debian (http://www.debian.org/ devel/debian-installer/index.it.html) , viene usato il comando udpkg per aprire i pacchetti udeb. Il comando udpkg è una versione ridotta al minimo del comando dpkg. 2.5.10. Il comando update-alternatives Il sistema Debian ha un meccanismo per installare senza problemi programmi che si sovrappongono nelle loro funzioni usando     update-alternatives(8). Per esempio, si può far sì che il comando vi esegua vim quando si sono installati entrambi i pacchetti vim e nvi. $ ls -l $(type -p vi) lrwxrwxrwx 1 root root 20 2007-03-24 19:05 /usr/bin/vi -> /etc/alternatives/vi $ sudo update-alternatives --display vi ... $ sudo update-alternatives --config vi     Selezione Percorso ---------------------------------------------- 1 /usr/bin/vim *+ 2 /usr/bin/nvi Premere Invio per mantenere il valore predefinito[*] o digitare il numero della selezione: 1 Il sistema delle alternative Debian mantiene le proprie selezioni     in forma di collegamenti simbolici in "/etc/alternatives/". Il procedimento di selezione usa i file corrispondenti in "/var/lib/ dpkg/alternatives/". 2.5.11. Il comando dpkg-statoverride La sovrascrittura dello stato fornita dal comando dpkg-statoverride(8) è un modo per dire a dpkg(1) di usare un     proprietario o una modalità diversa per un file quando viene installato un pacchetto. Se viene specificato "--update" e il file esiste già, viene immediatamente impostato con il prorpietario e la modalità nuovi. Attenzione     La modifica diretta del proprietario o della modalità, usando chmod o chown, di un file che appartiene ad un pacchetto da parte dell'amministratore del sistema viene vanificata dal successivo aggiornamento del pacchetto. Nota     È stata usata la parola file, ma in realtà si può trattare di un qualsiasi oggetto nel file system gestito da dpkg, inclusi directory, device, ecc. 2.5.12. Il comando dpkg-divert Le deviazioni per i file fornite dal comando dpkg-divert(8) sono un modo per forzare dpkg(1) a non installare un file nella sua     posizione predefinita, ma in una posizione deviata. L'uso di dpkg-divert è pensato per gli script di manutenzione dei pacchetti. Il suo uso in maniera superficiale da parte dell'amministratore di sistema è deprecato. 2.6. Ripristino da un sistema con problemi Quando si usa il sistema unstable, l'amministratore deve saper     ripristinare le cose da una situazione problematica di gestione dei pacchetti. Attenzione     Alcuni dei metodi descritti comportano azioni ad alto rischio. Ci si consideri avvertiti! 2.6.1. Incompatibilità con vecchie configurazioni utente Se un programma con interfaccia grafica per il desktop presenta problemi di instabilità dopo un importante aggiornamento della versione originale, si dovrebbero sospettare interferenze con     vecchi file locali di configurazione creati da esso. Se è stabile per account utente creati da zero, questa ipotesi è confermata. (Questo è un bug nella creazione del pacchetto e viene solitamente evitato dal curatore del pacchetto.) Per ripristinare la stabilità, si dovrebbero spostare i corrispondenti file locali di configurazione e riavviare il     programma GUI. Potrebbe essere necessario leggere il contenuto dei vecchi file di configurazione per ripristinare successivamente le informazioni di configurazione. (Non cancellarli troppo di fretta.) 2.6.2. Pacchetti diversi con file sovrapposti I sistemi di gestione dei pacchetti a livello dell'archivio, come     aptitude(8) o apt-get(1) non provano nemmeno ad installare pacchetti con file sovrapposti, basandosi sulle dipendenze dei pacchetti (vedere Sezione 2.1.6, «Dipendenze dei pacchetti»). Errori dei manutentori dei pacchetti o l'uso di fonti degli archivi mescolate in modo incoerente (vedere Sezione 2.7.2, «Pacchetti da fonti mescolate di archivi») dall'amministratore di sistema possono creare una situazione con dipendenze dei     pacchetti non correttamente definite. Quando, in una situazione di questo tipo, si installa un pacchetto con file sovrapposti usando aptitude(8) o apt-get(1), dpkg(1) che spacchetta i pacchetti si assicura di restituire un errore al programma che lo ha invocato senza sovrascrivere file esistenti. Attenzione L'uso di pacchetti di terze parti introduce significativi rischi     per il sistema attraverso gli script dei manutentori che sono eseguiti con privilegi di root e che possono fare qualsiasi cosa nel sistema. Il comando dpkg(1) protegge solo contro la sovrascrittura in fase di spacchettamento. Si possono risolvere installazioni problematiche di questo tipo     rimuovendo prima il vecchio pacchetto che crea problemi: .     $ sudo dpkg -P 2.6.3. Risolvere problemi negli script di pacchetto Quando un comando nello script di un pacchetto restituisce un errore per una qualche ragione e lo script finisce con un errore,     il sistema di gestione dei pacchetti cancella l'azione e finisce con pacchetti parzialmente installati. Quando un pacchetto contiene bug nei suoi script di rimozione, il pacchetto può diventare impossibile da rimuovere e fonte di problemi.     Per i problemi di script di pacchetto di "", si dovrebbe guardare negli script di pacchetto seguenti. * "/var/lib/dpkg/info/.preinst" * "/var/lib/dpkg/info/.postinst"     * "/var/lib/dpkg/info/.prerm" * "/var/lib/dpkg/info/.postrm"     Modificare dall'account root lo script di pacchetto che causa problemi usando le tecniche seguenti. * disabilitare la riga che causa problemi facendola precedere da "#"     * forzare la restituzione di esecuzione con successo aggiungendo in fondo alla riga che causa problemi "|| true"     Configurare tutti i pacchetti parzialmente installati con il comando seguente.     # dpkg --configure -a 2.6.4. Ripristinare con il comando dpkg Dato che dpkg è uno strumento per pacchetti a livello molto basso, può funzionare anche in situazioni molto brutte come un     sistema non avviabile senza una connessione di rete. Assumiamo, per esempio, che il pacchetto pippo sia difettoso e debba essere sostituito. Si possono trovare copie di versioni più vecchie del pacchetto pippo, libere dal bug, nella directory della cache dei pacchetti:     "/var/cache/apt/archives/". (Se non ci sono, se ne può scaricare una dall'archivio di http://snapshot.debian.net/ (http:// snapshot.debian.net/) o copiarla dalla cache dei pacchetti di una macchina funzionante.)     Se si può avviare il sistema, lo si può installare con il comando seguente.     # dpkg -i /percorso/di/pippo__.deb Suggerimento     Se il danno al sistema è piccolo, si può in alternativa retrocedere tutto il sistema ad una versione precedente come in <_emergency_downgrading>>, usando il sistema di più alto livello APT.     Se il sistema non è avviabile dal disco fisso, si dovrebbe cercare un altro modo per fare l'avvio. 1. Avviare il sistema usando il CD dell'installatore Debian in modalità ripristino.     2. Montare il sistema non avviabile sul disco fisso in "/ destinazione". 3. Installare una versione più vecchia del pacchetto pippo con il comando seguente.     # dpkg --root /destinazione -i /percorso/di/pippo__.deb     Questo esempio funziona persino se il comando dpkg sul disco fisso è danneggiato. Suggerimento     Per ripristinare il sistema danneggiato, può essere usato in modo simile qualsiasi sistema GNU/Linux avviato da un altro sistema sul disco fisso, CD live GNU/Linux, chiavetta USB avviabile o avvio di rete. Se il tentativo di installare un pacchetto in questo modo fallisce a causa di qualche violazione di dipendenze e si deve necessariamente farlo come ultima spiaggia, si possono     sovrascrivere le dipendenze usando "--ignore-depends", "--force-depends" e altre opzioni di dpkg. Se lo si fa, è necessario in seguito fare tutti gli sforzi possibili per ripristinare le dipendenze corrette. Per i dettagli vedere dpkg (8). Nota Se il sistema è seriamente danneggiato, se ne dovrebbe fare un     backup completo in un posto sicuro (vedere Sezione 10.1.6, «Backup e ripristino») e fare un'installazione pulita. Ciò comporta meno perdita di tempo e alla fine produce un risultato migliore. 2.6.5. Ripristinare i dati sui pacchetti selezionati Se "/var/lib/dpkg/status" diventa corrotto per una qualsiasi ragione, il sistema Debian perde i dati sulla selezione dei     pacchetti e ne ha grave danno. Cercare il vecchio file "/var/lib/ dpkg/status" in "/var/lib/dpkg/status-old" o "/var/backups/ dpkg.status.*". Mantenere "/var/backups/" in una partizione separata può essere     una buona idea dato che questa directory contiene molti dati importanti per il sistema. Per danni molto seri, raccomando di fare una re-installazione pulita dopo aver fatto il backup del sistema. Anche se tutto ciò     che era in "/var/" è andato perduto, è sempre possibile recuperare alcune informazioni dalle directory in "/usr/share/doc /" per guidare le nuove installazioni.     Reinstallare un sistema (desktop) minimale     # mkdir -p /percorso/del/vecchio/sistema     Montare il vecchio sistema in "percorso/del/vecchio/sistema/". # cd /percorso/del/vecchio/sistema/usr/share/doc # ls -1 >~/ls1.txt     # cd /usr/share/doc # ls -1 >>~/ls1.txt # cd # sort ls1.txt | uniq | less     Verranno mostrati i nomi dei pacchetti da installare. (Ci potrebbero essere alcuni nomi non di pacchetto, come "texmf".) 2.7. Suggerimenti per la gestione dei pacchetti 2.7.1. Come scegliere i pacchetti Debian Si possono cercare i pacchetti che soddisfano i propri bisogni     con aptitude in base alla descrizione del pacchetto o dall'elenco in "Task". Quando si incontrano più di due pacchetti simili e non si sa     quale installare senza doverli installare per prova, si dovrebbe usare un po' di buon senso. Considero i punti seguenti un buon consiglio per i paccchetti da preferire. * Essenziale: sì > no * Area: main > contrib > non-free * Priorità: richiesto > importante > standard > opzionale > extra * Task: pacchetti elencati in task come "Ambiente desktop" * Pacchetti selezionati da pacchetti di dipendenze (es, python2.4 selezionato da python)     * Popcon: maggior numero di voti e di installazioni * Changelog: aggiornamenti regolari da parte del manutentore * BTS: nessun bug RC (nessun bug critico, grave o serio) * BTS: manutentore sensibile alle segnalazioni di bug * BTS: maggior numero di bug risolti di recente * BTS: minor numero di bug rimanenti non wishlist Essendo Debian un progetto di volontari con modello di sviluppo     distribuito, i suoi archivi contengono molti pacchetti con scopi e qualità molto differenti. Si deve scegliere con la propria testa che uso farne. 2.7.2. Pacchetti da fonti mescolate di archivi Attenzione Installare pacchetti da fonti mescolate di archivi non è     supportato dalla distribuzione Debian ufficiale, tranne che per particolari combinazioni supportate ufficialmente, come stable con security updates (http://www.debian.org/security/ index.it.html) e squeeze-updates (http://www.debian.org/News/2011 /20110215) . Ecco un esempio di operazioni da fare per includere,     sporadicamente, versioni originali più recenti di specifici pacchetti presenti in unstable pur mantenendo testing. 1. Cambiare temporaneamente il file "/etc/apt/sources.list" ad una singola voce "unstable". 2. Eseguire "aptitude update".     3. Eseguire "aptitude install ". 4. Ripristinare il file "/etc/apt/sources.list" originale per testing. 5. Eseguire "aptitude update". Con questo approccio manuale non si deve creare il file "/etc/apt     /preferences" né ci si deve preoccupare dei pin di apt. Ma è piuttosto laborioso. Attenzione Quando si usano fonti di archivi mescolate, si deve assicurare la compatibilità tra i pacchetti da soli, dato che Debian non la     garantisce. Se esistono incompatibilità tra i pacchetti, si può danneggiare il sistema. Si deve essere in grado di giudicare queste esigenze tecniche. L'uso di fonti mescolate di archivi non correlati è una modalità di funzionamento del tutto facoltativa e il suo uso non è per nulla raccomandato.     Le regole generali per installare pacchetti da archivi diversi sono le seguenti. * L'installazione di pacchetti non binari ("Architecture: all") è più sicura. o pacchetti di documentazione: nessun requisito particolare o pacchetti programma per interpreti: deve essere disponibile un interprete compatibile * L'installazione di pacchetti binari (non "Architecture: all") di solito comporta molte difficoltà e non è sicura.     o compatibilità di versione con librerie (inclusa "libc") o compatibilità di versione con programmi applicativi correlati o compatibilità con l'ABI (http://en.wikipedia.org/wiki/ Application_binary_interface) del kernel o compatibilità con l'ABI (http://en.wikipedia.org/wiki/ Application_binary_interface) C++ o … Nota Per rendere l'installazione di un pacchetto più sicura, possono     essere forniti alcuni pacchetti binari applicativi commerciali non liberi con librerie completamente statiche. Si dovrebbe anche per essi controllare in ogni caso la compatibilità con ABI (http: //en.wikipedia.org/wiki/Application_binary_interface) , ecc. Nota Installare pacchetti binari da archivi non ufficialmente supportati è generalmente una cattiva idea, tranne che per     evitare pacchetti danneggiati per un breve tempo. Questo è vero anche se si usano i pin di APT (vedere Sezione 2.7.3, «Modificare la versione candidata»). Si dovrebbe considerare chroot o tecniche simili (vedere Sezione 9.8, «Sistema virtualizzato») per eseguire programmi da archivi differenti. 2.7.3. Modificare la versione candidata Senza il file "/etc/apt/preferences", il sistema APT sceglie la versione più recente disponibile come versione candidata usando la stringa di versione. Questa è la situazione normale e l'uso     raccomandato del sistema APT. Tutte le combinazioni di archivi supportate ufficialmente non necessitano del file "/etc/apt/ preferences", dato che gli archivi che non dovrebbero essere usati come fonti automatica per gli aggiornamenti sono marcati come NotAutomatic e trattati in modo appropriato. Suggerimento     La regola di comparazione della stringa di versione può essere verificata con, ad esempio, "dpkg --compare-versions ver1.1 gt ver1.1~1; echo $?" (vedere dpkg(1)). Quando si installano regolarmente pacchetti da fonti di archivi mescolate (vedere Sezione 2.7.2, «Pacchetti da fonti mescolate di archivi»), si possono automatizzare queste operazioni complicate     creando il file "/etc/apt/preferences" con le voci appropriate e modificando la regola di selezione dei pacchetti per le versioni candidate come descritto in apt_preferences(5). Questo è chiamato usare i pin di APT. Avvertimento     L'uso dei pin di APT da parte di un utente inesperto è una fonte sicura di grossi problemi. Si dovrebbe evitare l'uso dei pin di APT se non strettamente necessario. Attenzione     Quando si usano i pin di APT si deve assicurare la compatibilità dei pacchetti da soli dato che Debian non la garantisce. L'uso dei pin di APT è una modalità di funzionamento del tutto facoltativa e il suo uso non è per nulla consigliato. Attenzione Per le regole di apt_preferences(5) sono usati i file Release a livello di archivio (vedere Sezione 2.5.3, «File "Release" a livello di archivio»). I pin di APT perciò funzionano solo con il     nome della "suite" per i normali archivi Debian (http:// ftp.us.debian.org/debian/dists/) e per gli archivi di sicurezza Debian (http://security.debian.org/dists/) . (Ciò è diverso per gli archivi Ubuntu (http://www.ubuntu.com/) .) Per esempio nel file "/etc/apt/preferences" si può usare "Pin: release a= unstable", ma non "Pin: release a=sid". Attenzione     Quando si usano archivi non Debian con i pin di APT si dovrebbe controllare quale sia il loro scopo e la loro credibilità. Ubuntu e Debian, per esempio, non sono fatti per essere mescolati. Nota     Anche se non si crea il file "/etc/apt/preferences" si possono fare operazioni piuttosto complesse (vedere Sezione 2.6.4, «Ripristinare con il comando dpkg» e Sezione 2.7.2, «Pacchetti da fonti mescolate di archivi») senza l'uso dei pin di APT.     Quella che segue è una spiegazione semplificata delluso dei pin di APT. Il sistema APT sceglie, dalle fonti per i pacchetti disponibili definite nel file "/etc/apt/sources.list", il pacchetto di aggiornamento con la priorità di pin più elevata come versione     candidata del pacchetto. Se la priorità di pin del pacchetto è maggiore di 1000, la restrizione a versioni di aggiornamento non viene considerata per permettere la retrocessione ad una versione precedente (vedere Sezione 2.7.10, «Retrocessione di emergenza alla versione precedente»). Il valore della priorità di pin per ciascun pacchetto è definito     dalle voci "Pin-Priority" nel file "/etc/apt/preferences o viene usato il valore predefinito. Tabella 2.18. Elenco di valori di priorità di pin che esemplificano la tecnica d'uso dei pin di APT. +---------------------------------------------------------------+ |Priorità |Effetti del pin di APT sul pacchetto | |di pin | | |---------+-----------------------------------------------------| |1001 |installa il pacchetto anche se ciò costituisce il | | |ritorno ad una versione precedente | |---------+-----------------------------------------------------| |990 |usato come valore predefinito per l'archivio del | | |rilascio prescelto |     |---------+-----------------------------------------------------| |500 |usato come valore predefinito per l'archivio normale | |---------+-----------------------------------------------------| |100 |usato come valore predefinito per l'archivio | | |NonAutomatico e MaConAggiornamentiAutomatici | |---------+-----------------------------------------------------| |100 |usato per i pacchetti installati | |---------+-----------------------------------------------------| |1 |usato come valore predefinito per l'archivio | | |NonAutomatico | |---------+-----------------------------------------------------| |-1 |non installa mai il pacchetto nemmeno se raccomandato| +---------------------------------------------------------------+     L'archivio del rilascio definito può essere impostato in svariati modi. * nel file di configurazione "/etc/apt/apt.conf" con la riga "APT::Default-Release "stable";"     * con l'opzione per la riga di comando, ad esempio, "apt-get install -t testing qualche-pacchetto" Gli attributi di archivio NonAutomatico e MaConAggiornamentiAutomatici vengono impostati dal server dell'archivio che ha il file Release a livello di archivio     (vedere Sezione 2.5.3, «File "Release" a livello di archivio») che contiene sia "NotAutomatic: yes" sia "ButAutomaticUpgrades: yes". L'archivio NonAutomatico viene impostato dal server dell'archivio che ha il file Release a livello di archivio che contiene solamente "NotAutomatic: yes".     La situazione dei pin di APT di da diverse fonti di archivi viene mostrata con "apt-cache policy ". * Una riga che inizia con "pacchetto pin:" elenca la versione del pacchetto di pin se è definita un'associazione specifica per , ad esempio "Package pin: 0.190". * Non esiste alcuna riga con "Package pin:" se non è definita alcuna associazione solamente con . * Il valore di priorità di pin associato solamente con viene mostrato alla destra di tutte le sringhe di     versione, ad esempio "0.181 700". * Se non è definita un'associazione specifica con viene mostrato "0" alla destra di tutte le stringhe di versione. * I valori di priorità di pin degli archivi (definiti come "Package: *" nel file "/etc/apt/preferences") sono elencati alla sinistra di tutti i percorsi di archivio, ad esempio "100 http://ftp.XX.debian.org/debian/squeeze-backports/main Packages". 2.7.4. Updates e Backports Esistono gli archivi di squeeze-updates (http://www.debian.org/     News/2011/20110215) e backports.debian.org (http:// backports.debian.org) che forniscono pacchetti di aggiornamento per stable (squeeze).     Per usare questi archivi, si devono elencare tutti quelli richiesti nel file "/etc/apt/sources.list" nel modo seguente. deb http://ftp.us.debian.org/debian/ squeeze main contrib non-free     deb http://security.debian.org/ squeeze/updates main contrib deb http://ftp.us.debian.org/debian/ squeeze-updates main contrib non-free deb http://ftp.us.debian.org/debian/ squeeze-backports main contrib non-free Non è necessario impostare esplicitamente un valore di priorità di pin nel file "/etc/apt/preferences". Quando nuovi pacchetti     diventano disponibili, la configurazione predefinita fornisce gli aggiornamenti più ragionevoli (vedere Sezione 2.5.3, «File "Release" a livello di archivio»). * Tutti i vecchi pacchetti installati vengono aggiornati con quelli più nuovi da squeeze-updates.     * Solo i vecchi pacchetti installati manualmente da squeeze-backports vengono aggiornati a quelli più nuovi da squeeze-backports. Ogni volta che si desidera installare manualmente un pacchetto     chiamato "" con le sue dipendenze dall'archivio squeeze-backports, usare questo comando che sposta il rilascio stabilito con l'opzione "-t".     $ sudo apt-get install -t squeeze-backports 2.7.5. Bloccare i pacchetti da installare perché "Raccomandati" Se non si desidera installare pacchetti particolari richiamati     automaticamente perché "Raccomandati", è necessario creare il file "/etc/apt/preferences" ed elencarvi esplicitamente all'inizio tutti quei pacchetti nel modo seguente. Package: Pin: version * Pin-Priority: -1     Package: Pin: version * Pin-Priority: -1 2.7.6. Usare e aggiornare testing con alcuni pacchetti da unstable Quello che segue è un esempio di uso dei pin di APT per includere pacchetti specifici con versioni originali più recenti presenti     in unstable aggiornandoli regolarmente pur mantenendo testing. Si devono elencare nel file "/etc/apt/sources.list" tutti gli archivi necessari nel modo seguente. deb http://ftp.us.debian.org/debian/ testing main contrib non-free     deb http://ftp.us.debian.org/debian/ unstable main contrib non-free deb http://security.debian.org/ testing/updates main contrib     Impostare il file "/etc/apt/preferences" come segue. Package: *     Pin: release a=unstable Pin-Priority: 100 Quando, con questa configurazione, si desidera installare un pacchetto chiamato "" con le sue dipendenze     dall'archivio unstable, usare il comando seguente che cambia il rilascio definito con l'opzione "-t" (la priorità di pin di unstable diventa 990).     $ sudo apt-get install -t unstable Con quessta configurazione, la normale esecuzione di "apt-get upgrade" e "apt-get dist-upgrade" (o "aptitude safe-upgrade" e     "aptitude full-upgrade") aggiorna i pacchetti che erano stati installati dall'archivio testing usando l'attuale archivio testing e i pacchetti che erano stati installati dall'archivio unstable usando l'attuale archivio unstable. Attenzione     Fare attenzione a non rimuovere la voce "testing" dal file "/etc/ apt/sources.list". Senza di essa il sistema APT aggiorna i pacchetti usando l'archivio unstable più recente. Suggerimento Io di solito modifico il file "/etc/apt/sources.list per commentare le voci relative all'archivio "unstable immediatamente     dopo l'azione descritta sopra. Questo evita il rallentamento del processo di aggiornamento dovuto a troppe voci nel file "/etc/apt /sources.list" anche se impedisce l'aggiornamento, usando l'attuale archivio unstable dei pacchetti che erano stati installati dall'archivio unstable. Suggerimento Se viene usato "Pin-Priority: 1" invece di "Pin-Priority: 100"     nel file "/etc/apt/preferences", i pacchetti già installati che hanno 100 come valore della priorità di pin, non vengono aggiornati dall'archivio unstable nemmeno se viene rimossa la voce "testing" dal file "/etc/apt/sources.list". Se si desidera tenere traccia automaticamente di particolari pacchetti in unstable senza l'iniziale installazione con "-t     unstable", si deve creare il file "/etc/apt/preferences" ed elencarvi esplicitamente tutti i pacchetti voluti nel modo seguente. Package: Pin: release a=unstable Pin-Priority: 700     Package: Pin: release a=unstable Pin-Priority: 700 Questo imposta il valore della priorità di pin per ciascun pacchetto specifico. Per esempio, per tenere traccia della     versione più recente in unstable di questo manuale "Debian Reference" in inglese, si dovrebbero avere, nel file "/etc/apt/ preferences" le voci seguenti. Package: debian-reference-en Pin: release a=unstable Pin-Priority: 700     Package: debian-reference-common Pin: release a=unstable Pin-Priority: 700 Suggerimento     Questo modo di usare i pin di APT è valido anche quando si segue l'archivio stable. Per la mia esperienza, installare i pacchetti di documentazione dall'archivio unstable è sempre sicuro. 2.7.7. Usare e aggiornare unstable con alcuni pacchetti da experimental Quello che segue è un esempio di uso dei pin di APT per includere pacchetti specifici con versioni originali più recenti presenti     in experimental pur mantenendo unstable. Si devono elencare nel file "/etc/apt/sources.list" tutti gli archivi necessari nel modo seguente. deb http://ftp.us.debian.org/debian/ unstable main contrib non-free     deb http://ftp.us.debian.org/debian/ experimental main contrib non-free deb http://security.debian.org/ testing/updates main contrib Il valore predefinito della priorità di pin per l'archivio experimental è sempre 1 (<<100) dato che è un archivio Non automatico (vedere Sezione 2.5.3, «File "Release" a livello di     archivio»). Per usare semplicemente l'archivio experimental non c'è alcun bisogno di impostare il valore di priorità di pin esplicitamente nel file "/etc/apt/preferences", a meno che non si desideri aggiornare automaticamente da esso in futuro particolari pacchetti. 2.7.8. Scaricare ed aggiornare automaticamente i pacchetti Il pacchetto apt viene fornito con il proprio script di cron, "/ etc/cron.daily/apt" per permettere di scaricare automaticamente i pacchetti. Questo script può essere migliorato, installando il     pacchetto unattended-upgrades, per effettuare l'aggiornamento automatico dei pacchetti. Può essere personalizzato dai parametri in "/etc/apt/apt.conf.d/02backup" e "/etc/apt/apt.conf.d/ 50unattended-upgrades" come descritto in "/usr/share/doc/ unattended-upgrades/README". Il pacchetto "unattended-upgrades è pensato principalmente per gli aggiornamenti di sicurezza del sistema stable. Se il rischio di danneggiare un sistema stable esistente con gli aggiornamenti     automatici è minore di quello che il sistema venga danneggiato da un intruso, usando una falla nella sicurezza chiusa dall'aggiornamento di sicurezza, si dovrebbe considerare l'uso di questi aggiornamenti automatici con parametri simili ai seguenti. APT::Periodic::Update-Package-Lists "1";     APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "1"; Se si sta usando un sistema unstable, non è bene usare gli aggiornamenti automatici perché certamente prima o poi     danneggeranno il sistema. Anche per unstable però, per risparmiare tempo nell'aggiornamento interattivo, si può volere scaricare i pacchetti in anticipo usando parametri di configurazione come i seguenti. APT::Periodic::Update-Package-Lists "1";     APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "0"; 2.7.9. Limitare l'uso di banda di APT per gli scaricamenti Se si desidera limitare l'uso della banda da parte di APT per gli     scaricamenti, per esempio a 800Kib/sec (=100kiB/sec), si devono usare i parametri di configurazione di APT nel modo seguente.     APT::Acquire::http::Dl-Limit "800"; 2.7.10. Retrocessione di emergenza alla versione precedente Attenzione La retrocessione ad una versione precedente non è ufficialmente supportata da Debian. Dovrebbe essere fatta solamente come parte     di un processo di ripristino di emergenza. Nonostante questo è noto che funziona bene in caso di molti incidenti. Per i sistemi critici, si dovrebbe fare un backup di tutti i dati importanti sul sistema dopo l'operazione di ripristino e reinstallare un nuovo sistema da zero. Si potrebbe essere fortunati e riuscire a retrocedere da un archivio più recente ad uno più vecchio per ripristinare un aggiornamento di sistema andato male, manipolando le versioni     candidate (vedere Sezione 2.7.3, «Modificare la versione candidata»). Questa è l'alternativa pigra al lavoro tedioso di dover usare molti comandi "dpkg -i _ .deb" (vedereSezione 2.6.4, «Ripristinare con il comando dpkg»).     Cercare le righe nel file "/etc/apt/sources.list" che rimandano a unstable, come la seguente.     deb http://ftp.us.debian.org/debian/ sid main contrib non-free     Sostituirle con la seguente per puntare a testing.     deb http://ftp.us.debian.org/debian/ wheezy main contrib non-free     Impostare il file "/etc/apt/preferences" come segue. Package: *     Pin: release a=testing Pin-Priority: 1010     Eseguire "apt-get update; apt-get dist-upgrade" per forzare la retrocessione dei pacchetti in tutto il sistema.     Rimuovere questo file speciale "/etc/apt/preferences" dopo la retrocessione di emergenza. Suggerimento È una buona idea rimuovere (non eliminare completamente!) il maggior numero di pacchetti per minimizzare i problemi di     dipendenza. Potrebbe essere necessario rimuovere o installare manualmente alcuni pacchetti per retrocedere il sistema. Il kernel Linux, il bootloader, udev, PAM, APT e i pacchetti relativi alla rete ed i loro file di configurazione richiedono particolare attenzione. 2.7.11. Chi ha caricato il pacchetto? Anche se i nomi dei manutentori elencati in "/var/lib/dpkg/ available" e"/usr/share/doc/package_name/changelog" forniscono     alcune informazioni su "chi stia dietro la pacchettizzazione", l'identità di chi ha effettivamente caricato il pacchetto è un po' oscura. who-uploads(1) nel pacchetto devscripts identifica l'effettivo autore del caricamento dei pacchetti sorgenti Debian. 2.7.12. Il pacchetto equivs Se si ha intenzione di compilare un programma dai sorgenti per     rimpiazzare un pacchetto Debian, la cosa migliore è creare un vero pacchetto debianizzato locale (*.deb) e usare un archivio privato. Se si sceglie di compilare un programma dai sorgenti e di     installarlo invece in "/usr/local", si può usare equivs come ultima spiaggia per soddisfare le dipendenze mancanti del pacchetto. Package: equivs Priority: extra     Section: admin Description: Circumventing Debian package dependencies This is a dummy package which can be used to create Debian packages, which only contain dependency information. 2.7.13. Fare il port di un pacchetto nel sistema stabile Per aggiornamenti parziali del sistema stable, è una buona idea     ricompilare un pacchetto, usando il pacchetto sorgente, all'interno del suo ambiente. Questo evita massicci aggiornamenti di pacchetti a causa delle dipendenze.     Aggiungere le voci seguenti al file "/etc/apt/sources.list" di un sistema stable.     deb-src http://http.us.debian.org/debian unstable main contrib non-free     Installare i pacchetti richiesti per la compilazione e scaricare il pacchetto sorgente, come nell'esempio seguente. # apt-get update # apt-get dist-upgrade     # apt-get install fakeroot devscripts build-essential $ apt-get build-dep pippo $ apt-get source pippo $ cd pippo* Aggiornare alcuni pacchetti con catene di strumenti come dpkg e     debhelper dai pacchetti backport se sono necessari per fare il backport.     Eseguire quanto segue.     $ dch -i     Incrementare la versione del pacchetto, ad esempio aggiungendo "+bp1" in "debian/changelog"     Compilare i pacchetti ed installarli nel sistema nel modo seguente. $ debuild     $ cd .. # debi pippo*.changes 2.7.14. Server proxy per APT Dato che fare il mirror di intere sottosezioni dell'archivio Debian spreca spazio su disco e banda, l'utilizzo di un server proxy locale per APT è una buona idea quando si amministrano molti sistemi in una LAN (http://it.wikipedia.org/wiki/     Local_Area_Network) . APT può essere configurato per usare server proxy web generici (http), quale squid (vedere Sezione 6.10, «Altri server di rete») come descritto in apt.confo(5) ed in "/ usr/share/doc/apt/examples/configure-index.gz". La variabile d'ambiente "$http_proxy" può essere usata per scavalcare l'impostazione del server proxy nel file "/etc/apt/apt.conf".     Ci sono strumenti proxy specifici per l'archivio Debian. Prima di usarli si dovrebbe contollare il BTS. Tabella 2.19. Elenco degli strumenti proxy specifici per l'archivio Debian +--------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+--------------+----------------------+----------------| | | | |server proxy con| | | | |cache per i file| | |V:1, I:2 | |di archivio | |approx (http:// |(http:// |3489 (http:// |Debian | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|(programma OCaml| |/sid/approx) |popcon.php? |/a/approx.html) |(http:// | | |package= | |it.wikipedia.org| | |approx) | |/wiki/ | | | | |Objective_Caml) | | | | |compilato) | |-------------------+--------------+----------------------+----------------| | |V:1, I:2 | |proxy con cache | |apt-cacher (http://|(http:// |313 (http:// |per file di |     |packages.debian.org|qa.debian.org/|packages.qa.debian.org|pacchetto e | |/sid/apt-cacher) |popcon.php? |/a/apt-cacher.html) |sorgenti Debian | | |package= | |(programma Perl)| | |apt-cacher) | | | |-------------------+--------------+----------------------+----------------| | |V:4, I:6 | |proxy con cache | |apt-cacher-ng |(http:// | |per la | |(http:// |qa.debian.org/|1180 (http:// |distribuzione di| |packages.debian.org|popcon.php? |packages.qa.debian.org|pacchetti | |/sid/apt-cacher-ng)|package= |/a/apt-cacher-ng.html)|software | | |apt-cacher-ng)| |(programma in | | | | |C++ compilato) | |-------------------+--------------+----------------------+----------------| | |V:0, I:0 | |proxy BitTorrent| |debtorrent (http://|(http:// |1185 (http:// |per scaricare | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|pacchetti Debian| |/sid/debtorrent) |popcon.php? |/d/debtorrent.html) |(programma | | |package= | |Python) | | |debtorrent) | | | +--------------------------------------------------------------------------+ Attenzione Quando Debian riorganizza la struttura del suo archivio, questi     strumenti proxy specializzati tendono ad aver bisogno di ritocchi al codice da parte del manutentore del pacchetto e possono non essere funzionanti per un po' di tempo. D'altra parte i server proxy web generici (http) sono più robusti e gestiscono questi cambiamenti più facilmente. 2.7.15. Piccolo archivio pubblico per i pacchetti Ecco un esempio per creare un piccolo archivio pubblico di     pacchetti compatibile con il moderno sistema APT sicuro (vedere Sezione 2.5.2, «File "Release" nella directory principale ed autenticità»). Consideriamo la situazione seguente. * Nome account: "pippo" * Nome host: "www.esempio.com"     * Pacchetti necessari: apt-utils, gnupg ed altri * URL: "http://www.esempio.com/~pippo/" ( → "/home/pippo/ public_html/index.html") * Architettura dei pacchetti: "amd64"     Creare una chiave per l'archivio APT di Pippo nel sistema server, nel modo seguente. $ ssh pippo@www.esempio.com $ gpg --gen-key ... $ gpg -K     ... sec 1024D/3A3CB5A6 2008-08-14 uid Pippo (ARCHIVE KEY) ssb 2048g/6856F4A7 2008-08-14 $ gpg --export -a 3A3CB5A6 >pippo.public.key     Pubblicare il file della chiave dell'archivio per Pippo, "pippo.public.key", con l'ID di chiave "3A3CB5A6"     Creare un albero di archivio chiamato "Origin: Pippo", nel modo seguente. $ umask 022 $ mkdir -p ~/public_html/debian/pool/main $ mkdir -p ~/public_html/debian/dists/unstable/main/binary-amd64 $ mkdir -p ~/public_html/debian/dists/unstable/main/source $ cd ~/public_html/debian $ cat > dists/unstable/main/binary-amd64/Release << EOF Archive: unstable Version: 4.0 Component: main Origin: Pippo Label: Pippo Architecture: amd64 EOF $ cat > dists/unstable/main/source/Release << EOF Archive: unstable Version: 4.0 Component: main Origin: Pippo Label: Pippo Architecture: source EOF $ cat >aptftp.conf <aptgenerate.conf < "www.esempio.com", method => "scpb", incoming => "/home/pippo/public_html/debian/pool/main", # dinstall su ftp-master invia esso stesso email dinstall_runs => 1, };     $cfg{'pippo'}{postupload}{'changes'} = " echo 'cd public_html/debian ; apt-ftparchive generate -c=aptftp.conf aptgenerate.conf; apt-ftparchive release -c=aptftp.conf dists/unstable >dists/unstable/Release ; rm -f dists/unstable/Release.gpg ; gpg -u 3A3CB5A6 -bao dists/unstable/Release.gpg dists/unstable/Release'| ssh pippo@www.esempio.com 2>/dev/null ; echo 'Archivio dei pacchetti creato!'";     Lo script automatico postupload avviato da dupload(1) crea file di archivio aggiornati per ciascun caricamento.     Si può aggiungere questo piccolo archivio pubblico nelle righe di apt del proprio sistema client con i comandi seguenti. $ sudo bash     # echo "deb http://www.esempio.com/~pippo/debian/ unstable main" \ >> /etc/apt/sources.list # apt-key add pippo.public.key Suggerimento     Se l'archivio si trova sul file system locale, si può usare invece "deb file:///home/pippo/debian/ …". 2.7.16. Registrare e copiare la configurazione di sistema     Si può creare una copia locale dello stato delle selezioni dei pacchetti e di debconf nel modo seguente     # dpkg --get-selections '*' > selection.dpkg # debconf-get-selections > selection.debconf     In questo esempio "*" fa sì che "selection.dpkg" includa anche le voci dei pacchetti "eliminati".     Questi 2 file possono essere trasferiti su un altro computer ed i pacchetti installati lì con i comandi seguenti. # dselect update     # debconf-set-selections < miaselezione.debconf # dpkg --set-selections < miaselezione.dpkg # apt-get -u dselect-upgrade # o dselect install Se si ha in progetto di gestire molti server in un cluster con     praticamente la stessa configurazione, si dovrebbe considerare l'uso di pacchetti specifici come fai per gestire l'intero sistema. 2.7.17. Convertire o installare un pacchetto binario alieno alien(1) permette la conversione di pacchetti binari forniti in file in formato Red Hat rpm, Stampede slp, Slackware tgz e     Solaris pkg in pacchetti Debian deb. Se si vuole usare un pacchetto da una distribuzione Linux diversa da quella installata sul proprio sistema, si può usare alien per convertire il formato di pacchetto ed installarlo. alien supporta anche pacchetti LSB. Avvertimento alien(1) non dovrebbe essere usato per rimpiazzare pacchetti di     sistema essenziali, come sysvinit, libc66, libpam-modules, ecc. In pratica, alien(1) dovrebbe essere usato solamente per pacchetti solo-binari non-free che sono conformi a LSB o con link statico. Per i software liberi si dovrebbero usare i loro pacchetti sorgenti per creare veri pacchetti Debian. 2.7.18. Estrarre pacchetti senza dpkg In qualsiasi ambiente *nix (http://it.wikipedia.org/wiki/     Unix-like) i contenuti di un pacchetto "*.deb" possono essere estratti senza usare dpkg(1) utilizzando le utilità standard ar (1) e tar(1). # ar x /percorso/di/dpkg__.deb # ls total 24 -rw-r--r-- 1 bozo bozo 1320 2007-05-07 00:11 control.tar.gz     -rw-r--r-- 1 bozo bozo 12837 2007-05-07 00:11 data.tar.gz -rw-r--r-- 1 bozo bozo 4 2007-05-07 00:11 debian-binary # mkdir control # mkdir data # tar xvzf control.tar.gz -C control # tar xvzf data.tar.gz -C data     Si può anche navigare il contenuto del pacchetto usando il comando mc. 2.7.19. Ulteriori letture sulla gestione dei pacchetti     Si possono ottenere molte altre informazioni sulla gestione dei pacchetti dalla documentazione seguente. * Documentazione principale sulla gestione dei pacchetti: o aptitude(8), dpkg(1), tasksel(8), apt-get(8), apt-config (8), apt-key(8), sources.list(5), apt.conf(5) e apt_preferences(5); o "/usr/share/doc/apt-doc/guide.html/index.html" e "/usr/ share/doc/apt-doc/offline.html/index.html" dal pacchetto apt-doc e o "/usr/share/doc/aptitude/html/en/index.html" dal pacchetto aptitude-doc-en. * Documentazione ufficiale dettagliata sull'archivio Debian:     o "Manuale Debian Policy, capitolo 2 - L'archivio Debian" (http://www.debian.org/doc/debian-policy/ch-archive) , o "Debian Developer's Reference, capitolo 4 - Risorse per gli sviluppatori Debian, 4.6 L'archivio Debian" (http:// www.debian.org/doc/manuals/developers-reference/ resources.html#archive) e o "FAQ Debian GNU/Linux, capitolo 6 - Gli archivi FTP Debian" (http://www.debian.org/doc/FAQ/ch-ftparchives) . * Tutorial per gli utenti Debian sulla creazione di un pacchetto Debian: o "Debian New Maintainers' Guide" (http://www.debian.org/ doc/manuals/maint-guide/) . Capitolo 3. Inizializzazione del sistema È bene che l'amministratore di sistema conosca almeno a grandi linee come viene avviato e configurato il sistema Debian. Anche     se i dettagli precisi sono nei file sorgenti dei pacchetti installati e nella loro documentazione, essi sono un po' troppo per la maggior parte degli utenti. Ho cercato di fornire una veloce panoramica dei punti chiave del sistema Debian e della loro configurazione, come punto di riferimento per l'utente, in base alle conoscenze attuali e     passate mie e di altri. Dato che il sistema Debian è in costante evoluzione, la situazione potrebbe essere cambiata. Prima di fare qualsiasi modifica al sistema, si dovrebbe far riferimento alla documentazione più recente per ciascun pacchetto. 3.1. Panoramica del processo di avvio Il sistema del computer passa attraverso varie fasi del processo     di avvio (http://it.wikipedia.org/wiki/Boot) , dall'accensione a quando offre all'utente il sistema operativo (SO) pienamente funzionante.     Per semplicità la spiegazione è limitata alla piattaforma PC tipica con l'installazione standard. Il normale processo di avvio è come un razzo a quattro stadi.     Ogni stadio del razzo passa il controllo del sistema allo stadio successivo. * Sezione 3.2, «Stadio 1: il BIOS» * Sezione 3.3, «Stadio 2: il bootloader»     * Sezione 3.4, «Stadio 3: il mini-sistema Debian» * Sezione 3.5, «Stadio 4: il normale sistema Debian» Naturalmente questo può essere configurato in modo diverso. Per esempio, se è stato compilato un kernel personalizzato, si     potrebbe saltare la fase con il mini-sistema Debian. Non dare per scontato che quanto detto valga per il proprio sistema fino a che non si abbia controllato direttamente. Nota Per piattaforme PC non sorpassate, come il sistema SUN o     Macintosh, il BIOS nella ROM e la partizione sul disco possono essere alquanto differenti (Sezione 9.3.2, «Configurazione del partizionamento dei dischi»). In questi casi, cercare la documentazione piattaforma specifica altrove. 3.2. Stadio 1: il BIOS Il BIOS (http://it.wikipedia.org/wiki/Bios) è il primo stadio del processo di avvio che viene avviato dall'accensione. Il BIOS (http://it.wikipedia.org/wiki/Bios) , che risiede nella ROM (read     only memory, memoria in sola lettura) (http://it.wikipedia.org/ wiki/Read-Only_Memory) è eseguito da un particolare indirizzo di memoria al quale è inizializzato, dall'accensione, il contatore di programma della CPU. Il BIOS effettua l'inizializzazione base dell'hardware (POST (power on self test, auto-test di accensione) (http://     it.wikipedia.org/wiki/Power-on_self-test) e passa il controllo del sistema allo stadio successivo fornito dall'utente. Il BIOS è di solito fornito con l'hardware. La schermata di avvio del BIOS indica solitamente quale tasto o tasti premere per entrare nella schermata di impostazioni del BIOS, per configurarne il comportamento. Tasti comunemente usati     sono F1, F2, F10, Esc, Ins e Canc. Se la schermata di avvio del BIOS è nascosta da una bella schermata grafica, si può premere dei tasti, come Esc, per disabilitarla. Quali tasti vadano premuti dipende fortemente dall'hardware. Dalla schermata di impostazioni del BIOS si può scegliere la posizione hardware e la priorità del codice avviato dal BIOS.     Tipicamente vengono caricati in memoria i primi pochi settori del primo dispositivo selezionato trovato (disco fisso, dischetto floppy, CD-ROM, ...) e viene eseguito questo codice iniziale che può essere una qualsiasi tra le cose seguenti. * Il codice del bootloader * Il codice del kernel di SO di passaggio come FreeDOS (http://     www.freedos.org/) * Il codice del kernel del sistema operativo finale, se può essere contenuto in questo piccolo spazio Tipicamente il sistema viene avviato dalla partizione specificata del disco fisso primario. I primi 2 settori del disco fisso nei PC vecchi contengono ilmaster boot record (MBR) (http://     it.wikipedia.org/wiki/Master_boot_record) . Le informazioni sulle partizioni del disco, inclusa la selezione per l'avvio sono memorizzate alla fine di questo MBR. Il primo codice boot loader eseguito dal BIOS occupa la parte restante di questo MBR. 3.3. Stadio 2: il bootloader Il bootloader (http://it.wikipedia.org/wiki/Boot_loader) è il secondo stadio del processo di avvio che è iniziato dal BIOS.     Carica l'immagine kernel del sistema e l'immagine initrd (http:// it.wikipedia.org/wiki/Initrd) in memoria e passa il controllo ad essi. L'immagine initrd è l'immagine del file system radice ed il suo supporto dipende dal bootloader usato. Il sistema Debian normalmente usa il kernel Linux come kernel predefinito del sistema. L'immagine initrd dell'attuale kernel     Linux 2.6 è tecnicamente l'immagine initramfs (initial RAM filesystem). Questa è un archivio cpio compresso con gzip dei file nel filesystem root. L'installazione predefinita del sistema Debian posiziona, per la     piattaforma PC, il codice di primo stadio del bootloader GRUB nell'MBR (http://it.wikipedia.org/wiki/Master_boot_record) . Sono disponibili molti bootloader e opzioni di configurazione. Tabella 3.1. Elenco di bootloader +-----------------------------------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |initrd |bootloader |descrizione | |-------------------+---------------+----------------------+----------+--------------------------+----------------------| | |V:0, I:5 (http:| | | |Intelligente | |grub-legacy (http:/|//qa.debian.org|1747 (http:// | |GRUB Legacy (http:// |abbastanza da capire | |/ |/popcon.php? |packages.qa.debian.org|Supportato|en.wikipedia.org/wiki/ |partizioni su disco e | |packages.debian.org|package= |/g/grub-legacy.html) | |GRUB) |filesystem come vfat, | |/sid/grub-legacy) |grub-legacy) | | | |ext3, ... (predefinito| | | | | | |in lenny) | |-------------------+---------------+----------------------+----------+--------------------------+----------------------| | |V:65, I:855 | | | |Intelligente | |grub-pc (http:// |(http:// |550 (http:// | |GRUB 2 (http:// |abbastanza da capire | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|Supportato|en.wikipedia.org/wiki/ |partizioni su disco e | |/sid/grub-pc) |popcon.php? |/g/grub-pc.html) | |GRUB) |filesystem come vfat, | | |package= | | | |ext3, ... | | |grub-pc) | | | | | |-------------------+---------------+----------------------+----------+--------------------------+----------------------| |grub-rescue-pc |V:0, I:3 (http:|4477 (http:// | | |È l'immagine di | |(http:// |//qa.debian.org|packages.qa.debian.org| |GRUB 2 (http:// |ripristino avviabile | |packages.debian.org|/popcon.php? |/g/ |Supportato|en.wikipedia.org/wiki/ |di GRUB 2 (CD e | |/sid/ |package= |grub-rescue-pc.html) | |GRUB) |floppy) (versione PC/ | |grub-rescue-pc) |grub-rescue-pc)| | | |BIOS) | |-------------------+---------------+----------------------+----------+--------------------------+----------------------| | |V:1, I:11 | | | |Si basa sulla | |lilo (http:// |(http:// |594 (http:// | |Lilo (http:// |posizione dei settori | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|Supportato|it.wikipedia.org/wiki/ |dei dati sul disco | |/sid/lilo) |popcon.php? |/l/lilo.html) | |LILO) |fisso. (Vecchio) |     | |package=lilo) | | | | | |-------------------+---------------+----------------------+----------+--------------------------+----------------------| | |V:12, I:92 | | | | | |syslinux (http:// |(http:// |134 (http:// | |Isolinux (http:// |Capisce il filesystem | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|Supportato|en.wikipedia.org/wiki/ |ISO 9660. Usato dal CD| |/sid/syslinux) |popcon.php? |/s/syslinux.html) | |SYSLINUX) |di avvio. | | |package= | | | | | | |syslinux) | | | | | |-------------------+---------------+----------------------+----------+--------------------------+----------------------| | |V:12, I:92 | | | |Capisce il filesystem | |syslinux (http:// |(http:// |134 (http:// | |Syslinux (http:// |MSDOS (FAT) (http:// | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|Supportato|en.wikipedia.org/wiki/ |it.wikipedia.org/wiki/| |/sid/syslinux) |popcon.php? |/s/syslinux.html) | |SYSLINUX) |File_Allocation_Table)| | |package= | | | |. Usato dai dischetti | | |syslinux) | | | |floppy di avvio. | |-------------------+---------------+----------------------+----------+--------------------------+----------------------| | |V:0, I:2 (http:| | | | | |loadlin (http:// |//qa.debian.org|105 (http:// | |Loadlin (http:// |Il nuovo sistema viene| |packages.debian.org|/popcon.php? |packages.qa.debian.org|Supportato|en.wikipedia.org/wiki/ |avviato dal sistema | |/sid/loadlin) |package= |/l/loadlin.html) | |Loadlin) |FreeDOS/MSDOS. | | |loadlin) | | | | | |-------------------+---------------+----------------------+----------+--------------------------+----------------------| | | | | | |Software libero che | | |V:2, I:21 | | |MBR di Neil Turton (http:/|sostituisce MBR (http:| |mbr (http:// |(http:// |72 (http:// |Non |/ |//it.wikipedia.org/ | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|supportato|www.chiark.greenend.org.uk|wiki/ | |/sid/mbr) |popcon.php? |/m/mbr.html) | |/~neilt/) |Master_boot_record) | | |package=mbr) | | | |MSDOS. Capisce solo le| | | | | | |partizioni su disco. | +-----------------------------------------------------------------------------------------------------------------------+ Avvertimento     Non mettere mano ai bootloader senza aver creato supporti avviabili di ripristino (CD o floppy) da immagini nel pacchetto grub-rescue-pc. Questo permette di avviare il sistema anche senza un bootloader funzionante sul disco fisso. Per GRUB Legacy, il file di configurazione del menu è "/boot/grub     /menu.lst". Contiene, per esempio, delle voci come quella seguente. title Debian GNU/Linux     root (hd0,2) kernel /vmlinuz root=/dev/hda3 ro initrd /initrd.img Per GRUB 2, il file di configurazione del menu è "/boot/grub/ grub.cfg". Viene generato automaticamente da "/usr/sbin/     update-grub" usando modelli da "/etc/grub.d/*" e impostazioni da "/etc/default/grub". Contiene, per esempio, delle voci come quella seguente. menuentry "Debian GNU/Linux" { set root=(hd0,3)     linux /vmlinuz root=/dev/hda3 initrd /initrd.img }     Negli esempi precedenti i parametri di GRUB hanno i seguenti significati. Tabella 3.2. Significato dei parametri di GRUB +---------------------------------------------------------------+ |parametro|significato | |di GRUB | | |---------+-----------------------------------------------------| | |usa la terza partizione sul primo disco fisso | |root |indicandola come "(hd0,2)" in GRUB legacy o come " |     | |(hd0,3)" in GRUB 2 | |---------+-----------------------------------------------------| |kernel |usa il kernel che si trova in "/vmlinuz" con i | | |parametri "root=/dev/hda3 ro" | |---------+-----------------------------------------------------| | |usa l'immagine initrd/initramfs (http:// | |initrd |it.wikipedia.org/wiki/Initrd) che si trova in "/ | | |initrd.img" | +---------------------------------------------------------------+ Nota     Il valore per il numero di partizione usato dal programma GRUB Legacy è minore di uno rispetto a quello normale usato dal kernel Linux e dagli strumenti di utilità. il programma GRUB 2 ha risolto questo problema. Suggerimento Per identificare un particolare dispositivo a blocchi si può     usare il suo UUID (http://en.wikipedia.org/wiki/ Universally_Unique_Identifier) (vedere Sezione 9.3.3, «Accedere alle partizioni usando UUID») invece del suo nome file come "/dev /hda3", ad esempio "root=UUID= 81b289d5-4341-4003-9602-e254a17ac232 ro". Suggerimento     Si può avviare un bootloader da un altro bootloader usando una tecnica chiamata caricamento a catena (http://en.wikipedia.org/ wiki/Chain_loading) .     Vedere "info grub" e grub-install(8). 3.4. Stadio 3: il mini-sistema Debian Il mini-sistema Debian è il terzo stadio del processo di avvio     che viene iniziato dal bootloader. Esegue il kernel del sistema con il suo filesystem root in memoria. Questo è uno stadio opzionale preparatorio del processo di avvio. Nota L'espressione "sistema Debian mini" è stata coniata per     descrivere il terzo stadio del processo di avvio in questo documento. Normalmente ci si riferisce a questo sistema come sistema initrd (http://it.wikipedia.org/wiki/Initrd) o initramfs. Un sistema simile in memoria è usato dall'installatore Debian (http://www.debian.org/devel/debian-installer/index.it.html) . Lo script "/init" viene eseguito come primo programma in questo filesystem root in memoria. È un programma script di shell che inizializza il kernel in spazio utente e passa il controllo allo     stadio successivo. Questo mini-sistema Debian offre flessibilità al processo di avvio, come la possibilità di aggiungere moduli del kernel prima del processo di avvio principale o di montare il filesystem root come cifrato. Si può interrompere questa parte del processo di avvio per ottenere una shell di root fornendo il parametro di avvio per il     kernel "break=init" etc. Vedere lo script "/init" per ulteriori condizioni di interruzione. Questo ambiente shell è abbastanza sofisticato da fare una buona ispezione dell'hardware della macchina. I comandi disponibili in questo mini-sistema Debian sono versioni     minimali e vengono principalmente forniti da uno strumento GNU chiamato busybox(1). Attenzione     È necessario usare l'opzione "-n" per il comando mount quando si è nel filesystem root in sola lettura. 3.5. Stadio 4: il normale sistema Debian Tabella 3.3. Elenco di utilità di avvio per il sistema Debian +---------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+-----------------+----------------------+--------------------| | |V:867, I:999 | | | |initscripts (http:/|(http:// |276 (http:// |script per | |/ |qa.debian.org/ |packages.qa.debian.org|inizializzare ed | |packages.debian.org|popcon.php? |/i/initscripts.html) |arrestare il sistema| |/sid/initscripts) |package= | | | | |initscripts) | | | |-------------------+-----------------+----------------------+--------------------| | |V:849, I:997 | | | |sysvinit (http:// |(http:// |243 (http:// |utilità init(8) in | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|stile System-V | |/sid/sysvinit) |popcon.php? |/s/sysvinit.html) | | | |package=sysvinit)| | | |-------------------+-----------------+----------------------+--------------------| | |V:868, I:998 | |meccanismo di | |sysv-rc (http:// |(http:// |215 (http:// |cambiamento del | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|runlevel in stile | |/sid/sysv-rc) |popcon.php? |/s/sysv-rc.html) |System-V | | |package=sysv-rc) | | | |-------------------+-----------------+----------------------+--------------------| |sysvinit-utils |V:868, I:998 | | | |(http:// |(http:// |231 (http:// |utilità in stile | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|System-V (startpar | |/sid/ |popcon.php? |/s/ |(8), bootlogd(8), …)| |sysvinit-utils) |package= |sysvinit-utils.html) | | | |sysvinit-utils) | | | |-------------------+-----------------+----------------------+--------------------| | | | |funzionalità di | | |V:870, I:999 | |script init Linux | |lsb-base (http:// |(http:// |36 (http:// |Standard Base (http:| |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|//it.wikipedia.org/ | |/sid/lsb-base) |popcon.php? |/l/lsb-base.html) |wiki/ | | |package=lsb-base)| |Linux_Standard_Base)| | | | |3.2 | |-------------------+-----------------+----------------------+--------------------| | |V:772, I:900 | |strumento per | |insserv (http:// |(http:// |183 (http:// |organizzare la | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|sequenza di avvio | |/sid/insserv) |popcon.php? |/i/insserv.html) |usando dipendenze | | |package=insserv) | |LSB negli script | | | | |init.d | |-------------------+-----------------+----------------------+--------------------| | |V:0, I:0 (http://| |demone init(8) | |upstart (http:// |qa.debian.org/ |1107 (http:// |basato su eventi per| |packages.debian.org|popcon.php? |packages.qa.debian.org|concorrenza |     |/sid/upstart) |package=upstart) |/u/upstart.html) |(alternativa a | | | | |sysvinit) | |-------------------+-----------------+----------------------+--------------------| | |V:8, I:11 (http:/| |demone init(8) | |systemd (http:// |/qa.debian.org/ |3477 (http:// |basato su eventi per| |packages.debian.org|popcon.php? |packages.qa.debian.org|concorrenza | |/sid/systemd) |package=systemd) |/s/systemd.html) |(alternativa a | | | | |sysvinit) | |-------------------+-----------------+----------------------+--------------------| |readahead-fedora |V:4, I:8 (http://|87 (http:// | | |(http:// |qa.debian.org/ |packages.qa.debian.org|readahead(8) per | |packages.debian.org|popcon.php? |/r/ |precaricare file del| |/sid/ |package= |readahead-fedora.html)|processo di avvio | |readahead-fedora) |readahead-fedora)| | | |-------------------+-----------------+----------------------+--------------------| | |V:8, I:32 (http:/| |strumenti per usare | |uswsusp (http:// |/qa.debian.org/ |574 (http:// |la sospensione | |packages.debian.org|popcon.php? |packages.qa.debian.org|software in spazio | |/sid/uswsusp) |package=uswsusp) |/u/uswsusp.html) |utente fornita da | | | | |Linux | |-------------------+-----------------+----------------------+--------------------| |kexec-tools (http:/|V:1, I:6 (http://| | | |/ |qa.debian.org/ |290 (http:// |strumento kexec per | |packages.debian.org|popcon.php? |packages.qa.debian.org|riavvii kexec(8) | |/sid/kexec-tools) |package= |/k/kexec-tools.html) |(riavvio a caldo) | | |kexec-tools) | | | |-------------------+-----------------+----------------------+--------------------| | |V:0, I:2 (http://| | | |bootchart (http:// |qa.debian.org/ |46 (http:// |analizzatore delle | |packages.debian.org|popcon.php? |packages.qa.debian.org|prestazioni del | |/sid/bootchart) |package= |/b/bootchart.html) |processo di avvio | | |bootchart) | | | |-------------------+-----------------+----------------------+--------------------| |bootchart-view |V:0, I:2 (http://|211 (http:// |analizzatore delle | |(http:// |qa.debian.org/ |packages.qa.debian.org|prestazioni del | |packages.debian.org|popcon.php? |/b/ |processo di avvio | |/sid/ |package= |bootchart-view.html) |(visualizzazione) | |bootchart-view) |bootchart-view) | | | |-------------------+-----------------+----------------------+--------------------| |mingetty (http:// |V:1, I:4 (http://|24 (http:// | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|getty(8) solo | |/sid/mingetty) |popcon.php? |/m/mingetty.html) |console | | |package=mingetty)| | | |-------------------+-----------------+----------------------+--------------------| |mgetty (http:// |V:0, I:3 (http://|416 (http:// | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|rimpiazzio di getty | |/sid/mgetty) |popcon.php? |/m/mgetty.html) |(8) per smart modem | | |package=mgetty) | | | +---------------------------------------------------------------------------------+ Suggerimento     Tutti i meccanismi di avvio sono compatibili grazie agli script " /etc/init.d/rc", "/etc/init.d/rcS", "/usr/sbin/update-rc.d" e "/ usr/sbin/invoke-rc.d". Suggerimento     systemd può essere installato insieme a sysvinit senza alcun cambiamento al sistema. Aggiungere "init=/bin/systemd" ai parametri di avvio del kernel per abilitare systemd. Suggerimento     Il pacchetto readahead-fedora può velocizzare l'avvio di un sistema con una buona quantità di DRAM. Suggerimento     Vedere la pagina del Wiki Debian sulla velocizzazione del processo di avvio (https://wiki.debian.org/BootProcessSpeedup) per i più recenti suggerimenti su come velocizzare il processo di avvio. Il sistema Debian normale è il quarto stadio del processo di avvio che viene iniziato dal mini-sistema Debian. Il kernel di     sistema del mini-sistema Debian continua ad essere in esecuzione anche in questo ambiente. Il filesystem root viene cambiato da quello in memoria all'effettivo filesystem sul disco fisso. Il programma "/sbin/init" viene eseguito per primo e effettua il lavoro principale del processo di avvio. Debian normalmente usa lo schema sysvinit tradizionale tramite il pacchetto sysv-rc.     Vedere init(8), inittab(5) e "/usr/share/doc/sysv-rc/ README.runlevels.gz" per una spiegazione dettagliata. Questo processo principale di avvio fondamentalmente attraversa le fasi seguenti. 1. Il sistema Debian va nel runlevel N (None, nessuno) per inizializzare il sistema seguendo la descrizione "/etc/ inittab".     2. Il sistema Debian va nel runlevel S per inizializzare il sistema in modalità singolo-utente per completare l'inizializzazione dell'hardware, ecc. 3. Il sistema Debian va in uno dei runlevel multiutente (da 2 a 5) specificato per avviare i servizi di sistema. Il runlevel iniziale usato per la modalità multi-utente è     specificato con il parametro di avvio del kernel "init=" o nella riga "initdefault" del file "/etc/inittab". Il sistema Debian, nella configurazione predefinita, si avvia nel runlevel 2.     Tutti i file script effettivamente eseguiti dal sistema init sono contenuti nella directory "/etc/init.d/". 3.5.1. Il significato del runlevel Ogni runlevel (http://it.wikipedia.org/wiki/Runlevel) usa una     directory per la propria configurazione e ha un significato specifico come descritto nella tabella seguente. Tabella 3.4. Elenco dei runlevel e descrizione del loro uso +---------------------------------------------------------------+ |runlevel|directory|descrizione dell'uso del runlevel | |--------+---------+--------------------------------------------| |N |nessuna |livello di avvio del sistema (NONE) (nessuna| | | |directory "/etc/rcN.d/") | |--------+---------+--------------------------------------------| |0 |/etc/ |arresta il sistema | | |rc0.d/ | | |--------+---------+--------------------------------------------| |S |/etc/ |modalità utente-singolo all'avvio (alias | | |rcS.d/ |"s") | |--------+---------+--------------------------------------------| |1 |/etc/ |modalità utente-singolo dalla modalità | | |rc1.d/ |multi-utente | |--------+---------+--------------------------------------------| |2 |/etc/ |modalità multi-utente | | |rc2.d/ | | |--------+---------+--------------------------------------------|     |3 |/etc/ |"" | | |rc3.d/ | | |--------+---------+--------------------------------------------| |4 |/etc/ |"" | | |rc4.d/ | | |--------+---------+--------------------------------------------| |5 |/etc/ |"" | | |rc5.d/ | | |--------+---------+--------------------------------------------| |6 |/etc/ |riavvia il sistema | | |rc6.d/ | | |--------+---------+--------------------------------------------| |7 |/etc/ |modalità multi-utente valida ma normalmente | | |rc7.d/ |non usata | |--------+---------+--------------------------------------------| |8 |/etc/ |"" | | |rc8.d/ | | |--------+---------+--------------------------------------------| |9 |/etc/ |"" | | |rc9.d/ | | +---------------------------------------------------------------+     Si può cambiare il runlevel dalla console, per esempio a 4, nel modo seguente.     $ sudo telinit 4 Attenzione Il sistema Debian non assegna nessuna differenza significativa ai runlevel (http://it.wikipedia.org/wiki/Runlevel) compresi tra 2 e 5. L'amministratore di un sistema Debian può cambiare questa     situazione. (Cioè Debian non è Red Hat Linux (http:// it.wikipedia.org/wiki/Red_Hat_Linux) né Solaris di Sun Microsystems (http://it.wikipedia.org/wiki/Solaris_ (sistema_operativo)) né HP-UX di Hewlett Packard (http:// it.wikipedia.org/wiki/HP-UX) né AIX di IBM (http:// it.wikipedia.org/wiki/AIX_(sistema_operativo)) , né …) Attenzione Il sistema Debian non popola le directory per i runlevel (http://     it.wikipedia.org/wiki/Runlevel) tra 7 e 9 durante l'installazione. Le varianti di Unix (http://it.wikipedia.org/ wiki/Unix-like) tradizionali non usano questi runlevel (http:// it.wikipedia.org/wiki/Runlevel) . 3.5.2. La configurazione del runlevel Quando i comandi init(8) o telinit(8) vanno nel runlevel "",     il sistema fondamentalmente esegue gli script di inizializzazione nel modo seguente. 1. Gli script in "/etc/rc.d/ il cui nome inizia con una "K" vengono eseguiti in ordine alfabetico con l'unico argomento "stop". (uccisione dei servizi)     2. Gli script in "/etc/rc.d/ il cui nome inizia con una "S" vengono eseguiti in ordine alfabetico con l'unico argomento "start". (avvio dei servizi) Per esempio, se in una directory di runlevel sono presenti i collegamenti "S10sysklogd" e "S20exim4", "S10sysklogd", che è un     collegamento simbolico a "../init.d/sysklogd", viene eseguito prima di "S20exim4", che è un collegamento simbolico a "../init.d /exim4". Questo semplice sistema di inizializzazione sequenziale è il     classico sistema di avvio in stile System V (http:// it.wikipedia.org/wiki/UNIX_System_V) ed è stato usato fino al rilascio Lenny di Debian.     Il sistema Debian recente è stato ottimizzato per eseguire invece gli script di inizializzazione in modo concorrente. * Il comando insserv(8) usa le informazioni di dipendenza dei pacchetti LSB e calcola le dipendenze tra tutti gli script. o Vedere "/usr/share/doc/insserv/README.Debian". * Le informazioni di dipendenza dei pacchetti LSB definite nell'intestazione degli script init assicura la disponibilità delle risorse necessarie.     o Vedere Linux Standard Base Core Specification 3.1, VII. System Initialization (http://refspecs.linuxbase.org/ LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/ tocsysinit.html) . * Annuncio dell'"Abilitazione dell'avvio parallelo come predefinito" (http://lists.debian.org/debian-devel-announce/ 2010/05/msg00009.html) Avvertimento     È sconsigliato fare qualsiasi cambiamento ai collegamenti simbolici in "/etc/rcS.d/" a meno che non si sia più esperti del manutentore. 3.5.3. Esempio di gestione dei runlevel Per esempio, si può impostare il sistema dei runlevel in un modo     che ricorda Red Hat Linux (http://it.wikipedia.org/wiki/ Red_Hat_Linux) nel modo seguente. * init avvia il sistema con runlevel=3 in modo predefinito.     * init non avvia gdm3(1) nei runlevel=(0,1,2,6). * init avvia gdm3(1) nei runlevel=(3,4,5). Si può ottenre questo modificando con un editor il file "/etc/ inittab", per cambiare il runlevel di avvio, e usando strumenti amichevoli di gestione dei runlevel come sysv-rc-conf o bum, per     modificare i runlevel. Se si vuole invece usare solamente la riga di comando, si può farlo nel modo seguente (dopo l'installazione standard del pacchetto gdm3 e avendolo selezionato come display manager prescelto).     # cd /etc/rc2.d ; mv S21gdm3 K21gdm3 # cd /etc ; perl -i -p -e 's/^id:.:/id:3:/' inittab Notare che il file "/etc/X11/default-display-manager" viene     controllato quando vengono avviati i demoni per display manager: xdm, gdm3, kdm e wdm. Nota     Si può sempre avviare X da qualsiasi shell in console con il comando startx(1). 3.5.4. Il parametro predefinito per ciascuno script init Il parametro predefinito per ciascun script init in "/etc/init.d/ " è dato dal file corrispondente in "/etc/default/" che contiene solamente assegnazioni di variabili d'ambiente. Il nome della     directory è una scelta specifica di Debian. È grossomodo l'equivalente della directory "/etc/sysconfig" di Red Hat Linux (http://it.wikipedia.org/wiki/Red_Hat_Linux) e altre distribuzioni. Per esempio, si può usare "/etc/default/cron" per controllare il funzionamento di "/etc/init.d/cron".     Il file "/etc/default/rcS" può essere usato per personalizzare impostazioni standard dell'avvio per motd(5), sulogin(8), ecc. Se non si ottiene il comportamento voluto cambiando queste variabili, si possono modificare gli script init (http://     www.debian.org/doc/debian-policy/ch-opersys#s9.3.2) stessi. Questi sono file di configurazione modificabili dall'amministratore di sistema. 3.5.5. Il nome host Il kernel gestisce il nome host del sistema. Lo script init nel runlevel S, che è un collegamento simbolico a "/etc/init.d/     hostname.sh" imposta il nome host del sistema all'avvio (usando il comando hostname) al nome memorizzato in "/etc/hostname". Questo file dovrebbe contenere solamente il nome host del sistema, non un nome di dominio pienamente qualificato.     Per visualizzare il nome host attuale eseguire hostname(1) senza alcun argomento. 3.5.6. Il filesystem Benché il filesystem root sia montato dal kernel quando viene     avviato, gli altri filesystem sono montati nel runlevel S dagli scritp init seguenti. * "/etc/init.d/mountkernfs.sh" per i filesystem del kernel in " /proc", "/sys", ecc. * "/etc/init.d/mountdevsubfs.sh" per i filesystem virtuali in " /dev"     * "/etc/init.d/mountall.sh" per i filesystem normali, usando "/ etc/fstab" * "/etc/init.d/mountnfs.sh" per i filesystem di rete, usando using"/etc/fstab" Le opzioni usate per montare gli speciali file system del kernel     (procfs, sysfs e tmpfs per /proc, /sys, /tmp, /run, ecc.) sono impostate in "/etc/default/rcS". Vedere rcS(5). Le opzioni usate per montare i file system normali dei dischi e     di rete sono impostate in "/etc/fstab". Vedere Sezione 9.3.7, «Ottimizzare il file system con opzioni di mount». Nota     L'effettivo montaggio dei filesystem di rete attende l'avvio delle interfacce di rete. Avvertimento     Dopo aver montato tutti i filesystem, i file temporanei in "/ tmp", "/var/lock" e "/var/run" vengono ripuliti ad ogni avvio. 3.5.7. Inizializzazione delle interfacce di rete Le interfacce di rete sono inizializzate nel runlevel S dagli     script init che sono collegamenti simbolici a "/etc/init.d/ ifupdown-clean" e "/etc/init.d/ifupdown". VedereCapitolo 5, Impostazione della rete per la loro configurazione. 3.5.8. Inizializzazione dei servizi di rete Molti servizi di rete (vedere Capitolo 6, Applicazioni per la rete) sono avviati nella modalità multi-utente direttamente, come     processi demone, all'avvio da script di init, per esempio, "/etc/ rc2.d/S20exim4" (per RUNLEVEL=2) che è un collegamento simbolico a "/etc/init.d/exim4". Alcuni servizi di rete possono essere avviati a richiesta, usando il super-server (http://en.wikipedia.org/wiki/Super-server) inetd (o un equivalente). inetd viene avviato all'avvio da "/etc/rc2.d/     S20inetd" (per RUNLEVEL=2) che è un collegamento simbolico a "/ etc/init.d/inetd". Fondamentalmente inetd permette ad un demone in esecuzione di invocarne svariati altri, riducendo il carico sul sistema. Quando al super-server (http://en.wikipedia.org/wiki/ Super-server) inetd arriva una richiesta per un servizio, vengono identificati il suo protocollo e il suo servizio cercandoli nei     database in "/etc/protocols" e "/etc/services". inetd quindi cerca un servizio Internet normale nel database "/etc/inetd.conf" o un servizio basato su Open Network Computing Remote Procedure Call (ONC RPC)/Sun RPC (http://en.wikipedia.org/wiki/ Open_Network_Computing_Remote_Procedure_Call) in "/etc/rpc.conf". A volte, inetd non avvia il servizio richiesto direttamente, ma avvia il programma wrapper TCP (http://en.wikipedia.org/wiki/ TCP_Wrapper) tcpd(8), con il nome di servizio richiesto, in "/etc     /inetd.conf", come argomento. In questo caso, tcpd esegue il programma server appropriato dopo aver fatto la registrazione della richiesta e qualche altro controllo addizionale usando "/ etc/hosts.deny" e "/etc/hosts.allow". Per la sicurezza del sistema è bene disabilitare più servizi di     rete possibile. Vedere Sezione 4.6.4, «Limitare l'accesso ad alcuni servizi server». Vedere inetd(8), inetd.conf(5), protocols(5), services(5), tcpd     (8), hosts_access(5), hosts_options(5), rpcinfo(8), portmap(8) e "/usr/share/doc/portmap/portmapper.txt.gz". 3.5.9. I messaggi di sistema I messaggi di sistema possono essere personalizzati da "/etc/ default/rsyslog" e "/etc/rsyslog.conf" sia per il file di     registro sia per la visualizzazione a schermo. Vedere rsyslogd(8) e rsyslog.conf(5). Vedere anche Sezione 9.2.2, «Analizzatori di registro». 3.5.10. I messaggi del kernel I messaggi del kernel possono essere personalizzati da "/etc/     default/klogd" sia per il file di registro sia per la visualizzazione a schermo. Impostare "KLOGD='-c 3'" in tale file ed eseguire "/etc/init.d/klogd restart". Vedere klogd(8).     Si può cambiare direttamente il livello dei messaggi di errore mostrati con il comando seguente.     # dmesg -n3 Tabella 3.5. Elenco dei livelli di errore del kernel +---------------------------------------------------------------+ |valore del livello |nome del livello |significato | |di errore |di errore | | |-------------------+------------------+------------------------| |0 |KERN_EMERG |il sistema è | | | |inutilizzabile | |-------------------+------------------+------------------------| |1 |KERN_ALERT |bisogna agire | | | |immediatamente | |-------------------+------------------+------------------------| |2 |KERN_CRIT |condizione critica |     |-------------------+------------------+------------------------| |3 |KERN_ERR |condizione di errore | |-------------------+------------------+------------------------| |4 |KERN_WARNING |condizione di | | | |avvertimento | |-------------------+------------------+------------------------| |5 |KERN_NOTICE |condizione normale ma | | | |significativa | |-------------------+------------------+------------------------| |6 |KERN_INFO |messaggio informativo | |-------------------+------------------+------------------------| |7 |KERN_DEBUG |messaggio a livello di | | | |debug | +---------------------------------------------------------------+ 3.5.11. Il sistema udev Per i kernel Linux 2.6, il sistema udev (http://en.wikipedia.org/ wiki/Udev) fornisce un meccanismo di rilevazione e inizializzazione automatiche dell'hardware (vedere udev(7)). Per ogni dispositivo rilevato dal kernel, il sistema udev avvia un     processo utente che usa le informazioni del filesystem sysfs (http://en.wikipedia.org/wiki/Sysfs) (vedere Sezione 1.2.12, «procfs e sysfs»), carica, usando modprobe(8) (vedere Sezione 3.5.12, «L'inizializzazione dei moduli del kernel»), i moduli del kernel necessari per il supporto del dispositivo e crea i nodi di device corrispondenti. Suggerimento     Se, per una qualche ragione "/lib/modules// modules.dep non viene generato in modo appropriato dal depmod(8), i moduli non possono essere caricati come dovuto dal sistema udev. Per risolvere il problema eseguire "depmod -a". Il nome dei nodi di device può essere configurato dai file di regole di udev in "/etc/udev/rules.d/". Le regole predefinite attuali tendono a creare nomi generati dinamicamente che hanno come risultato nomi di device non fissi, tranne che per     dispositivi CD e di rete. Aggiungendo le proprie regole personalizzate, in modo simile a quelle per i dispositivi CD e di rete, si possono creare nomi di device statici anche per altri dispositivi, come chiavette USB. Vedere "Scrivere regole udev (http://www.reactivated.net/writing_udev_rules.html) " o "/usr/ share/doc/udev/writing_udev_rules/index.html". Dato che il sistema udev è in qualche modo in costante     evoluzione, in questo documento sono fornite informazioni base, lasciando i dettagli ad altra documentazione. Suggerimento Per le regole di montaggio in "/etc/fstab", non è necessario che     i nodi di device siano statici. Si possono usare gli UUID (http:/ /en.wikipedia.org/wiki/Universally_Unique_Identifier) per montare i dispositivi, al posto dei nomi di device come "/dev/sda". Vedere Sezione 9.3.3, «Accedere alle partizioni usando UUID». 3.5.12. L'inizializzazione dei moduli del kernel Il programma modprobe(8) permette di configurare il kernel Linux in esecuzione da processi utente, aggiungendo e rimuovendo moduli     del kernel. Il sistema udev (vedere Sezione 3.5.11, «Il sistema udev») automatizza la sua invocazione per facilitare l'inizializzazione dei moduli del kernel. Ci sono moduli non-hardware e speciali moduli con driver     hardware, come quelli elencati in seguito, che devono essere precaricati elencandoli nel file "/etc/modules" (vedere modules (5)). * moduli TUN/TAP (http://it.wikipedia.org/wiki/TUN/TAP) che forniscono device virtuali di rete Point-to-Point (TUN) e device virtuali di rete Ethernet (TAP),     * moduli netfilter (http://it.wikipedia.org/wiki/Netfilter) che forniscono funzionalità di firewall netfilter (iptables(8), Sezione 5.9, «Infrastruttura netfilter» e * moduli driver watchdog timer (http://it.wikipedia.org/wiki/ Watchdog) . I file di configurazione per il programma modprobe(8) sono contenuti nella directory "/etc/modprobes.d/", come spiegato in     modprobe.conf(5). (Se si desidera evitare l'autocaricamento di alcuni moduli del kernel, considerare la loro aggiunta nella lista nera nel file "/etc/modprobes.d/blacklist".) Il file "/lib/modules//modules.dep" generato dal     programma depmod(8) descrive le dipendenze dei moduli usate dal programma modprobe(8). Nota     Se si hanno problemi di caricamento dei moduli all'avvio o con modprobe(8), "depmod -a" potrebbe risolverli rigenerando il file "modules.dep".     Il programma modinfo(8) mostra informazioni su un modulo del kernel Linux. Il programma lsmod(8) formatta in un bel modo i contenuti di "/     proc/modules", mostrando quali moduli del kernel siano attualmente caricati. Suggerimento     Si può identificare l'esatto hardware sul proprio sistema. Vedere Sezione 9.6.3, «Identificazione dell'hardware». Suggerimento     Si può configurare l'hardware all'avvio per attivare le funzionalità dell'hardware desiderate. Vedere Sezione 9.6.4, «Configurazione dell'hardware». Suggerimento     Si può probabilmente aggiungere il supporto per il proprio speciale dispositivo ricompilando il kernel. Vedere Sezione 9.7, «Il kernel». Capitolo 4. Autenticazione     Quando una persona (o un programma) richiede l'accesso al sistema, l'autenticazione verifica che l'identità sia fidata. Avvertimento Errori di configurazione di PAM possono lasciare l'utente fuori     dal proprio sistema. Si deve avere un CD di ripristino a portata di mano o impostare una partizione di avvio alternativa. Per fare il ripristino, avviare il sistema con uno di essi e correggere le cose da lì. 4.1. Autenticazione Unix normale L'autenticazione Unix normale è fornita dal modulo pam_unix(8) sotto PAM (Pluggable Authentication Modules) (http://     it.wikipedia.org/wiki/Pluggable_authentication_modules) . I suoi 3 importanti file di configurazione, con voci separate da ":", sono i seguenti. Tabella 4.1. I 3 importanti file di configurazione per pam_unix (8) +---------------------------------------------------------------+ |file |permessi |utente|gruppo|descrizione | |-------+----------+------+------+------------------------------| |/etc/ |-rw-r--r--|root |root |informazioni sugli account |     |passwd | | | |utente (ripulite) | |-------+----------+------+------+------------------------------| |/etc/ |-rw-r-----|root |shadow|informazioni sicure sugli | |shadow | | | |account utente | |-------+----------+------+------+------------------------------| |/etc/ |-rw-r--r--|root |root |informazioni sui gruppi | |group | | | | | +---------------------------------------------------------------+     "/etc/passwd" contiene righe come le seguenti. ...     utente1:x:1000:1000:Utente1 Nome,,,:/home/utente1:/bin/bash utente2:x:1001:1001:Utente2 Nome,,,:/home/utente2:/bin/bash ...     Come spiegato in "passwd(5), le voci separate da ": in questo file hanno il significato seguente. * Nome di login * Voce di specificazione della password * ID numerico dell'utente     * ID numerico del gruppo * Nome dell'utente o campo di commento * Directory home dell'utente * Voce opzionale per l'interprete di comandi utente La seconda voce del file "/etc/passwd" era usata per la password     cifrata. Dopo l'introduzione di "/etc/shadow", questa voce è usata per la specificazione della password. Tabella 4.2. Il contenuto della seconda voce di "/etc/passwd" +------------------------------------------------+ |contenuto|significato | |---------+--------------------------------------| |(vuoto) |account senza password |     |---------+--------------------------------------| |x |la password cifrata è in "/etc/shadow"| |---------+--------------------------------------| |* |nessun login per questo account | |---------+--------------------------------------| |! |nessun login per questo account | +------------------------------------------------+     "/etc/shadow" contiene righe come le seguenti. ...     utente1:$1$Xop0FYH9$IfxyQwBe9b8tiyIkt2P4F/:13262:0:99999:7::: utente2:$1$vXGZLVbS$ElyErNf/agUDsm1DehJMS/:13261:0:99999:7::: ...     Come spiegato in "shadow(5), le voci separate da ": in questo file hanno il significato seguente. * Nome di login * Password cifrata (I caratteri "$1$" iniziali indicano l'uso della cifratura MD5. "*" indica nessun login.) * La data, espressa in giorni trascorsi dal 1° gennaio 1970, in cui la password è stata modificata l'ultima volta     * Giorni che devono trascorrere prima che la password possa essere cambiata * Giorni trascorsi i quali la password deve essere cambiata * Giorni di preavviso per avvisare l'utente che la password è in scadenza * …     "/etc/group" contiene righe come le seguenti.     gruppo1:x:20:utente1,utente2     Come spiegato in "group(5), le voci separate da ": in questo file hanno il significato seguente. * Nome del gruppo * Password cifrata (non realmente usato)     * ID numerico del gruppo * Elenco di nomi utente separati da "," Nota     "/etc/gshadow" fornisce funzioni simili a "/etc/shadow" per "/etc /group", ma non è realmente usato. Nota     Può essere dinamicamente aggiunta la reale appartenenza di un utente ad un gruppo se viene aggiunta la riga "auth optional pam_group.so al file "/etc/pam.d/common-auth" e se viene impostata in "/etc/security/group.conf". Vedere pam_group(8). Nota     Il pacchetto base-passwd contiene una lista autorevole di utenti e gruppi: "/usr/share/doc/base-passwd/users-and-groups.html". 4.2. Gestire le informazioni su account e password     Quelli che seguono sono alcuni comandi degni di nota per gestire le informazioni sugli account Tabella 4.3. Elenco di comandi per gestire informazioni su account +---------------------------------------------------------------+ |comando |funzione | |-------------------+-------------------------------------------| |getent passwd |sfoglia le informazioni sull'account di " | | |" | |-------------------+-------------------------------------------| |getent shadow |sfoglia le informazioni shadow sull'account| | |di "" |     |-------------------+-------------------------------------------| |getent group |sfoglia le informazioni sul gruppo " | | |" | |-------------------+-------------------------------------------| |passwd |gestisce la password per l'account | |-------------------+-------------------------------------------| |passwd -e |imposta una password usa e getta per | | |l'attivazione dell'account | |-------------------+-------------------------------------------| |chage |gestisce le informazioni sulla scadenza | | |della password | +---------------------------------------------------------------+ Può essere necessario avere i privilegi di root per far     funzionare alcune di queste funzioni. Vedere crypt(3) per la cifratura di password e dati. Nota Nei sistemi configurati con PAM e NSS, come la macchina alioth     (http://alioth.debian.org) Debian, il contenuto dei file locali " /etc/passwd", "/etc/group" e "/etc/shadow" può non essere attivamente usato dal sistema. I comandi sopra descritti sono validi anche in un ambiente di questo tipo. 4.3. Password buone Quando si crea un account, durante l'installazione del sistema o con il comando passwd(1), si dovrebbe scegliere una buona     password (http://en.wikipedia.org/wiki/Password_strength) che consiste, secondo passwd(1), di un numero di caratteri da 6 a 8, incluso uno o più caratteri da ciascuno dei seguenti insiemi. * Lettere dell'alfabeto minuscole     * Cifre da 0 a 9 * Segni di punteggiatura Avvertimento     Non scegliere come password parole indovinabili. 4.4. Creare password cifrate     Ci sono strumenti indipendenti per generare password cifrate con salt Tabella 4.4. Elenco di strumenti per generare password +------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |comando |funzione | |-------------------+-------------+----------------------+--------+------------| | |V:88, I:921 | | |frontend | |whois (http:// |(http:// |340 (http:// | |ricco di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|mkpasswd|funzionalità| |/sid/whois) |/popcon.php? |/w/whois.html) | |per la |     | |package= | | |libreria | | |whois) | | |crypt(3) | |-------------------+-------------+----------------------+--------+------------| | |V:754, I:979 | | | | |openssl (http:// |(http:// |1073 (http:// | |calcola hash| |packages.debian.org|qa.debian.org|packages.qa.debian.org|openssl |di password | |/sid/openssl) |/popcon.php? |/o/openssl.html) |passwd |(OpenSSL). | | |package= | | |passwd(1ssl)| | |openssl) | | | | +------------------------------------------------------------------------------+ 4.5. PAM e NSS I moderni sistemi *nix (http://it.wikipedia.org/wiki/Unix-like) come il sistema Debian, forniscono all'amministratore di sistema i meccanismi PAM (Pluggable Authentication Modules) (http://     it.wikipedia.org/wiki/Pluggable_authentication_modules) e NSS (Name Service Switch) (http://en.wikipedia.org/wiki/ Name_Service_Switch) per configurare il sistema. Il ruolo di questi meccanismi può essere riassunto nel modo seguente. * PAM offre un meccanismo di autenticazione flessibile usato dal software applicativo e comporta pertanto scambio di dati sulle password     * NSS offre un meccanismo di servizio dei nomi flessibile che è usato di frequente dalla libreria standard C (http:// it.wikipedia.org/wiki/Libreria_standard_del_C) per ottenere i nomi di utenti e gruppi per programmi come ls(1) e id(1).     Questi sistemi PAM e NSS devono essere configurati in modo coerente.     I pacchetti degni di nota relativi ai sistemi PAM e NSS sono i seguenti. Tabella 4.5. Elenco dei pacchetti degni di nota per i sistemi PAM e NSS +-----------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |--------------------+--------------------+-------------------------+---------------| | | | |Pluggable | |libpam-modules |V:844, I:999 (http:/| |Authentication | |(http:// |/qa.debian.org/ |826 (http:// |Modules, moduli| |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/ |di | |sid/libpam-modules) |libpam-modules) |libp/libpam-modules.html)|autenticazione | | | | |inseribili | | | | |(servizio base)| |--------------------+--------------------+-------------------------+---------------| | | | |Pluggable | | | | |Authentication | |libpam-ldap (http://|V:14, I:30 (http:// |205 (http:// |Module, modulo | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/ |di | |sid/libpam-ldap) |popcon.php?package= |libp/libpam-ldap.html) |autenticazione | | |libpam-ldap) | |inseribile, che| | | | |permette | | | | |interfacce LDAP| |--------------------+--------------------+-------------------------+---------------| | | | |Pluggable | | | | |Authentication | |libpam-cracklib |V:14, I:32 (http:// |147 (http:// |Module, modulo | |(http:// |qa.debian.org/ |packages.qa.debian.org/ |di | |packages.debian.org/|popcon.php?package= |libp/ |autenticazione | |sid/libpam-cracklib)|libpam-cracklib) |libpam-cracklib.html) |inseribile, che| | | | |permette il | | | | |supporto di | | | | |cracklib | |--------------------+--------------------+-------------------------+---------------| | | | |Pluggable | | | | |Authentication | | |I:4 (http:// | |Modules, moduli| |libpam-doc (http:// |qa.debian.org/ |139 (http:// |di | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/ |autenticazione | |sid/libpam-doc) |libpam-doc) |libp/libpam-doc.html) |inseribili | | | | |(documentazione|     | | | |in html e testo| | | | |semplice) | |--------------------+--------------------+-------------------------+---------------| | | | |Libreria GNU C:| | |V:923, I:997 (http:/| |librerie | |libc6 (http:// |/qa.debian.org/ |10164 (http:// |condivise che | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/ |forniscono | |sid/libc6) |libc6) |libc/libc6.html) |anche il | | | | |servizio "Name | | | | |Service Switch"| |--------------------+--------------------+-------------------------+---------------| |glibc-doc (http:// |I:24 (http:// |2083 (http:// | | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/g/|Libreria GNU C:| |sid/glibc-doc) |popcon.php?package= |glibc-doc.html) |pagine man | | |glibc-doc) | | | |--------------------+--------------------+-------------------------+---------------| |glibc-doc-reference | | |Libreria GNU C:| |(http:// |I:8 (http:// |11389 (http:// |manuale di | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/g/|riferimento nei| |sid/ |popcon.php?package= |glibc-doc-reference.html)|formati info, | |glibc-doc-reference)|glibc-doc-reference)| |pdf e html | | | | |(non-free) | |--------------------+--------------------+-------------------------+---------------| |libnss-mdns (http://|I:574 (http:// |144 (http:// |Modulo NSS per | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/ |la risoluzione | |sid/libnss-mdns) |popcon.php?package= |libn/libnss-mdns.html) |dei nomi DNS | | |libnss-mdns) | |Multicast | |--------------------+--------------------+-------------------------+---------------| |libnss-ldap (http://|I:27 (http:// |230 (http:// |Modulo NSS per | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/ |l'uso di LDAP | |sid/libnss-ldap) |popcon.php?package= |libn/libnss-ldap.html) |come servizio | | |libnss-ldap) | |per i nomi | |--------------------+--------------------+-------------------------+---------------| | | | |Modulo NSS per | |libnss-ldapd (http:/|I:13 (http:// |115 (http:// |l'uso di LDAP | |/packages.debian.org|qa.debian.org/ |packages.qa.debian.org/ |come servizio | |/sid/libnss-ldapd) |popcon.php?package= |libn/libnss-ldapd.html) |per i nomi | | |libnss-ldapd) | |(nuovo fork di | | | | |libnss-ldap) | +-----------------------------------------------------------------------------------+ * La guida per l'amministratore di sistema di Linux-PAM, "The Linux-PAM System Administrators' Guide", in libpam-doc è essenziale per imparare la configurazione di PAM.     * La sezione "System Databases and Name Service Switch" in glibc-doc-reference è essenziale per imparare la configurazione di NSS. Nota     Si può ottenere un elenco più esteso ed aggiornato usando il comando "aptitude search 'libpam-|libnss-'". L'acronimo NSS può anche significare "Network Security Service" che è una cosa diversa da "Name Service Switch". Nota     PAM è il metodo più basilare per inizializzare le variabili d'ambiente per ciascun programma con valori predefiniti a livello di sistema. 4.5.1. File di configurazione letti da PAM e NSS     Quelli che seguono sono alcuni file degni di nota letti da PAM. Tabella 4.6. Elenco di file di configurazione letti da PAM +---------------------------------------------------------------+ |file di |funzione | |configurazione | | |----------------+----------------------------------------------| |/etc/pam.d/ |imposta la configurazione PAM per il programma| ||""; vedere pam(7) e pam.d(5) | |----------------+----------------------------------------------| |/etc/ |imposta la configurazione NSS con la voce per | |nsswitch.conf |ciascun servizio. Vedere nsswitch.conf(5) | |----------------+----------------------------------------------| |/etc/nologin |limita il login utente con il modulo | | |pam_nologin(8) | |----------------+----------------------------------------------| |/etc/securetty |limita la tty per l'accesso root con il modulo| | |pam_securetty(8) | |----------------+----------------------------------------------| |/etc/security/ |imposta il limite di accesso con il modulo | |access.conf |pam_access(8) |     |----------------+----------------------------------------------| |/etc/security/ |imposta restrizioni basate su gruppi con il | |group.conf |modulo pam_group(8) | |----------------+----------------------------------------------| |/etc/security/ |imposta le variabili d'ambiente con il modulo | |pam_env.conf |pam_env(8) | |----------------+----------------------------------------------| |/etc/environment|imposta variabili d'ambiente aggiuntive con il| | |modulo pam_env(8) con l'argomento "readenv=1" | |----------------+----------------------------------------------| |/etc/default/ |imposta la localizzazione con il modulo | |locale |pam_env(8) con l'argomento "readenv=1 envfile=| | |/etc/default/locale" (Debian) | |----------------+----------------------------------------------| |/etc/security/ |imposta limitazioni alle risorse (ulimit, | |limits.conf |core, …) con il modulo pam_limits(8) | |----------------+----------------------------------------------| |/etc/security/ |imposta limitazioni temporali con il modulo | |time.conf |pam_time(8) | +---------------------------------------------------------------+ Le restrizioni sulla scelta delle password sono implementate dai     moduli PAM pam_unix(8) e pam_cracklib(8). Possono essere configurati tramite i loro argomenti. Suggerimento     I moduli PAM usano il suffisso ".so" nei loro nomi file. 4.5.2. La moderna gestione centralizzata del sistema La moderna gestione centralizzata del sistema può essere messa in atto usando il server del Protocollo LDAP (Lightweight Directory Access Protocol) (http://it.wikipedia.org/wiki/     Lightweight_Directory_Access_Protocol) per amministrare molti sistemi *nix e non *nix in rete. L'implementazione open source del protocollo LDAP è il software OpenLDAP (http:// www.openldap.org/) . Il server LDAP fornisce le informazioni sugli account attraverso l'uso di PAM e NSS con i pacchetti per il sistema Debian     libpam-ldap e libnss-ldap. Per abilitare ciò sono necessarie diverse azioni. (Non ho mai usato questa configurazione e le informazioni che seguono sono di seconda mano. Tenerlo a mente quando si legge quanto segue.) * Si configura un server LDAP centralizzato eseguendo programmi come il demone LDAP autonomo slapd(8). * Si modificano i file di configurazione di PAM nella directory "/etc/pam.d/" per usare "pam_ldap.so" invece del predefinito "pam_unix.so". o Debian usa "/etc/pam_ldap.conf" come file di configurazione per libpam-ldap e "/etc/pam_ldap.secret" come file per archiviare la password di root. * Si modifica la configurazione di NSS nel file "/etc/ nsswitch.conf" per usare "ldap" invece della scelta predefinita ("compat" o "file").     o Debian usa "/etc/libnss-ldap.conf" come file di configurazione per libnss-ldap. * Per la sicurezza delle password è necessario far sì che libpam-ldap usi una connessione SSL (o TLS) (http:// it.wikipedia.org/wiki/Transport_Layer_Security) . * Per assicurare l'integrità dei dati, si può far sì che libnss-ldap usi una connessione SSL (o TLS) (http:// it.wikipedia.org/wiki/Transport_Layer_Security) a prezzo di un maggiore carico sulla rete LDAP. * Si dovrebbe eseguire nscd(8) localmente per mettere nella cache ogni risultato di ricerche LDAP in modo da ridurre il traffico di rete LDAP. Vedere la documentazione in pam_ldap.conf(5) e "/usr/share/doc/     libpam-doc/html/" fornita dal pacchetto libpam-doc e in "info libc 'Name Service Switch'" fornita dal pacchetto glibc-doc.     In modo simile si possono impostare sistemi centralizzati alternativi con altri metodi. * Integrazione di utenti e gruppi con il sistema Windows. o Accesso ai servizi di dominio Windows (http:// it.wikipedia.org/wiki/Dominio_Windows_Server) con i pacchetti winbind e libpam_winbind. o Vedere winbindd(8) e Integrare reti MS Windows con Samba (http://www.samba.org/samba/docs/man/ Samba-HOWTO-Collection/integrate-ms-networks.html) .     * Integrazione di utenti e gruppi con sistemi simil-Unix datati o Accesso a NIS (chiamato in origine YP) (http:// it.wikipedia.org/wiki/Network_Information_Service) o NIS+ (http://it.wikipedia.org/wiki/Nisplus) con il pacchetto nis. o Vedere il Linux NIS(YP)/NYS/NIS+ HOWTO (http://tldp.org/ HOWTO/NIS-HOWTO/) . 4.5.3. "Perché GNU su non supporta il gruppo wheel" Questa è la famosa sezione scritta da Richard M. Stallman, alla fine della vecchia pagina "info su. Non c'è da preoccuparsi:     l'attuale comando su in Debian usa PAM, perciò questo può limitare la possibilità di usare su verso il gruppo root abilitando la riga con "pam_wheel.so" in "/etc/pam.d/su". 4.5.4. Regole più stringenti per le password L'installazione del pacchetto libpam-cracklib permette di imporre     regole più stringenti sulle password, per esempio usando righe attive nel file "/etc/pam.d/common-password" come le seguenti.     Per squeeze: password required pam_cracklib.so retry=3 minlen=9 difok=3     password [success=1 default=ignore] pam_unix.so use_authtok nullok md5 password requisite pam_deny.so password required pam_permit.so 4.6. Altri controlli sugli accessi Nota     Vedere Sezione 9.5.15, «Tasto Alt-SysRq» per limitare la funzionalità SAK (Secure Attention Key) (http://en.wikipedia.org/ wiki/Secure_attention_key) del kernel. 4.6.1. sudo sudo(8) è un programma progettato per permettere ad un amministratore di sistema di dare privilegi di root limitati ad utenti, e di registrare l'attività come root. sudo richiede solo     la password di un utente regolare. Installare il pacchetto sudo e attivarlo impostando le opzioni in "/etc/sudoers". Vedere esempi di configurazione in "/usr/share/doc/sudo/examples/sudoers" e Sezione 1.1.12, «Configurazione di sudo». Il mio uso di sudo per un sistema con un singolo utente (vedere Sezione 1.1.12, «Configurazione di sudo») è mirato a proteggere     me stesso dalla mia stupidità. Personalmente condidero l'uso di sudo come un'alternativa migliore all'uso costante del sistema dall'account root. Per esempio, il comando seguente cambia il proprietario di "" in "".     $ sudo chown Naturalmente se si conosce la password di root (come accade per     ogni utente Debian che ha installato il proprio sistema), qualsiasi comando può essere eseguito come utente root da qualsiasi account utente usando "su -c". 4.6.2. PolicyKit PolicyKit (http://it.wikipedia.org/wiki/PolicyKit) è un     componente del sistema operativo per controllare privilegi a livello di sistema in sistemi operativi simil-Unix. Le applicazioni GUI più recenti non sono pensate per essere     eseguite come processi privilegiati. Per effettuare operazioni amministrative comunicano con processi privilegiati attraverso PolicyKit.     PolicyKit limita tali operazioni agli account utente che appartengono al gruppo sudo, in sistemi Debian.     Vedere polkit(8). 4.6.3. SELinux SELinux (Security-Enhanced Linux) (http://it.wikipedia.org/wiki/ Security-Enhanced_Linux) è un'infrastruttura per rendere il modello basato su privilegi più restrittivo del modello ordinario     di sicurezza in stile Unix, usando politiche di controllo obbligatorio degli accessi (MAC, mandatory access control) (http: //it.wikipedia.org/wiki/Mandatory_Access_Control) . I poteri di root possono essere limitati in determinate condizioni. 4.6.4. Limitare l'accesso ad alcuni servizi server Per la sicurezza del sistema è una buona idea disabilitare il maggior numero di programmi server possibile. Questo aspetto diventa critico per i server di rete. Avere server inutilizzati,     attivati direttamente come demoni (http://it.wikipedia.org/wiki/ Demone_(informatica)) o attraverso un programma super-server (http://en.wikipedia.org/wiki/Super-server) , è considerato un rischio per la sicurezza. Molti programmi, come sshd(8), usano un controllo degli accessi     basato su PAM. Ci sono molti modi per limitare gli accessi ad un qualche servizio server. * file di configurazione: "/etc/default/" * configurazione del runlevel per il demone (http:// it.wikipedia.org/wiki/Demone_(informatica)) * PAM (Pluggable Authentication Modules) (http:// it.wikipedia.org/wiki/Pluggable_authentication_modules) * "/etc/inetd.conf" per il super-server (http:// en.wikipedia.org/wiki/Super-server)     * "/etc/hosts.deny" e "/etc/hosts.allow" per il wrapper TCP (http://en.wikipedia.org/wiki/TCP_Wrapper) , tcpd(8) * "/etc/rpc.conf" per Sun RPC (http://en.wikipedia.org/wiki/ Open_Network_Computing_Remote_Procedure_Call) * "/etc/at.allow" e "/etc/at.deny" per atd(8) * "/etc/cron.allow" e "/etc/cron.deny" per crontab(1) * il firewall di rete (http://it.wikipedia.org/wiki/Firewall) della infrastruttura netfilter (http://it.wikipedia.org/wiki/ Netfilter) Vedere Sezione 3.5.3, «Esempio di gestione dei runlevel», Sezione 3.5.4, «Il parametro predefinito per ciascuno script     init», Sezione 4.5.1, «File di configurazione letti da PAM e NSS» , Sezione 3.5.8, «Inizializzazione dei servizi di rete» e Sezione 5.9, «Infrastruttura netfilter». Suggerimento     I servizi Sun RPC (http://en.wikipedia.org/wiki/ Open_Network_Computing_Remote_Procedure_Call) devono essere attivi per i programmi NFS (http://it.wikipedia.org/wiki/ Network_File_System) ed altri programmi basati su RPC. Suggerimento Se si hanno problemi con l'accesso remoto in sistemi Debian     recenti, commentare la configurazione responsabile come "ALL: PARANOID" in "/etc/hosts.deny", se esiste. (Essere però consapevoli dei rischi per la sicurezza che questo tipo di azione comporta.) 4.7. Sicurezza dell'autenticazione Le informazioni fornite in questo documento potrebbe non essere     sufficienti per le proprie necessità di sicurezza ma dovrebbero essere un buon punto di partenza. 4.7.1. Password sicure in Internet Molti servizi per livello di trasporto popolari comunicano i loro messaggi, compresa l'autenticazione con password, in puro testo. È una pessima idea trasmettere password in puro testo attraverso l'Internet selvaggia dove possono essere intercettate. Si possono     eseguire questi servizi attraverso "TLS (http://it.wikipedia.org/ wiki/Transport_Layer_Security) " (Transport Layer Security, sicurezza del livello di trasporto), o il suo predecessore "SSL" (Secure Sockets Layer, livello per socket sicuri), per rendere sicura tramite cifratura tutta la comunicazione, compresa la password. Tabella 4.7. Elenco di servizi e porte sicuri e non sicuri +---------------------------------------------------------------+ |nome del servizio non |porta|nome del servizio |porta| |sicuro | |sicuro | | |---------------------------+-----+-----------------------+-----| |www (http) |80 |https |443 | |---------------------------+-----+-----------------------+-----| |smtp (posta) |25 |ssmtp (smtps) |465 | |---------------------------+-----+-----------------------+-----| |ftp-data |20 |ftps-data |989 |     |---------------------------+-----+-----------------------+-----| |ftp |21 |ftps |990 | |---------------------------+-----+-----------------------+-----| |telnet |23 |telnets |992 | |---------------------------+-----+-----------------------+-----| |imap2 |143 |imaps |993 | |---------------------------+-----+-----------------------+-----| |pop3 |110 |pop3s |995 | |---------------------------+-----+-----------------------+-----| |ldap |389 |ldaps |636 | +---------------------------------------------------------------+ La cifratura ha un costo in termini di tempo CPU. Come alternativa leggera per la CPU, si può mantenere la comunicazione in testo semplice, rendendo allo stesso tempo sicura la sola password con un protocollo di autenticazione sicura come "APOP" (Authenticated Post Office Protocol) per POP e "CRAMD-MD5"     (Challenge-Response Authentication Mechanism MD5) per SMTP e IMAP. (Per inviare messaggi di posta elettronica via Internet dal proprio programma di posta al proprio server di posta è diventato popolare recentemente l'uso per SMTP della porta 587 invece della porta tradizionale 25, per evitare il blocco da parte del fornitore del servizio Internet della porta 25 autenticandosi allo stesso tempo con CRAM-MD5.) 4.7.2. Secure Shell, shell sicura Il programma Secure Shell (SSH (http://it.wikipedia.org/wiki/ Secure_Shell) fornisce comunicazioni sicure cifrate tra due host non fidati attraverso una rete non sicura, grazie ad un'autenticazione sicura. Consiste del client OpenSSH (http://     www.openssh.org/) , ssh(1) e del demone OpenSSH (http:// www.openssh.org/) , sshd(8). SSH può essere usato per fare da tunnel sicuro attraverso Internet per le comunicazioni con protocollo non sicuro come POP ed X, con la funzionalità di inoltro delle porte. Il client cerca di autenticarsi usando un'autenticazione basata sull'host, su una chiave pubblica, challenge-response o con     password. L'uso di un'autenticazione con chiave pubblica permette il login remoto senza password. Vedere Sezione 6.9, «Il server e le utilità per l'accesso remoto (SSH)». 4.7.3. Misure aggiuntive di sicurezza per Internet Anche quando si eseguono servizi sicuri, come server SSH (Secure shell) (http://it.wikipedia.org/wiki/Secure_Shell) e PPTP (Point-to-Point Tunneling Protocol) (http://it.wikipedia.org/wiki /PPTP) , esiste sempre la possibilità di un'intrusione da     Internet con attacchi basati sull'indovinare la password usando metodi con forza bruta, ecc. L'uso di una politica di firewall (vedere Sezione 5.9, «Infrastruttura netfilter») insieme agli strumenti di sicurezza elencati in seguito, può migliorare la sicurezza generale. Tabella 4.8. Elenco di strumenti per fornire misure aggiuntive di sicurezza +------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+--------------+----------------------+--------------| | |V:1, I:3 | |demone, knockd| |knockd (http:// |(http:// |164 (http:// |(1), e client,| |packages.debian.org|qa.debian.org/|packages.qa.debian.org|knock(1) | |/sid/knockd) |popcon.php? |/k/knockd.html) |piccoli per | | |package= | |bussare alle | | |knockd) | |porte | |-------------------+--------------+----------------------+--------------| | |V:16, I:18 | |utilità per | |denyhosts (http:// |(http:// |368 (http:// |aiutare gli | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|amministratori| |/sid/denyhosts) |popcon.php? |/d/denyhosts.html) |di sistema a |     | |package= | |contrastare | | |denyhosts) | |hacker ssh | |-------------------+--------------+----------------------+--------------| | |V:65, I:75 | |strumento per | |fail2ban (http:// |(http:// |402 (http:// |interdire IP | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|che causano | |/sid/fail2ban) |popcon.php? |/f/fail2ban.html) |errori di | | |package= | |autenticazione| | |fail2ban) | |multipli | |-------------------+--------------+----------------------+--------------| | |V:0, I:0 | |blocca | |libpam-shield |(http:// |130 (http:// |all'esterno | |(http:// |qa.debian.org/|packages.qa.debian.org|gli attacchi | |packages.debian.org|popcon.php? |/libp/ |remoti che | |/sid/libpam-shield)|package= |libpam-shield.html) |cercano di | | |libpam-shield)| |indovinare le | | | | |password | +------------------------------------------------------------------------+ 4.7.4. Rendere sicura la password di root     Per impedire che qualcuno possa accedere alla propria macchina con privilegi di root, è necessario compiere le azioni seguenti. * Impedire l'accesso fisico al disco fisso * Bloccare il BIOS ed impedire l'avvio da supporti removibili     * Impostare una password per la sessione interattiva di GRUB * Bloccare il menu di GRUB impedendo i cambiamenti     Avendo accesso fisico al disco fisso, reimpostare la password di root è relativamente semplice seguendo i passi seguenti. 1. Spostare il disco fisso in un PC con un BIOS che permette l'avvio da CD 2. Avviare il sistema con un supporto di ripristino (disco di     avvio di Debian, CD Knoppix, CD GRUB, …). 3. Montare la partizione root con accesso in lettura e scrittura 4. Modificare il file "/etc/passwd" nella partizione root e rendere la seconda voce per l'account di root vuota. Se si ha l'accesso in modifica alle voci di menu di GRUB (vedere     Sezione 3.3, «Stadio 2: il bootloader») per grub-rescue-pc all'avvio, è ancora più semplice, seguendo i passi seguenti. 1. Avviare il sistema con i parametri del kernel modificati in qualcosa del tipo "root=/dev/hda6 rw init=/bin/sh".     2. Modificare il file "/etc/passwd" e rendere la seconda voce per l'account di root vuota. 3. Riavviare il sistema.     Si può ora accedere alla shell di root del sistema senza password. Nota Una volta ottenuto l'accesso alla shell di root, si ha l'accesso a qualsiasi cosa sul sistema e si può reimpostare qualsiasi     password. Inoltre, si possono compromettere le password per tutti gli account utente usando strumenti di violazione delle password con attacchi a forza bruta, come quelli nei pacchetti john e crack (vedere Sezione 9.6.11, «Verifica della sicurezza e dell'integrità del sistema»). Queste password violate possono portare alla compromissione di altri sistemi. L'unica soluzione software ragionevole per evitare tutte queste preoccupazioni è l'uso di una partizione root (o partizione "/     etc") cifrata, usando dm-crypt (http://en.wikipedia.org/wiki/ Dm-crypt) e initramfs (vedere Sezione 9.4, «Suggerimenti per la cifratura dei dati»). Tuttavia è sempre necessaria la password per avviare il sistema. Capitolo 5. Impostazione della rete Suggerimento     Per una guida generica all'uso della rete in GNU/Linux, leggere la Linux Network Administrators Guide (http://www.tldp.org/LDP/ nag2/) . Suggerimento     Anche se questo documento usa ancora il vecchio ifconfig(8) con IPv4 per i suoi esempi di configurazione della rete, Debian sta migrando a ip(8) con IPv4+IPv6 nel rilascio wheezy. Patch per aggiornare questo documento sono le benvenute. 5.1. L'infrastruttura base di rete     In questa sezione viene descritta in breve l'infrastruttura base di rete in un sistema Debian moderno. Tabella 5.1. Elenco degli strumenti di configurazione della rete +------------------------------------------------------------------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |tipo |descrizione | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifupdown (http:// |V:569, I:996 (http:// |208 (http://packages.qa.debian.org/i/| |strumento standard per | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|ifupdown.html) |config::ifupdown |attivare e disattivare la | |ifupdown) |=ifupdown) | | |rete (specifico di Debian) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifplugd (http:// |V:3, I:10 (http://qa.debian.org/|352 (http://packages.qa.debian.org/i/|" " |gestisce automaticamente la | |packages.debian.org/sid/ifplugd)|popcon.php?package=ifplugd) |ifplugd.html) | |rete cablata | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifupdown-extra (http:// |V:0, I:2 (http://qa.debian.org/ |119 (http://packages.qa.debian.org/i/| |script per testare la rete | |packages.debian.org/sid/ |popcon.php?package= |ifupdown-extra.html) |" " |di supporto al pacchetto | |ifupdown-extra) |ifupdown-extra) | | |"ifupdown" | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifmetric (http:// |V:0, I:1 (http://qa.debian.org/ |100 (http://packages.qa.debian.org/i/| |imposta la metrica di | |packages.debian.org/sid/ |popcon.php?package=ifmetric) |ifmetric.html) |" " |routing per un'interfaccia | |ifmetric) | | | |di rete | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |script di mappatura di | |guessnet (http:// |V:0, I:1 (http://qa.debian.org/ |532 (http://packages.qa.debian.org/g/| |supporto al pacchetto | |packages.debian.org/sid/ |popcon.php?package=guessnet) |guessnet.html) |" " |"ifupdown", attraverso il | |guessnet) | | | |file "/etc/network/ | | | | | |interfaces" | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifscheme (http:// |V:0, I:0 (http://qa.debian.org/ |132 (http://packages.qa.debian.org/i/| |script di mappatura di | |packages.debian.org/sid/ |popcon.php?package=ifscheme) |ifscheme.html) |" " |supporto al pacchetto | |ifscheme) | | | |"ifupdown" | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifupdown-scripts-zg2 (http:// |V:0, I:0 (http://qa.debian.org/ |147 (http://packages.qa.debian.org/i/| |script di interfaccia di | |packages.debian.org/sid/ |popcon.php?package= |ifupdown-scripts-zg2.html) |" " |Zugschlus per il metodo | |ifupdown-scripts-zg2) |ifupdown-scripts-zg2) | | |manuale di ifupdown | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |NetworkManager (http:// | |network-manager (http:// |V:346, I:458 (http:// |4650 (http://packages.qa.debian.org/n| |it.wikipedia.org/wiki/ | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|/network-manager.html) |config::NM |Network_Manager) (demone): | |network-manager) |=network-manager) | | |gestisce la rete | | | | | |automaticamente | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |network-manager-gnome (http:// |V:251, I:404 (http:// | | |NetworkManager (http:// | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|6275 (http://packages.qa.debian.org/n|" " |it.wikipedia.org/wiki/ | |network-manager-gnome) |=network-manager-gnome) |/network-manager-gnome.html) | |Network_Manager) (frontend | | | | | |GNOME) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |plasma-widget-networkmanagement |V:38, I:65 (http://qa.debian.org|8067 (http://packages.qa.debian.org/p| |NetworkManager (http:// | |(http://packages.debian.org/sid/|/popcon.php?package= |/ |" " |it.wikipedia.org/wiki/ | |plasma-widget-networkmanagement)|plasma-widget-networkmanagement)|plasma-widget-networkmanagement.html)| |Network_Manager) (frontend | | | | | |KDE) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wicd (http://packages.debian.org|I:25 (http://qa.debian.org/ |16 (http://packages.qa.debian.org/w/ |config::wicd |gestore della rete cablata e| |/sid/wicd) |popcon.php?package=wicd) |wicd.html) | |wireless (metapacchetto) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wicd-cli (http:// |V:0, I:3 (http://qa.debian.org/ |28 (http://packages.qa.debian.org/w/ | |gestore della rete cablata e| |packages.debian.org/sid/ |popcon.php?package=wicd-cli) |wicd-cli.html) |" " |wireless (client a riga di | |wicd-cli) | | | |comando) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wicd-curses (http:// |V:2, I:7 (http://qa.debian.org/ |128 (http://packages.qa.debian.org/w/| |gestore della rete cablata e| |packages.debian.org/sid/ |popcon.php?package=wicd-curses) |wicd-curses.html) |" " |wireless (client Curses) | |wicd-curses) | | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wicd-daemon (http:// |V:26, I:31 (http://qa.debian.org|1103 (http://packages.qa.debian.org/w| |gestore della rete cablata e| |packages.debian.org/sid/ |/popcon.php?package=wicd-daemon)|/wicd-daemon.html) |" " |wireless (demone) | |wicd-daemon) | | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wicd-gtk (http:// |V:20, I:27 (http://qa.debian.org|387 (http://packages.qa.debian.org/w/| |gestore della rete cablata e| |packages.debian.org/sid/ |/popcon.php?package=wicd-gtk) |wicd-gtk.html) |" " |wireless (client GTK+) | |wicd-gtk) | | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |strumenti amministrativi per| |iptables (http:// |V:238, I:992 (http:// |1389 (http://packages.qa.debian.org/i| |filtraggio di pacchetti di | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|/iptables.html) |config::Netfilter|rete e NAT (Netfilter (http:| |iptables) |=iptables) | | |//it.wikipedia.org/wiki/ | | | | | |Netfilter) ) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |iproute2 (http:// | |iproute (http:// |V:570, I:979 (http:// |39 (http://packages.qa.debian.org/i/ | |www.linuxfoundation.org/en/ | |packages.debian.org/sid/iproute)|qa.debian.org/popcon.php?package|iproute.html) |config::iproute2 |Net:Iproute2) , IPv6 e altra| | |=iproute) | | |configurazione di rete | | | | | |avanzata: ip(8), tc(8), ecc.| |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ifrename (http:// |V:2, I:4 (http://qa.debian.org/ |192 (http://packages.qa.debian.org/i/| |rinomina le interfacce di | |packages.debian.org/sid/ |popcon.php?package=ifrename) |ifrename.html) |" " |rete in base a vari criteri | |ifrename) | | | |statici: ifrename(8) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ethtool (http:// |V:105, I:199 (http:// |307 (http://packages.qa.debian.org/e/| |mostra e modifica le | |packages.debian.org/sid/ethtool)|qa.debian.org/popcon.php?package|ethtool.html) |" " |impostazioni dei device | | |=ethtool) | | |Ethernet | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |testa la raggiungibilità di | | | | | |rete di un host remoto con | | | | | |nome host (http:// | |iputils-ping (http:// |V:323, I:996 (http:// | | |en.wikipedia.org/wiki/ | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|153 (http://packages.qa.debian.org/i/|test::iproute2 |Hostname) o indirizzo IP | |iputils-ping) |=iputils-ping) |iputils-ping.html) | |(http://it.wikipedia.org/ | | | | | |wiki/Indirizzo_ip) (iproute2| | | | | |(http:// | | | | | |www.linuxfoundation.org/en/ | | | | | |Net:Iproute2) ) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |testa la raggiungibilità di | |iputils-arping (http:// |V:3, I:27 (http://qa.debian.org/| | |rete di un host remoto | |packages.debian.org/sid/ |popcon.php?package= |76 (http://packages.qa.debian.org/i/ |" " |specificato con il suo | |iputils-arping) |iputils-arping) |iputils-arping.html) | |indirizzo ARP (http:// | | | | | |it.wikipedia.org/wiki/ | | | | | |Address_Resolution_Protocol)| |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |iputils-tracepath (http:// |V:23, I:251 (http:// |110 (http://packages.qa.debian.org/i/| |traccia il percorso di rete | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|iputils-tracepath.html) |" " |verso un host remoto | |iputils-tracepath) |=iputils-tracepath) | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |toolkit di rete NET-3 ( | |net-tools (http:// |V:671, I:998 (http:// | | |net-tools (http:// | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|910 (http://packages.qa.debian.org/n/|config::net-tools|www.linuxfoundation.org/en/ | |net-tools) |=net-tools) |net-tools.html) | |Net:Net-tools) , | | | | | |configurazione di rete | | | | | |IPv4): ifconfig(8), ecc. | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |testa la raggiungibilità | | | | | |della rete di un host remoto|     |inetutils-ping (http:// |V:0, I:1 (http://qa.debian.org/ | | |con nome host (http:// | |packages.debian.org/sid/ |popcon.php?package= |338 (http://packages.qa.debian.org/i/|test::net-tools |en.wikipedia.org/wiki/ | |inetutils-ping) |inetutils-ping) |inetutils-ping.html) | |Hostname) o indirizzo IP | | | | | |(http://it.wikipedia.org/ | | | | | |wiki/Indirizzo_ip) (datato, | | | | | |GNU) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |testa la raggiungibilità di | | | | | |rete di un host remoto | |arping (http:// |V:3, I:30 (http://qa.debian.org/|46 (http://packages.qa.debian.org/a/ | |specificato con il suo | |packages.debian.org/sid/arping) |popcon.php?package=arping) |arping.html) |" " |indirizzo ARP (http:// | | | | | |it.wikipedia.org/wiki/ | | | | | |Address_Resolution_Protocol)| | | | | |(datato) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |traceroute (http:// |V:97, I:993 (http:// |176 (http://packages.qa.debian.org/t/| |traccia il percorso di rete | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|traceroute.html) |" " |verso un host remoto | |traceroute) |=traceroute) | | |(datato, console) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |isc-dhcp-client (http:// |V:477, I:875 (http:// |1765 (http://packages.qa.debian.org/i| | | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|/isc-dhcp-client.html) |config::low-level|client DHCP | |isc-dhcp-client) |=isc-dhcp-client) | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wpasupplicant (http:// |V:370, I:512 (http:// |1364 (http://packages.qa.debian.org/w| |supporto client per WPA e | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|/wpasupplicant.html) |" " |WPA2 (IEEE 802.11i) | |wpasupplicant) |=wpasupplicant) | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wpagui (http:// |V:0, I:6 (http://qa.debian.org/ |790 (http://packages.qa.debian.org/w/|" " |client GUI Qt per WPA | |packages.debian.org/sid/wpagui) |popcon.php?package=wpagui) |wpagui.html) | |supplicant | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wireless-tools (http:// |V:79, I:261 (http:// |325 (http://packages.qa.debian.org/w/| |strumenti per manipolare le | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|wireless-tools.html) |" " |estensioni wireless per | |wireless-tools) |=wireless-tools) | | |Linux | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ppp (http://packages.debian.org/|V:64, I:513 (http:// |855 (http://packages.qa.debian.org/p/| |connessione PPP/PPPoE con | |sid/ppp) |qa.debian.org/popcon.php?package|ppp.html) |" " |chat | | |=ppp) | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |pppoeconf (http:// |V:1, I:22 (http://qa.debian.org/|340 (http://packages.qa.debian.org/p/| |strumento di aiuto di | |packages.debian.org/sid/ |popcon.php?package=pppoeconf) |pppoeconf.html) |config::helper |configurazione per la | |pppoeconf) | | | |connessione PPPoE | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |pppconfig (http:// |V:1, I:10 (http://qa.debian.org/|990 (http://packages.qa.debian.org/p/| |strumento di aiuto per la | |packages.debian.org/sid/ |popcon.php?package=pppconfig) |pppconfig.html) |" " |connessione PPP con chat | |pppconfig) | | | | | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wvdial (http:// |V:2, I:13 (http://qa.debian.org/|276 (http://packages.qa.debian.org/w/| |strumento di aiuto per la | |packages.debian.org/sid/wvdial) |popcon.php?package=wvdial) |wvdial.html) |" " |connessione PPP con wvdial e| | | | | |ppp | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |mtr-tiny (http:// |V:11, I:92 (http://qa.debian.org|87 (http://packages.qa.debian.org/m/ | |traccia il percorso di rete | |packages.debian.org/sid/ |/popcon.php?package=mtr-tiny) |mtr-tiny.html) |test::low-level |verso un host remoto | |mtr-tiny) | | | |(curses) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |mtr (http://packages.debian.org/|V:5, I:36 (http://qa.debian.org/|127 (http://packages.qa.debian.org/m/| |traccia il percorso di rete | |sid/mtr) |popcon.php?package=mtr) |mtr.html) |" " |verso un host remoto (curses| | | | | |e GTK+) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |gnome-nettool (http:// |V:25, I:353 (http:// |2752 (http://packages.qa.debian.org/g| |strumenti per operazioni | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|/gnome-nettool.html) |" " |comuni sulle informazioni di| |gnome-nettool) |=gnome-nettool) | | |rete (GNOME) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |strumento per mappatura | |nmap (http://packages.debian.org|V:64, I:438 (http:// |16762 (http://packages.qa.debian.org/| |della rete / esplorazione | |/sid/nmap) |qa.debian.org/popcon.php?package|n/nmap.html) |" " |delle porte (Nmap (http:// | | |=nmap) | | |it.wikipedia.org/wiki/Nmap) | | | | | |, console) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |zenmap (http:// |V:2, I:13 (http://qa.debian.org/|2347 (http://packages.qa.debian.org/z| |strumento per mappatura | |packages.debian.org/sid/zenmap) |popcon.php?package=zenmap) |/zenmap.html) |" " |della rete /esplorazione | | | | | |delle porte (GTK+) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | |V:27, I:209 (http:// | | |analizzatore del traffico di| |tcpdump (http:// |qa.debian.org/popcon.php?package|1037 (http://packages.qa.debian.org/t|" " |rete (Tcpdump (http:// | |packages.debian.org/sid/tcpdump)|=tcpdump) |/tcpdump.html) | |it.wikipedia.org/wiki/ | | | | | |Tcpdump) , console) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |wireshark (http:// | | | |analizzatore del traffico di| |packages.debian.org/sid/ |V:9, I:78 (http://qa.debian.org/|2439 (http://packages.qa.debian.org/w|" " |rete (Wireshark (http:// | |wireshark) |popcon.php?package=wireshark) |/wireshark.html) | |it.wikipedia.org/wiki/ | | | | | |Wireshark) , GTK+) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |tshark (http:// |V:3, I:33 (http://qa.debian.org/|345 (http://packages.qa.debian.org/t/|" " |analizzatore del traffico di| |packages.debian.org/sid/tshark) |popcon.php?package=tshark) |tshark.html) | |rete (console) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |sistema di monitoraggio e | |nagios3 (http:// |V:3, I:15 (http://qa.debian.org/|29 (http://packages.qa.debian.org/n/ | |gestione per host, servizi e| |packages.debian.org/sid/nagios3)|popcon.php?package=nagios3) |nagios3.html) |" " |reti (Nagios (http:// | | | | | |it.wikipedia.org/wiki/ | | | | | |Nagios) ) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |tcptrace (http:// |V:0, I:3 (http://qa.debian.org/ |389 (http://packages.qa.debian.org/t/| |produce un riassunto delle | |packages.debian.org/sid/ |popcon.php?package=tcptrace) |tcptrace.html) |" " |connessioni dall'output di | |tcptrace) | | | |tcpdump | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |sistema flessibile di | |snort (http:// |V:2, I:3 (http://qa.debian.org/ |1752 (http://packages.qa.debian.org/s| |rilevazione delle intrusioni| |packages.debian.org/sid/snort) |popcon.php?package=snort) |/snort.html) |" " |di rete (Snort (http:// | | | | | |en.wikipedia.org/wiki/Snort_| | | | | |(software)) ) | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |ntop (http://packages.debian.org|V:5, I:12 (http://qa.debian.org/|1661 (http://packages.qa.debian.org/n|" " |mostra l'uso della rete nel | |/sid/ntop) |popcon.php?package=ntop) |/ntop.html) | |browser web | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |client di rete forniti con | |dnsutils (http:// |V:95, I:928 (http:// |359 (http://packages.qa.debian.org/d/| |BIND (http:// | |packages.debian.org/sid/ |qa.debian.org/popcon.php?package|dnsutils.html) |" " |it.wikipedia.org/wiki/BIND) | |dnsutils) |=dnsutils) | | |: nslookup(8), nsupdate(8), | | | | | |dig | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| | | | | |controlla l'informazione DNS| |dlint (http:// |V:3, I:59 (http://qa.debian.org/|96 (http://packages.qa.debian.org/d/ | |(http://it.wikipedia.org/ | |packages.debian.org/sid/dlint) |popcon.php?package=dlint) |dlint.html) |" " |wiki/Domain_Name_System) di | | | | | |zona usando interrogazioni | | | | | |del server di nomi | |--------------------------------+--------------------------------+-------------------------------------+-----------------+----------------------------| |dnstracer (http:// | | | |traccia una catena di server| |packages.debian.org/sid/ |V:0, I:3 (http://qa.debian.org/ |81 (http://packages.qa.debian.org/d/ |" " |DNS (http://it.wikipedia.org| |dnstracer) |popcon.php?package=dnstracer) |dnstracer.html) | |/wiki/Domain_Name_System) | | | | | |fino alla sorgente | +------------------------------------------------------------------------------------------------------------------------------------------------------+ 5.1.1. Risoluzione dei nomi di host La risoluzione del nome host è attualmente supportata dal     meccanismo NSS (Name Service Switch) (http://en.wikipedia.org/ wiki/Name_Service_Switch) . Il flusso di eventi nella risoluzione è il seguente. 1. Il file "/etc/nsswitch.conf" con blocchi tipo "hosts: files dns" detta l'ordine di risoluzione dei nomi di host. (Questo rimpiazza la vecchia funzionalità del blocco "order in "/etc/ host.conf".) 2. Il metodo files è invocato per primo. Se il nome host viene trovato nel file "/etc/hosts", vengono restituiti tutti gli     indirizzi validi per esso e il programma termina. (Il file "/ etc/host.conf" contiene "multi on".) 3. Viene invocato il metodo dns. Se il nome host viene trovato dalla interrogazione al DNS (Internet Domain Name System, sistema dei nomi di dominio Internet) (http:// it.wikipedia.org/wiki/Domain_Name_System) , identificato dal file "/etc/resolv.conf", vengono restituiti tutti gli indirizzi validi per esso e il programma termina.     Per esempio, "/etc/hosts" contiene righe come le seguenti. 127.0.0.1 localhost 127.0.1.1 # Le righe seguenti sono desiderabili per host con supporto per IPv6     ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts Ogni riga inizia con un indirizzo IP (http://it.wikipedia.org/     wiki/Indirizzo_ip) e prosegue con l'hostname (http:// en.wikipedia.org/wiki/Hostname) associato. L'indirizzo IP 127.0.1.1 nella seconda riga dell'esempio può non essere presente in altri sistemi simil-Unix. L'Installatore     Debian (http://it.wikipedia.org/wiki/Debian-Installer) crea questa voce per i sistemi senza un indirizzo IP permanente come soluzione per alcuni software (es., GNOME) come documentato nel bug#316099 (http://bugs.debian.org/719621) .     Il corrisponde al nome host definito in "/etc/ hostname".     Per un sistema con un indirizzo IP permanente, si dovrebbe usare qui tale indirizzo invece di 127.0.1.1. Per un sistema con un indirizzo IP permanente e un FQDN (Fully Qualified Domain Name, nome di dominio pienamente qualificato)     (http://it.wikipedia.org/wiki/FQDN) fornito dal DNS (Domain Name System) (http://it.wikipedia.org/wiki/Domain_Name_System) , dovrebbe essere usato qui il canonico ., invece del semplice . Il file "/etc/resolv.conf" è un file statico se non è installato il pacchetto resolvconf. Se invece quest'ultimo è installato il     file è un collegamento simbolico. In ogni caso contiene le informazioni che inizializzano le routine del risolutore. Se il DNS si trova all'IP="192.168.11.1", il file conterrà la riga seguente.     nameserver 192.168.11.1 Il pacchetto resolvconf rendo questo file "/etc/resolv.conf" un     collegamento simbolico e gestisce il suo contenuto con script eseguiti in automatico. Per le postazioni PC nei tipici ambienti LAN ad hoc, il nome host     può essere risolto usando il Multicast DNS (mDNS, Zeroconf (http: //it.wikipedia.org/wiki/Zeroconf) ) in aggiunta ai metodi di base con file e dns. * Avahi (http://en.wikipedia.org/wiki/Avahi_(software)) fornisce un'infrastruttura per il Multicast DNS Service Discovery in Debian. * È equivalente a Apple Bonjour / Apple Rendezvous (http:// it.wikipedia.org/wiki/Bonjour) . * Il pacchetto plugin libnss-mdns fornisce la risoluzione dei nomi host attraverso mDNS per la funzionalità GNU Name Service Switch (NSS) della libreria C GNU (glibc).     * Il file "/etc/nsswitch.conf" dovrebbe contenere una sezione simile a "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4". * I nomi host che terminano con lo pseudo-dominio di livello più alto (http://it.wikipedia.org/wiki/TLD_Internet# Pseudo-domini_di_primo_livello) (TLD) ".local" (http:// it.wikipedia.org/wiki/.local) vengono risolti. * Vengono usati l'indirizzo IP "224.0.0.251" per IPv4 e quello "ff02::fb" per IPv6. La risoluzione del nome host con il deprecato NETBios su TCP/IP (http://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP) , usato dai vecchi sistemi Windows può essere fornita installando il     pacchetto winbind. Per abilitare questa funzionalità il file "/ etc/nsswitch.conf" dovrebbe avere una sezione come "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 wins". (I sistemi Windows moderni solitamente usano il metodo dns per la risoluzione del nome host.) 5.1.2. Il nome dell'interfaccia di rete Il nome dell'interfaccia di rete, ad esempio eth0, viene assegnato a ciascun hardware, quando viene rilevato, nel kernel     Linux attraverso il meccanismo di configurazione in spazio utente udev (vedere Sezione 3.5.11, «Il sistema udev»). Il nome dell'interfaccia di rete è chiamato interfaccia fisica in ifup(8) e interfaces(5). Per garantire che ciascuna interfaccia di rete abbia un nome persistente ad ogni avvio, usando indirizzi MAC (http:// it.wikipedia.org/wiki/Indirizzo_MAC) ecc., esiste un file di     memorizzazione: "/etc/udev/rules.d/70-persistent-net.rules". Questo file viene generato automaticamente dal programma "/lib/ udev/write_net_rules" eseguito probabilmente dal file "persistent-net-generator.rules". Lo si può modificare per cambiare le regole di assegnazione dei nomi. Attenzione Quando si modifica il file delle regole "/etc/udev/rules.d/ 70-persistent-net.rules", si deve mantenere ciascuna regola su     una singola riga e l'indirizzo MAC (http://it.wikipedia.org/wiki/ Indirizzo_MAC) in lettere minuscole. Per esempio, se si trova in quessto file una voce "FireWire device" e una "PCI device", probabilmente si vorrà chiamare "PCI device" eth0 e configurarla come interfaccia di rete primaria. 5.1.3. L'intervallo degli indirizzi di rete per la LAN Ecco un ripasso degli intervalli di indirizzi IPv4 a 32 bit in ciascuna classe, riservati per l'uso in reti locali (LAN) (http:/     /it.wikipedia.org/wiki/Local_Area_Network) dalla rfc1918 (http:// tools.ietf.org/html/rfc1918) . È garantito che questi indirizzi non creino conflitti con altri indirizzi della vera e propria rete Internet. Tabella 5.2. Elenco di intervalli di indirizzi di rete +---------------------------------------------------------------+ |Classe|indirizzi di rete|maschera di |maschera |numero di | | | |rete |rete /bit |sottoreti | |------+-----------------+-------------+-----------+------------| |A |10.x.x.x |255.0.0.0 |/8 |1 |     |------+-----------------+-------------+-----------+------------| |B |172.16.x.x — |255.255.0.0 |/16 |16 | | |172.31.x.x | | | | |------+-----------------+-------------+-----------+------------| |C |192.168.0.x — |255.255.255.0|/24 |256 | | |192.168.255.x | | | | +---------------------------------------------------------------+ Nota Se uno di questi indirizzi viene assegnato ad un host, allora l'host non deve accedere ad Internet direttamente, ma deve     accedervi attraverso un gateway che agisca da proxy per i singoli servizi o che, in alternativa, faccia da NAT (Network Address Translation, traduzione degli indirizzi di rete) (http:// it.wikipedia.org/wiki/Network_address_translation) . I router a banda larga di solito agiscono da NAT per l'ambiente LAN dell'utente finale. 5.1.4. Il supporto per i dispositivi di rete Nonostante la maggior parte dei dispositivi hardware sia supportata dal sistema Debian, ci sono alcuni dispositivi di rete     che necessitano, per essere supportati, firmware non libero secondo la definizione nelle DFSG (http://www.debian.org/ social_contract.t.html#guidelines) . Vedere Sezione 9.7.6, «Driver per hardware e firmware». 5.2. La configurazione moderna della rete per il desktop I sistemi Debian squeeze possono gestire la connessione di rete attraverso software per demoni (http://it.wikipedia.org/wiki/     Demone_(informatica)) di gestione come NetworkManager (NM) (http: //it.wikipedia.org/wiki/Network_Manager) (network-manager e pacchetti associati) oppure Wicd (http://it.wikipedia.org/wiki/ Wicd) (wicd e pacchetti associati). * Questi sono forniti con propri programmi per l'interfaccia utente con GUI (http://it.wikipedia.org/wiki/ Interfaccia_grafica) o a riga di comando. * Sono forniti con un proprio demone (http://it.wikipedia.org/ wiki/Demone_(informatica)) come sistema di backend.     * Permettono al proprio sistema di connettersi facilmente ad Internet. * Permettono una facile gestione della configurazione delle reti cablate e wireless. * Permettono di configurare la rete in modo indipendente dal datato pacchetto ifupdown. Nota     Non usare questi strumenti di configurazione automatica della rete per server. Sono pensati principalmente per utenti con desktop mobili su portatili. Questi strumenti moderni di configurazione della rete devono     essere configurati in modo corretto per evitare conflitti con il datato pacchetto ifupdown e con il suo file di configurazione "/ etc/network/interfaces". Nota Alcune funzionalità di questi strumenti automatici di configurazione della rete possono soffrire dei problemi. Non sono     così robusti come il vecchio pacchetto ifupdown. Controllare il BTS di network-manager (http://bugs.debian.org/cgi-bin/ pkgreport.cgi?package=network-manager) e il BTS di wicd (http:// bugs.debian.org/cgi-bin/pkgreport.cgi?package=wicd) per vedere i problemi e i limiti attuali. 5.2.1. Strumenti grafici di configurazione della rete La documentazione ufficiale per NM e Wicd su Debian è fornita     rispettivamente in "/usr/share/doc/network-manager/README.Debian" e "/usr/share/doc/wicd/README.Debian".     Fondamentalmente, la configurazione di rete per il desktop viene fatta nel modo seguente. 1. Aggiungere l'utente desktop, ad esempio pippo, al gruppo "netdev" con il comando seguente. (In alternativa farlo automaticamente attraverso D-bus (http://it.wikipedia.org/ wiki/D-Bus) nei moderni ambienti desktop come GNOME e KDE). $ sudo adduser pippo netdev 2. Mantenere la configurazione di "/etc/network/interfaces" semplice come la seguente.     auto lo iface lo inet loopback 3. Riavviare NM o Wicd con il comando seguente. $ sudo /etc/init.d/network-manager restart $ sudo /etc/init.d/wicd restart 4. Configurare la propria rete attraverso l'interfaccia grafica. Nota     Solo le interfacce che non sono elencate in "/etc/network/ interfaces" o che sono state configurate con "auto …" o "allow-hotplug …" e "iface … inet dhcp" (e con nessuna altra opzione) sono gestite da NM, per evitare conflitti con ifupdown. Suggerimento Se si desirano estendere le capacità di configurazione della rete     di NM, cercare i moduli plugin appropriati e i pacchetti supplementari, quali network-manager-openconnect, network-manager-openvpn-gnome, network-manager-pptp-gnome, mobile-broadband-provider-info, gnome-bluetooth, ecc. Lo stesso vale per quelli di Wicd. Attenzione Questi strumenti di configurazione automatica della rete possono non essere compatibili con alcune configurazioni esotiche del datato ifupdown contenute in "/etc/network/interfaces", come     quelle in Sezione 5.5, «Configurazione base della rete con ifupdown (metodo vecchio)» e Sezione 5.6, «Configurazione avanzata della rete con ifupdown (strumento datato)». Per informazioni sui problemi e le limitazioni attualmente esistenti, controllare il BTS di network-manager (http://bugs.debian.org/ cgi-bin/pkgreport.cgi?package=network-manager) e il BTS di wicd (http://bugs.debian.org/cgi-bin/pkgreport.cgi?package=wicd) . 5.3. La vecchia connessione e configurazione di rete Quando il metodo descritto in Sezione 5.2, «La configurazione moderna della rete per il desktop» non è sufficiente per le     proprie necessità, si dovrebbe usare il metodo datato di connessione e configurazione della rete che combina assieme diversi strumenti più semplici. La connessione di rete in vecchio stile è specifica per ciascun     metodo (vedere Sezione 5.4, «Il metodo di connessione alla rete (datato)»). Esistono 2 tipi di programma per la configurazione a basso     livello della rete in Linux (vedere Sezione 5.7.1, «Comandi iproute2»). * I vecchi programmi net-tools (http://www.linuxfoundation.org/ en/Net:Net-tools) (ifconfig(8), …) provengono dal sistema di rete Linux NET-3. La maggior parte di essi è ora superata.     * I nuovi programmi Linux iproute2 (http:// www.linuxfoundation.org/en/Net:Iproute2) (ip(8), …) formano l'attuale sistema Linux di rete. Anche se questi programmi di rete a basso livello sono potenti,     sono complicati da usare. Perciò sono stati creati strumenti di configurazione della rete di alto livello. Il pacchetto ifupdown è lo standard de facto per una configurazione di rete di altro livello di questo tipo in Debian.     Permette di attivare la rete semplicemente eseguendo, per esempio, "ifup eth0". Il suo file di configurazione è il file "/ etc/network/interfaces" e i suoi contenuti hanno tipicamente un aspetto simile al seguente. auto lo iface lo inet loopback     auto eth0 iface eth0 inet dhcp Il pacchetto resolvconf è stato creato per fornire al sistema ifupdown il supporto per una riconfigurazione indolore della risoluzione degli indirizzi di rete, riscrivendo automaticamente     il file "/etc/resolv.conf" di configurazione del risolutore. Attualmente la maggior parte dei pacchetti di configurazione della rete in Debian sono modificati per usare il pacchetto resolvconf (vedere "/usr/share/doc/resolvconf/README.Debian"). Per automatizzare la configurazione dinamica di ambienti di rete come un PC portatile in una LAN cablata, sono stati creati script     di aiuto per il pacchetto ifupdown, come ifplugd, guessnet, ifscheme, ecc. Essi sono relativamente difficili da usare ma si comportano bene con il sistema ifupdown esistente. Questi sono spiegati in dettaglio con esempi (vedere Sezione 5.5,     «Configurazione base della rete con ifupdown (metodo vecchio)» e Sezione 5.6, «Configurazione avanzata della rete con ifupdown (strumento datato)»). 5.4. Il metodo di connessione alla rete (datato) Attenzione I metodi per testare la connessione descritti in questa sezione sono pensati per fare prove. Non sono pensati per essere usati     direttamente per connettersi alla rete quotidianamente. È consigliato il loro uso con NM, Wicd o il pacchetto ifupdown (vedere Sezione 5.2, «La configurazione moderna della rete per il desktop» e Sezione 5.5, «Configurazione base della rete con ifupdown (metodo vecchio)»). I metodi di connessione tipici alla rete e i percorsi tipici per     la connessione per un PC possono essere schematizzati nel modo seguente. Tabella 5.3. Elenco dei metodi di connessione alla rete e dei percorsi di connessione +---------------------------------------------------------------+ |PC |metodo di |percorso di connessione | | |connessione| | |--------+-----------+------------------------------------------| |Porta | |⇔ modem (http://en.wikipedia.org/wiki/ | |seriale |PPP |Modem) ⇔ POTS ⇔ punto di accesso dial-up ⇔| |(ppp0) | |ISP |     |--------+-----------+------------------------------------------| |Porta |PPPoE/DHCP/|⇔ modem BB (banda larga) ⇔ servizio BB ⇔ | |ethernet|Statico |punto di accesso BB ⇔ ISP | |(eth0) | | | |--------+-----------+------------------------------------------| | | |⇔ LAN ⇔ router BB (banda larga) con NAT | |Porta |DHCP/ |(traduzione degli indirizzi di rete (http:| |ethernet|Statico |//it.wikipedia.org/wiki/ | |(eth0) | |Network_address_translation) (⇔ modem BB | | | |…) | +---------------------------------------------------------------+     Quella che segue è una schematizzazione degli script di configurazione per ciascun metodo di connessione. Tabella 5.4. Elenco di configurazioni della connessione di rete +---------------------------------------------------------------+ |metodo di |configurazione |pacchetto(i) | |connessione | |backend | |----------------+------------------------------+---------------| |PPP |pppconfig per creare chat |pppconfig, ppp | | |deterministiche | | |----------------+------------------------------+---------------| |PPP |wvdialconf per creare chat |ppp, wvdial | |(alternativo) |euristiche | | |----------------+------------------------------+---------------|     |PPPoE |pppoeconf per creare chat |pppoeconf, ppp | | |deterministiche | | |----------------+------------------------------+---------------| |DHCP |descritto in "/etc/dhcp/ |isc-dhcp-client| | |dhclient.conf" | | |----------------+------------------------------+---------------| |IP statico |descritto in "/etc/network/ |net-tools | |(IPv4) |interfaces" | | |----------------+------------------------------+---------------| |IP statico |descritto in "/etc/network/ |iproute | |(IPv6) |interfaces" | | +---------------------------------------------------------------+     Gli acronimi per le connessioni di rete hanno il significato seguente. Tabella 5.5. Elenco di acronimi per le connessioni di rete +---------------------------------------------------------------+ |acronimo |significato | |------------------------------------+--------------------------| | |Plain Old Telephone | |POTS (http://it.wikipedia.org/wiki/ |Service, il semplice | |POTS) |vecchio servizio | | |telefonico | |------------------------------------+--------------------------| | |banda larga (http:// | |BB |en.wikipedia.org/wiki/ | | |Broadband) | |------------------------------------+--------------------------| | |ad esempio, la linea | |servizio BB (BB-service) |digitale (DSL), la TV via | | |cavo o fibre ottiche | |------------------------------------+--------------------------| | |ad esempio, il modem DSL | | |(http://it.wikipedia.org/ | | |wiki/DSL) , il modem via | | |cavo (http:// | |modem BB |en.wikipedia.org/wiki/ | | |Cable_modem) o l'ONT, il |     | |terminale di rete ottica | | |(http://en.wikipedia.org/ | | |wiki/FTTP) | |------------------------------------+--------------------------| |LAN (http://it.wikipedia.org/wiki/ |rete locale (Local Area | |Local_Area_Network) |Network) | |------------------------------------+--------------------------| |WAN (http://it.wikipedia.org/wiki/ |rete geografica (Wide Area| |Wide_area_network) |Network) | |------------------------------------+--------------------------| |DHCP (http://it.wikipedia.org/wiki/ |Protocollo di | |Dynamic_Host_Configuration_Protocol)|Configurazione Dinamica | | |dell'Host | |------------------------------------+--------------------------| |PPP (http://it.wikipedia.org/wiki/ |protocollo Point-to-Point | |Point-to-Point_Protocol) | | |------------------------------------+--------------------------| |PPPoE (http://it.wikipedia.org/wiki/|protocollo Point-to-Point | |PPPoE) |via Ethernet | |------------------------------------+--------------------------| |ISP (http://it.wikipedia.org/wiki/ |Fornitore di servizi | |Internet_service_provider) |Internet (Internet Service| | |Provider) | +---------------------------------------------------------------+ Nota I servizi di connessione WAN attraverso la TV via cavo sono     generalmente serviti da DHCP o PPPoE. Quelli ADSL e FTTP sono generalmente serviti da PPPoE. Si deve consultare il proprio fornitore di servizi Internet per i requisiti esatti di configurazione della connessione WAN. Nota Quando un router BB è usato per creare un ambiente LAN domestico, i PC della LAN sono connessi alla WAN attraverso il router BB con     NAT (traduzione degli indirizzi di rete) (http://it.wikipedia.org /wiki/Network_address_translation) . In questi casi alle interfacce di rete dei PC nella LAN sono assegnati dal router BB indirizzi IP statici o DHCP. Il router BB deve essere configurato per connettersi alla WAN seguendo le istruzioni del proprio fornitore di servizi Internet. 5.4.1. Connessione DHCP con Ethernet Le reti tipiche moderne per le abitazioni e le piccole aziende, cioè le LAN, sono connese alla WAN (Internet) usando un router     per banda larga economico. La LAN dietro questo router è di solito servita dal server DHCP (http://it.wikipedia.org/wiki/ Dynamic_Host_Configuration_Protocol) (protocollo di configurazione dinamica dell'host) in esecuzione sul router. Installare semplicemente il pacchetto isc-dhcp-client per     Ethernet con DHCP (protocollo di configurazione dinamica dell'host) (http://it.wikipedia.org/wiki/ Dynamic_Host_Configuration_Protocol) .     Vedere dhclient.conf(5). 5.4.2. Connessione con IP statico con Ethernet     Per Ethernet con IP statico non è necessaria alcuna azione particolare. 5.4.3. Connessione PPP con pppconfig Lo script di configurazione pppconfig imposta la connessione PPP     (http://it.wikipedia.org/wiki/Point-to-Point_Protocol) interattivamente chiedendo all'utente di selezionare solamente quanto segue. * Il numero di telefono * Il nome utente per il fornitore di servizi Internet * La password per il fornitore di servizi Internet     * La velocità della porta * La porta di comunicazione del modem * Il metodo di autenticazione Tabella 5.6. Elenco dei file di configurazione per la connessione PPP (http://it.wikipedia.org/wiki/Point-to-Point_Protocol) con pppconfig +---------------------------------------------------------------+ |file |funzione | |------------+--------------------------------------------------| |/etc/ppp/ |Il file di configurazione per pppd specifico per | |peers/ |il fornitore di servizi , generato da | | |pppconfig | |------------+--------------------------------------------------| |/etc/ |Il file di configurazione per chat specifico per | |chatscripts/|il fornitore di servizi , generato da |     | |pppconfig | |------------+--------------------------------------------------| |/etc/ppp/ |I parametri generici di esecuzione per ppd | |options | | |------------+--------------------------------------------------| | |Dati di autenticazione per PAP (http:// | |/etc/ppp/ |it.wikipedia.org/wiki/ | |pap-secret |Password_authentication_protocol) (rischio per la | | |sicurezza) | |------------+--------------------------------------------------| |/etc/ppp/ |Dati di autenticazione per PAP (http:// | |chap-secret |it.wikipedia.org/wiki/ | | |Password_authentication_protocol) (più sicuri) | +---------------------------------------------------------------+ Attenzione     Se i comandi pon e poff vengono invocati senza argomenti, " " viene impostato a "provider".     Si può testare la configurazione usando strumenti di configurazione di rete a basso livello come nel modo seguente. $ sudo pon     ... $ sudo poff     Vedere "/usr/share/doc/ppp/README.Debian.gz". 5.4.4. Connessione PPP alternativa con wvdialconf Un approccio diverso all'uso di pppd(8) è la sua esecuzione tramite wvdial(1) che è fornito nel pacchetto "wvdial. Invece di     essere pppd ad eseguire chat(8) per comporre il numero e negoziare la connessione, è wvdial che fa queste cose e poi avvia pppd per tutto il resto. Lo script di configurazione wvdialconf imposta la connessione PPP     interattivamente chiedendo all'utente di selezionare solamente quanto segue. * Il numero di telefono     * Il nome utente per il fornitore di servizi Internet * La password per il fornitore di servizi Internet Nella maggior parte dei casi wvdial crea la connessione con     successo e mantiene automaticamente un elenco dei dati di autenticazione. Tabella 5.7. Elenco dei file di configurazione per la connessione PPP con wvdialconf +---------------------------------------------------------------+ |file |funzione | |-----------+---------------------------------------------------| |/etc/ppp/ |Il file di configurazione per pppd specifico per | |peers/ |wvdial, generato da wvdialconf | |wvdial | | |-----------+---------------------------------------------------| |/etc/ |Il file di configurazione creato da wvdialconf | |wvdial.conf| |     |-----------+---------------------------------------------------| |/etc/ppp/ |I parametri generici di esecuzione per ppd | |options | | |-----------+---------------------------------------------------| | |Dati di autenticazione per PAP (http:// | |/etc/ppp/ |it.wikipedia.org/wiki/ | |pap-secret |Password_authentication_protocol) (rischio per la | | |sicurezza) | |-----------+---------------------------------------------------| |/etc/ppp/ |Dati di autenticazione per PAP (http:// | |chap-secret|it.wikipedia.org/wiki/ | | |Password_authentication_protocol) (più sicuri) | +---------------------------------------------------------------+     Si può testare la configurazione usando strumenti di configurazione di rete a basso livello come nel modo seguente. $ sudo wvdial     ... $ sudo killall wvdial     Vedere wvdial(1) e wvdial.conf(5). 5.4.5. Connessione PPPoE con pppoeconf Quando il fornitore di servizi Internet dà una connessione PPPoE e si decide di connettere il proprio PC direttamente alla WAN, la     rete del proprio PC deve essere configurata con PPPoE. PPPoE sta per "PPP over Ethernet" (PPP via Ethernet). Lo script di configurazione pppoeconf configura la connessione PPPoE in modo interattivo.     I file di configurazione sono i seguenti. Tabella 5.8. Elenco dei file di configurazione per la connessione PPPoE con pppoeconf +---------------------------------------------------------------+ |file |funzione | |------------+--------------------------------------------------| |/etc/ppp/ |Il file di configurazione per pppd specifico per | |peers/ |pppoe, generato da pppoeconf | |dsl-provider| | |------------+--------------------------------------------------| |/etc/ppp/ |I parametri generici di esecuzione per ppd |     |options | | |------------+--------------------------------------------------| | |Dati di autenticazione per PAP (http:// | |/etc/ppp/ |it.wikipedia.org/wiki/ | |pap-secret |Password_authentication_protocol) (rischio per la | | |sicurezza) | |------------+--------------------------------------------------| |/etc/ppp/ |Dati di autenticazione per PAP (http:// | |chap-secret |it.wikipedia.org/wiki/ | | |Password_authentication_protocol) (più sicuri) | +---------------------------------------------------------------+     Si può testare la configurazione usando strumenti di configurazione di rete a basso livello come nel modo seguente. $ sudo /sbin/ifconfig eth0 up $ sudo pon dsl-provider     ... $ sudo poff dsl-provider $ sudo /sbin/ifconfig eth0 down     Vedere "/usr/share/doc/pppoeconf/README.Debian". 5.5. Configurazione base della rete con ifupdown (metodo vecchio) La configurazione tradizionale della rete TCP/IP (http://     it.wikipedia.org/wiki/Suite_di_protocolli_Internet) in un sistema Debian usa il pacchetto ifupdown come strumento ad alto livello. Ci sono 2 casi tipici. * Per sistemi con IP dinamico, come PC portatili, si dovrebbe impostare la rete TCP/IP con il pacchetto resolvconf che permette di cambiare facilmente la configurazione di rete (vedere Sezione 5.5.4, «Interfaccia di rete servita da DHCP»     ). * Per sistemi con IP statico, come sever, si dovrebbe impostare la rete TCP/IP senza il pacchetto resolvconf e mantere semplice il proprio sistema (vedere Sezione 5.5.5, «Interfaccia di rete con IP statico»). Questi metodi di impostazione tradizionali sono piuttosto utili     se si desidera impostare una configurazione avanzata (vedere Sezione 5.5, «Configurazione base della rete con ifupdown (metodo vecchio)»). Il pacchetto ifupdown fornisce l'infrastruttura standard per la configurazione di rete di alto livello nel sistema Debian. In     questa sezione viene descritta la configurazione base della rete con ifupdown con un'introduzione semplificata e molti esempi tipici. 5.5.1. Sintassi di base dei comandi Il pacchetto ifupdown contiene 2 comandi: ifup(8) e ifdown(8).     Offrono una configurazione della rete di alto livello in base al file di configurazione "/etc/network/interfaces". Tabella 5.9. Elenco di comandi base per la configurazione della rete con ifupdown +---------------------------------------------------------------+ |comando|azione | |-------+-------------------------------------------------------|     |ifup |attiva una interfaccia di rete eth0 con la | |eth0 |configurazione di eth0 se esiste un blocco "iface eth0"| |-------+-------------------------------------------------------| |ifdown |disattiva una interfaccia di rete eth0 con la | |eth0 |configurazione di eth0 se esiste un blocco "iface eth0"| +---------------------------------------------------------------+ Avvertimento     Non usare strumenti di configurazione a basso livello, come i comandi ifconfig(8) e ip(8), per configurare un'interfaccia nello stato attivo (up). Nota     Non esiste un comando ifupdown. 5.5.2. Sintassi di base di "/etc/network/interfaces"     La sintassi di base di "/etc/network/interfaces", come spiegato in interfaces(5), può essere riassunta nel modo seguente. Tabella 5.10. Elenco dei blocchi in "/etc/network/interfaces" +---------------------------------------------------------------+ |blocco |significato | |------------------------+--------------------------------------| |"auto |attiva l'interfaccia | |" | all'avvio del | | |sistema | |------------------------+--------------------------------------| |"allow-auto |" " | |" | | |------------------------+--------------------------------------| | |attiva l'interfaccia | |"allow-hotplug | quando il kernel | |" |rileva un evento hotplug | | |dall'interfaccia |     |------------------------+--------------------------------------| |Le righe che iniziano |definiscono la configurazione di rete | |con "iface | | |…" | | |------------------------+--------------------------------------| |Le righe che iniziano |definiscono i valori di mappatura di | |con "mapping | al corrispondente | |"| | |------------------------+--------------------------------------| |Le righe che iniziano |sono commenti e vengono ignorate (i | |con un carattere |commenti di fine riga non sono | |cancelletto "#" |supportati) | |------------------------+--------------------------------------| |Le righe che terminano |estendono la configurazione alla riga | |con una barra rovesciata|seguente | |"\" | | +---------------------------------------------------------------+     Le righe con un blocco iface hanno la sintassi seguente. iface     ... Per la configurazione di base non vengono usati i blocchi mapping     ma viene usato il nome dell'interfaccia di rete come nome della configurazione di rete (vedere Sezione 5.6.5, «Il blocco di mappatura "mapping"»). Avvertimento     Non creare definizioni duplicate per un blocco "iface" per un'interfaccia di rete in "/etc/network/interfaces". 5.5.3. Interfaccia di rete loopback La voce di configurazione seguente, nel file "/etc/network/     interfaces" attiva l'interfaccia di rete loopback, lo, all'avvio del sistema (attraverso il blocco auto).     auto lo iface lo inet loopback     Questo blocco esiste sempre nel file "/etc/network/interfaces". 5.5.4. Interfaccia di rete servita da DHCP Dopo aver preparato il sistema con Sezione 5.4.1, «Connessione     DHCP con Ethernet», l'interfaccia di rete con DHCP viene configurata creando una voce di configurazione nel file "/etc/ network/interfaces" nel modo seguente.     allow-hotplug eth0 iface eth0 inet dhcp Quando il kernel Linux rileva l'interfaccia fisica eth0, il     blocco allow-hotplug fa sì che ifup attivi l'interfaccia e il blocco iface fa sì che ifup usi DHCP per configurare l'interfaccia. 5.5.5. Interfaccia di rete con IP statico L'interfaccia di rete con IP statico viene configurata creando     una voce di configurazione nel file "/etc/network/interfaces" nel modo seguente. allow-hotplug eth0 iface eth0 inet static address 192.168.11.100     netmask 255.255.255.0 gateway 192.168.11.1 dns-domain example.com dns-nameservers 192.168.11.1 Quando il kernel Linux rileva l'interfaccia fisica eth0, il     blocco allow-hotplug fa sì che ifup attivi l'interfaccia e il blocco iface fa sì che ifup usi l'IP statico per configurare l'interfaccia.     In questo esempio sono stati dati per veri i seguenti dati. * Intervallo di indirizzi IP della rete LAN: 192.168.11.0 - 192.168.11.255 * Indirizzo IP del gateway: 192.168.11.1     * Indirizzo IP del PC: 192.168.11.100 * Il pacchetto resolvconf è installato. * Nome di dominio: "example.com" * Indirizzo IP del server DNS: 192.168.11.1 Quando il pacchetto resolvconf non è installato, la     configurazione relativa al DNS deve essere fatta manualmente modificando "/etc/resolv.conf" nel modo seguente.     nameserver 192.168.11.1 domain example.com Attenzione     L'indirizzo IP usato nell'esempio soprastante non deve essere copiato pari pari. È necessario mettere i numeri IP della reale configurazione della propria rete. 5.5.6. Informazioni di base sull'interfaccia LAN wireless La LAN wireless (in breve WLAN) (http://it.wikipedia.org/wiki/ Wlan) fornisce connettività veloce wireless attraverso     comunicazioni con espansione di spettro in bande radio senza licenza basate sull'insieme di standard chiamato IEEE 802.11 (http://it.wikipedia.org/wiki/IEEE_802.11) . Le interfacce WLAN sono quasi come normali interfacce Ethernet, ma richiedono alcuni dati sull'identità della rete e sulla chiave di cifratura per essere usate una volta inizializzate. Gli     strumenti di rete di alto livello per esse sono esattamente gli stessi delle interfacce di rete, tranne che i nomi delle interfacce sono un po' diversi come eth1, wlan0, ath0, wifi0, … a seconda dei driver del kernel utilizzati. Suggerimento     Il device wmaster0 è il device master che è un device interno usato solamente da SoftMAC (http://en.wikipedia.org/wiki/SoftMAC) con la nuova API mac80211 di Linux (http://linuxwireless.org/) .     Quelle che seguono sono alcune parole chiave relative alla WLAN che è bene ricordare. Tabella 5.11. Elenco di acronimi per WLAN +---------------------------------------------------------------+ |acronimo|forma estesa |significato | |--------+-------------------------+----------------------------| | | |identificativo di rete a 16 | | | |bit usato da reti WaveLAN | |NWID |Network ID (ID di rete) |(http://en.wikipedia.org/ | | | |wiki/WaveLAN) pre-802.11 | | | |(molto deprecato) | |--------+-------------------------+----------------------------| | | |il nome di rete dei punti di| | | |accesso wireless (Wireless | | |(Extended) Service Set |Access Points, AP) (http:// | | |Identifier (http:// |it.wikipedia.org/wiki/ | |(E)SSID |it.wikipedia.org/wiki/ |Access_Point) interconnessi | | |SSID) (Identificativo di |a formare una LAN wireless | | |insieme di servizi |802.11 (http:// | | |(esteso)) |it.wikipedia.org/wiki/ | | | |IEEE_802.11) ; |     | | |identificativo del dominio | |--------+-------------------------+----------------------------| | |Wired Equivalent Privacy | | | |(http://it.wikipedia.org/|standard di cifratura per | |WEP, |wiki/ |wireless a 64 bit (128 bit) | |(WEP2) |Wired_Equivalent_Privacy)|di prima generazione con | | |(Privacy equivalente alla|chiave a 40-bit (deprecato) | | |cablata) | | |--------+-------------------------+----------------------------| | |Wi-Fi Protected Access |standard di cifratura per | | |(http://it.wikipedia.org/|wireless di seconda | |WPA |wiki/ |generazione (maggior parte | | |Wi-Fi_Protected_Access) |del 802.11i), compatibile | | |(Accesso Wi-Fi protetto) |con WEP | |--------+-------------------------+----------------------------| | |Wi-Fi Protected Access 2 |standard di cifratura per | | |(http://it.wikipedia.org/|wireless di terza | |WPA2 |wiki/IEEE_802.11i) |generazione (tutto il | | |(Accesso Wi-Fi protetto |802.11i), non compatibile | | |2) |con WEP | +---------------------------------------------------------------+     Di fatto la scelta del protocollo è di solito limitata dal router wireless che si possiede. 5.5.7. Interfaccia LAN wireless con WPA/WPA2     È necessario installare il pacchetto wpasupplicant per supportare la WLAN con i nuovi WPA/WPA2. In caso di IP DHCP (http://it.wikipedia.org/wiki/     Dynamic_Host_Configuration_Protocol) per la connessione WLAN, la voce nel file "/etc/network/interfaces" dovrebbe essere come la seguente. allow-hotplug ath0 iface ath0 inet dhcp     wpa-ssid zonacasa # la chiave di cifratura, psk, esadecimale e' codificata da una passphrase in puro testo wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f     Vedere "/usr/share/doc/wpasupplicant/README.modes.gz". 5.5.8. Interfaccia LAN wireless con WEP È necessario installare il pacchetto wireless-tools per     supportare la rete WLAN con il vecchio WEP. (Il proprio router economico potrebbe usare ancora questa infrastruttura non sicura, ma è meglio di niente.) Attenzione     Notare che il traffico di rete in una WLAN con WEP può essere spiato da altri. In caso di IP DHCP (http://it.wikipedia.org/wiki/     Dynamic_Host_Configuration_Protocol) per la connessione WLAN, la voce nel file "/etc/network/interfaces" dovrebbe essere come la seguente. allow-hotplug eth0 iface eth0 inet dhcp wireless-essid Casa     wireless-key1 0123-4567-89ab-cdef wireless-key2 12345678 wireless-key3 s:password wireless-defaultkey 2 wireless-keymode open     Vedere "/usr/share/doc/wireless-tools/README.Debian". 5.5.9. Connessione PPP È necessario come prima cosa configurare la connessione PPP come descritto in precedenza (vedere Sezione 5.4.3, «Connessione PPP     con pppconfig»). Quindi aggiungere nel file "/etc/network/ interfaces" la voce per il device PPP primario ppp0 nel modo seguente.     iface ppp0 inet ppp provider 5.5.10. Connessione PPP alternativa È necessario come prima cosa configurare la connessione PPP alternativa con wvdial, come descritto in precedenza (vedere     Sezione 5.4.4, «Connessione PPP alternativa con wvdialconf»). Quindi aggiungere nel file "/etc/network/interfaces" la voce per il device PPP primario ppp0 nel modo seguente.     iface ppp0 inet wvdial 5.5.11. Connessione PPPoE Per i PC connessi direttamente alla WAN con servizio PPPoE, è necessario configurare il sistema con la connessione PPPoE come     descritto in precedenza (vedere Sezione 5.4.5, «Connessione PPPoE con pppoeconf»). Quindi aggiungere nel file "/etc/network/ interfaces" la voce per il device PPPoE primario eth0 nel modo seguente. allow-hotplug eth0 iface eth0 inet manual pre-up /sbin/ifconfig eth0 up up ifup ppp0=dsl     down ifdown ppp0=dsl post-down /sbin/ifconfig eth0 down # Quello che segue e' usato solo internamente iface dsl inet ppp provider dsl-provider 5.5.12. Lo stato di configurazione della rete di ifupdown Il file "/etc/network/run/ifstate" memorizza gli stati previsti di configurazione della rete per tutte le interfacce di rete     attualmente attive gestite dal pacchettoifupdown. Sfortunatamente, anche se il tentativo del sistema ifupdown di attivare un'interfaccia come previsto fallisce, il file "/etc/ network/run/ifstate" la elenca come attiva. Se l'output del comando ifconfig(8) per un'interfaccia non ha una     riga come quella dell'esempio seguente, l'interfaccia non può essere usata come parte di una rete IPV4 (http://it.wikipedia.org /wiki/IPv4) .     inet addr:192.168.11.2 Bcast:192.168.11.255 Mask:255.255.255.0 Nota     Per i dispositivi Ethernet connessi con PPPoE, l'output di ifconfig(8) manca di una riga come quella dell'esempio precedente. 5.5.13. Riconfigurazione base della rete Quando si cerca di riconfigurare un'interfaccia, ad esempio eth0, per prima cosa è necessario disattivarla con il comando "sudo ifdown eth0". Questo rimuove la voce corrispondente ad eth0 dal     file "/etc/network/run/ifstate". (Potrebbero essere generati messaggi di errore se eth0 non è attiva o se non era stata configurata in modo conrretto.) Per il momento, fare questa azione per una postazione di lavoro per singolo utente sembra sicuro in qualunque momento. Si può ora modificare liberamente il contenuto di "/etc/network/     interfaces" in base alle proprie necessità per riconfigurare l'interfaccia di rete eth0.     In seguito si può riattivare eth0 con il comando "sudo ifup eth0 ". Suggerimento     Si può (re)inizializzare l'interfaccia di rete semplicemente usando "sudo ifdown eth0;sudo ifup eth0". 5.5.14. Pacchetto ifupdown-extra     Il pacchetto ifupdown-extra fornisce facili testi della connessione di rete per l'uso con il pacchetto ifupdown. * Il comando network-test(1) può essere usato dalla shell.     * Gli script automatici vengono eseguiti per ogni invocazione del comando ifup. Il comando network-test libera l'utente dal faticoso compito di     eseguire comandi a basso livello per analizzare i problemi di rete.     Gli script automtici vengono installati in "/etc/network/*/" e effettuano le azioni seguenti. * Verifica della connessione del cavo di rete * Verifica dell'eventuale uso duplicato di indirizzi IP     * Impostazione di instradamenti statici del sistema in base alle definizioni in "/etc/network/routes" * Verifica della raggiungibilità del gateway di rete * Registrazione dei risultati nel file "/var/log/syslog"     Queste voci nel syslog sono piuttosto utili per l'amministrazione di problemi di rete nel sistema remoto. Suggerimento Il comportamento automatico del pacchetto ifupdown-extra è     configurabile con "/etc/default/network-test". Alcuni di questi controlli automatici rallentano un po' il sistema all'avvio dato che è necessario un po' di tempo per restare in ascolto per le risposte ARP (http://it.wikipedia.org/wiki/ Address_Resolution_Protocol) . 5.6. Configurazione avanzata della rete con ifupdown (strumento datato) Le funzionalità del pacchetto ifupdown possono essere migliorate     andando oltre quanto è stato descritto in Sezione 5.5, «Configurazione base della rete con ifupdown (metodo vecchio)», con qualche informazione più avanzata. Le funzionalità descritte in questa sezione sono completamente     opzionali. Essendo io pigro e minimalista, raramente faccio lo sforzo di usarle. Attenzione     Se non si è riusciti a configurare la connessione di rete usando le informazioni in Sezione 5.5, «Configurazione base della rete con ifupdown (metodo vecchio)», cercare una soluzione nelle informazioni che seguono non farà che peggiorare le cose. 5.6.1. Il pacchetto ifplugd Il pacchetto ifplugd è un vecchio strumento di configurazione della rete che può gestire soltanto connessioni Ethernet. Risolve problemi di cavi Ethernet sconnessi/ricconessi per PC portatili,     ecc. Se è installato NetworkManager (http://it.wikipedia.org/wiki /Network_Manager) o Wicd (http://it.wikipedia.org/wiki/Wicd) (vedere Sezione 5.2, «La configurazione moderna della rete per il desktop»), questo pacchetto non è necessario. Questo pacchetto viene eseguito come demone (http:// it.wikipedia.org/wiki/Demone_(informatica)) e rimpiazza le     funzionalità auto o allow-hotplug (vedere Tabella 5.10, «Elenco dei blocchi in "/etc/network/interfaces"») ed abilita le interfacce quando queste vengono connesse alla rete.     Ecco come usare il pacchetto ifplugd per la porta Ethernet interna, ad esempio eth0. 1. Rimuovere il blocco "auto eth0" o "allow-hotplug eth0" dal file "/etc/network/interfaces". 2. Mantenere i blocchi "iface eth0 inet …" e "mapping …" nel file "/etc/network/interfaces".     3. Installare il pacchetto ifplugd. 4. Eseguire "sudo dpkg-reconfigure ifplugd". 5. Indicare eth0 come "interfaccia statica che ifplugd deve osservare".     Ora, dopo la riconfigurazione, la rete funziona come voluto. * All'avvio o al rilevamento dell'hardware, l'interfaccia non viene attivata da sé stessa. o Procedura di avvio veloce senza lunghi tempi di attesa per DHCP. o Nessuna interfaccia attivata in modo inconsueto senza un appropriato indirizzo IPv4 (vedere Sezione 5.5.12, «Lo stato di configurazione della rete di ifupdown»).     * Quando viene rilevato il cavo Ethernet l'interfaccia viene attivata. * Dopo un certo intervallo di tempo dalla disconnessione del cavo Ethernet, l'interfaccia viene automaticamente disattivata. * Quando viene inserito un altro cavo Ethernet, l'interfaccia è attivata nel nuovo ambiente. Suggerimento     Gli argomenti del comando ifplugd(8) possono impostare il suo comportamento, come il ritardo nella riconfigurazione delle interfacce. 5.6.2. Il pacchetto ifmetric     Il pacchetto ifmetric permette di manipolare la metrica di instradamenti a posteriori, anche per DHCP.     Le azioni seguenti impostano l'interfaccia eth0 come preferita rispetto alla interfaccia wlan0. 1. Installare il pacchetto ifmetric. 2. Aggiungere una riga con l'opzione "metric 0" immediatamente     sotto alla riga "iface eth0 inet dhcp". 3. Aggiungere una riga con l'opzione "metric 1" immediatamente sotto alla riga "iface wlan0 inet dhcp". "metric 0" significa instradamento con la più alta priorità ed è quello predefinito. Un valore di metrica più alto indica     instradamenti con priorità più bassa. L'indirizzo IP dell'interfaccia attiva con il valore di metrica più basso diventa quello di origine. Vedere ifmetric(8). 5.6.3. L'interfaccia virtuale Una singola interfaccia fisica Ethernet può essere configurata come interfacce virtuali multiple con indirizzi IP differenti. Di     solito ciò ha lo scopo di connettere un'interfaccia a diverse sottoreti di IP. Per esempio, un'applicazione di questo tipo è l'hosting web virtuale basato su indirizzi IP con una singola interfaccia di rete.     Per esempio, si supponga quanto segue. * Una singola interfaccia Ethernet dell'host è connessa ad un hub Ethernet (non al router a banda larga). * L'hub Ethernet è connesso sia ad Internet sia alla rete LAN.     * La rete LAN usa la sottorete 192.168.0.x/24. * L'host usa per Internet indirizzi IP DHCP sull'interfaccia fisica eth0. * L'host usa 192.168.0.1 con l'interfaccia virtuale eth0:0 per la LAN.     I blocchi seguenti in " /etc/network/interfaces" configurano la rete. iface eth0 inet dhcp metric 0 iface eth0:0 inet static     address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 metric 1 Attenzione Anche se questo esempio di configurazione con traduzione degli indirizzi di rete (NAT) (http://it.wikipedia.org/wiki/ Network_address_translation) usando netfilter/iptables (http://     it.wikipedia.org/wiki/Netfilter) (vedere Sezione 5.9, «Infrastruttura netfilter») può fornire un router a basso prezzo per la LAN usando una sola interfaccia, non c'è alcuna reale funzionalità di firewall con una configurazione di questo tipo. Si dovrebbero usare 2 interfacce fisiche con NAT per rendere sicura la rete locale rispetto ad Internet. 5.6.4. Sintassi avanzata dei comandi Il pacchetto ifupdown offre funzionalità di configurazione avanzata della rete usando il nome di configurazione della rete e     il nome dell'interfaccia di rete. Viene qui usata una terminologia leggermente diversa da quella usata in ifup(8) e interfaces(5). Tabella 5.12. Elenco della terminologia per i device di rete +----------------------------------------------------------------+ |terminologia |terminologia di |esempi nel testo |descrizione| |delle pagine man|questo documento|seguente | | |----------------+----------------+------------------+-----------| | | | |nome dato | |nome dell' |nome dell' | |dal kernel | |interfaccia |interfaccia di |lo, eth0, |Linux | |fisica |rete ||(usando il | | | | |meccanismo |     | | | |udev) | |----------------+----------------+------------------+-----------| | | | |elemento | | | | |indicante | | | | |il nome che| |nome dell' |nome della |config1, config2, |segue la | |interfaccia |configurazione | |parola | |logica |di rete | |iface nel | | | | |file "/etc/| | | | |network/ | | | | |interfaces"| +----------------------------------------------------------------+ I comandi base per la configurazione della rete descritti in Sezione 5.5.1, «Sintassi di base dei comandi» richiedono che, nel     file "/etc/network/interfaces", il nome della configurazione di rete indicato nel blocco iface corrisponda al nome dell' interfaccia di rete. I comandi avanzati per la configurazione della rete permettono,     nel file "/etc/network/interfaces", la distinzione tra il nome della configurazione di rete e della interfaccia di rete Tabella 5.13. Elenco di comandi avanzati per la configurazione della rete con ifupdown +---------------------------------------------------------------+ |comando |azione | |----------+----------------------------------------------------| |ifup eth0=|attiva una interfaccia di rete eth0 con la | |config1 |configurazione config1 | |----------+----------------------------------------------------| |ifdown |disattiva una interfaccia di rete eth0 con la |     |eth0= |configurazione config1 | |config1 | | |----------+----------------------------------------------------| | |attiva una interfaccia di rete eth0 con la | |ifup eth0 |configurazione scelta dal blocco di mappatura | | |mapping | |----------+----------------------------------------------------| |ifdown |disattiva una interfaccia di rete eth0 con la | |eth0 |configurazione scelta dal blocco di mappatura | | |mapping | +---------------------------------------------------------------+ 5.6.5. Il blocco di mappatura "mapping" Nella sezione Sezione 5.5.2, «Sintassi di base di "/etc/network/     interfaces"» è stata saltata la spiegazione del blocco mapping nel file "/etc/network/interfaces", per evitare complicazioni. Questo blocco ha la sintassi seguente. mapping script     map map map ... Ciò fornisce funzionalità avanzate al file "/etc/network/     interfaces" automatizzando la scelta della configurazione con lo script di mappatura specificato da .     Ecco cosa succede quando viene eseguito il comando seguente.     $ sudo ifup eth0 Quando il " trova corrispondenza con     "eth0", l'esecuzione di questo comando produce, per configurare automaticamente eth0, l'invocazione del comando seguente.     $ sudo ifup eth0=$(echo -e ' \n \n ...' | eth0)     Le righe, per l'input dello script, che iniziano con "map" sono opzionali e possono essere ripetute. Nota     L'espressione glob per il blocco mapping funziona come i metacaratteri dei glob per nomi di file della shell (vedere Sezione 1.5.6, «Glob della shell»). 5.6.6. Configurazione della rete commutabile manualmente Quella che segue è una descrizione di come commutare manualmente     tra diverse configurazioni di rete senza dover riscrivere il file "/etc/network/interfaces" come in Sezione 5.5.13, «Riconfigurazione base della rete». Per tutte le configurazioni di rete alle quali si deve accedere è     sufficiente creare un solo file "/etc/network/interfaces" come quello seguente. auto lo iface lo inet loopback iface config1 inet dhcp iface config2 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1 dns-domain example.com dns-nameservers 192.168.11.1     iface pppoe inet manual pre-up /sbin/ifconfig eth0 up up ifup ppp0=dsl down ifdown ppp0=dsl post-down /sbin/ifconfig eth0 down # Quanto segue viene usato solo internamente iface dsl inet ppp provider dsl-provider iface pots inet ppp provider provider Notare che il nome di configurazione della rete, che è l'elemento     che viene dopo iface, non usa il nome dell'interfaccia di rete. Inoltre non ci sono blocchi auto, né allow-hotplug per attivare l'interfaccia di rete eth0 automaticamente in base ad eventi.     Ora tutto è pronto per commutare tra le configurazioni di rete. Spostare il PC in una LAN con DHCP. L'interfaccia di rete     (l'interfaccia fisica) eth0 viene attivata assegnandole il nome di configurazione della rete (il nome dell'interfaccia logica) config1 nel modo seguente. $ sudo ifup eth0=config1     Password: ...     L'interfaccia eth0 è attiva, configurata con DHCP e connessa alla LAN.     $ sudo ifdown eth0=config1 ...     L'interfaccia di rete eth0 è disattivata e disconnessa dalla LAN. Spostare il PC in una LAN con IP statico. L'interfaccia di rete     eth0 viene attivata assegnandole il nome di configurazione della rete config2 nel modo seguente.     $ sudo ifup eth0=config2 ... L'interfaccia eth0 è attiva, configurata con IP statico e connessa alla LAN. I parametri aggiuntivi dns-* forniti     configurano il contenuto di "/etc/resolv.conf". Tale file "/etc/ resolv.conf" viene gestito meglio se è installato il pacchetto resolvconf.     $ sudo ifdown eth0=config2 ...     L'interfaccia di rete eth0 è di nuovo disattivata e disconnessa dalla LAN. Spostare il PC su una porta di un modem per banda larga connesso     ad un servizio PPPoE. L'interfaccia di rete eth0 viene attivata assegnandole il nome di configurazione della rete pppoe nel modo seguente.     $ sudo ifup eth0=pppoe ...     L'interfaccia eth0 è attiva, configurata per la connessione PPPoE diretta con il fornitore di servizi Internet.     $ sudo ifdown eth0=pppoe ...     L'interfaccia di rete eth0 è di nuovo disattivata e disconnessa. Spostare il PC in una postazione senza LAN o modem per banda     larga, ma con una linea telefonica ed un modem. L'interfaccia di rete ppp0 viene attivata assegnandole il nome di configurazione della rete pots nel modo seguente.     $ sudo ifup ppp0=pots ...     L'interfaccia ppp0 è attiva e connessa ad Internet con PPP.     $ sudo ifdown ppp0=pots ...     L'interfaccia di rete ppp0 è disattivata e disconnessa da Internet.     Si dovrebbe controllare nel file "/etc/network/run/ifstate" lo stato attuale della configurazione di rete del sistema ifupdown. Avvertimento     Potrebbe essere necessario cambiare i numeri alla fine di eth*, ppp*, ecc., se si ha più di un'interfaccia di rete. 5.6.7. Uso di script con il sistema ifupdown Il sistema ifupdown esegue automaticamente gli script installati     in "/etc/network/*/" esportando le variabili d'ambiente negli script. Tabella 5.14. Elenco delle variabili d'ambiente passate dal sistema ifupdown +---------------------------------------------------------------+ |variabile |valore passato | |d'ambiente | | |------------+--------------------------------------------------| |"$IFACE" |nome fisico (nome dell'interfaccia) | | |dell'interfaccia in fase di elaborazione | |------------+--------------------------------------------------| |"$LOGICAL" |nome logico (nome dell'interfaccia) | | |dell'interfaccia in fase di elaborazione | |------------+--------------------------------------------------| |"$ADDRFAM" | dell'interfaccia | |------------+--------------------------------------------------| |"$METHOD" | dell'interfaccia (es., "static") |     |------------+--------------------------------------------------| |"$MODE" |"start" se invocato da ifup, "stop" se invocato da| | |ifdown | |------------+--------------------------------------------------| | |come per "$MODE", ma in modo più dettagliato, | |"$PHASE" |distinguendo le fasi pre-up, post-up, pre-down e | | |post-down | |------------+--------------------------------------------------| |"$VERBOSITY"|indica se è stato usato "--verbose"; se lo è stato| | |viene impostata a 1, altrimenti a 0 | |------------+--------------------------------------------------| |"$PATH" |percorso di ricerca dei comandi: "/usr/local/sbin:| | |/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | |------------+--------------------------------------------------| |"$IF_ |valore della opzione corrispondente all'interno | |" |del blocco iface | +---------------------------------------------------------------+ In questo caso, ciascuna variabile d'ambiente di tipo "$IF_ " viene creata a partire dal nome dell'opzione     corrispondente, come e , preceduto da "$IF_" e convertendo tutte le lettere in maiuscolo, sostituendo i caratteri di sottolineatura con trattini e scartando i caratteri non alfanumerici. Suggerimento     Vedere Sezione 5.5.2, «Sintassi di base di "/etc/network/ interfaces"» per , , e . Il pacchetto ifupdown-extra (vedere Sezione 5.5.14, «Pacchetto ifupdown-extra») usa queste variabili d'ambiente per estendere la funzionalità del pacchetto ifupdown. Il pacchetto ifmetric (vedere Sezione 5.6.2, «Il pacchetto ifmetric») installa lo     script "/etc/network/if-up.d/ifmetric" che imposta la metrica attraverso la variabile "$IF_METRIC". Anche il pacchetto guessnet (vedere Sezione 5.6.8, «Mappatura con guessnet»), che fornisce un'infrastruttura semplice e potente per la selezione automatica della configurazione di rete tramite il meccanismo di mappatura , usa queste variabili. Nota Per esempi più dettagliati di script personalizzati per la configurazione della rete che usano queste variabili d'ambiente, controllare gli script d'esempio in "/usr/share/doc/ifupdown/     examples/*" e gli script usati nei pacchetti ifscheme e ifupdown-scripts-zg2. Questi script addizionali hanno alcune funzionalità che si sovrappongono in parte a quelle dei pacchetti base ifupdown-extra e guessnet. Se si installano questi script addizionali, si dovrebbe personalizzarli in modo da evitare interferenze. 5.6.8. Mappatura con guessnet Invece di scegliere manualmente la configurazione, come descritto in Sezione 5.6.6, «Configurazione della rete commutabile     manualmente», si può usare il meccanismo di mappatura descritto in Sezione 5.6.5, «Il blocco di mappatura "mapping"» per selezionare automaticamente la configurazione di rete con script personalizzati. Il comando guessnet-ifupdown(8) fornito nel pacchetto guessnet è     pensato per essere usato come uno script di mappatura e fornisce un'infrastruttura potente per migliorare il sistema ifupdown. * Per ciascuna configurazione di rete in un blocco iface, si elencano delle condizioni da testare come valore per le     opzioni di guessnet. * La mappatura sceglie come configurazione di rete la prima iface che dà come risultato un non-ERRORE. Questo doppio uso del file "/etc/network/interfaces" da parte dello script di mappatura, guessnet-ifupdown, e     dell''infrastruttura originale di configurazione della rete, ifupdown, non causa impatti negativi dato che le opzioni guessnet esportano solo variabili d'ambiente extra a script eseguiti dal sistema ifupdown. Vedere i dettagli in guessnet-ifupdown(8). Nota Quando in "/etc/network/interfaces è necessaria più di una riga     di opzione guessnet, usare righe di opzione che iniziano con guessnet1, guessnet2 e così via, dato che il pacchetto ifupdown non permette ripetizioni della stringa iniziale delle righe di opzione. 5.7. Configurazione della rete a basso livello 5.7.1. Comandi iproute2 I comandi Iproute2 (http://www.linuxfoundation.org/en/ Net:Iproute2) offrono funzionalità complete di configurazione     della rete a basso livello. Quella che segue è una tabella di traduzione dai comandi obsoleti di net-tools (http:// www.linuxfoundation.org/en/Net:Net-tools) ai nuovi comandi iproute2 (http://www.linuxfoundation.org/en/Net:Iproute2) ecc. Tabella 5.15. Tabella di traduzione dai comandi obsoleti net-tools ai nuovi comandi iproute2 +---------------------------------------------------------------+ |net-tools |nuovi | | |obsoleti |iproute2, |manipolazione | | |ecc. | | |------------+-------------+------------------------------------| |ifconfig(8) |ip addr |indirizzo di protocollo (IP o IPv6) | | | |di un device | |------------+-------------+------------------------------------| |route(8) |ip route |voce nella tabella di instradamento |     |------------+-------------+------------------------------------| |arp(8) |ip neigh |voce nella cache ARP o NDISC | |------------+-------------+------------------------------------| |ipmaddr |ip maddr |indirizzo multicast | |------------+-------------+------------------------------------| |iptunnel |ip tunnel |tunnel over IP | |------------+-------------+------------------------------------| |nameif(8) |ifrename(8) |nomina le interfacce di rete in base| | | |all'indirizzo MAC | |------------+-------------+------------------------------------| |mii-tool(8) |ethtool(8) |impostazioni del device Ethernet | +---------------------------------------------------------------+     Vedere ip(8) e IPROUTE2 Utility Suite Howto (http:// www.policyrouting.org/iproute2.doc.html) . 5.7.2. Operazioni sicure a basso livello sulla rete Si possono usare i comandi a basso livello per la rete seguenti     in modo sicuro dato che non cambiano la configurazione della rete. Tabella 5.16. Elenco di comandi di rete a basso livello +---------------------------------------------------------------+ |comando |descrizione | |-----------------+---------------------------------------------| |ifconfig |mostra lo stato del collegamento e | | |l'indirizzo delle interfacce attive | |-----------------+---------------------------------------------| |ip addr show |mostra lo stato del collegamento e | | |l'indirizzo delle interfacce attive | |-----------------+---------------------------------------------| |route -n |mostra tutta la tabella di instradamento in | | |indirizzi numerici | |-----------------+---------------------------------------------| |ip route show |mostra tutta la tabella di instradamento in | | |indirizzi numerici | |-----------------+---------------------------------------------| | |mostra l'attuale contenuto delle tabelle | |arp |cache ARP (http://it.wikipedia.org/wiki/ | | |Address_Resolution_Protocol) | |-----------------+---------------------------------------------| | |mostra l'attuale contenuto delle tabelle | |ip neigh |cache ARP (http://it.wikipedia.org/wiki/ | | |Address_Resolution_Protocol) | |-----------------+---------------------------------------------| |plog |mostra il registro del demone ppp | |-----------------+---------------------------------------------| |ping yahoo.com |controlla la connessione Internet verso | | |"yahoo.com" |     |-----------------+---------------------------------------------| |whois yahoo.com |controlla chi ha registrato "yahoo.com" nel | | |database dei domini | |-----------------+---------------------------------------------| |traceroute |traccia la connessione Internet verso | |yahoo.com |"yahoo.com" | |-----------------+---------------------------------------------| |tracepath |traccia la connessione Internet verso | |yahoo.com |"yahoo.com" | |-----------------+---------------------------------------------| |mtr yahoo.com |traccia la connessione Internet verso | | |"yahoo.com" (ripetutamente) | |-----------------+---------------------------------------------| |dig |controlla i record DNS (http:// | |[@dns-server.com]|it.wikipedia.org/wiki/Domain_Name_System) di | |esempio.com [{a| |"esempio.com" con "dns-server.com" alla | |mx|any}] |ricerca di un record "a", "mx" o "any" | |-----------------+---------------------------------------------| |iptables -L -n |controlla il filtraggio dei pacchetti | |-----------------+---------------------------------------------| |netstat -a |trova tutte le porte aperte | |-----------------+---------------------------------------------| |netstat -l --inet|trova le porte in ascolto | |-----------------+---------------------------------------------| |netstat -ln --tcp|trova le porte (numeriche) TCP in ascolto | |-----------------+---------------------------------------------| |dlint esempio.com|controlla le informazioni DNS di zona per | | |"esempio.com" | +---------------------------------------------------------------+ Suggerimento Alcuni di questi strumenti di configurazione di basso livello     della rete sono contenuti in "/sbin/". Potrebbe essere necessario fornire il percorso completo dei comandi, come "/sbin/ifconfig" o aggiungere "/sbin" all'elenco in "$PATH" nel proprio file "~ /.bashrc". 5.8. Ottimizzazione della rete L'ottimizzazione generale della rete va oltre gli scopi che     questo documento si prefigge. Vengono trattati solo quegli argomenti che interessano le connessioni dei computer personali. Tabella 5.17. Elenco degli strumenti di ottimizzazione della rete +-----------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+-------------+----------------------+--------------| | |V:11, I:99 | |mostra | |iftop (http:// |(http:// |109 (http:// |informazioni | |packages.debian.org|qa.debian.org|packages.qa.debian.org|sull'uso della| |/sid/iftop) |/popcon.php? |/i/iftop.html) |banda su di | | |package= | |un'interfaccia| | |iftop) | |di rete | |-------------------+-------------+----------------------+--------------| | |V:4, I:49 | |strumento di | |iperf (http:// |(http:// |126 (http:// |misurazione | |packages.debian.org|qa.debian.org|packages.qa.debian.org|della banda | |/sid/iperf) |/popcon.php? |/i/iperf.html) |del protocollo| | |package= | |Internet | | |iperf) | | | |-------------------+-------------+----------------------+--------------| | |V:1, I:8 | |scrive un file| |apt-spy (http:// |(http:// |105 (http:// |"/etc/apt/ | |packages.debian.org|qa.debian.org|packages.qa.debian.org|sources.list" | |/sid/apt-spy) |/popcon.php? |/a/apt-spy.html) |in base a test| | |package= | |sulla banda | | |apt-spy) | | | |-------------------+-------------+----------------------+--------------| | |V:1, I:13 | |Monitoraggio | |ifstat (http:// |(http:// |41 (http:// |delle | |packages.debian.org|qa.debian.org|packages.qa.debian.org|STATistiche | |/sid/ifstat) |/popcon.php? |/i/ifstat.html) |sulle | | |package= | |InterFacce | | |ifstat) | | | |-------------------+-------------+----------------------+--------------| | |V:1, I:10 | |strumento | |bmon (http:// |(http:// |208 (http:// |portabile per | |packages.debian.org|qa.debian.org|packages.qa.debian.org|monitoraggio | |/sid/bmon) |/popcon.php? |/b/bmon.html) |della banda e | | |package=bmon)| |stime della |     | | | |velocità | |-------------------+-------------+----------------------+--------------| | |V:0, I:5 | |script che | | |(http:// | |misura | |ethstatus (http:// |qa.debian.org|84 (http:// |velocemente la| |packages.debian.org|/popcon.php? |packages.qa.debian.org|quantità di | |/sid/ethstatus) |package= |/e/ethstatus.html) |dati passanti | | |ethstatus) | |per un device | | | | |di rete | |-------------------+-------------+----------------------+--------------| | |V:0, I:5 | |tester | |bing (http:// |(http:// |96 (http:// |empirico | |packages.debian.org|qa.debian.org|packages.qa.debian.org|stocastico | |/sid/bing) |/popcon.php? |/b/bing.html) |della banda | | |package=bing)| | | |-------------------+-------------+----------------------+--------------| | |V:2, I:17 | |strumento | | |(http:// | |piccolo e | |bwm-ng (http:// |qa.debian.org|114 (http:// |semplice | |packages.debian.org|/popcon.php? |packages.qa.debian.org|basato sulla | |/sid/bwm-ng) |package= |/b/bwm-ng.html) |console per il| | |bwm-ng) | |monitoraggio | | | | |della banda | |-------------------+-------------+----------------------+--------------| | |V:0, I:2 | |strumento | | |(http:// | |basato su | |ethstats (http:// |qa.debian.org|52 (http:// |console per il| |packages.debian.org|/popcon.php? |packages.qa.debian.org|monitoraggio | |/sid/ethstats) |package= |/e/ethstats.html) |delle | | |ethstats) | |statistiche | | | | |Ethernet | |-------------------+-------------+----------------------+--------------| | |V:0, I:0 | | | |ipfm (http:// |(http:// |156 (http:// |strumento di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|analisi della | |/sid/ipfm) |/popcon.php? |/i/ipfm.html) |banda | | |package=ipfm)| | | +-----------------------------------------------------------------------+ 5.8.1. Trovare l'MTU ottimale Il valore di MTU (Maximum Transmission Unit, unità massima di trasmissione) (http://it.wikipedia.org/wiki/ Maximum_transmission_unit) può essere determinato     sperimentalmente con ping(8) usando l'opzione "-M do" che invia pacchetti ICMP con una dimensione dei dati a partire da 1500 (con un offset di 28 byte per l'intestazione IP+ICMP) e trova la dimensione maggiore che non comporta frammentazione IP.     Per esempio, provare a fare quanto segue. $ ping -c 1 -s $((1500-28)) -M do www.debian.org PING www.debian.org (194.109.137.218) 1472(1500) bytes of data.     From 192.168.11.2 icmp_seq=1 Frag needed and DF set (mtu = 1454) --- www.debian.org ping statistics --- 0 packets transmitted, 0 received, +1 errors     Provare 1454 invece di 1500     Come si può vedere ping(8) ha avuto successo con 1454. Questo processo si chiama "Path MTU (PMTU) discovery (http://     en.wikipedia.org/wiki/Path_MTU_discovery) (RFC1191 (http:// tools.ietf.org/html/rfc1191) ) e il comado tracepath(8) può automatizzarlo. Suggerimento L'esempio precedente di PMTU con un valore di 1454 è per il mio precedente fornitore FTTP che usava ATM (Asynchronous Transfer     Mode) (http://it.wikipedia.org/wiki/Asynchronous_Transfer_Mode) come rete backbone e forniva ai clienti un servizio PPPoE (http:/ /it.wikipedia.org/wiki/PPPoE) . Il valore effettivo di PMTU dipende dal proprio ambiente, ad esempio è 1500 per il mio nuovo fornitore FTTP. Tabella 5.18. Linee guida di base per il valore di MTU ottimale +---------------------------------------------------------------+ |ambiente di rete |MTU |motivo | |-------------------+-------------+-----------------------------| |collegamento |576 |standard | |dial-up (IP: PPP) | | | |-------------------+-------------+-----------------------------| |collegamento | | | |Ethernet (IP: DHCP |1500 |standard e predefinito | |o statico) | | | |-------------------+-------------+-----------------------------| |collegamento |1492 (= |2 byte per l'intestazione PPP| |Ethernet (IP: |1500-8) |e 6 byte per l'intestazione |     |PPPoE) | |PPPoE | |-------------------+-------------+-----------------------------| |collegamento | | | |Ethernet (backbone |1462 (= |ipotesi dell'autore: 18 per | |del fornitore |48*31-18-8) |l'intestazione Ethernet, 8 | |servizi: ATM, IP: | |per la coda SAR | |DHCP o statico) | | | |-------------------+-------------+-----------------------------| |collegamento | |vedere Configurazione | |Ethernet (backbone | |ottimale dell'MTU per | |del fornitore |1454 (= |connessioni ADSL con PPPoE | |servizi: ATM, IP: |48*31-8-18-8)|(http://www.mynetwatchman.com| |PPPoE) | |/kb/ADSL/pppoemtu.htm) " per | | | |il ragionamento | +---------------------------------------------------------------+     In aggiunta a queste linee guida di base si dovrebbe sapere quanto segue. * Qualsiasi uso di metodi di tunnelling (VPN (http:// it.wikipedia.org/wiki/Virtual_Private_Network) , ecc.) può ridurre ulteriormente l'MTU ottimale per il loro carico.     * Il valore di MTU non dovrebbe superare il valore di PMTU determinato sperimentalmente. * A patto di seguire le indicazioni precedenti un valore maggiore di MTU è meglio. 5.8.2. Impostazione dell'MTU     Quelli che seguono sono alcuni esempi di come impostare il valore di MTU dal suo valore predefinito 1500 a 1454. Per DHCP (vedere Sezione 5.5.4, «Interfaccia di rete servita da     DHCP»), si possono sostituire le righe pertinenti nei blocchi iface nel file "/etc/network/interfaces" con blocchi come il seguente.     iface eth0 inet dhcp pre-up /sbin/ifconfig $IFACE mtu 1454 Per IP statico (vedere Sezione 5.5.5, «Interfaccia di rete con IP     statico»), si possono sostituire le righe pertinenti nei blocchi iface nel file "/etc/network/interfaces" con blocchi come il seguente. iface eth0 inet static address 192.168.11.100 netmask 255.255.255.0     gateway 192.168.11.1 mtu 1454 dns-domain example.com dns-nameservers 192.168.11.1 Per la connessione PPPoE diretta (vedere Sezione 5.4.5,     «Connessione PPPoE con pppoeconf», si possono sostituire le riga "mtu" pertinente nel file "/etc/ppp/peers/dsl-provider" con la seguente.     mtu 1454 Il valore di MSS (Maximum Segment Size, dimensione massima di     segmento)MSS (http://it.wikipedia.org/wiki/Maximum_Segment_Size) è usato come misura alternativa della dimensione dei pacchetti. Le relazioni tra MSS e MTU sono le seguenti. * MSS = MTU - 40 per IPv4     * MSS = MTU - 60 per IPv6 Nota     L'ottimizzazione basata su iptables(8) (vedere Sezione 5.9, «Infrastruttura netfilter») può bloccare la dimensione dei pacchetti al valore MSS ed è utile per il router. Vedere "TCPMSS" in iptables(8). 5.8.3. Ottimizzazione di TCP per la WAN Il flusso TCP può essere massimizzato regolando i parametri di dimensione del buffer TCP come descritto in "TCP Tuning Guide (http://dsd.lbl.gov/TCP-tuning/) " e "TCP tuning (http://     en.wikipedia.org/wiki/TCP_tuning) " per le moderne WAN a larga banda e alta latenza. Per adesso, le attuali impostazioni predefinite di Debian funzionano bene persino per la mia LAN connessa con un servizio FTTP veloce a 1Gbps. 5.9. Infrastruttura netfilter Netfilter (http://it.wikipedia.org/wiki/Netfilter) fornisce un'infrastruttura per firewall con stati (http://en.wikipedia.org /wiki/Stateful_firewall) e traduzione di indirizzi di rete (NAT)     (http://it.wikipedia.org/wiki/Network_address_translation) con moduli del kernel Linux (http://it.wikipedia.org/wiki/Linux_ (kernel)) (vedere Sezione 3.5.12, «L'inizializzazione dei moduli del kernel»). Tabella 5.19. Elenco di strumenti per firewall +----------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+----------------+----------------------+----------------| | |V:238, I:992 | |strumenti di | |iptables (http:// |(http:// |1389 (http:// |amministrazione | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|per netfilter | |/sid/iptables) |popcon.php? |/i/iptables.html) |(http:// | | |package= | |it.wikipedia.org| | |iptables) | |/wiki/Netfilter)| |-------------------+----------------+----------------------+----------------| | | | |monitora | | | | |continuamente lo| | |V:0, I:5 (http:/| |stato di | |iptstate (http:// |/qa.debian.org/ |135 (http:// |netfilter (http:| |packages.debian.org|popcon.php? |packages.qa.debian.org|// | |/sid/iptstate) |package= |/i/iptstate.html) |it.wikipedia.org| | |iptstate) | |/wiki/Netfilter)| | | | |(in modo simile | | | | |a top(1)) | |-------------------+----------------+----------------------+----------------| |shorewall-init |I:1 (http:// | |inizializzazione| |(http:// |qa.debian.org/ |139 (http:// |di Shoreline | |packages.debian.org|popcon.php? |packages.qa.debian.org|Firewall (http:/| |/sid/ |package= |/s/ |/ | |shorewall-init) |shorewall-init) |shorewall-init.html) |it.wikipedia.org| | | | |/wiki/Shorewall)| |-------------------+----------------+----------------------+----------------| | | | |generatore di | | | | |file di | | | | |configurazione | | |V:9, I:23 (http:| |per Shoreline | |shorewall (http:// |//qa.debian.org/|1960 (http:// |Firewall (http:/| |packages.debian.org|popcon.php? |packages.qa.debian.org|/ | |/sid/shorewall) |package= |/s/shorewall.html) |it.wikipedia.org| | |shorewall) | |/wiki/Shorewall)| | | | |, netfilter | | | | |(http:// | | | | |it.wikipedia.org| | | | |/wiki/Netfilter)| |-------------------+----------------+----------------------+----------------| | | | |generatore di |     | | | |file di | | | | |configurazione | | | | |per Shoreline | |shorewall-lite |V:0, I:0 (http:/| |Firewall (http:/| |(http:// |/qa.debian.org/ |126 (http:// |/ | |packages.debian.org|popcon.php? |packages.qa.debian.org|it.wikipedia.org| |/sid/ |package= |/s/ |/wiki/Shorewall)| |shorewall-lite) |shorewall-lite) |shorewall-lite.html) |, netfilter | | | | |(http:// | | | | |it.wikipedia.org| | | | |/wiki/Netfilter)| | | | |(versione | | | | |leggera) | |-------------------+----------------+----------------------+----------------| | | | |generatore di | | | | |file di | | | | |configurazione | | | | |per Shoreline | | |V:1, I:3 (http:/| |Firewall (http:/| |shorewall6 (http://|/qa.debian.org/ |789 (http:// |/ | |packages.debian.org|popcon.php? |packages.qa.debian.org|it.wikipedia.org| |/sid/shorewall6) |package= |/s/shorewall6.html) |/wiki/Shorewall)| | |shorewall6) | |, netfilter | | | | |(http:// | | | | |it.wikipedia.org| | | | |/wiki/Netfilter)| | | | |(versione IPv6) | |-------------------+----------------+----------------------+----------------| | | | |generatore di | | | | |file di | | | | |configurazione | | | | |per Shoreline | |shorewall6-lite |V:0, I:0 (http:/| |Firewall (http:/| |(http:// |/qa.debian.org/ |124 (http:// |/ | |packages.debian.org|popcon.php? |packages.qa.debian.org|it.wikipedia.org| |/sid/ |package= |/s/ |/wiki/Shorewall)| |shorewall6-lite) |shorewall6-lite)|shorewall6-lite.html) |, netfilter | | | | |(http:// | | | | |it.wikipedia.org| | | | |/wiki/Netfilter)| | | | |(versione IPv6 | | | | |leggera) | +----------------------------------------------------------------------------+ Il principale programma in spazio utente di netfilter (http:// it.wikipedia.org/wiki/Netfilter) è iptables(8). Si può     configurare manualmente netfilter (http://it.wikipedia.org/wiki/ Netfilter) in modo interattivo dalla shell, salvare il suo stato con iptables-save(8) e ripristinarlo attraverso uno script di init con iptables-restore(8) al riavvio del sistema.     Script di aiuto per la configurazione come shorewall (http:// it.wikipedia.org/wiki/Shorewall) facilitano questo processo. Vedere la documentazione all'indirizzo http://www.netfilter.org/     documentation/ (http://www.netfilter.org/documentation/) (o in "/ usr/share/doc/iptables/html/"). * Linux Networking-concepts HOWTO (http://www.netfilter.org/ documentation/HOWTO/networking-concepts-HOWTO.html)     * Linux 2.4 Packet Filtering HOWTO (http://www.netfilter.org/ documentation/HOWTO/packet-filtering-HOWTO.html) * Linux 2.4 NAT HOWTO (http://www.netfilter.org/documentation/ HOWTO/NAT-HOWTO.html) Suggerimento     Anche se questi documenti sono stati scritti per Linux 2.4, sia il comando iptables(8) sia la funzione netfilter del kernel sono validi per l'attuale Linux 2.6. Capitolo 6. Applicazioni per la rete Dopo aver stabilito la connessione di rete (vedere Capitolo 5,     Impostazione della rete), si possono eseguire svariate applicazioni per la rete. 6.1. Browser web Ci sono molti pacchetti per browser web (http://it.wikipedia.org/     wiki/Browser_web) per accedere a contenuti remoti tramite HTTP (Hypertext Transfer Protocol) (http://it.wikipedia.org/wiki/ Hypertext_Transfer_Protocol) . Tabella 6.1. Elenco di browser web +-------------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |tipo |descrizione del browser web| |-------------------+-----------------+----------------------+--------+---------------------------| | |V:64, I:123 | | |Chromium (http:// | |chromium (http:// |(http:// |117222 (http:// | |it.wikipedia.org/wiki/ | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|per X |Chromium) , (browser | |/sid/chromium) |popcon.php? |/c/chromium.html) | |open-source da Google) | | |package=chromium)| | | | |-------------------+-----------------+----------------------+--------+---------------------------| | |V:262, I:528 | | |Mozilla Firefox (http:// | |iceweasel (http:// |(http:// |10292 (http:// | |it.wikipedia.org/wiki/ | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|" " |Mozilla_Firefox) senza | |/sid/iceweasel) |popcon.php? |/i/iceweasel.html) | |marchi (http:// | | |package= | | |it.wikipedia.org/wiki/ | | |iceweasel) | | |IceWeasel) | |-------------------+-----------------+----------------------+--------+---------------------------| | | | | |Mozilla (http:// | | | | | |it.wikipedia.org/wiki/ | |iceape-browser |V:3, I:9 (http://|97 (http:// | |Mozilla) senza marchi | |(http:// |qa.debian.org/ |packages.qa.debian.org| |(http://it.wikipedia.org/ | |packages.debian.org|popcon.php? |/i/ |" " |wiki/IceWeasel) rimosso a | |/sid/ |package= |iceape-browser.html) | |causa di problemi con la | |iceape-browser) |iceape-browser) | | |sicurezza: bug#505565 | | | | | |(http://bugs.debian.org/ | | | | | |505565) | |-------------------+-----------------+----------------------+--------+---------------------------| | | | | |Epiphany (http:// | | |V:47, I:205 | | |it.wikipedia.org/wiki/ | |epiphany-browser |(http:// |2038 (http:// | |Epiphany_(browser)) , per | |(http:// |qa.debian.org/ |packages.qa.debian.org| |GNOME (http:// | |packages.debian.org|popcon.php? |/e/ |" " |it.wikipedia.org/wiki/ | |/sid/ |package= |epiphany-browser.html)| |GNOME) , aderente alle HIG | |epiphany-browser) |epiphany-browser)| | |(http://it.wikipedia.org/ | | | | | |wiki/ | | | | | |Human_Interface_Guidelines)| |-------------------+-----------------+----------------------+--------+---------------------------| | |V:35, I:113 | | |Konqueror (http:// |     |konqueror (http:// |(http:// |3494 (http:// | |it.wikipedia.org/wiki/ | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|" " |Konqueror) , per KDE (http:| |/sid/konqueror) |popcon.php? |/k/konqueror.html) | |//it.wikipedia.org/wiki/ | | |package= | | |KDE) | | |konqueror) | | | | |-------------------+-----------------+----------------------+--------+---------------------------| | | | | |Dillo (http:// | |dillo (http:// |V:0, I:4 (http://|1231 (http:// | |it.wikipedia.org/wiki/ | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|" " |Dillo) , (browser leggero, | |/sid/dillo) |popcon.php? |/d/dillo.html) | |basato su FLTK (http:// | | |package=dillo) | | |en.wikipedia.org/wiki/FLTK)| | | | | |) | |-------------------+-----------------+----------------------+--------+---------------------------| | |V:197, I:879 | | | | |w3m (http:// |(http:// |2072 (http:// | |w3m (http:// | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|testuali|it.wikipedia.org/wiki/W3m) | |/sid/w3m) |popcon.php? |/w/w3m.html) | | | | |package=w3m) | | | | |-------------------+-----------------+----------------------+--------+---------------------------| |lynx (http:// |I:152 (http:// |245 (http:// | |Lynx (http:// | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|" " |it.wikipedia.org/wiki/Lynx_| |/sid/lynx) |popcon.php? |/l/lynx.html) | |(software)) | | |package=lynx) | | | | |-------------------+-----------------+----------------------+--------+---------------------------| |elinks (http:// |V:16, I:42 (http:|1600 (http:// | |ELinks (http:// | |packages.debian.org|//qa.debian.org/ |packages.qa.debian.org|" " |it.wikipedia.org/wiki/ | |/sid/elinks) |popcon.php? |/e/elinks.html) | |ELinks) | | |package=elinks) | | | | |-------------------+-----------------+----------------------+--------+---------------------------| |links (http:// |V:23, I:66 (http:|1294 (http:// | |Links (http:// | |packages.debian.org|//qa.debian.org/ |packages.qa.debian.org|" " |en.wikipedia.org/wiki/ | |/sid/links) |popcon.php? |/l/links.html) | |Links_(web_browser)) (solo | | |package=links) | | |testo) | |-------------------+-----------------+----------------------+--------+---------------------------| | |V:4, I:25 (http:/| | |Links (http:// | |links2 (http:// |/qa.debian.org/ |3102 (http:// | |en.wikipedia.org/wiki/ | |packages.debian.org|popcon.php? |packages.qa.debian.org|grafici |Links_(web_browser)) | |/sid/links2) |package=links2) |/l/links2.html) | |(grafica in console senza | | | | | |X) | +-------------------------------------------------------------------------------------------------+ 6.1.1. Configurazione del browser     Per alcuni browser si può accedere alle loro impostazioni usando le seguenti stringhe URL speciali. * "about:"     * "about:config" * "about:plugins" Debian offre, nell'area main dell'archivio, molti pacchetti liberi con plugin per browser che possono gestire non soltanto Java (piattaforma software) (http://it.wikipedia.org/wiki/ Piattaforma_Java) e Flash (http://it.wikipedia.org/wiki/ Adobe_Flash) , ma anche file MPEG (http://it.wikipedia.org/wiki/ MPEG-1) , MPEG2 (http://it.wikipedia.org/wiki/MPEG-2) , MPEG4 (http://it.wikipedia.org/wiki/MPEG-4) , DivX (http://     it.wikipedia.org/wiki/DivX) , Windows Media Video (.wmv) (http:// it.wikipedia.org/wiki/Windows_Media_Video) , QuickTime (.mov) (http://it.wikipedia.org/wiki/QuickTime) , MP3 (.mp3) (http:// it.wikipedia.org/wiki/MP3) , file Ogg/Vorbis (http:// it.wikipedia.org/wiki/Vorbis) , DVD, VCD, ecc. Debian offre anche, nell'aree contrib o non-free dell'archivio, programmi di aiuto per installare pacchetti con plugin non liberi per il browser. Tabella 6.2. Elenco di pacchetti con plugin per browser +------------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |area |descrizione | |---------------------+---------------------+--------------------------+-------+-----------------| |icedtea-6-plugin |I:30 (http:// |268 (http:// | |Plugin Java | |(http:// |qa.debian.org/ |packages.qa.debian.org/i/ |main |basato su OpenJDK| |packages.debian.org/ |popcon.php?package= |icedtea-6-plugin.html) | |e IcedTea | |sid/icedtea-6-plugin)|icedtea-6-plugin) | | | | |---------------------+---------------------+--------------------------+-------+-----------------| |mozilla-plugin-gnash |I:15 (http:// | | | | |(http:// |qa.debian.org/ |54 (http:// | |Plugin Flash | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/m/ |main |basato su Gnash | |sid/ |mozilla-plugin-gnash)|mozilla-plugin-gnash.html)| | | |mozilla-plugin-gnash)| | | | | |---------------------+---------------------+--------------------------+-------+-----------------| | | | | |Strumento di | |flashplugin-nonfree |V:24, I:225 (http:// | | |aiuto per plugin | |(http:// |qa.debian.org/ |177 (http:// | |Flash, per | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/f/ |contrib|installare Adobe | |sid/ |flashplugin-nonfree) |flashplugin-nonfree.html) | |Flash Player | |flashplugin-nonfree) | | | |(soli i386 e | | | | | |amd64) | |---------------------+---------------------+--------------------------+-------+-----------------| | | | | |Plugin | | | | | |multimediale |     |browser-plugin-vlc |V:12, I:19 (http:// | | |basato sul | |(http:// |qa.debian.org/ |202 (http:// | |riproduttore | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/b/ |main |multimediale VLC | |sid/ |browser-plugin-vlc) |browser-plugin-vlc.html) | |(http:// | |browser-plugin-vlc) | | | |it.wikipedia.org/| | | | | |wiki/ | | | | | |VLC_media_player)| |---------------------+---------------------+--------------------------+-------+-----------------| | | | | |Plugin | | | | | |multimediale | | | | | |basato sul | |totem-mozilla (http:/|V:73, I:167 (http:// |577 (http:// | |riproduttore | |/packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/t/ |main |multimediale | |sid/totem-mozilla) |popcon.php?package= |totem-mozilla.html) | |Totem di GNOME | | |totem-mozilla) | | |(http:// | | | | | |it.wikipedia.org/| | | | | |wiki/Totem_ | | | | | |(media_player)) | |---------------------+---------------------+--------------------------+-------+-----------------| | | | | |Plugin | |gecko-mediaplayer |V:6, I:10 (http:// | | |multimediale | |(http:// |qa.debian.org/ |581 (http:// | |basato su MPlayer| |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/g/ |main |(http:// | |sid/ |gecko-mediaplayer) |gecko-mediaplayer.html) | |it.wikipedia.org/| |gecko-mediaplayer) | | | |wiki/MPlayer) | | | | | |(GNOME) | +------------------------------------------------------------------------------------------------+ Suggerimento     Benché l'uso dei pacchetti Debian elencati sopra sia molto più facile, è sempre possibile abilitare i plugin manualmente installando i file "*.so" nelle directory dei plugin (ad esempio, "/usr/lib/iceweasel/plugins/") e riavviando il browser. Alcuni siti web rifiutano la connessione in base alla stringa user-agent del browser. Si può aggirare questa situazione mimando la stringa user-agent (http://www.mozilla.org/unix/     customizing.html#prefs) . Per esempio, può essere fatto aggiungendo nei file di configurazione, come "~/.gnome2/epiphany/ mozilla/epiphany/user.js" o "~/.mozilla/firefox/*.default/ user.js", la riga seguente.     user_pref{"general.useragent.override","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"}; In alternativa si può aggiungere e reimpostare questa variabile     digitando "about:config" al posto dell'URL e cliccando con il pulsante destro sul suo contenuto. Attenzione     La stringa user-agent falsificata può causare dei brutti effetti collaterali con Java (https://bugzilla.mozilla.org/show_bug.cgi? id=83376) . 6.2. Il sistema di posta Attenzione     Se si desidera impostare il server di posta per scambiare la posta direttamente con Internet, si dovrebbe leggere una documentazione più dettagliata di questo documentazione base. Nota     Gli esempi di configurazione che seguono sono validi solamente per la postazione di lavoro mobile su connessioni Internet di largo consumo. 6.2.1. Nozioni di base sulla posta elettronica Un messaggio email (http://it.wikipedia.org/wiki/E-mail) è     formato da tre componenti: la busta del messaggio, l'intestazione del messaggio e il corpo del messaggio. Le informazioni "To" e "From" nella busta del messaggio vengono usate dall'SMTP (http://it.wikipedia.org/wiki/     Simple_Mail_Transfer_Protocol) per consegnare l'email. (L'informazione "From" nella busta del messaggio è anche chiamata indirizzo di bounce (http://en.wikipedia.org/wiki/Bounce_address) , From_, ecc.) Le informazioni "To" e "From" nell'intestazione del messaggio vengono visualizzate dal programma di posta (http://     it.wikipedia.org/wiki/Client_di_posta) . (Benché nella maggior parte dei casi questi sono identici a quelli nella busta del messaggio, può non essere sempre così.) Il programma di posta (http://it.wikipedia.org/wiki/ Client_di_posta) deve interpretare l'intestazione e il corpo del     messaggio usando MIME (Multipurpose Internet Mail Extensions) (http://it.wikipedia.org/wiki/MIME) per gestire il tipo di dati e la codifica del contenuto. 6.2.2. Nozioni di base sui servizi di posta moderni Per limitare i problemi di spam (posta elettronica indesiderata e     non richiesta), molti fornitori di servizi Internet che forniscono connessioni Internet domestiche stanno implementando contromisure. * Il servizio smarthost per i loro clienti per inviare i messaggi usa la porta di inoltro dei messaggi (587) specificata in rfc4409 (http://tools.ietf.org/html/rfc4409) , con la password (servizio SMTP AUTH (http://en.wikipedia.org/ wiki/SMTP-AUTH) ) come specificata in rfc4954 (http:// tools.ietf.org/html/rfc4954) . * Le connessioni alla porta (25) SMTP (http://it.wikipedia.org/ wiki/Simple_Mail_Transfer_Protocol) dagli host interni della loro rete (tranne che per il server della posta in uscita del fornitore di servizi stesso) verso Internet sono bloccate. * Le connessioni alla porta (25) SMTP (http://it.wikipedia.org/ wiki/Simple_Mail_Transfer_Protocol) del server di posta in entrata del fornitore di servizi Internet da host di rete     esterni sospetti sono bloccate. (La connessione da host su intervalli di indirizzi IP dinamici usati dalle connessioni Internet dial-up e da altre connessioni di tipo domestico sono le prime ad essere bloccate). * Tecniche anti-spam (http://en.wikipedia.org/wiki/ Anti-spam_techniques) come DKIM (DomainKeys Identified Mail) (http://en.wikipedia.org/wiki/DomainKeys_Identified_Mail) e SPF (Sender_Policy_Framework) (http://it.wikipedia.org/wiki/ Sender_Policy_Framework) sono usate di frequente per il filtraggio delle email (http://en.wikipedia.org/wiki/ Email_filtering) . * Il servizio DomainKeys Identified Mail (http:// en.wikipedia.org/wiki/DomainKeys_Identified_Mail) può essere fornito per la propria posta inviata attraverso uno smarthost. Queste nuove limitazioni vanno tenute a mente quando si configura     il proprio server di posta o si cerca di risolvere problemi di consegna della posta. Alla luce di queste limitazioni e situazioni ostili in Internet, alcuni fornitori di servizi di posta via Internet indipendenti, come Yahoo.com e Gmail.com, offrono un servizio di posta sicuro a     cui ci si può connettere da qualsiasi parte di Internet usando TLS (Transport Layer Security) e il suo predecessore SSL (Secure Sockets Layer) (http://it.wikipedia.org/wiki/ Transport_Layer_Security) . * Il servizio smarthost sulla porta 465 con il deprecato SMTP via SSL (protocollo SMTPS (http://en.wikipedia.org/wiki/ SMTPS) ).     * Il servizio smarthost sulla porta 587 con STARTTLS (http:// en.wikipedia.org/wiki/STARTTLS) . * La posta in entrata è accessibile sulla porta TLS/POP3 (995) con POP3 (http://it.wikipedia.org/wiki/Post_Office_Protocol) . Attenzione Avere in esecuzione un server SMTP su una rete ad uso personale     per inviare posta direttamente ad host remoti in modo affidabile non è un'ipotesi realistica. È molto probabile che la posta venga rigettata. Si deve usare un qualche servizio smarthost offerto dal proprio fornitore di servizi Internet o da fornitori di servizi di posta via Internet indipendenti. Per semplicità, nel testo che segue si assume che lo smarthost sia alla posizione "smtp.hostname.dom", che richieda SMTP AUTH     (http://en.wikipedia.org/wiki/SMTP-AUTH) e che usi la porta di invio dei messaggi (587) con STARTTLS (http://en.wikipedia.org/ wiki/STARTTLS) . 6.2.3. Strategia di configurazione della posta per postazione PC La configurazione di posta più semplice possibile è che la posta sia inviata allo smarthost del fornitore di servizi Internet e ricevuta dal server POP3 del fornitore di servizi dal programma di posta (vedere Sezione 6.4, «Programma di posta (MUA, Mail User Agent)») stesso. Questo tipo di configurazione è popolare per i     programmi di posta completi basati su interfaccia utente grafica come icedove(1), evolution(1), ecc. Se si necessita di filtrare la posta in base alla sua tipologia, si usano le funzioni di filtro del programma di posta. In questo caso l'MTA (vedere Sezione 6.3, «Agente di trasporto della posta (MTA)») locale deve solo fare la consegna locale della posta. La configurazione di posta alternativa prevede che la posta sia inviata attraverso l'MTA locale allo smarthost del fornitore di servizi Internet e ricevuta dal server POP3 del fornitore di servizi dal programma di recupero della posta (vedere Sezione 6.5, «L'utilità per il recupero della posta da remoto e l'inoltro») che la mette nella casella di posta locale. Se si necessita di filtrare la posta in base alla sua tipologia, si usa un MDA con filtri (vedere Sezione 6.6, «Agente di consegna della posta (MDA, Mail Delivery Agent) con filtri») per smistare la posta in caselle diverse. Questo tipo di configurazione è     popolare con i semplici programmi di posta basati sulla console come mutt(1), gnus(1), ecc., anche se è possibile con qualsiasi programma di posta (vedere Sezione 6.4, «Programma di posta (MUA, Mail User Agent)»). In questo caso l'MTA (vedere Sezione 6.3, «Agente di trasporto della posta (MTA)») locale deve fare sia la consegna allo smarthost sia quella locale. Dato che le postazioni di lavoro mobile non hanno un FQDN valido, è necessario configurare l'MTA locale in modo che nasconda e falsifichi il vero nome locale del sistema di posta nei messaggi di posta in uscita per evitare errori nella consegna della posta (vedere Sezione 6.3.3, «La configurazione dell'indirizzo di posta»). Suggerimento     Si potrebbe voler configurare i MUA e MDA in modo che usino il formato Maildir (http://en.wikipedia.org/wiki/Maildir) per archiviare i messaggi di posta elettronica da qualche parte nella propria directory home. 6.3. Agente di trasporto della posta (MTA) Per le normali postazioni PC, la scelta più comune per il server     di posta (MTA) sono i pacchetti exim4-* o postfix. La scelta spetta all'utente. Tabella 6.3. Elenco di pacchetti base relativi ai server di trasporto della posta per postazioni PC +--------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+-------------------+------------------------+---------------| |exim4-daemon-light | | |agente di | |(http:// |V:613, I:713 (http:|1156 (http:// |trasporto della| |packages.debian.org|//qa.debian.org/ |packages.qa.debian.org/e|posta Exim4 | |/sid/ |popcon.php?package=|/ |(MTA | |exim4-daemon-light)|exim4-daemon-light)|exim4-daemon-light.html)|predefinito in | | | | |Debian) | |-------------------+-------------------+------------------------+---------------| |exim4-base (http://|V:625, I:729 (http:|1426 (http:// |documentazione | |packages.debian.org|//qa.debian.org/ |packages.qa.debian.org/e|(formato testo)| |/sid/exim4-base) |popcon.php?package=|/exim4-base.html) |e file comuni | | |exim4-base) | |per Exim4 | |-------------------+-------------------+------------------------+---------------| |exim4-doc-html |I:3 (http:// | | | |(http:// |qa.debian.org/ |3033 (http:// |documentazione | |packages.debian.org|popcon.php?package=|packages.qa.debian.org/e|per Exim4 (in | |/sid/ |exim4-doc-html) |/exim4-doc-html.html) |formato HTML) | |exim4-doc-html) | | | | |-------------------+-------------------+------------------------+---------------| |exim4-doc-info |I:1 (http:// | | | |(http:// |qa.debian.org/ |554 (http:// |documentazione | |packages.debian.org|popcon.php?package=|packages.qa.debian.org/e|per Exim4 (in |     |/sid/ |exim4-doc-info) |/exim4-doc-info.html) |formato info) | |exim4-doc-info) | | | | |-------------------+-------------------+------------------------+---------------| | |V:161, I:179 (http:| |agente di | |postfix (http:// |//qa.debian.org/ |3522 (http:// |trasferimento | |packages.debian.org|popcon.php?package=|packages.qa.debian.org/p|della posta | |/sid/postfix) |postfix) |/postfix.html) |Postfix (MTA | | | | |alternativo) | |-------------------+-------------------+------------------------+---------------| |postfix-doc (http:/|I:14 (http:// |3536 (http:// |documentazione | |/ |qa.debian.org/ |packages.qa.debian.org/p|per Postfix | |packages.debian.org|popcon.php?package=|/postfix-doc.html) |(formati HTML e| |/sid/postfix-doc) |postfix-doc) | |testo) | |-------------------+-------------------+------------------------+---------------| | | | |implementazione| |sasl2-bin (http:// |V:12, I:39 (http://|440 (http:// |dell'API SASL | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/s|Cyrus (di | |/sid/sasl2-bin) |popcon.php?package=|/sasl2-bin.html) |supporto a | | |sasl2-bin) | |Postfix per | | | | |SMTP AUTH) | |-------------------+-------------------+------------------------+---------------| |cyrus-sasl2-doc |I:6 (http:// | | | |(http:// |qa.debian.org/ |248 (http:// |SASL Cyrus - | |packages.debian.org|popcon.php?package=|packages.qa.debian.org/c|documentazione | |/sid/ |cyrus-sasl2-doc) |/cyrus-sasl2-doc.html) | | |cyrus-sasl2-doc) | | | | +--------------------------------------------------------------------------------+ Anche dal conteggio dei voti popcon exim4-* sembra svariate volte più popolare di postfix, ciò non significa che postfix non sia popolare tra gli sviluppatori Debian. Il sistema server Debian     usa sia exim4 sia postfix. Anche l'analisi delle intestazioni della posta (http://wiki.debian.org/DefaultMTA) sui messaggi delle mailing list, da parte di sviluppatori Debian di spicco, indica che i due MTA sono ugualmente popolari. I pacchetti exim4-* sono conosciuti per il loro consumo di memoria molto basso e per essere molto flessibili nella     configurazione. Il pacchetto postfix è conosciuto per essere compatto, veloce, facile e sicuro. Entrambi sono forniti con un'ampia documentazione, sono di alta qualità ed hanno una buona licenza. Nell'archivio Debian ci sono molte scelte per i pacchetti con     agenti di trasporto della posta (MTA) con capacità e scopi diversi. Tabella 6.4. Elenco delle scelte per l'agente di trasporto della posta (MTA) tra i pacchetti dell'archivio Debian +-------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |capacità e | | | | |scopo | |-------------------+-------------------+------------------------+--------------| |exim4-daemon-light |V:613, I:713 (http:|1156 (http:// | | |(http:// |//qa.debian.org/ |packages.qa.debian.org/e| | |packages.debian.org|popcon.php?package=|/ |completa | |/sid/ |exim4-daemon-light)|exim4-daemon-light.html)| | |exim4-daemon-light)| | | | |-------------------+-------------------+------------------------+--------------| |postfix (http:// |V:161, I:179 (http:|3522 (http:// | | |packages.debian.org|//qa.debian.org/ |packages.qa.debian.org/p|completa | |/sid/postfix) |popcon.php?package=|/postfix.html) |(sicurezza) | | |postfix) | | | |-------------------+-------------------+------------------------+--------------| |exim4-daemon-heavy |V:11, I:12 (http://|1283 (http:// | | |(http:// |qa.debian.org/ |packages.qa.debian.org/e|completa | |packages.debian.org|popcon.php?package=|/ |(flessibilità)| |/sid/ |exim4-daemon-heavy)|exim4-daemon-heavy.html)| | |exim4-daemon-heavy)| | | | |-------------------+-------------------+------------------------+--------------| |sendmail-bin (http:|V:14, I:15 (http://|1832 (http:// |completa (solo| |// |qa.debian.org/ |packages.qa.debian.org/s|se si ha già | |packages.debian.org|popcon.php?package=|/sendmail-bin.html) |familiarità | |/sid/sendmail-bin) |sendmail-bin) | |con esso) | |-------------------+-------------------+------------------------+--------------| |nullmailer (http://|V:6, I:8 (http:// |428 (http:// |ridotta, | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/n|niente posta | |/sid/nullmailer) |popcon.php?package=|/nullmailer.html) |locale | | |nullmailer) | | | |-------------------+-------------------+------------------------+--------------| |ssmtp (http:// |V:10, I:13 (http://|1 (http:// |ridotta, | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/s|niente posta | |/sid/ssmtp) |popcon.php?package=|/ssmtp.html) |locale | | |ssmtp) | | | |-------------------+-------------------+------------------------+--------------|     |courier-mta (http:/|V:0, I:0 (http:// |1793 (http:// |molto completa| |/ |qa.debian.org/ |packages.qa.debian.org/c|(interfaccia | |packages.debian.org|popcon.php?package=|/courier-mta.html) |web, ecc.) | |/sid/courier-mta) |courier-mta) | | | |-------------------+-------------------+------------------------+--------------| |xmail (http:// |V:0, I:0 (http:// |688 (http:// | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/x|leggera | |/sid/xmail) |popcon.php?package=|/xmail.html) | | | |xmail) | | | |-------------------+-------------------+------------------------+--------------| |masqmail (http:// |V:0, I:0 (http:// |337 (http:// | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/m|leggera | |/sid/masqmail) |popcon.php?package=|/masqmail.html) | | | |masqmail) | | | |-------------------+-------------------+------------------------+--------------| |esmtp (http:// |V:0, I:1 (http:// |144 (http:// | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/e|leggera | |/sid/esmtp) |popcon.php?package=|/esmtp.html) | | | |esmtp) | | | |-------------------+-------------------+------------------------+--------------| | | | |leggera | |esmtp-run (http:// |V:0, I:0 (http:// |57 (http:// |(estensioni | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/e|per la | |/sid/esmtp-run) |popcon.php?package=|/esmtp-run.html) |compatibilità | | |esmtp-run) | |con sendmail | | | | |per esmtp) | |-------------------+-------------------+------------------------+--------------| |msmtp (http:// |V:3, I:8 (http:// |318 (http:// | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/m|leggera | |/sid/msmtp) |popcon.php?package=|/msmtp.html) | | | |msmtp) | | | |-------------------+-------------------+------------------------+--------------| | | | |leggera | |msmtp-mta (http:// |V:1, I:1 (http:// |86 (http:// |(estensioni | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/m|per la | |/sid/msmtp-mta) |popcon.php?package=|/msmtp-mta.html) |compatibilità | | |msmtp-mta) | |con sendmail | | | | |per msmtp) | +-------------------------------------------------------------------------------+ 6.3.1. La configurazione di exim4     Per la posta di Internet attraverso uno smarthost, riconfigurare i pacchetti exim4-* nel modo seguente.     $ sudo /etc/init.d/exim4 stop $ sudo dpkg-reconfigure exim4-config Selezionare "posta inviata tramite «uno smarthost», ricevuta via     SMTP o fetchmail" per "Tipo di configurazione del sistema di posta".     Impostare "Mail name del sistema:" al suo valore predefinito come FQDN (vedere Sezione 5.1.1, «Risoluzione dei nomi di host»).     Impostare "indirizzi IP sui quali attendere connessioni SMTP in ingresso:" al suo valore predefinito "127.0.0.1 ; ::1".     Svuotare il contenuto di "Altre destinazioni per conto delle quali accettare posta:".     Svuotare il contenuto di "Sistemi per i quali fare il "relay":".     Impostare l'"Indirizzo IP o nome host dello smarthost per la posta in uscita:" a "smtp.hostname.dom:587". Selezionare "" per "Omettere il mail name locale dai messaggi     in uscita?". (Usare invece "/etc/email-addresses" come in Sezione 6.3.3, «La configurazione dell'indirizzo di posta».)     Rispondere a "Mantenere al minimo il numero di richieste DNS (Dial-on-Demand)?" in uno dei modi seguenti. * "No", se il sistema è connesso ad Internet durante l'avvio.     * "Sì", se il sistema non è connesso ad Internet durante l'avvio.     Impostare "Modalità di consegna per la posta locale:" a "Formato mbox in /var/mail/".     Selezionare "" per "Dividere la configurazione in molti piccoli file?:".     Creare voci per la password dello smarthost modificando il file " /etc/exim4/passwd.client". $ sudo vim /etc/exim4/passwd.client     ... $ cat /etc/exim4/passwd.client ^smtp.*\.hostname\.dom:nomeutente@hostname.dom:password     Avviare exim4 con il comando seguente.     $ sudo /etc/init.d/exim4 start     Il nome host in "/etc/exim4/passwd.client" non dovrebbe essere l'alias. Si può controllare il vero nome host nel modo seguente. $ host smtp.hostname.dom     smtp.hostname.dom is an alias for smtp99.hostname.dom. smtp99.hostname.dom has address 123.234.123.89 Per aggirare il problema degli alias, io uso espressioni regolari     nel file "/etc/exim4/passwd.client" SMTP AUTH probabilmente funziona anche se il fornitore di servizi Internte sposta l'host a cui punta l'alias.     Si può aggiornare manualmente la configurazione di exim4 facendo quanto segue: * Aggiornare i file di configurazione di exim4 in "/etc/exim4/ ". o Creare "/etc/exim4/exim4.conf.localmacros" per impostare le MACRO e modificare "/etc/exim4/exim4.conf.template".     (Configurazione non suddivisa.) o Creare nuovi file o modificare quelli esistenti nelle sottodirectory "/etc/exim4/exim4.conf.d". (Configurazione suddivisa.) * Eseguire "invoke-rc.d exim4 reload".     Leggere la guida ufficiale in "/usr/share/doc/exim4-base/ README.Debian.gz" e update-exim4.conf(8). Attenzione     Se si è scelta la ripsosta "No" (risposta predefinita) per la domanda di debconf "Mantenere al minino il numero di richieste DNS (Dial-on-Demand)?" ed il sistema non è connesso ad Internet, l'avvio di exim4 può richiedere un tempo molto lungo. Avvertimento     Usare password in testo semplice senza cifratura non è sicuro, nemmeno se il proprio ISP lo permette. Suggerimento Benché sia raccomandato l'uso di SMTP (http://it.wikipedia.org/ wiki/Simple_Mail_Transfer_Protocol) con STARTTLS (http://     en.wikipedia.org/wiki/STARTTLS) sulla porta 587, alcuni ISP usano ancora il deprecato SMTPS (http://en.wikipedia.org/wiki/SMTPS) (SSL sulla porta 465). Exim4 dopo la versione 4.77 supporta questo protocollo SMTPS deprecato sia per il client sia per il server. Suggerimento     Se si sta cercando un MTA leggero che rispetti "/etc/aliases" per il proprio PC portatile, si dovrebbe considerare la configurazione di exim4(8) con "QUEUERUNNER='queueonly'", "QUEUERUNNER='nodaemon' ecc. in "/etc/default/exim4". 6.3.2. La configurazione di Postfix con SASL Per la posta Internet via smarthost, si dovrebbe come prima cosa     leggere la documentazione di Postfix (http://www.postfix.org/ documentation.html) e le pagine man principali. Tabella 6.5. Elenco delle pagine di manuale di Postfix importanti +---------------------------------------------------------------+ |comando |funzione | |------------+--------------------------------------------------| |postfix(1) |programma di controllo di Postfix | |------------+--------------------------------------------------|     |postconf(1) |utilità di configurazione per Postfix | |------------+--------------------------------------------------| |postconf(5) |parametri di configurazione di Postfix | |------------+--------------------------------------------------| |postmap(1) |gestione delle tabelle di consultazione di Postfix| |------------+--------------------------------------------------| |postalias(1)|gestione del database degli alias di Postfix | +---------------------------------------------------------------+     Si possono (ri)configurare i pacchetti postfix e sasl2-bin nel modo seguente.     $ sudo /etc/init.d/postfix stop $ sudo dpkg-reconfigure postfix     Scegliere "Internet con smarthost".     Impostare "relay host SMTP (vuoto per nessuno):" a " [smtp.hostname.dom]:587" e configurarlo nel modo seguente. $ sudo postconf -e 'smtp_sender_dependent_authentication = yes' $ sudo postconf -e 'smtp_sasl_auth_enable = yes'     $ sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd' $ sudo postconf -e 'smtp_sasl_type = cyrus' $ sudo vim /etc/postfix/sasl_passwd     Creare le voci con le password per lo smarthost. $ cat /etc/postfix/sasl_passwd     [smtp.hostname.dom]:587 nomeutente:password $ sudo postmap hash:/etc/postfix/sasl_passwd     Avviare postfix con il comando seguente.     $ sudo /etc/init.d/postfix start In questo caso l'uso di "[" e "]" nel dialogo di dpkg-reconfigure e in "/etc/postfix/sasl_passwd" assocura che non venga     controllato il record MX, ma usato direttamente l'esatto nome host specificato. Vedere "Abilitare l'autenticazione SASL nel client SMTP di Postfix" in "/usr/share/doc/postfix/html/ SASL_README.html". 6.3.3. La configurazione dell'indirizzo di posta Ci sono diversi file di configurazione dell'indirizzo di posta     per gli strumenti di trasporto della posta, di consegna e per i programma di posta (http://www.debian.org/doc/debian-policy/ ch-customized-programs#s-mail-transport-agents) . Tabella 6.6. Elenco dei file di configurazione correlati all'indirizzo di posta +---------------------------------------------------------------+ |file |funzione |applicazione | |---------------+-------------------+---------------------------| | |nome host |specifico di Debian, | |/etc/mailname |predefinito per la |mailname(5) | | |posta (in uscita) | | |---------------+-------------------+---------------------------| |/etc/ |sostituzione del |specifico di exim(8), |     |email-addresses|home host per la |exim4-config_files(5) | | |posta in uscita | | |---------------+-------------------+---------------------------| |/etc/postfix/ |sostituzione del |specifico di postfix(1), | |generic |home host per la |attivato dopo l'esecuzione | | |posta in uscita |del comando postmap(1) | |---------------+-------------------+---------------------------| | |alias dei nomi |generale, attivato dopo | |/etc/aliases |degli account per |l'esecuzione del comando | | |la posta in entrata|newaliases(1) | +---------------------------------------------------------------+ Il nomeposta nel file "/etc/mailname" è solitamente un nome di dominio pienamente qualificato (FQDN) che è risolto ad uno degli     indirizzi IP dell'host. Per le postazioni mobili che non hanno un nome host con un indirizzo IP risolvibile, impostare questo nomemail al valore di "hostname -f". (Questa è una scelta sicura e funziona sia per exim4-* sia per postfix.) Suggerimento Il contenuto di "/etc/mailname" è usato da molti programmi non MTA per determinare il loro comportamento predefinito. Per mutt,     impostare le variabili "hostname" e from" nel file ~/muttrc per sovrascrivere il valore di mailname. Per i programmi nel pacchetto devscripts, come bts(1) e dch(1), esportare le variabili d'ambiente "$DEBFULLNAME" e "$DEBEMAIL" per sovrascriverlo. Suggerimento Il pacchetto popularity-contest normalmente invia posta dall'account di root con FQDN. È necessario impostare MAILFROM in     /etc/popularity-contest.conf come descritto nel file /usr/share/ popularity-contest/default.conf. In caso contrario la posta verrà rigettata dal server SMTP dello smarthost. Sebbene sia una scocciatura, questo approccio è più sicuro della riscrittura dell'indirizzo sorgente di tutta la posta di root da parte dell'MTA e dovrebbe essere usato per altri demoni e script cron. Qunado si imposta mailname al valore di "hostname -f", la     modifica dell'indirizzo di posta d'origine con il MTA può essere fatta nel modo seguente. * Usando il file "/etc/email-addresses" per exim4(8), come spiegato in exim4-config_files(5).     * Usando il file "/etc/postfix/generic" per postfix(8), come spiegato in generic(5).     Per postfix sono necessarie, in aggiunta, le azioni seguenti. # postmap hash:/etc/postfix/generic     # postconf -e 'smtp_generic_maps = hash:/etc/postfix/generic' # postfix reload     Si può testare la configurazione dell'indirizzo di posta nel modo seguente. * per exim(8) con le opzioni -brw, -bf, -bF, -bV, …     * per postmap(1) con l'opzione -q. Suggerimento     Exim viene fornito con svariati programmi di utilità, come exiqgrep(8) e exipick(8). Per conoscere i comandi disponibili vedere "dpkg -L exim4-base|grep man8/". 6.3.4. Operazioni di base degli MTA Ci sono svariate operazioni di base degli MTA. Alcune possono     essere fatte usando l'interfaccia di compatibilità con sendmail (1). Tabella 6.7. Elenco di operazioni base degli MTA +---------------------------------------------------------------+ |comando |comando postfix |descrizione | |exim | | | |----------+-------------------+--------------------------------| | | |legge la posta dallo standard | |sendmail |sendmail |input e gestisce la consegna | | | |(-bm) | |----------+-------------------+--------------------------------| | | |elenca la coda della posta con | |mailq |mailq |stato e ID dei messaggi in coda | | | |(-bp) | |----------+-------------------+--------------------------------| |newaliases|newaliases |inizializza il database degli | | | |alias (-I) | |----------+-------------------+--------------------------------|     |exim4 -q |postqueue -f |invia tutta la posta in attesa | | | |(-q) | |----------+-------------------+--------------------------------| | |postsuper -r ALL | | |exim4 -qf |deferred; postqueue|invia tutta la posta | | |-f | | |----------+-------------------+--------------------------------| |exim4 -qff|postsuper -r ALL; |invia anche la posta congelata | | |postqueue -f | | |----------+-------------------+--------------------------------| |exim4 -Mg |postsuper -h |congela un messaggio in base al | |id_in_coda|id_in_coda |suo ID nella coda | |----------+-------------------+--------------------------------| |exim4 -Mrm|postsuper -d |rimuove un messaggio in base al | |id_in_coda|id_in_coda |suo ID nella coda | |----------+-------------------+--------------------------------| |N/D |postsuper -d ALL |rimuove tutti i messaggi | +---------------------------------------------------------------+ Suggerimento     Può essere una buona idea far inviare tutta la posta da uno script in "/etc/ppp/ip-up.d/*". 6.4. Programma di posta (MUA, Mail User Agent) Se ci si iscrive ad una mailing list relativa a Debian, può     essere una buona idea usare programmi di posta come mutt e gnus che sono lo standard de facto per i partecipanti e che si comportano come previsto. Tabella 6.8. Elenco di programmi di posta (MUA) +-----------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |tipo | |-------------------+-------------+----------------------+--------------------| | |V:71, I:386 | | | |evolution (http:// |(http:// |5568 (http:// |programma per X con | |packages.debian.org|qa.debian.org|packages.qa.debian.org|interfaccia utente | |/sid/evolution) |/popcon.php? |/e/evolution.html) |grafica (GNOME3, | | |package= | |suite groupware) | | |evolution) | | | |-------------------+-------------+----------------------+--------------------| | | | |programma per X con | | | | |interfaccia utente | | |V:65, I:127 | |grafica (GNOME2, | | |(http:// | |Mozilla Thunderbird | |icedove (http:// |qa.debian.org|46160 (http:// |(http:// | |packages.debian.org|/popcon.php? |packages.qa.debian.org|it.wikipedia.org/ | |/sid/icedove) |package= |/i/icedove.html) |wiki/ | | |icedove) | |Mozilla_Thunderbird)| | | | |senza marchi (http:/|     | | | |/it.wikipedia.org/ | | | | |wiki/IceWeasel) ) | |-------------------+-------------+----------------------+--------------------| | |V:19, I:91 | | | |kmail (http:// |(http:// |5296 (http:// |programma per X con | |packages.debian.org|qa.debian.org|packages.qa.debian.org|interfaccia utente | |/sid/kmail) |/popcon.php? |/k/kmail.html) |grafica (KDE) | | |package= | | | | |kmail) | | | |-------------------+-------------+----------------------+--------------------| | |V:206, I:877 | |programma basato su | |mutt (http:// |(http:// |5433 (http:// |terminale a | |packages.debian.org|qa.debian.org|packages.qa.debian.org|caratteri | |/sid/mutt) |/popcon.php? |/m/mutt.html) |probabilmente usato | | |package=mutt)| |con vim | |-------------------+-------------+----------------------+--------------------| | |V:0, I:1 | |programma basato su | |gnus (http:// |(http:// |6453 (http:// |terminale a | |packages.debian.org|qa.debian.org|packages.qa.debian.org|caratteri in (x) | |/sid/gnus) |/popcon.php? |/g/gnus.html) |emacs | | |package=gnus)| | | +-----------------------------------------------------------------------------+ 6.4.1. Programma di posta base — Mutt     Per usare mutt come programma di posta (MUA) in combinazione con vim, persoonalizzare "~/.muttrc" nel modo seguente. # # File di configurazione utente per sovrascrivere le impostazioni in /etc/Muttrc # # falsifica gli indirizzi di posta sorgenti set use_from set hostname=esempio.dom set from="Nome Cognome " set signature="~/.signature" # vim: "gq" per riformattare le citazioni set editor="vim -c 'set tw=72 et ft=mail'" # "mutt" apre la posta in entrata, mentre "mutt -y" elenca le caselle di posta set mbox_type=Maildir # usa il formato Maildir di qmail per creare mbox set mbox=~/Mail # mette tutte le caselle di posta in $HOME/Mail/ set spoolfile=+Inbox # posta consegnata in $HOME/Mail/Inbox set record=+Outbox # salva la posta fcc in $HOME/Mail/Outbox     set postponed=+Postponed # mette la posta posposta in $HOME/Mail/postponed set move=no # non spostare gli elementi nella posta in entrata in mbox set quit=ask-yes # non uscire con il semplice uso di "q" set delete=yes # all'uscita cancella sempre senza chiedere set fcc_clear # salva fcc come non cifrate # Caselle di posta in Maildir (aggiornamento automatico) mailboxes `cd ~/Mail; /bin/ls -1|sed -e 's/^/+/' | tr "\n" " "` unmailboxes Maillog *.ev-summary ## Predefinito #set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s" ## Indice con thread con mittenti (collassato) set index_format="%4C %Z %{%b %d} %-15.15n %?M?(#%03M)&(%4l)? %s" ## Predefinito #set folder_format="%2C %t %N %F %2l %-8.8u %-8.8g %8s %d %f" ## solo i nomi delle cartelle set folder_format="%2C %t %N %f" Per visualizzare la posta HTML e gli allegati MS Word all'interno     del messaggio, aggiungere a "/etc/mailcap" o a "~/.mailcap" le righe seguenti.     text/html; lynx -force_html %s; needsterminal; application/msword; /usr/bin/antiword '%s'; copiousoutput; description="Microsoft Word Text"; nametemplate=%s.doc Suggerimento Mutt può essere usato come client IMAP (http://it.wikipedia.org/     wiki/Internet_Message_Access_Protocol) e convertitore di formato per le caselle di posta. Si possono marcare messaggi con "t", "T", ecc. Questi messaggi marcati possono essere copiati con ";C" tra caselle di posta diverse e cancellati in un'unica volta con ";d". 6.5. L'utilità per il recupero della posta da remoto e l'inoltro Anche se fetchmail(1) è stato lo standard de facto in GNU/Linux per il recupero della posta da remoto, l'autore preferisce getmail(1). Se si desidera rifiutare la posta prima di scaricarla     per salvare banda, potrebbero essere utili mailfilter o mpop. Qualsiasi strumento di recupero della posta si usi, è una buona idea configurare il sistema in modo che la posta recuperata venga consegnata ad un MDA, come maildrop, attraverso una pipe. Tabella 6.9. Elenco di utilità per il recupero della posta da remoto e l'inoltro +--------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione| |-------------------+-------------+----------------------+-----------| | |V:13, I:35 | |strumento | |fetchmail (http:// |(http:// |2568 (http:// |di recupero| |packages.debian.org|qa.debian.org|packages.qa.debian.org|della posta| |/sid/fetchmail) |/popcon.php? |/f/fetchmail.html) |(POP3, | | |package= | |APOP, IMAP)| | |fetchmail) | |(vecchio) | |-------------------+-------------+----------------------+-----------| | | | |strumento | | |V:2, I:12 | |di recupero| | |(http:// | |della posta| |getmail4 (http:// |qa.debian.org|620 (http:// |(POP3, | |packages.debian.org|/popcon.php? |packages.qa.debian.org|IMAP4 e | |/sid/getmail4) |package= |/g/getmail4.html) |SDPS) | | |getmail4) | |(semplice, | | | | |sicuro e | | | | |affidabile)|     |-------------------+-------------+----------------------+-----------| | | | |strumento | | |V:0, I:0 | |di recupero| | |(http:// | |della posta| |mailfilter (http://|qa.debian.org|270 (http:// |(POP3) con | |packages.debian.org|/popcon.php? |packages.qa.debian.org|capacità di| |/sid/mailfilter) |package= |/m/mailfilter.html) |filtraggio | | |mailfilter) | |con | | | | |espressioni| | | | |regolari | |-------------------+-------------+----------------------+-----------| | | | |strumento | | | | |di recupero| | |V:0, I:0 | |della posta| |mpop (http:// |(http:// |275 (http:// |(POP3) e | |packages.debian.org|qa.debian.org|packages.qa.debian.org|MDA con | |/sid/mpop) |/popcon.php? |/m/mpop.html) |capacità di| | |package=mpop)| |filtraggio | | | | |con | | | | |espressioni| | | | |regolari | +--------------------------------------------------------------------+ 6.5.1. Configurazione di getmail La configurazione di getmail(1) è descritta nella documentazione     di getmail (http://pyropus.ca/software/getmail/ documentation.html) . Quelle seguenti sono le mie impostazioni per accedere ad account POP3 multipli come utente.     Creare il file "/usr/local/bin/getmails" nel modo seguente. #!/bin/sh set -e if [ -f $HOME/.getmail/running ]; then echo "getmail is already running ... (if not, remove $HOME/.getmail/running)" >&2 pgrep -l "getmai[l]" exit 1 else echo "getmail has not been running ... " >&2 fi if [ -f $HOME/.getmail/stop ]; then echo "do not run getmail ... (if not, remove $HOME/.getmail/stop)" >&2     exit fi if [ "x$1" = "x-l" ]; then exit fi rcfiles="/usr/bin/getmail" for file in $HOME/.getmail/config/* ; do rcfiles="$rcfiles --rcfile $file" done date -u > $HOME/.getmail/running eval "$rcfiles $@" rm $HOME/.getmail/running     Configurarlo nel modo seguente. $ sudo chmod 755 /usr/local/bin/getmails     $ mkdir -m 0700 $HOME/.getmail $ mkdir -m 0700 $HOME/.getmail/config $ mkdir -m 0700 $HOME/.getmail/log     Creare i file "$HOME/.getmail/config/nome_pop3", uno per ciascun account POP3, nel modo seguente. [retriever] type = SimplePOP3SSLRetriever server = pop.eesempio.com username = nome_pop3@esempio.com password = segreta [destination]     type = MDA_external path = /usr/bin/maildrop unixfrom = True [options] verbose = 0 delete = True delivered_to = False message_log = ~/.getmail/log/nome_pop3.log     Configurarlo nel modo seguente.     $ chmod 0600 $HOME/.getmail/config/* Pianificare l'esecuzione di "/usr/local/bin/getmails" ogni 15     minuti usando cron(8), eseguendo "sudo crontab -e -u " e aggiungendo la riga seguente alle voci di cron dell'utente.     5,20,35,50 * * * * /usr/local/bin/getmails --quiet Suggerimento Eventuali problemi nell'accesso POP3 potrebbero non derivare da getmail. Alcuni servizi POP3 gratuiti popolari possono violare il protocollo POP3 e i loro filtri anti-SPAM possono non essere perfetti. Per esempio, possono cancellare i messaggi subito dopo     aver ricevuto il comando RETR, prima di ricevere il comando DELE, e possono mettere messaggi in quarantena nella casella dello Spam. Si dovrebbero minimizzare i danni configurandoli in modo da archiviare i messaggi a cui si ha avuto accesso, senza cancellarli. Vedere anche Alcuni messaggi di posta non sono stati scaricati (http://mail.google.com/support/bin/answer.py?answer= 13291&topic=1555) . 6.5.2. configurazione di fetchmail La configurazione di fetchmail(1) è determinata da "/etc/default/     fetchmail", "/etc/fetchmailrc" e "$HOME/.fetchmailrc". Vedere il suo esempio di configurazione in "/usr/share/doc/fetchmail/ examples/fetchmailrc.example". 6.6. Agente di consegna della posta (MDA, Mail Delivery Agent) con filtri La maggior parte dei programmi MTA, come postfix e exim4,     funziona anche da MDA (Mail Delivery Agent, agente di consegna della posta). Ci sono MDA specializzati con capacità di filtraggio. Anche se procmail(1) è stato lo standard de facto in GNU/Linux per ciò riguarda gli MDA con filtri, l'autore preferisce maildrop     (1). Qualsiasi strumento di filtraggio si usi, è una buona idea configurare il sistema per inviare la posta filtrata ad una Maildir in stile qmail (http://en.wikipedia.org/wiki/Maildir) . Tabella 6.10. Elenco di MDA con filtri +--------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione| |-------------------+-------------+----------------------+-----------| | |V:185, I:877 | | | |procmail (http:// |(http:// |313 (http:// |MDA con | |packages.debian.org|qa.debian.org|packages.qa.debian.org|filtri | |/sid/procmail) |/popcon.php? |/p/procmail.html) |(vecchio) | | |package= | | | | |procmail) | | | |-------------------+-------------+----------------------+-----------| | |V:2, I:49 | | |     |mailagent (http:// |(http:// |1201 (http:// | | |packages.debian.org|qa.debian.org|packages.qa.debian.org|MDA con | |/sid/mailagent) |/popcon.php? |/m/mailagent.html) |filtri Perl| | |package= | | | | |mailagent) | | | |-------------------+-------------+----------------------+-----------| | |V:1, I:5 | |MDA con | |maildrop (http:// |(http:// |1220 (http:// |linguaggio | |packages.debian.org|qa.debian.org|packages.qa.debian.org|strutturato| |/sid/maildrop) |/popcon.php? |/m/maildrop.html) |per i | | |package= | |filtri | | |maildrop) | | | +--------------------------------------------------------------------+ 6.6.1. configurazione di maildrop La configurazione di maildrop(1) è descritta nella documentazione     di maildropfilter (http://www.courier-mta.org/maildrop/ maildropfilter.html) . Quello che segue è un esempio di configurazione per "$HOME/.mailfilter". # Configurazione locale MAILROOT="$HOME/Mail" # impostare questo al contenuto di /etc/mailname MAILHOST="esempio.dom" logfile $HOME/.maildroplog # le regole sono fatte per sovrascrivere il valore precedente con quello successivo. # posta di mailing list ? if ( /^Precedence:.*list/:h || /^Precedence:.*bulk/:h ) { # regole per la posta di mailing list # casella di posta predefinita per i messaggi di mailing list MAILBOX="Inbox-list" # casella di posta predefinita per i messaggi di debian.org if ( /^(Sender|Resent-From|Resent-Sender): .*debian.org/:h ) { MAILBOX="service.debian.org" } # casella di posta predefinita per i messaggi di bugs.debian.org (BTS) if ( /^(Sender|Resent-From|Resent-sender): .*@bugs.debian.org/:h ) { MAILBOX="bugs.debian.org" } # casella di posta per ogni mailing list correttamente mantenuta con "List-Id: pippo" o "List-Id: ..." if ( /^List-Id: ([^<]*<)?([^<>]*)>?/:h ) { MAILBOX="$MATCH2" } } else { # regole per messaggi non di mailing list # casella di posta in entrata predefinita MAILBOX="Inbox-unusual" # messaggi di posta locali if ( /Envelope-to: .*@$MAILHOST/:h ) { MAILBOX="Inbox-local" } # messaggi di posta html (al 99% posta indesiderata)     if ( /DOCTYPE html/:b ||\ /^Content-Type: text\/html/ ) { MAILBOX="Inbox-html" } # regola per la lista nera per la posta indesiderata if ( /^X-Advertisement/:h ||\ /^Subject:.*BUSINESS PROPOSAL/:h ||\ /^Subject:.*URGENT.*ASISSTANCE/:h ||\ /^Subject: *I NEED YOUR ASSISTANCE/:h ) { MAILBOX="Inbox-trash" } # regola per la lista bianca per la posta normale if ( /^From: .*@debian.org/:h ||\ /^(Sender|Resent-From|Resent-Sender): .*debian.org/:h ||\ /^Subject: .*(debian|bug|PATCH)/:h ) { MAILBOX="Inbox" } # regola per la lista bianca dei messaggi relativi al BTS if ( /^Subject: .*Bug#.*/:h ||\ /^(To|Cc): .*@bugs.debian.org/:h ) { MAILBOX="bugs.debian.org" } # regola per la lista bianca per messaggi di cron relativi a getmail if ( /^Subject: Cron .*getmails/:h ) { MAILBOX="Inbox-getmails" } } # controlla esistenza di $MAILBOX `test -d $MAILROOT/$MAILBOX` if ( $RETURNCODE == 1 ) { # crea una casella di posta maildir per $MAILBOX `maildirmake $MAILROOT/$MAILBOX` } # consegna nella maildir $MAILBOX to "$MAILROOT/$MAILBOX/" exit Avvertimento     A differenza di procmail, maildrop non crea automaticamente le directory maildir mancanti. Devono essere create prima manualmente usando maildirmake(1) come nell'esempio di file "$HOME/.mailfilter" precedente. 6.6.2. configurazione di procmail     Quello che segue è un file di configurazione simile "$HOME /.procmailrc" per procmail(1). MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/Inbox/ LOGFILE=$MAILDIR/Maillog # posta palesemente con brutto aspetto: gettarla in X-trash e uscire :0 * 1^0 ^X-Advertisement * 1^0 ^Subject:.*BUSINESS PROPOSAL * 1^0 ^Subject:.*URGENT.*ASISSTANCE * 1^0 ^Subject: *I NEED YOUR ASSISTANCE X-trash/ # Consegna dei messaggi di mailinglist :0 * 1^0 ^Precedence:.*list * 1^0 ^Precedence:.*bulk * 1^0 ^List- * 1^0 ^X-Distribution:.*bulk { :0     * 1^0 ^Return-path:.*debian-devel-admin@debian.or.jp jp-debian-devel/ :0 * ^Resent-Sender.*debian-user-request@lists.debian.org debian-user/ :0 * ^Resent-Sender.*debian-devel-request@lists.debian.org debian-devel/ :0 * ^Resent-Sender.*debian-announce-request@lists.debian.org debian-announce :0 mailing-list/ } :0 Inbox/ 6.6.3. Riconsegna del contenuto di mbox Se la propria directory home diventa piena e la consegna con procmail(1) fallisce, sarà necessario consegnare manualmente la     posta da "/var/mail/" alle proprie caselle di posta distinte nella directory home. Dopo aver fatto spazio nella directory home, eseguire quanto segue. # /etc/init.d/${MAILDAEMON} stop     # formail -s procmail # /etc/init.d/${MAILDAEMON} start 6.7. Server POP3/IMAP4 Se si deve eseguire un server privato in una LAN, si può prendere in considerazione l'esecuzione di un server POP3 (http://     it.wikipedia.org/wiki/Post_Office_Protocol) / IMAP4 (http:// it.wikipedia.org/wiki/Internet_Message_Access_Protocol) per la consegna della posta ai client nella LAN. Tabella 6.11. Elenco di server POP3/IMAP4 +-------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |tipo|descrizione| |-------------------+-------------+----------------------+----+-----------| | |V:9, I:12 | | |Server di | |courier-pop (http:/|(http:// | | |posta | |/ |qa.debian.org|108 (http:// | |Courier - | |packages.debian.org|/popcon.php? |packages.qa.debian.org|POP3|server POP3| |/sid/courier-pop) |package= |/c/courier-pop.html) | |(solo | | |courier-pop) | | |formato | | | | | |maildir) | |-------------------+-------------+----------------------+----+-----------| | |V:0, I:0 | | | | |cyrus-pop3d (http:/|(http:// |21 (http:// | |sistema di | |/ |qa.debian.org|packages.qa.debian.org|POP3|posta Cyrus| |packages.debian.org|/popcon.php? |/c/cyrus-pop3d.html) | |(supporto | |/sid/cyrus-pop3d) |package= | | |POP3) | | |cyrus-pop3d) | | | | |-------------------+-------------+----------------------+----+-----------| | |V:0, I:0 | | | |     |xmail (http:// |(http:// |688 (http:// | |Server di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|POP3|posta ESMTP| |/sid/xmail) |/popcon.php? |/x/xmail.html) | |/POP3 | | |package= | | | | | |xmail) | | | | |-------------------+-------------+----------------------+----+-----------| | |V:15, I:18 | | |Server di | |courier-imap (http:|(http:// | | |posta | |// |qa.debian.org|539 (http:// | |Courier - | |packages.debian.org|/popcon.php? |packages.qa.debian.org|IMAP|server IMAP| |/sid/courier-imap) |package= |/c/courier-imap.html) | |(solo | | |courier-imap)| | |formato | | | | | |maildir) | |-------------------+-------------+----------------------+----+-----------| | |V:0, I:0 | | | | |cyrus-imapd (http:/|(http:// |21 (http:// | |sistema di | |/ |qa.debian.org|packages.qa.debian.org|IMAP|posta Cyrus| |packages.debian.org|/popcon.php? |/c/cyrus-imapd.html) | |(supporto | |/sid/cyrus-imapd) |package= | | |IMAP) | | |cyrus-imapd) | | | | +-------------------------------------------------------------------------+ 6.8. Server ed utilità per la stampa Nei vecchi sistemi *nix, lo standard era il demone di stampa (http://en.wikipedia.org/wiki/Line_Printer_Daemon_protocol) BSD. Dato che il formato standard per l'output di stampa del software     libero nei sistemi in stile Unix è PostScript, veniva usato un sistema di filtri insieme a Ghostscript (http://it.wikipedia.org/ wiki/Ghostscript) per permettere la stampa su stampanti non-PostScript. Di recente il nuovo standard de facto è CUPS (Common UNIX Printing System) (http://it.wikipedia.org/wiki/ Common_Unix_Printing_System) . CUPS usa il protocollo IPP     (Internet Printing Protocol) (http://en.wikipedia.org/wiki/ Internet_Printing_Protocol) . IPP è ora supportato da altri sistemi operativi come Windows XP e Mac OS X ed è diventato il nuovo standard de facto multipiattaforma per la stampa da remoto con capacità di comunicazione bidirezionale. Il formato standard per i dati stampabili per le applicazioni nel sistema Debian è il formato PostScript (PS) (http:// it.wikipedia.org/wiki/PostScript) che è un linguaggio di     descrizione della pagina. I dati in formato PS vengono passati all'interprete PosPostScript Ghostscript per produrre i dati stampabili specifici per la stampante. Vedere Sezione 11.3.1, «Ghostscript». Grazie alla funzionalità di auto-conversione in base al formato dei file del sistema CUPS, il semplice passaggio di qualsiasi     tipo di dati al comando lpr dovrebbe generare l'output di stampa atteso. (In CUPS, il comando lpr può essere abilitato installando il pacchetto cups-bsd.)     Il sistema Debian ha alcuni pacchetti degni di nota per ciò che riguarda i server e le utilità di stampa Tabella 6.12. Elenco di server e utilità di stampa +----------------------------------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |porta |descrizione | |-----------------------+-----------------------+----------------------------+-----------+-----------------------------| | | | | |lpr/lpd BSD (Line printer | |lpr (http:// |V:19, I:24 (http:// |460 (http:// |printer |daemon (http:// | |packages.debian.org/sid|qa.debian.org/ |packages.qa.debian.org/l/ |(515) |en.wikipedia.org/wiki/ | |/lpr) |popcon.php?package=lpr)|lpr.html) | |Line_Printer_Daemon_protocol)| | | | | |, demone di stampa in linea) | |-----------------------+-----------------------+----------------------------+-----------+-----------------------------| |lprng (http:// |V:1, I:3 (http:// |2769 (http:// | | | |packages.debian.org/sid|qa.debian.org/ |packages.qa.debian.org/l/ |" " |" " (Migliorato) | |/lprng) |popcon.php?package= |lprng.html) | | | | |lprng) | | | | |-----------------------+-----------------------+----------------------------+-----------+-----------------------------| |cups (http:// |V:330, I:495 (http:// |736 (http:// | | | |packages.debian.org/sid|qa.debian.org/ |packages.qa.debian.org/c/ |IPP (631) |server CUPS di stampa | |/cups) |popcon.php?package= |cups.html) | |Internet | | |cups) | | | | |-----------------------+-----------------------+----------------------------+-----------+-----------------------------|     | | | | |comandi System V per la | | | | | |stampa (http:// | |cups-client (http:// |V:110, I:526 (http:// |588 (http:// | |en.wikipedia.org/wiki/ | |packages.debian.org/sid|qa.debian.org/ |packages.qa.debian.org/c/ |" " |System_V_printing_system) con| |/cups-client) |popcon.php?package= |cups-client.html) | |CUPS: lp(1), lpstat(1), | | |cups-client) | | |lpoptions(1), cancel(1), | | | | | |lpmove(8), lpinfo(8), lpadmin| | | | | |(8), … | |-----------------------+-----------------------+----------------------------+-----------+-----------------------------| | | | | |comandi BSD per la stampa | |cups-bsd (http:// |V:59, I:440 (http:// |77 (http:// | |(http://en.wikipedia.org/wiki| |packages.debian.org/sid|qa.debian.org/ |packages.qa.debian.org/c/ |" " |/ | |/cups-bsd) |popcon.php?package= |cups-bsd.html) | |Line_Printer_Daemon_protocol)| | |cups-bsd) | | |con CUPS: lpr(1), lpq(1), | | | | | |lprm(1), lpc(8) | |-----------------------+-----------------------+----------------------------+-----------+-----------------------------| |cups-driver-gutenprint |V:14, I:208 (http:// | | | | |(http:// |qa.debian.org/ |21 (http:// |Non | | |packages.debian.org/sid|popcon.php?package= |packages.qa.debian.org/c/ |applicabile|driver di stampa per CUPS | |/ |cups-driver-gutenprint)|cups-driver-gutenprint.html)| | | |cups-driver-gutenprint)| | | | | +----------------------------------------------------------------------------------------------------------------------+ Suggerimento     Si può configurare il sistema CUPS indirizzando il proprio browser web all'indirizzo "http://localhost:631/ (http:// localhost:631/) ". 6.9. Il server e le utilità per l'accesso remoto (SSH) SSH (Secure SHell) (http://it.wikipedia.org/wiki/Secure_Shell) è     il metodo sicuro per connettersi in Internet. Una versione libera di SSH chiamata OpenSSH (http://www.openssh.org/) è disponibile nei pacchetti Debian openssh-client e openssh-server. Tabella 6.13. Elenco dei server e delle utilità per l'accesso remoto +---------------------------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |strumento |descrizione| |-----------------------+-----------------------+----------------------------+----------------------+-----------| |openssh-client (http://|V:547, I:995 (http:// |2357 (http:// | | | |packages.debian.org/sid|qa.debian.org/ |packages.qa.debian.org/o/ |ssh(1) |client SSH | |/openssh-client) |popcon.php?package= |openssh-client.html) | | | | |openssh-client) | | | | |-----------------------+-----------------------+----------------------------+----------------------+-----------| |openssh-server (http://|V:664, I:826 (http:// |747 (http:// | | | |packages.debian.org/sid|qa.debian.org/ |packages.qa.debian.org/o/ |sshd(8) |server SSH | |/openssh-server) |popcon.php?package= |openssh-server.html) | | | | |openssh-server) | | | | |-----------------------+-----------------------+----------------------------+----------------------+-----------|     |ssh-askpass-fullscreen | | | |chiede | |(http:// |V:0, I:2 (http:// |24 (http:// | |all'utente | |packages.debian.org/sid|qa.debian.org/ |packages.qa.debian.org/s/ |ssh-askpass-fullscreen|una | |/ |popcon.php?package= |ssh-askpass-fullscreen.html)|(1) |passphrase | |ssh-askpass-fullscreen)|ssh-askpass-fullscreen)| | |per ssh-add| | | | | |(GNOME2) | |-----------------------+-----------------------+----------------------------+----------------------+-----------| | | | | |chiede | | |V:6, I:52 (http:// | | |all'utente | |ssh-askpass (http:// |qa.debian.org/ |156 (http:// | |una | |packages.debian.org/sid|popcon.php?package= |packages.qa.debian.org/s/ |ssh-askpass(1) |passphrase | |/ssh-askpass) |ssh-askpass) |ssh-askpass.html) | |per ssh-add| | | | | |(X | | | | | |semplice) | +---------------------------------------------------------------------------------------------------------------+ Attenzione     Se il proprio SSH è accessibile da Internet, vedere Sezione 4.7.3, «Misure aggiuntive di sicurezza per Internet». Suggerimento     Per permettere al processo della shell remota di sopravvivere all'interruzione della connessione, usare il programma screen(1) (vedere Sezione 9.1, «Il programma screen»). 6.9.1. Nozioni di base su SSH Avvertimento     Se si desidera eseguire il server OpenSSH, non deve esistere il file "/etc/ssh/sshd_not_to_be_run".     SSH ha due protocolli di autenticazione Tabella 6.14. Elenco dei protocolli e dei metodi di autenticazione di SSH +---------------------------------------------------------------+ |protocollo|metodo SSH |descrizione | |SSH | | | |----------+---------------------------------+------------------| | | |autenticazione | |SSH-1 |"RSAAuthentication" |utente RSA basata | | | |su chiave | | | |identificativa | |----------+---------------------------------+------------------| | | |autenticazione di | | | |host basata su | |" " |"RhostsAuthentication" |".rhosts" | | | |(insicura, | | | |disabilitata) | |----------+---------------------------------+------------------| | | |autenticazione di | | | |host basata su | |" " |"RhostsRSAAuthentication" |".rhosts" in | | | |combinazione con | | | |chiave RSA per | | | |host(disabilitata)| |----------+---------------------------------+------------------| |" " |"ChallengeResponseAuthentication"|autenticazione RSA|     | | |challenge-response| |----------+---------------------------------+------------------| |" " |"PasswordAuthentication" |autenticazione | | | |basata su password| |----------+---------------------------------+------------------| | | |autenticazione | |SSH-2 |"PubkeyAuthentication" |utente basata su | | | |chiave pubblica | |----------+---------------------------------+------------------| | | |autenticazione di | | | |host basata su "~ | | | |/.rhosts" o "/etc/| | | |hosts.equiv" in | |" " |"HostbasedAuthentication" |combinazione con | | | |autenticazione | | | |dell'host client | | | |con chiave | | | |pubblica | | | |(disabilitata) | |----------+---------------------------------+------------------| |" " |"ChallengeResponseAuthentication"|autenticazione | | | |challenge-response| |----------+---------------------------------+------------------| |" " |"PasswordAuthentication" |autenticazione | | | |basata su password| +---------------------------------------------------------------+ Attenzione     Se si usa un sistema non Debian si faccia attenzione a queste differenze.     Per i dettagli vedere "/usr/share/doc/ssh/README.Debian.gz", ssh (1), sshd(8), ssh-agent(1) e ssh-keygen(1).     Di seguito è riportato l'elenco dei file di configurazione più importanti. Tabella 6.15. Elenco dei file di configurazione per SSH +---------------------------------------------------------------+ |file di |descrizione del file di configurazione | |configurazione | | |---------------+-----------------------------------------------| |/etc/ssh/ |impostazioni predefinite per il client SSH, | |ssh_config |vedere ssh_config(5) | |---------------+-----------------------------------------------| |/etc/ssh/ |impostazioni predefinite per il server SSH, | |sshd_config |vedere ssh_config(5) |     |---------------+-----------------------------------------------| |~/.ssh/ |chiavi SSH pubbliche predefinite che i client | |authorized_keys|usano per connettersi a questo account su | | |questo server SSH | |---------------+-----------------------------------------------| |~/.ssh/identity|chiave RSA SSH-1 segreta dell'utente | |---------------+-----------------------------------------------| |~/.ssh/id_rsa |chiave RSA SSH-2 segreta dell'utente | |---------------+-----------------------------------------------| |~/.ssh/id_dsa |chiave DSA SSH-2 segreta dell'utente | +---------------------------------------------------------------+ Suggerimento     Per l'uso delle chiavi SSH pubbliche e segrete, vedere ssh-keygen (1), ssh-add(1) e ssh-agent(1). Suggerimento     Assicurarsi di verificare le impostazioni testando la connessione. In caso di problemi, usare "ssh -v". Suggerimento     Si può cambiare successivamente la passphrase per cifrare le chiavi SSH segrete locali usando "ssh-keygen -p". Suggerimento     Si possono aggiungere opzioni alle voci in "~/.ssh/ authorized_keys" per limitare gli host e per eseguire comandi specifici. Per i dettagli vedere sshd(8).     I comandi seguenti avviano una connessione ssh(1) da un client. Tabella 6.16. Elenco di esempi di avvio di client SSH +---------------------------------------------------------------+ |comando |descrizione | |-----------------------------------+---------------------------| |ssh nomeutente@nomehost.dominio.ext|connette nella modalità | | |predefinita | |-----------------------------------+---------------------------| |ssh -v |connette nella modalità | |nomeutente@nomehost.dominio.ext |predefinita con messaggi di| | |debug |     |-----------------------------------+---------------------------| |ssh -1 |forza la connessione con | |nomeutente@nomehost.dominio.ext |SSH versione 1 | |-----------------------------------+---------------------------| |ssh -1 -o RSAAuthentication=no -l |forza l'uso di password con| |nomeutente nomehost.dominio.ext |SSH versione 1 | |-----------------------------------+---------------------------| |ssh -o PreferredAuthentications= |forza l'uso di password con| |password -l nomeutente |SSH versione 2 | |nomehost.dominio.ext | | +---------------------------------------------------------------+ Se si usa lo stesso nome utente sull'host locale e su quello remoto, si può evitare di digitare la parte "nomeutente@". Anche se si usa un nome utente diverso nell'host locale rispetto a     quello remoto, si può evitare di digitare quella parte usando il file "~/.ssh/config". Per il servizio Debian Alioth (http:// alioth.debian.org/) con nome account "pippo-guest", impostare "~ /.ssh/config" in modo che contenga quanto segue.     Host alioth.debian.org svn.debian.org git.debian.org User pippo-guest Per l'utente ssh(1) funziona come un telnet(1) più intelligente e     più sicuro. A differenza del comando telnet, ssh non va in crash a seguito del carattere di escape di telnet (impostazione predefinita iniziale CTRL-]). 6.9.2. Forwarding della porta per tunnel SMTP/POP3 Per stabilire una pipe per connettersi alla porta 25 del     server-remoto dalla porta 4025 dell'host locale e alla porta 110 del server-remoto dalla porta 4110 dell'host locale attraverso ssh, eseguire sull'host locale il comando seguente.     # ssh -q -L 4025:server-remoto:25 4110:server-remoto:110 nomeutente@server-remoto Questo è un metodo sicuro di creare connessioni a server SMTP/     POP3 in Internet. Impostare nel file "/etc/ssh/sshd_config" dell'host remoto la voce "AllowTcpForwarding" a "yes". 6.9.3. Connettersi senza password remote Si può evitare di doversi ricordare le password per sistemi     remoti usando "RSAAuthentication" (protocollo SSH-1) o "PubkeyAuthentication" (protocollo SSH-2). Sul sistema remoto impostare nel file "/etc/ssh/sshd_config" le     rispettive voci "RSAAuthentication yes" o "PubkeyAuthentication yes".     Generare localmente le chiavi di autenticazione ed installare la chiave pubblica sul sistema remoto con i comandi seguenti.     * "RSAAuthentication": chiave RSA per SSH-1 (deprecata perché superata)     $ ssh-keygen $ cat .ssh/identity.pub | ssh utente1@remote "cat - >>.ssh/authorized_keys"     * "PubkeyAuthentication": chiave RSA per SSH-2     $ ssh-keygen -t rsa $ cat .ssh/id_rsa.pub | ssh utente1@remote "cat - >>.ssh/authorized_keys"     * "PubkeyAuthentication": chiave DSA per SSH-2 (deprecata perché lenta)     $ ssh-keygen -t dsa $ cat .ssh/id_dsa.pub | ssh utente1@remote "cat - >>.ssh/authorized_keys" Suggerimento L'uso di una chiave DSA per SSH-2 è deprecato perché la chiave è più piccola e più lenta. Non esistono più motivi per aggirare i     brevetti RSA usando DSA, dato che essi sono scaduti. DSA sta per Algoritmo di firma digitale (Digital Signature Algorithm) (http:/ /it.wikipedia.org/wiki/Digital_Signature_Algorithm) ed è lento. Vedere anche DSA-1571-1 (http://www.debian.org/security/2008/ dsa-1571) . Nota     Affinché "HostbasedAuthentication" funzioni con SSH-2, si deve impostare la voce "HostbasedAuthentication" a "yes" in entrambi i file "/etc/ssh/sshd_config" nell'host server e i "/etc/ssh/ ssh_config" o "~/.ssh/config" nell'host client. 6.9.4. Gestire client SSH estranei     Sono disponibili alcuni client SSH (http://it.wikipedia.org/wiki/ Secure_Shell) liberi per altre piattaforme. Tabella 6.17. Elenco di client SSH per altre piattaforme +---------------------------------------------------------------+ |ambiente |programma ssh libero | |---------+-----------------------------------------------------| | |puTTY (http://www.chiark.greenend.org.uk/~sgtatham/ | |Windows |putty/ (http://www.chiark.greenend.org.uk/~sgtatham/ | | |putty/) ) (GPL) |     |---------+-----------------------------------------------------| |Windows |SSH in cygwin (http://www.cygwin.com/ (http:// | |(cygwin) |www.cygwin.com/) ) (GPL) | |---------+-----------------------------------------------------| |Macintosh|macSSH (http://www.macssh.com/ (http://www.macssh.com| |Classic |/) ) (GPL) | |---------+-----------------------------------------------------| |Mac OS X |OpenSSH; usare ssh nell'applicazione Terminale (GPL) | +---------------------------------------------------------------+ 6.9.5. Impostare ssh-agent È meglio per ragioni di sicurezza proteggere la propria chiave     segreta di autenticazione SSH con una passphrase. Se non è già stata impostata una passphrase usare "ssh-keygen -p" per farlo. Mettere la propria chiav SSH pubblica (ad esempio "~/.ssh/     id_rsa.pub") in "~/.ssh/authorized_keys" su un host remoto usando una connessione all'host remoto basata su password, come descritto in precedenza. $ ssh-agent bash     $ ssh-add ~/.ssh/id_rsa Enter passphrase for /home//.ssh/id_rsa: Identity added: /home//.ssh/id_rsa (/home//.ssh/id_rsa)     Per il comando successivo non sarà più necessaria da questo momento la password remota.     $ scp pippo @host.remoto:pippo     Premere ~D per terminare la sessione ssh-agent. Per il server X, il normale script di avvio Debian esegue     ssh-agent come processo genitore. Perciò è necessario eseguire ssh-add una volta sola. Per ulteriori informazioni, leggere ssh-agent(1) e ssh-add(1). 6.9.6. Spegnere il sistema remoto su SSH È necessario proteggere il processo che esegue "shutdown -h now" (vedere Sezione 1.1.8, «Come spegnere il sistema») dalla     terminazione di SSH usando il comando at(1) (vedere Sezione 9.5.13, «Pianificare compiti da eseguire una volta sola») nel modo seguente.     # echo "shutdown -h now" | at now Eseguire "shutdown -h now" in una sessione screen(1) (vedere     Sezione 9.1, «Il programma screen») è un altro modo di ottenere lo stesso risultato. 6.9.7. Risolvere il problemi con SSH     Se si hanno problemi, controllare i permessi dei file di configurazione ed eseguire ssh con l'opzione "-v".     Se si è root e si hanno problemi con un firewall usare l'opzione "-P"; questo evita l'uso delle porte 1 - 1023 del server. Se le connessioni ssh ad un sito remoto smettono di funzionare improvvisamente, potrebbe essere a causa di modifiche fatte dall'amministratore di sistema, molto probabilmente cambiamenti     in "host-key" durante l'amministrazione del sistema. Dopo essersi accertati che questa sia davvero la causa e che nessuna stia cercando di falsificare l'host remoto con qualche trucchetto, si può riottenere una connessione rimuovendo la voce "host-key" dal file "~/.ssh/known_hosts" sull'host locale. 6.10. Altri server di rete     Ecco un elenco di altri server applicativi di rete. Tabella 6.18. Elenco di altri server applicativi di rete +-----------------------------------------------------------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |protocollo |descrizione | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |telnetd (http:// |V:2, I:5 (http:// |156 (http:// | | | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/t/|TELNET (http://it.wikipedia.org/wiki|server TELNET | |sid/telnetd) |popcon.php?package= |telnetd.html) |/Telnet) | | | |telnetd) | | | | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |telnetd-ssl (http://|V:0, I:1 (http:// |220 (http:// | | | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/t/|" " |" " (supporto SSL) | |sid/telnetd-ssl) |popcon.php?package= |telnetd-ssl.html) | | | | |telnetd-ssl) | | | | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |nfs-kernel-server |V:81, I:182 (http://| | | | |(http:// |qa.debian.org/ |502 (http:// |NFS (http://it.wikipedia.org/wiki/ | | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/n/|Network_File_System) |condivisione di file Unix | |sid/ |nfs-kernel-server) |nfs-kernel-server.html) | | | |nfs-kernel-server) | | | | | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |samba (http:// |V:145, I:252 (http:/|22700 (http:// | | | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/s/|SMB (http://it.wikipedia.org/wiki/ |condivisione di file e stampanti | |sid/samba) |popcon.php?package= |samba.html) |Server_message_block) |Windows | | |samba) | | | | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |netatalk (http:// |V:10, I:22 (http:// |3763 (http:// | | | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/n/|ATP (http://it.wikipedia.org/wiki/ |condivisione di file e stampanti Apple| |sid/netatalk) |popcon.php?package= |netatalk.html) |AppleTalk) |/Mac (AppleTalk) | | |netatalk) | | | | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |proftpd-basic (http:|V:46, I:56 (http:// |4431 (http:// | | | |// |qa.debian.org/ |packages.qa.debian.org/p/|FTP (http://it.wikipedia.org/wiki/ |scaricamento generico di file | |packages.debian.org/|popcon.php?package= |proftpd-basic.html) |File_Transfer_Protocol) | | |sid/proftpd-basic) |proftpd-basic) | | | | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------|     |apache2-mpm-prefork |V:291, I:326 (http:/| | | | |(http:// |/qa.debian.org/ |22 (http:// |HTTP (http://it.wikipedia.org/wiki/ | | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/a/|Hypertext_Transfer_Protocol) |server web generico | |sid/ |apache2-mpm-prefork)|apache2-mpm-prefork.html)| | | |apache2-mpm-prefork)| | | | | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |apache2-mpm-worker |V:72, I:94 (http:// | | | | |(http:// |qa.debian.org/ |22 (http:// | | | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/a/|" " |" " | |sid/ |apache2-mpm-worker) |apache2-mpm-worker.html) | | | |apache2-mpm-worker) | | | | | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |squid (http:// |V:34, I:39 (http:// |1869 (http:// | | | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/s/|" " |server proxy (http://it.wikipedia.org/| |sid/squid) |popcon.php?package= |squid.html) | |wiki/Proxy) web generico | | |squid) | | | | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |squid3 (http:// |V:15, I:18 (http:// |5848 (http:// | | | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/s/|" " |" " | |sid/squid3) |popcon.php?package= |squid3.html) | | | | |squid3) | | | | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |slpd (http:// |V:0, I:1 (http:// |183 (http:// | |server OpenSLP (http://www.openslp.org| |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/s/|SLP (http://en.wikipedia.org/wiki/ |/) come server LDAP (http:// | |sid/slpd) |popcon.php?package= |slpd.html) |Service_Location_Protocol) |it.wikipedia.org/wiki/ | | |slpd) | | |Lightweight_Directory_Access_Protocol)| |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |bind9 (http:// |V:68, I:139 (http://|936 (http:// | | | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/b/|DNS (http://it.wikipedia.org/wiki/ |indirizzo IP per altri host | |sid/bind9) |popcon.php?package= |bind9.html) |Domain_Name_System) | | | |bind9) | | | | |--------------------+--------------------+-------------------------+------------------------------------+--------------------------------------| |isc-dhcp-server |V:33, I:62 (http:// |2027 (http:// | | | |(http:// |qa.debian.org/ |packages.qa.debian.org/i/|DHCP (http://it.wikipedia.org/wiki/ |indirizzo IP per il client stesso | |packages.debian.org/|popcon.php?package= |isc-dhcp-server.html) |Dynamic_Host_Configuration_Protocol)| | |sid/isc-dhcp-server)|isc-dhcp-server) | | | | +-----------------------------------------------------------------------------------------------------------------------------------------------+ CIFS (Common Internet File System Protocol) è lo stesso     protocollo di SMB (Server Message Block) (http://it.wikipedia.org /wiki/Server_message_block) ed è ampiamente usato da Microsoft Windows. Suggerimento     Vedere Sezione 4.5.2, «La moderna gestione centralizzata del sistema» per l'integrazione di sistemi server. Suggerimento La risoluzione del nome di host è solitamente fornita dal server DNS (http://it.wikipedia.org/wiki/Domain_Name_System) . Per     l'indirizzo IP dell'host assegnato dinamicamente da DHCP (http:// it.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol) , può essere impostato un DNS dinamico (http://it.wikipedia.org/wiki/ Dynamic_DNS) per la risoluzione del nome host, usando bind9 e isc-dhcp-server come descritto nella pagina del Wiki Debian sui DDNS (http://wiki.debian.org/DDNS) . Suggerimento     L'uso di server proxy come squid è molti più efficiente per risparmiare banda rispetto all'uso di server mirror locali con il completo contenuto dell'archivio Debian. 6.11. Altri client di rete     Ecco un elenco di altri client applicativi di rete. Tabella 6.19. Elenco di altri client applicativi di rete +-------------------------------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |protocollo |descrizione | |-------------------+----------------+----------------------+--------------------------------------+----------------| |netcat (http:// |I:84 (http:// |32 (http:// | | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|TCP/IP (http://it.wikipedia.org/wiki/ |coltellino | |/sid/netcat) |popcon.php? |/n/netcat.html) |TCP/IP) |svizzero TCP/IP | | |package=netcat) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:754, I:979 | | |eseguibile SSL | |openssl (http:// |(http:// |1073 (http:// | |(Secure Socket | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|SSL (http://it.wikipedia.org/wiki/ |Layer) e | |/sid/openssl) |popcon.php? |/o/openssl.html) |Transport_Layer_Security) |strumenti | | |package=openssl)| | |crittografici | | | | | |relativi | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:4, I:24 (http:| | | | |stunnel4 (http:// |//qa.debian.org/|461 (http:// | |wrapper SSL | |packages.debian.org|popcon.php? |packages.qa.debian.org|" " |universale | |/sid/stunnel4) |package= |/s/stunnel4.html) | | | | |stunnel4) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:100, I:912 | | | | |telnet (http:// |(http:// |200 (http:// |TELNET (http://it.wikipedia.org/wiki/ | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|Telnet) |client TELNET | |/sid/telnet) |popcon.php? |/t/telnet.html) | | | | |package=telnet) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:1, I:11 (http:| | | | |telnet-ssl (http://|//qa.debian.org/|260 (http:// | |" " (supporto | |packages.debian.org|popcon.php? |packages.qa.debian.org|" " |SSL) | |/sid/telnet-ssl) |package= |/t/telnet-ssl.html) | | | | |telnet-ssl) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:472, I:843 | | | | |nfs-common (http://|(http:// |685 (http:// | | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|NFS (http://it.wikipedia.org/wiki/ |condivisione di | |/sid/nfs-common) |popcon.php? |/n/nfs-common.html) |Network_File_System) |file Unix | | |package= | | | | | |nfs-common) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:62, I:516 | | | | |smbclient (http:// |(http:// |41270 (http:// | |client per | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|SMB (http://it.wikipedia.org/wiki/ |condivisione di | |/sid/smbclient) |popcon.php? |/s/smbclient.html) |Server_message_block) |file e stampanti| | |package= | | |MS Windows | | |smbclient) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:41, I:189 | | | | |cifs-utils (http://|(http:// |254 (http:// | |comandi mount e | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|" " |umount per file | |/sid/cifs-utils) |popcon.php? |/c/cifs-utils.html) | |MS Windows | | |package= | | |remoti | | |cifs-utils) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:67, I:877 | | | | |ftp (http:// |(http:// |144 (http:// |FTP (http://it.wikipedia.org/wiki/ | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|File_Transfer_Protocol) |client FTP | |/sid/ftp) |popcon.php? |/f/ftp.html) | | | | |package=ftp) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| |lftp (http:// |V:9, I:52 (http:|1769 (http:// | | | |packages.debian.org|//qa.debian.org/|packages.qa.debian.org|" " |" " | |/sid/lftp) |popcon.php? |/l/lftp.html) | | |     | |package=lftp) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| |ncftp (http:// |V:7, I:47 (http:|1233 (http:// | | | |packages.debian.org|//qa.debian.org/|packages.qa.debian.org|" " |client FTP a | |/sid/ncftp) |popcon.php? |/n/ncftp.html) | |tutto schermo | | |package=ncftp) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:287, I:998 | |HTTP (http://it.wikipedia.org/wiki/ | | |wget (http:// |(http:// |2323 (http:// |Hypertext_Transfer_Protocol) e FTP |scaricatore per | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|(http://it.wikipedia.org/wiki/ |web | |/sid/wget) |popcon.php? |/w/wget.html) |File_Transfer_Protocol) | | | |package=wget) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:83, I:313 | | | | |curl (http:// |(http:// |302 (http:// | | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|" " |" " | |/sid/curl) |popcon.php? |/c/curl.html) | | | | |package=curl) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| |axel (http:// |V:1, I:6 (http:/|212 (http:// | | | |packages.debian.org|/qa.debian.org/ |packages.qa.debian.org|" " |scaricatore | |/sid/axel) |popcon.php? |/a/axel.html) | |accelerato | | |package=axel) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | | | | |scaricatore | | | | | |accelerato con | | | | | |gestione di | | | | | |BitTorrent | | |V:1, I:8 (http:/| | |(http:// | |aria2 (http:// |/qa.debian.org/ |4307 (http:// | |en.wikipedia.org| |packages.debian.org|popcon.php? |packages.qa.debian.org|" " |/wiki/ | |/sid/aria2) |package=aria2) |/a/aria2.html) | |BitTorrent_ | | | | | |(protocol)) e | | | | | |Metalink (http:/| | | | | |/ | | | | | |en.wikipedia.org| | | | | |/wiki/Metalink) | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:434, I:949 | | | | |bind9-host (http://|(http:// |168 (http:// | |host(1) da | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|DNS (http://it.wikipedia.org/wiki/ |bind9, | |/sid/bind9-host) |popcon.php? |/b/bind9-host.html) |Domain_Name_System) |"Priorità: | | |package= | | |standard" | | |bind9-host) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:95, I:928 | | | | |dnsutils (http:// |(http:// |359 (http:// | |dig(1) da bind, | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|" " |"Priorità: | |/sid/dnsutils) |popcon.php? |/d/dnsutils.html) | |standard" | | |package= | | | | | |dnsutils) | | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| |isc-dhcp-client |V:477, I:875 | | | | |(http:// |(http:// |1765 (http:// | | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|DHCP (http://it.wikipedia.org/wiki/ |ottiene | |/sid/ |popcon.php? |/i/ |Dynamic_Host_Configuration_Protocol) |indirizzo IP | |isc-dhcp-client) |package= |isc-dhcp-client.html) | | | | |isc-dhcp-client)| | | | |-------------------+----------------+----------------------+--------------------------------------+----------------| | |V:12, I:71 | | | | |ldap-utils (http://|(http:// |692 (http:// | | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|LDAP (http://it.wikipedia.org/wiki/ |ottiene dati da | |/sid/ldap-utils) |popcon.php? |/l/ldap-utils.html) |Lightweight_Directory_Access_Protocol)|server LDAP | | |package= | | | | | |ldap-utils) | | | | +-------------------------------------------------------------------------------------------------------------------+ 6.12. Diagnosi dei demoni di sistema     Il programma telnet permette la connessione manuale ai demoni di sistema e la loro diagnosi.     Per testare il semplice servizio POP3 (http://it.wikipedia.org/ wiki/Post_Office_Protocol) provare il comando seguente.     $ telnet mail.nomeisp.net pop3 Per testare il servizio POP3 (http://it.wikipedia.org/wiki/ Post_Office_Protocol) con TLS (http://it.wikipedia.org/wiki/     Transport_Layer_Security) /SSL abilitato di alcuni fornitori di servizi Internet, è necessario un client telnet con TLS/SSL abilitato fornito dal pacchdetto telnet-ssl o openssl.     $ telnet -z ssl pop.gmail.com 995     $ openssl s_client -connect pop.gmail.com:995     Le seguenti RFC (http://www.ietf.org/rfc.html) forniscono le conoscenze necessarie per ciascun demone di sistema. Tabella 6.20. Elenco di RFC popolari +---------------------------------------------------------------+ |RFC |descrizione | |-----------------------------+---------------------------------| |rfc1939 (http:// |servzio POP3 (http:// | |tools.ietf.org/html/rfc1939) |it.wikipedia.org/wiki/ | |e rfc2449 (http:// |Post_Office_Protocol) | |tools.ietf.org/html/rfc2449) | | |-----------------------------+---------------------------------| |rfc3501 (http:// |servizio IMAP4 (http:// | |tools.ietf.org/html/rfc3501) |it.wikipedia.org/wiki/ | | |Internet_Message_Access_Protocol)| |-----------------------------+---------------------------------| |rfc2821 (http:// |servizio SMTP (http:// | |tools.ietf.org/html/rfc2821) |it.wikipedia.org/wiki/ | |(rfc821 (http:// |Simple_Mail_Transfer_Protocol) | |tools.ietf.org/html/rfc821) )| | |-----------------------------+---------------------------------| |rfc2822 (http:// | |     |tools.ietf.org/html/rfc2822) |formato file di posta | |(rfc822 (http:// | | |tools.ietf.org/html/rfc822) )| | |-----------------------------+---------------------------------| |rfc2045 (http:// |MIME (Multipurpose Internet Mail | |tools.ietf.org/html/rfc2045) |Extensions) (http:// | | |it.wikipedia.org/wiki/MIME) | |-----------------------------+---------------------------------| |rfc819 (http://tools.ietf.org|servizio DNS (http:// | |/html/rfc819) |it.wikipedia.org/wiki/ | | |Domain_Name_System) | |-----------------------------+---------------------------------| |rfc2616 (http:// |servizio HTTP (http:// | |tools.ietf.org/html/rfc2616) |it.wikipedia.org/wiki/ | | |Hypertext_Transfer_Protocol) | |-----------------------------+---------------------------------| |rfc2396 (http:// |definizione di URI (http:// | |tools.ietf.org/html/rfc2396) |it.wikipedia.org/wiki/ | | |Uniform_Resource_Identifier) | +---------------------------------------------------------------+     L'uso delle porte è descritto in "/etc/services". Capitolo 7. Il sistema X Window Il sistema X Window (http://it.wikipedia.org/wiki/     X_Window_System) in Debian è basato sui sorgenti di X.org (http:/ /www.x.org/) . A partire da luglio 2009 sono X11R7.1(etch), X11R7.3(lenny), X11R7.3(squeeze) e X11R7.4(sid). 7.1. Pacchetti fondamentali     Per facilitare l'installazione sono forniti alcuni (meta) pacchetti Tabella 7.1. Elenco di (meta)pacchetti fondamentali per X Window +------------------------------------------------------------------------------------------------------+ |(meta)pacchetto |popcon |dimensione |descrizione | |--------------------------+--------------------------+-------------------------------+----------------| | | | |librerie X, un | | | | |server X, un | |xorg (http:// |I:507 (http:// |78 (http:// |insieme di tipi | |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/x/ |di carattere e | |xorg) |package=xorg) |xorg.html) |un gruppo di | | | | |client e utilità| | | | |X di base | | | | |(metapacchetto) | |--------------------------+--------------------------+-------------------------------+----------------| |xserver-xorg (http:// |V:165, I:573 (http:// |366 (http:// |insieme completo| |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/x/ |del server X e | |xserver-xorg) |package=xserver-xorg) |xserver-xorg.html) |della sua | | | | |configurazione | |--------------------------+--------------------------+-------------------------------+----------------| |xbase-clients (http:// |I:244 (http:// |62 (http:// |vari client X | |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/x/ |assortiti | |xbase-clients) |package=xbase-clients) |xbase-clients.html) | | |--------------------------+--------------------------+-------------------------------+----------------| |x11-common (http:// |V:436, I:852 (http:// |466 (http:// |infrastruttura | |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/x/ |del filesystem | |x11-common) |package=x11-common) |x11-common.html) |per il sistema X| | | | |Window | |--------------------------+--------------------------+-------------------------------+----------------| |xorg-docs (http:// |I:19 (http://qa.debian.org|2056 (http:// |documentazione | |packages.debian.org/sid/ |/popcon.php?package= |packages.qa.debian.org/x/ |varia per la | |xorg-docs) |xorg-docs) |xorg-docs.html) |suite software | | | | |X.Org | |--------------------------+--------------------------+-------------------------------+----------------| | | | |genera il menu | |menu (http:// |V:247, I:570 (http:// |1757 (http:// |Debian per tutte| |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/m/ |le applicazioni | |menu) |package=menu) |menu.html) |con supporto per| | | | |il menu | |--------------------------+--------------------------+-------------------------------+----------------| |gksu (http:// |V:143, I:480 (http:// |207 (http:// |frontend Gtk+ a | |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/g/ |su(1) o sudo(8) | |gksu) |package=gksu) |gksu.html) | | |--------------------------+--------------------------+-------------------------------+----------------| | | | |converte la | | | | |struttura del | | | | |menu Debian | |menu-xdg (http:// |I:281 (http:// |76 (http:// |nella struttura | |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/m/ |del menu xdg di | |menu-xdg) |package=menu-xdg) |menu-xdg.html) |freedesktop.org | | | | |(http:// | | | | |it.wikipedia.org| | | | |/wiki/ | | | | |Freedesktop.org)| |--------------------------+--------------------------+-------------------------------+----------------|     | | | |utilità per | | | | |integrare | | | | |l'ambiente | |xdg-utils (http:// |V:260, I:567 (http:// |300 (http:// |desktop fornito | |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/x/ |da | |xdg-utils) |package=xdg-utils) |xdg-utils.html) |freedesktop.org | | | | |(http:// | | | | |it.wikipedia.org| | | | |/wiki/ | | | | |Freedesktop.org)| |--------------------------+--------------------------+-------------------------------+----------------| | | | |ambiente desktop| |gnome-desktop-environment |I:130 (http:// |43 (http:// |GNOME (http:// | |(http:// |qa.debian.org/popcon.php? |packages.qa.debian.org/g/ |it.wikipedia.org| |packages.debian.org/sid/ |package= |gnome-desktop-environment.html)|/wiki/GNOME) | |gnome-desktop-environment)|gnome-desktop-environment)| |standard | | | | |(metapacchetto) | |--------------------------+--------------------------+-------------------------------+----------------| | | | |ambiente desktop| |kde-standard (http:// |I:72 (http://qa.debian.org|35 (http:// |KDE (http:// | |packages.debian.org/sid/ |/popcon.php?package= |packages.qa.debian.org/k/ |it.wikipedia.org| |kde-standard) |kde-standard) |kde-standard.html) |/wiki/KDE) di | | | | |base | | | | |(metapacchetto) | |--------------------------+--------------------------+-------------------------------+----------------| | | | |ambiente desktop| |xfce4 (http:// | |31 (http:// |leggero Xfce | |packages.debian.org/sid/ |I:94 (http://qa.debian.org|packages.qa.debian.org/x/ |(http:// | |xfce4) |/popcon.php?package=xfce4)|xfce4.html) |it.wikipedia.org| | | | |/wiki/Xfce) | | | | |(metapacchetto) | |--------------------------+--------------------------+-------------------------------+----------------| | | | |ambiente desktop| |lxde-core (http:// |I:39 (http://qa.debian.org|3 (http:// |leggero LXDE | |packages.debian.org/sid/ |/popcon.php?package= |packages.qa.debian.org/l/ |(http:// | |lxde-core) |lxde-core) |lxde-core.html) |it.wikipedia.org| | | | |/wiki/LXDE) | | | | |(metapacchetto) | |--------------------------+--------------------------+-------------------------------+----------------| | | | |Fluxbox (http://| | | | |it.wikipedia.org| | | | |/wiki/Fluxbox) :| | | | |pacchetto per un| | | | |gestore di | |fluxbox (http:// |V:6, I:23 (http:// |3823 (http:// |finestre per X | |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/f/ |(http:// | |fluxbox) |package=fluxbox) |fluxbox.html) |it.wikipedia.org| | | | |/wiki/ | | | | |Window_manager) | | | | |altamente | | | | |configurabile e | | | | |con basso uso di| | | | |risorse | +------------------------------------------------------------------------------------------------------+ Per le nozioni base su X fare riferimento a X(7) e il     XWindow-User-HOWTO del LDP (http://www.tldp.org/HOWTO/ XWindow-User-HOWTO.html) . 7.2. Impostare l'ambiente desktop Un ambiente desktop (http://it.wikipedia.org/wiki/     Desktop_environment) è solitamente una combinazione di un gestore di finestre per X (http://it.wikipedia.org/wiki/Window_manager) , un gestore di file e una suite di utilità compatibili. Si può configurare un ambiente desktop (http://it.wikipedia.org/ wiki/Desktop_environment) completo come GNOME (http://     it.wikipedia.org/wiki/GNOME) , KDE (http://it.wikipedia.org/wiki/ KDE) , Xfce (http://it.wikipedia.org/wiki/Xfce) o LXDE (http:// it.wikipedia.org/wiki/LXDE) da aptitude nel menu dei task. Suggerimento Il menu dei task potrebbe non essere in sincrono con le più recenti transizioni di pacchetti negli ambienti Debian unstable/     testing. In questo caso è necessario deselezionare alcuni (meta) pacchetti elencati nel menu dei task di aptitude(8) per evitare conflitti tra pacchetti. Quando si deselezionano (meta)pacchetti, è necessario selezionare manualmente alcuni pacchetti che forniscono le loro dipendenze per evitare che vengano automaticamente rimossi. In alternativa è possibile impostare manualmente un ambiente     semplice con solamente un gestore di finestre per X (http:// it.wikipedia.org/wiki/Window_manager) come Fluxbox (http:// it.wikipedia.org/wiki/Fluxbox) .     Vedere Gestori di finestre per X (http://www.xwinman.org) per una guida ai gestori di finestre per X e agli ambienti desktop. 7.2.1. Menu Debian Il sistema del menu Debian (http://www.debian.org/doc/ packaging-manuals/menu.html/) fornisce un'interfaccia generale ai     programmi sia testuali sia orientati ad X, tramite update-menus (1) nel pacchetto menu. Ciascun pacchetto installa i propri dati per il menu nella directory "/usr/share/menu/". Vedere "/usr/ share/menu/README". 7.2.2. Menu Freedesktop.org Ogni pacchetto conforme al sistema di menu xdg di Freedesktop.org installa i propri dati di menu forniti da "*.desktop" in "/usr/     share/applications/". Gli ambienti desktop moderni che sono conformi agli standard Freedesktop.org usano questi dati per generare i propri menu usando il pacchetto xdg-utils. Vedere "/ usr/share/doc/xdg-utils/README". 7.2.3. Il menu Debian nell'ambiente desktop GNOME Per ottenere l'accesso al menu Debian tradizionale nell'ambiente     desktop GNOME, si deve installare il pacchetto menu-xdg, cliccare su "Sistema" → "Preferenze" → "Menu principale" e spuntare la casella per "Debian". Suggerimento     Potrebbe essere necessario fare un'azione simile per altri ambienti desktop moderni che sono conformi allo standard Freedesktop.org. 7.3. La relazione client/server Il sistema X Window è attivato come combinazione di programmi     server e client. Il significato delle parole server e client in relazione alle parole locale e remoto richiede un po' di attenzione. Tabella 7.2. Elenco della terminologia per server/client +---------------------------------------------------------------+ |tipo |descrizione | |-----------+---------------------------------------------------| |server X |un programma eseguito su un host locale connesso al| | |display dell'utente e ai device di input | |-----------+---------------------------------------------------|     |client X |un programma in esecuzione su un host remoto che | | |elabora dati e comunica con il server X | |-----------+---------------------------------------------------| |application|un programma in esecuzione su un host remoto che | |server |elabora dati e comunica con i client | |-----------+---------------------------------------------------| |client |un programma eseguito su un host locale connesso al| |applicativo|display dell'utente e ai device di input | +---------------------------------------------------------------+ I server X moderni hanno l'estensione MIT Shared Memory (http:// en.wikipedia.org/wiki/MIT-SHM) e comunicano con i loro client X     locali usando la memoria condivisa locale. Ciò scavalca il canale di comunicazione tra i processi Xlib trasparente alla rete e fa guadagnare in prestazioni per grandi immagini. 7.4. Il server X     Per informazioni sul server X vedere xorg(1). 7.4.1. La (ri)configurazione del server X Nota Il server X (post-lenny) è stato riscritto per usare, per la sua configurazione, più informazioni da servizi standard del sistema     operativo, come HAL (http://it.wikipedia.org/wiki/ Hardware_abstraction_layer) e D-bus (http://it.wikipedia.org/wiki /D-Bus) , piuttosto che dal file "/etc/X11/xorg.conf". Perciò i contenuti del file "/etc/X11/xorg.conf" si sono ridotti. Potrebbe essere necessario aggirare alcuni problemi di transizione del server X (http://wiki.debian.org/XStrikeForce/InputHotplugGuide)     I comandi seguenti (ri)configurano un server X generando un nuovo file "/etc/X11/xorg.conf" usando dexconf(1)     # dpkg-reconfigure --priority=low x11-common # dpkg-reconfigure --priority=low xserver-xorg Se il file "/etc/X11/xorg.conf" è stato modificato manualmente ma     si desidera che venga aggiornato automaticamente, eseguire il comando seguente.     # sudo dpkg-reconfigure -phigh xserver-xorg Controllare attentamente la propria configurazione di X in relazione alle specifiche del proprio monitor. Per alte risoluzioni di monitor CRT, è una buona idea impostare la     frequenza di aggiornamento al valore più alto gestito dal monitor (85 Hz è un valore ottimo, 75 Hz è OK) per ridurre lo sfarfallio. Per i monitor LCD frequenze di aggiornamento standard più basse (60Hz) vanno solitamente bene a causa della risposta più lenta. Nota     Fare attenzione a non usare una frequenza di aggiornamento troppo alta che potrebbe causare danni hardware critici al monitor. 7.4.2. I metodi di connessione al server X     Ci sono diversi modi per far sì che il "server X" (lato display) accetti connessioni da un "client X" (lato applicazione). Tabella 7.3. Elenco di metodi di connessione al server X +--------------------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |utente |cifratura|metodo |uso | | | | | | | |collegato | |-------------------+---------------+----------------------+-----------+---------+-----------+-----------| |xbase-clients |I:244 (http:// | | | | | | |(http:// |qa.debian.org/ |62 (http:// |non | |comando | | |packages.debian.org|popcon.php? |packages.qa.debian.org|controllato|no |xhost |deprecato | |/sid/xbase-clients)|package= |/x/xbase-clients.html)| | | | | | |xbase-clients) | | | | | | |-------------------+---------------+----------------------+-----------+---------+-----------+-----------| |xbase-clients |I:244 (http:// | | | | |connessione| |(http:// |qa.debian.org/ |62 (http:// | | |comando |locale | |packages.debian.org|popcon.php? |packages.qa.debian.org|controllato|no |xauth |attraverso | |/sid/xbase-clients)|package= |/x/xbase-clients.html)| | | |una pipe | | |xbase-clients) | | | | | | |-------------------+---------------+----------------------+-----------+---------+-----------+-----------| |openssh-client |V:547, I:995 | | | | | | |(http:// |(http:// |2357 (http:// | | | |connessione| |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|controllato|sì |comando ssh|di rete | |/sid/ |popcon.php? |/o/ | | |-X |remota | |openssh-client) |package= |openssh-client.html) | | | | | | |openssh-client)| | | | | | |-------------------+---------------+----------------------+-----------+---------+-----------+-----------| | |V:247, I:367 | | | | |connessione| |gdm3 (http:// |(http:// |5890 (http:// | |no |GNOME |locale |     |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|controllato|(XDMCP) |display |attraverso | |/sid/gdm3) |popcon.php? |/g/gdm3.html) | | |manager |una pipe | | |package=gdm3) | | | | | | |-------------------+---------------+----------------------+-----------+---------+-----------+-----------| | |V:69, I:96 | | | | |connessione| |kdm (http:// |(http:// |4302 (http:// | |no |KDE display|locale | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|controllato|(XDMCP) |manager |attraverso | |/sid/kdm) |popcon.php? |/k/kdm.html) | | | |una pipe | | |package=kdm) | | | | | | |-------------------+---------------+----------------------+-----------+---------+-----------+-----------| | |V:5, I:15 | | | |gestore |connessione| |xdm (http:// |(http:// |725 (http:// | |no |dello |locale | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|controllato|(XDMCP) |schermo di |attraverso | |/sid/xdm) |popcon.php? |/x/xdm.html) | | |X |una pipe | | |package=xdm) | | | | | | |-------------------+---------------+----------------------+-----------+---------+-----------+-----------| | |V:197, I:879 | | | | |connessione| |wdm (http:// |(http:// |2072 (http:// | |no |WindowMaker|locale | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|controllato|(XDMCP) |display |attraverso | |/sid/wdm) |popcon.php? |/w/wdm.html) | | |manager |una pipe | | |package=wdm) | | | | | | |-------------------+---------------+----------------------+-----------+---------+-----------+-----------| | |V:0, I:1 (http:| | | | |connessione| |ldm (http:// |//qa.debian.org|592 (http:// | | |LTSP |SSH di rete| |packages.debian.org|/popcon.php? |packages.qa.debian.org|controllato|sì |display |remota | |/sid/ldm) |package=ldm) |/l/ldm.html) | | |manager |(thin | | | | | | | |client) | +--------------------------------------------------------------------------------------------------------+ Avvertimento Non usare connessioni remote TCP (http://it.wikipedia.org/wiki/ Transmission_Control_Protocol) /IP (http://it.wikipedia.org/wiki/     Internet_Protocol) su reti non sicure per la connessione X a meno che non esistano ragioni molto buone per farlo, come l'uso di cifratura. Una connessione remota via socket TCP/IP senza cifratura è esposta ad attacchi di spionaggio ed è disabilitata in modo predefinito nel sistema Debian. Usare "ssh -X". Avvertimento Non usare nemmeno connessioni XDMCP (http://en.wikipedia.org/wiki     /X_display_manager) su reti non sicure. Inviano dati attraverso UDP (http://it.wikipedia.org/wiki/User_Datagram_Protocol) / IP (http://it.wikipedia.org/wiki/Internet_Protocol) senza cifratura e sono esposte ad attacchi di spionaggio. Suggerimento     LTSP sta per Linux Terminal Server Project (progetto per server terminale Linux) (http://it.wikipedia.org/wiki/ Linux_Terminal_Server_Project) . 7.5. Avviare il sistema X Window Il sistema X Window è solitamente avviato come una sessione X (http://en.wikipedia.org/wiki/X_session_manager) , che è la     combinazione di un server X e di client X connessi. Per un normale sistema desktop entrambe le componenti sono eseguite su una macchina.     La sessione X (http://en.wikipedia.org/wiki/X_session_manager) viene avviata in uno dei modi seguenti. * Il comando startx avviato dalla riga di comando     * Uno dei programmi demone display manager per X (http:// en.wikipedia.org/wiki/X_display_manager) , *dm avviati al termine dello script di avvio nella directory "/etc/rc?.d/" (dove "?" corrisponde al runlevel) Suggerimento Lo script di avvio dei demoni display manager controlla il     contenuto del file "/etc/X11/default-display-manager" prima dell'effettivo avvio del demone. ciò assicura che venga attivato un solo programma demone per display manager di X (http:// en.wikipedia.org/wiki/X_display_manager) . Suggerimento     Vedere Sezione 8.3.5, «Localizzazione specifica solamente in X Window» per le variabili d'ambiente iniziali del display manager per X. Essenzialmente tutti questi programmi eseguono lo script "/etc/ X11/Xsession"; poi questo script effettua un'azione simile a     run-parts(8) per eseguire tutti gli script nella directory "/etc/ X11/Xsession.d/". Ciò è fondamentalmente l'esecuzione, con il comando interno exec, del primo programma trovato cercando nell'ordine seguente. 1. Lo script specificato come argomento di "/etc/X11/Xsession" dal display manager di X, se definito. 2. Lo script "~/.xsession" o "~/.Xsession", se definito.     3. Il comando "/usr/bin/x-session-manager", se definito. 4. Il comando "/usr/bin/x-window-manager", se definito. 5. Il comando "/usr/bin/x-terminal-emulator", se definito. Questo processo è influenzato dal contenuto di "/etc/X11/ Xsession.options". I programmi effettivi a cui puntano questi     comandi "/usr/bin/x-*" sono determinati dal sistema di alternative di Debian e possono essere modificati con "update-alternatives --config x-session-manager", ecc. 7.5.1. Avviare la sessione X con gdm3 gdm3(1) permette di selezionare dal suo menu il tipo di sessione (o l'ambiente desktop: Sezione 7.2, «Impostare l'ambiente     desktop») e la lingua (o la localizzazione: Sezione 8.3, «La localizzazione») della sessione X. Archivia il valore selezionato predefinito in "~/.dmrc" nel formato seguente. [Desktop]     Session=default Language=ja_JP.UTF-8 7.5.2. Personalizzare la sessione X (metodo classico) In un sistema in cui "/etc/X11/Xsession.options" contiene una riga "allow-user-xsession" non preceduta da nessun carattere "#, qualsiasi utente che configuri "~/.xsession" o "~/.Xsession" è in     grado di personalizzare il comportamento di "/etc/X11/Xsession" sovrascrivendo completamente il codice del sistema. L'ultimo comando nel file "~/.xsession dovrebbe essere nella forma "exec un-qualche-gestore-di-finestre/sessione" per avviare il proprio gestore di finestre/sessione di X preferito. 7.5.3. Personalizzare la sessione X (metodo nuovo) Quelli che seguono sono metodi nuovi per personalizzare la     sessione X senza sovrascrivere completamente le impostazioni di sistema come nell'esempio precedente. * Il display manager gdm3 può selezionare una specifica sessione ed impostarla come argomento di "/etc/X11/Xsession". * Il file "~/.xsessionrc" è eseguito come parte del processo di avvio. (indipendente dal desktop)     * Il file "~/.gnomerc" è eseguito come parte del processo di avvio (solo desktop GNOME) * Il software di gestione della sessione basata su programma con interfaccia grafica può usare il file "~/.gnome2/ session", ecc. 7.5.4. Connettersi ad un client X remoto via SSH     L'uso di "ssh -X" permette una connessione sicura da un server X locale ad un application server remoto. Impostare le voci "X11Forwarding" a "yes" nel file "/etc/ssh/     sshd_config" dell'host remoto, se si vuole evitare l'opzione "-X" nella riga di comando.     Avviare il server X sull'host locale     Aprire un xterm sull'host locale.     Eseguire ssh(1) per stabilire una connessione con il sito remoto nel modo seguente.     nomelocale @ hostlocale $ ssh -q -X nomelogin@hostremoto.dominio Password:     Eseguire un comando applicativo X, ad esempio "gimp", sul sito remoto nel modo seguente.     nomelogin @ hostremoto $ gimp &     Questo metodo può mostrare l'output da un client X remoto come se fosse connesso localmente attraverso un socket UNIX locale. 7.5.5. Terminale X sicuro via Internet Un terminale X sicuro via Internet, che mostri in remoto l'intero ambiente desktop X, può essere ottenuto facilmente usando     pacchetti specializzati, come ldm. La macchina locale diventa un thin client sicuro per l'application server remoto connesso via SSH. 7.6. Tipi di carattere in X Window Fontconfig 2.0 (http://en.wikipedia.org/wiki/Fontconfig) è stato creato nel 2002 per fornire una libreria indipendente dalla     distribuzione per configurare e personalizzare l'accesso ai tipi di carattere. Debian a partire da squeeze usa Fontconfig 2.0 (http://en.wikipedia.org/wiki/Fontconfig) per la sua configurazione.     Il supporto dei tipi di carattere nel sistema X Window può essere riassunto nel modo seguente. * Sistema datato di supporto dei tipi di carattere dal lato server X o Il sistema originale base di X per i caratteri fornisce la compatibilità all'indietro per le versioni più vecchie dei client X. o I tipi di carattere originali base di X11 sono installati nel server X. * Sistema moderno di supporto dei tipi di carattere dal lato client X o Il sistema X moderno supporta tutti i tipi di carattere elencati in seguito (Sezione 7.6.1, «Tipi di carattere base», Sezione 7.6.2, «Tipi di carattere aggiuntivi» e Sezione 7.6.3, «Tipi di carattere CJK») con funzionalità avanzate come l'anti-aliasing. o Xft (http://it.wikipedia.org/wiki/Xft) 2.0 connette applicazioni X moderne come quelle di GNOME (http:// it.wikipedia.org/wiki/GNOME) , KDE (http://     it.wikipedia.org/wiki/KDE) e LibreOffice (http:// it.wikipedia.org/wiki/LibreOffice) con la libreria FreeType (http://freetype.sourceforge.net/index.html) 2.0. o FreeType (http://freetype.sourceforge.net/index.html) 2.0 fornisce la libreria per la rasterizzazione dei tipi di carattere. o Fontconfig (http://en.wikipedia.org/wiki/Fontconfig) fornisce la risoluzione delle specifiche per i tipi di carattere per Xft (http://it.wikipedia.org/wiki/Xft) 2.0. Per la sua configurazione vedere fonts.conf(5). o tutte le moderne applicazioni che usano Xft (http:// it.wikipedia.org/wiki/Xft) 2.0 possono comunicare con i server X moderni usando l'estensione X Rendering Extension (http://en.wikipedia.org/wiki/XRender) . o La X Rendering Extension (http://en.wikipedia.org/wiki/ XRender) sposta l'accesso ai tipi di carattere e la generazione delle immagini per i glifi dal server X al client X. Tabella 7.4. Tabella dei pacchetti che supportano i sistemi dei tipi di carattere in X Window +---------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+------------------+-----------------------+------------------------| |xfonts-utils (http:|V:78, I:731 (http:|430 (http:// |programmi di utilità del| |// |//qa.debian.org/ |packages.qa.debian.org/|sistema X Window per i | |packages.debian.org|popcon.php?package|x/xfonts-utils.html) |tipi di carattere | |/sid/xfonts-utils) |=xfonts-utils) | | | |-------------------+------------------+-----------------------+------------------------| | |V:136, I:795 | |Xft, una libreria che | |libxft2 (http:// |(http:// |137 (http:// |connette le applicazioni| |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/|X con la libreria di | |/sid/libxft2) |popcon.php?package|libx/libxft2.html) |rasterizzazione dei | | |=libxft2) | |caratteri FreeType | |-------------------+------------------+-----------------------+------------------------| | |V:602, I:976 | |libreria di | |libfreetype6 (http:|(http:// |835 (http:// |rasterizzazione dei tipi| |// |qa.debian.org/ |packages.qa.debian.org/|di carattere FreeType |     |packages.debian.org|popcon.php?package|libf/libfreetype6.html)|(http:// | |/sid/libfreetype6) |=libfreetype6) | |freetype.sourceforge.net| | | | |/index.html) 2.0 | |-------------------+------------------+-----------------------+------------------------| | | | |Fontconfig (http:// | | |V:344, I:781 | |en.wikipedia.org/wiki/ | |fontconfig (http://|(http:// |506 (http:// |Fontconfig) , una | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/|libreria generica per la| |/sid/fontconfig) |popcon.php?package|f/fontconfig.html) |configurazione dei tipi | | |=fontconfig) | |di caratteri - binari di| | | | |supporto | |-------------------+------------------+-----------------------+------------------------| | |V:393, I:860 | |Fontconfig (http:// | |fontconfig-config |(http:// |395 (http:// |en.wikipedia.org/wiki/ | |(http:// |qa.debian.org/ |packages.qa.debian.org/|Fontconfig) , una | |packages.debian.org|popcon.php?package|f/ |libreria generica per la| |/sid/ |= |fontconfig-config.html)|configurazione dei tipi | |fontconfig-config) |fontconfig-config)| |di caratteri - dati di | | | | |configurazione | +---------------------------------------------------------------------------------------+     È possibile controllare le informazioni sulla configurazione dei tipi di carattere nei modi seguenti. * "xset q" per il percorso dei tipi di carattere base di X11 * "fc-match" per le impostazioni predefinite per i tipi di     carattere di fontconfig * "fc-list" per l'elenco dei tipi di carattere di fontconfig disponibili Suggerimento "The Penguin and Unicode (http://unifont.org/iuc27/html/ ICUPresentation.html) " è una buona panoramica sul sistema X Window moderno. Altra documentazione all'indirizzo http://     unifont.org/ (http://unifont.org/) dovrebbe fornire buone informazioni su tipi di carattere Unicode, software che gestisce Unicode, internazionalizzazione e problematiche correlate all'uso di Unicode su sistemi operativi free/libre/liberi/open source (FLOSS) (http://it.wikipedia.org/wiki/ Free_and_Open_Source_Software) . 7.6.1. Tipi di carattere base     Ci sono due tipi principali di caratteri per computer (http:// en.wikipedia.org/wiki/Computer_font) . * I tipi di carattere bitmap (buoni per rasterizzazione a basse risoluzioni)     * Tipi di carattere outline/stroke (buoni per rasterizzazione ad alte risoluzioni) Mentre il ridimensionamento dei caratteri bitmap causa immagini     dentellate, il ridimensionamento dei caratteri outline/stroke produce un'immagine pulita. I caratteri bitmap nel sistema Debian sono di solito forniti da     file di caratteri bitmap pcf per X11 (http:// fontforge.sourceforge.net/pcf-format.html) compressi, la cui estensione è ".pcf.gz".     I caratteri outline nel sistema Debian sono forniti dai tipi seguenti. * File di caratteri PostScript (http://it.wikipedia.org/wiki/ PostScript) Type 1, la cui estensione è ".pfb" (file di caratteri binario) e ".afm" (file della metrica dei     caratteri). * File di caratteri TrueType (http://it.wikipedia.org/wiki/ TrueType) (o OpenType (http://it.wikipedia.org/wiki/OpenType) ), la cui estensione è normalmente ".ttf". Suggerimento     OpenType (http://it.wikipedia.org/wiki/OpenType) è pensato per rendere superati sia TrueType (http://it.wikipedia.org/wiki/ TrueType) sia PostScript (http://it.wikipedia.org/wiki/ PostScript) Type 1. Tabella 7.5. Tabella dei tipi di carattere PostScript (http:// it.wikipedia.org/wiki/PostScript) Type 1 +------------------------------------------------------------------------------------------------------------------------------+ |pacchetto con i |popcon |dimensione |carattere sans |carattere serif |carattere |origine del | |caratteri | | |serif | |monospace |carattere | |-------------------+-------------+----------------------+----------------+----------------+----------------+------------------| | | | |Helvetica (http:|Times (http:// |Courier (http://| | |PostScript |N/D |N/D |// |it.wikipedia.org|it.wikipedia.org|Adobe | | | | |en.wikipedia.org|/wiki/ |/wiki/Courier) | | | | | |/wiki/Helvetica)|Times_Roman) | | | |-------------------+-------------+----------------------+----------------+----------------+----------------+------------------| | |V:163, I:707 | | | | |URW (http:// | |gsfonts (http:// |(http:// |4632 (http:// | | | |www.math.utah.edu/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Nimbus Sans L |Nimbus Roman No9|Nimbus Mono L |~beebe/fonts/ | |/sid/gsfonts) |/popcon.php? |/g/gsfonts.html) | |L | |urw.html) | | |package= | | | | |(dimensione | | |gsfonts) | | | | |Adobe-compatibile)| |-------------------+-------------+----------------------+----------------+----------------+----------------+------------------|     | |I:217 (http:/| | | | | | |gsfonts-x11 (http:/|/ |68 (http:// | | | |supporto per i | |/ |qa.debian.org|packages.qa.debian.org|Nimbus Sans L |Nimbus Roman No9|Nimbus Mono L |caratteri per X | |packages.debian.org|/popcon.php? |/g/gsfonts-x11.html) | |L | |con caratteri | |/sid/gsfonts-x11) |package= | | | | |PostScript Type 1 | | |gsfonts-x11) | | | | | | |-------------------+-------------+----------------------+----------------+----------------+----------------+------------------| |t1-cyrillic (http:/|I:25 (http://| | | | | | |/ |qa.debian.org|4834 (http:// | | | |URW esteso | |packages.debian.org|/popcon.php? |packages.qa.debian.org|Free Helvetian |Free Times |Free Courier |(dimensione | |/sid/t1-cyrillic) |package= |/t/t1-cyrillic.html) | | | |Adobe-compatibile)| | |t1-cyrillic) | | | | | | |-------------------+-------------+----------------------+----------------+----------------+----------------+------------------| | |I:162 (http:/| | | | |caratteri | |lmodern (http:// |/ |32873 (http:// | | | |PostScript e | |packages.debian.org|qa.debian.org|packages.qa.debian.org|LMSans* |LMRoman* |LMTypewriter* |OpenType scalabili| |/sid/lmodern) |/popcon.php? |/l/lmodern.html) | | | |basati su Computer| | |package= | | | | |Modern (da TeX) | | |lmodern) | | | | | | +------------------------------------------------------------------------------------------------------------------------------+ Tabella 7.6. Tabella dei tipi di carattere TrueType (http:// it.wikipedia.org/wiki/TrueType) +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ |pacchetto con i caratteri |popcon |dimensione |carattere sans |carattere serif |carattere |origine del carattere | | | | |serif | |monospace | | |--------------------------+--------------------------+-------------------------------+----------------+----------------+----------------+----------------------| |ttf-mscorefonts-installer |V:2, I:101 (http:// | | |Times New Roman |Courier New |Microsoft (dimensione | |(http:// |qa.debian.org/popcon.php? |124 (http:// |Arial (http:// |(http:// |(http:// |Adobe-compatibile) | |packages.debian.org/sid/ |package= |packages.qa.debian.org/t/ |it.wikipedia.org|it.wikipedia.org|it.wikipedia.org|(Installa dati non | |ttf-mscorefonts-installer)|ttf-mscorefonts-installer)|ttf-mscorefonts-installer.html)|/wiki/Arial) |/wiki/ |/wiki/Courier) |liberi) | | | | | |Times_Roman) | | | |--------------------------+--------------------------+-------------------------------+----------------+----------------+----------------+----------------------| | | | | | | |Progetto Liberation | |fonts-liberation (http:// |I:408 (http:// |2117 (http:// | | | |Fonts (http:// | |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/f/ |Liberation Sans |Liberation Serif|Liberation Mono |it.wikipedia.org/wiki/| |fonts-liberation) |package=fonts-liberation) |fonts-liberation.html) | | | |Liberation_(font)) | | | | | | | |(dimensione | | | | | | | |Microsoft-compatibile)| |--------------------------+--------------------------+-------------------------------+----------------+----------------+----------------+----------------------| | |V:142, I:294 (http:// | | | | |GNU freefont (http:// | |fonts-freefont-ttf (http:/|qa.debian.org/popcon.php? |10720 (http:// | | | |savannah.gnu.org/ | |/packages.debian.org/sid/ |package= |packages.qa.debian.org/f/ |FreeSans |FreeSerif |FreeMono |projects/freefont/) | |fonts-freefont-ttf) |fonts-freefont-ttf) |fonts-freefont-ttf.html) | | | |(dimensione | | | | | | | |Microsoft-compatibile)| |--------------------------+--------------------------+-------------------------------+----------------+----------------+----------------+----------------------| | | | | | | |DejaVu (http:// | |ttf-dejavu (http:// |I:665 (http:// |54 56 (http:// | | | |dejavu-fonts.org) , | |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/t/ |DejaVu Sans |DejaVu Serif |DejaVu Sans Mono|Bitstream Vera (http:/| |ttf-dejavu) |package=ttf-dejavu) |ttf-dejavu.html) | | | |/www.gnome.org/fonts/)|     | | | | | | |con copertura di | | | | | | | |Unicode | |--------------------------+--------------------------+-------------------------------+----------------+----------------+----------------+----------------------| | | | | | | |DejaVu (http:// | | | | | | | |dejavu-fonts.org) , | | | | | | | |Bitstream Vera (http:/| |ttf-dejavu-core (http:// |V:376, I:841 (http:// |66 2804 (http:// | | | |/www.gnome.org/fonts/)| |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/t/ |DejaVu Sans |DejaVu Serif |DejaVu Sans Mono|con copertura di | |ttf-dejavu-core) |package=ttf-dejavu-core) |ttf-dejavu-core.html) | | | |Unicode (sans, | | | | | | | |sans-bold, serif, | | | | | | | |serif-bold, mono, | | | | | | | |mono-bold) | |--------------------------+--------------------------+-------------------------------+----------------+----------------+----------------+----------------------| | | | | | | |DejaVu (http:// | | | | | | | |dejavu-fonts.org) , | | | | | | | |Bitstream Vera (http:/| |ttf-dejavu-extra (http:// |I:675 (http:// |67 6437 (http:// | | | |/www.gnome.org/fonts/)| |packages.debian.org/sid/ |qa.debian.org/popcon.php? |packages.qa.debian.org/t/ |N/D |N/D |N/D |with Unicode coverage | |ttf-dejavu-extra) |package=ttf-dejavu-extra) |ttf-dejavu-extra.html) | | | |(oblique, italic, | | | | | | | |bold-oblique, | | | | | | | |bold-italic, | | | | | | | |condensed) | |--------------------------+--------------------------+-------------------------------+----------------+----------------+----------------+----------------------| | | | | | | |GNU Unifont (http:// | | | | | | | |Unifoundry.com) , con | |ttf-unifont (http:// |I:31 (http://qa.debian.org|13156 (http:// | | | |tutti i codici di | |packages.debian.org/sid/ |/popcon.php?package= |packages.qa.debian.org/t/ |N/D |N/D |unifont |carattere stampabili | |ttf-unifont) |ttf-unifont) |ttf-unifont.html) | | | |in Unicode 5.1 BMP | | | | | | | |(Basic Multilingual | | | | | | | |Plane) | +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ Suggerimento     I tipi di carattere DejaVu (http://dejavu-fonts.org) sono basati sui caratteri Bitstream Vera (http://www.gnome.org/fonts/) di cui sono un sovrainsieme. 7.6.2. Tipi di carattere aggiuntivi     aptitude(8) aiuta a trovare facilmente caratteri aggiuntivi. * Il corto elenco di pacchetti in "Task" → "Localizzazione" * L'elenco unico dei pacchetti filtrato per i dati dei tipi di carattere usando un'espressione regolare sui debtag: "~Gmade-of::data:font"     * L'elenco unico dei pacchetti filtrato per i pacchetti con caratteri BDF (bitmap) usando un'espressione regolare sui nomi di pacchetto: "~nxfonts-" * L'elenco unico dei pacchetti filtrato per i pacchetti con caratteri TrueType (outline) usando un'espressione regolare sui nomi di pacchetto: "~nttf-" Dato che i tipi di carattere Liberi sono a volte limitati,     l'installazione o la condivisione di caratteri TrueType commerciali è un'opzione da considerare per un utente Debian. Per facilitare ciò sono stati creati alcuni pacchetti di comodo. * ttf-mathematica4.1     * ttf-mscorefonts-installer Si avrà un'ottima selezione di caratteri TrueType al prezzo della     contaminazione del proprio sistema Libero con tipi di carattere non-Liberi. 7.6.3. Tipi di carattere CJK In questa sezione ci sono alcune nozioni fondamentali centrate     sull'uso di tipi di carattere con caratteri CJK (http:// it.wikipedia.org/wiki/Caratteri_CJK) . Tabella 7.7. Tabella delle parole chiave usate nei nomi dei tipi di carattere CJK per indicarne il tipo +---------------------------------------------------------------+ |tipologia |nome del tipo di |nome del tipo di|nome del tipo di| |del |carattere in |carattere in |carattere in |     |carattere |giapponese |cinese |coreano | |----------+------------------+----------------+----------------| |sans-serif|gothic, ゴチック |hei, gothic |dodum, gulim, | | | | |gothic | |----------+------------------+----------------+----------------| |serif |mincho, 明朝 |song, ming |batang | +---------------------------------------------------------------+ I tipi di carattere con nomi come "VL PGothic", dove la "P" sta     per carattere proporzionale, sono la versione proporzionale dei corrispondenti caratteri a spaziatura fissa, come "VL Gothic". Per esempio la tabella dei codici Shift_JIS (http://     it.wikipedia.org/wiki/Shift_JIS) comprende 7070 caratteri che possono essere raggruppati nel modo seguente. * Caratteri a byte-singolo JIS X 0201 (191 caratteri, alias caratteri a mezza larghezza)     * Caratteri a doppio-byte JIS X 0208 (6879 caratteri, alias caratteri a piena larghezza) I caratteri a doppio-byte occupano, nei terminali console che usano tipi di carattere CJK a spaziatura fissa, una larghezza     doppia. Per gestire tale situazione, possono essere usati i file HBF (Hanzi Bitmap Font) (http://www.ibiblio.org/pub/packages/ccic /software/info/HBF-1.1/) , con estensione ".hbf", per avere tipi di carattere contententi caratteri a byte-singolo e doppio-byte. Per risparmiare spazio, per i file di caratteri TrueType (http://     it.wikipedia.org/wiki/TrueType) , si possono usare file con raccolte di tipi di carattere TrueType (http://it.wikipedia.org/ wiki/TrueType) con estensione ".ttc. Per gestire complesse spaziature dei caratteri, i tipi di carattere PostScript (http://it.wikipedia.org/wiki/PostScript)     CID Type 1 sono usati con file CMap che iniziano con "%! PS-Adobe-3.0 Resource-CMap". Ciò viene raramente usato per il normale display X, ma è usato per la resa in file PDF, ecc. (vedere Sezione 7.7.2, «Applicazioni di utilità per X»). Suggerimento Per alcuni punti della codifica Unicode (http://it.wikipedia.org/ wiki/Unicode) sono presenti glifi (http://en.wikipedia.org/wiki/ Glyph) multipli, a causa della unificazione Han (http://     en.wikipedia.org/wiki/Han_unification) . Un esmpio di glifi più problematici sono "U+3001 IDEOGRAPHIC COMMA" e "U+3002 IDEOGRAPHIC FULL STOP" la cui posizione è diversa tra le nazioni CJK. La configurazione della priorità dei caratteri pensati per il giapponese, rispetto a quelli cinesi, usando " ~/.fonts.conf" dovrebbe dare un po' di pace agli utenti giapponesi. 7.7. Applicazioni per X 7.7.1. Applicazioni da ufficio per X     Ecco un elenco di applicazioni base per l'ufficio (LO è LibreOffice). Tabella 7.8. Elenco di applicazioni base da ufficio per X +---------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione del pacchetto |tipo |descrizione | |--------------------+--------------------+-------------------------+-----+-------------| |libreoffice-writer |V:262, I:369 (http:/|26388 (http:// | | | |(http:// |/qa.debian.org/ |packages.qa.debian.org/ | |elaboratore | |packages.debian.org/|popcon.php?package= |libr/ |LO |di testi | |sid/ |libreoffice-writer) |libreoffice-writer.html) | | | |libreoffice-writer) | | | | | |--------------------+--------------------+-------------------------+-----+-------------| |libreoffice-calc |V:259, I:366 (http:/|20081 (http:// | | | |(http:// |/qa.debian.org/ |packages.qa.debian.org/ | |foglio di | |packages.debian.org/|popcon.php?package= |libr/ |LO |calcolo | |sid/ |libreoffice-calc) |libreoffice-calc.html) | | | |libreoffice-calc) | | | | | |--------------------+--------------------+-------------------------+-----+-------------| |libreoffice-impress |V:256, I:362 (http:/|3516 (http:// | | | |(http:// |/qa.debian.org/ |packages.qa.debian.org/ | | | |packages.debian.org/|popcon.php?package= |libr/ |LO |presentazioni| |sid/ |libreoffice-impress)|libreoffice-impress.html)| | | |libreoffice-impress)| | | | | |--------------------+--------------------+-------------------------+-----+-------------| |libreoffice-base |V:252, I:356 (http:/|7884 (http:// | | | |(http:// |/qa.debian.org/ |packages.qa.debian.org/ | |gestione di | |packages.debian.org/|popcon.php?package= |libr/ |LO |database | |sid/ |libreoffice-base) |libreoffice-base.html) | | | |libreoffice-base) | | | | | |--------------------+--------------------+-------------------------+-----+-------------| |libreoffice-draw |V:256, I:363 (http:/|9875 (http:// | |editor di | |(http:// |/qa.debian.org/ |packages.qa.debian.org/ | |grafica | |packages.debian.org/|popcon.php?package= |libr/ |LO |vettoriale | |sid/ |libreoffice-draw) |libreoffice-draw.html) | |(draw) | |libreoffice-draw) | | | | | |--------------------+--------------------+-------------------------+-----+-------------| |libreoffice-math |V:259, I:366 (http:/|1393 (http:// | |editor di | |(http:// |/qa.debian.org/ |packages.qa.debian.org/ | |equazioni | |packages.debian.org/|popcon.php?package= |libr/ |LO |matematiche e| |sid/ |libreoffice-math) |libreoffice-math.html) | |formule | |libreoffice-math) | | | | | |--------------------+--------------------+-------------------------+-----+-------------| |abiword (http:// |V:30, I:64 (http:// |5768 (http:// | | | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/a/|GNOME|elaboratore | |sid/abiword) |popcon.php?package= |abiword.html) | |di testi | | |abiword) | | | | |--------------------+--------------------+-------------------------+-----+-------------| |gnumeric (http:// |V:34, I:70 (http:// |6968 (http:// | | | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/g/|GNOME|foglio di | |sid/gnumeric) |popcon.php?package= |gnumeric.html) | |calcolo | | |gnumeric) | | | | |--------------------+--------------------+-------------------------+-----+-------------| |gimp (http:// |V:112, I:506 (http:/|15404 (http:// | |editor di | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/g/|GTK |grafica | |sid/gimp) |popcon.php?package= |gimp.html) | |bitmap | | |gimp) | | |(paint) |     |--------------------+--------------------+-------------------------+-----+-------------| |inkscape (http:// |V:124, I:401 (http:/|79244 (http:// | |editor di | |packages.debian.org/|/qa.debian.org/ |packages.qa.debian.org/i/|GNOME|grafica | |sid/inkscape) |popcon.php?package= |inkscape.html) | |vettoriale | | |inkscape) | | |(draw) | |--------------------+--------------------+-------------------------+-----+-------------| |dia-gnome (http:// |V:10, I:19 (http:// |609 (http:// | |editor di | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/d/|GNOME|grafi e | |sid/dia-gnome) |popcon.php?package= |dia-gnome.html) | |diagrammi di | | |dia-gnome) | | |flusso | |--------------------+--------------------+-------------------------+-----+-------------| |planner (http:// |V:3, I:13 (http:// |1247 (http:// | | | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/p/|GNOME|gestione | |sid/planner) |popcon.php?package= |planner.html) | |progetti | | |planner) | | | | |--------------------+--------------------+-------------------------+-----+-------------| |calligrawords (http:|V:1, I:11 (http:// |5852 (http:// | | | |// |qa.debian.org/ |packages.qa.debian.org/c/|KDE |elaboratore | |packages.debian.org/|popcon.php?package= |calligrawords.html) | |di testi | |sid/calligrawords) |calligrawords) | | | | |--------------------+--------------------+-------------------------+-----+-------------| |calligrasheets |V:2, I:11 (http:// |13533 (http:// | | | |(http:// |qa.debian.org/ |packages.qa.debian.org/c/|KDE |foglio di | |packages.debian.org/|popcon.php?package= |calligrasheets.html) | |calcolo | |sid/calligrasheets) |calligrasheets) | | | | |--------------------+--------------------+-------------------------+-----+-------------| |calligrastage (http:|V:1, I:11 (http:// |4366 (http:// | | | |// |qa.debian.org/ |packages.qa.debian.org/c/|KDE |presentazioni| |packages.debian.org/|popcon.php?package= |calligrastage.html) | | | |sid/calligrastage) |calligrastage) | | | | |--------------------+--------------------+-------------------------+-----+-------------| |calligraplan (http:/|V:0, I:11 (http:// |7578 (http:// | | | |/packages.debian.org|qa.debian.org/ |packages.qa.debian.org/c/|KDE |gestione | |/sid/calligraplan) |popcon.php?package= |calligraplan.html) | |progetti | | |calligraplan) | | | | |--------------------+--------------------+-------------------------+-----+-------------| |calligraflow (http:/|V:0, I:11 (http:// |480 (http:// | |editor di | |/packages.debian.org|qa.debian.org/ |packages.qa.debian.org/c/|KDE |grafi e | |/sid/calligraflow) |popcon.php?package= |calligraflow.html) | |diagrammi di | | |calligraflow) | | |flusso | |--------------------+--------------------+-------------------------+-----+-------------| |kexi (http:// |V:2, I:15 (http:// |9127 (http:// | | | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/k/|KDE |gestione di | |sid/kexi) |popcon.php?package= |kexi.html) | |database | | |kexi) | | | | |--------------------+--------------------+-------------------------+-----+-------------| |karbon (http:// |V:3, I:14 (http:// |2650 (http:// | |editor di | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/k/|KDE |grafica | |sid/karbon) |popcon.php?package= |karbon.html) | |vettoriale | | |karbon) | | |(draw) | |--------------------+--------------------+-------------------------+-----+-------------| |krita (http:// |V:2, I:17 (http:// |19607 (http:// | |editor di | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/k/|KDE |grafica | |sid/krita) |popcon.php?package= |krita.html) | |bitmap | | |krita) | | |(paint) | +---------------------------------------------------------------------------------------+ 7.7.2. Applicazioni di utilità per X     Ecco un elenco di utilità base che hanno attirato la mia attenzione. Tabella 7.9. Elenco di applicazioni base di utilità per X +-----------------------------------------------------------------------------+ |pacchetto |popcon |dimensione del |tipo |descrizione | | | |pacchetto | | | |-------------------+-------------+----------------------+-----+--------------| | |V:268, I:436 | | | | |evince (http:// |(http:// |1102 (http:// | |visualizzatore| |packages.debian.org|qa.debian.org|packages.qa.debian.org|GNOME|di documenti | |/sid/evince) |/popcon.php? |/e/evince.html) | |(pdf) | | |package= | | | | | |evince) | | | | |-------------------+-------------+----------------------+-----+--------------| | |V:63, I:109 | | | | |okular (http:// |(http:// |3348 (http:// | |visualizzatore| |packages.debian.org|qa.debian.org|packages.qa.debian.org|KDE |di documenti | |/sid/okular) |/popcon.php? |/o/okular.html) | |(pdf) | | |package= | | | | | |okular) | | | | |-------------------+-------------+----------------------+-----+--------------| | |V:7, I:31 | | |convertitore e| |calibre (http:// |(http:// |34878 (http:// | |gestione di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|KDE |una biblioteca| |/sid/calibre) |/popcon.php? |/c/calibre.html) | |per libri | | |package= | | |elettronici | | |calibre) | | | | |-------------------+-------------+----------------------+-----+--------------| | |V:4, I:20 | | | | |fbreader (http:// |(http:// |2968 (http:// | | | |packages.debian.org|qa.debian.org|packages.qa.debian.org|GTK |Lettori di | |/sid/fbreader) |/popcon.php? |/f/fbreader.html) | |ebook | | |package= | | | | | |fbreader) | | | | |-------------------+-------------+----------------------+-----+--------------| | |V:71, I:386 | | |gestione di | |evolution (http:// |(http:// |5568 (http:// | |informazioni | |packages.debian.org|qa.debian.org|packages.qa.debian.org|GNOME|personali | |/sid/evolution) |/popcon.php? |/e/evolution.html) | |(groupware e | | |package= | | |posta | | |evolution) | | |elettronica) | |-------------------+-------------+----------------------+-----+--------------| | |V:6, I:49 | | |gestione di | |kontact (http:// |(http:// |1554 (http:// | |informazioni | |packages.debian.org|qa.debian.org|packages.qa.debian.org|KDE |personali | |/sid/kontact) |/popcon.php? |/k/kontact.html) | |(groupware e | | |package= | | |posta | | |kontact) | | |elettronica) | |-------------------+-------------+----------------------+-----+--------------|     | |V:17, I:33 | | | | |scribus (http:// |(http:// |56876 (http:// | |editor di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|KDE |impaginazione | |/sid/scribus) |/popcon.php? |/s/scribus.html) | |per il desktop| | |package= | | | | | |scribus) | | | | |-------------------+-------------+----------------------+-----+--------------| | |V:1, I:6 | | | | |glabels (http:// |(http:// |1273 (http:// | | | |packages.debian.org|qa.debian.org|packages.qa.debian.org|GNOME|editor di | |/sid/glabels) |/popcon.php? |/g/glabels.html) | |etichette | | |package= | | | | | |glabels) | | | | |-------------------+-------------+----------------------+-----+--------------| | |V:5, I:19 | | | | |gnucash (http:// |(http:// |6045 (http:// | | | |packages.debian.org|qa.debian.org|packages.qa.debian.org|GNOME|contabilità | |/sid/gnucash) |/popcon.php? |/g/gnucash.html) | |personale | | |package= | | | | | |gnucash) | | | | |-------------------+-------------+----------------------+-----+--------------| | |V:0, I:3 | | | | |homebank (http:// |(http:// |759 (http:// | | | |packages.debian.org|qa.debian.org|packages.qa.debian.org|GTK |contabilità | |/sid/homebank) |/popcon.php? |/h/homebank.html) | |personale | | |package= | | | | | |homebank) | | | | |-------------------+-------------+----------------------+-----+--------------| | |V:1, I:5 | | | | |kmymoney (http:// |(http:// |9276 (http:// | | | |packages.debian.org|qa.debian.org|packages.qa.debian.org|KDE |contabilità | |/sid/kmymoney) |/popcon.php? |/k/kmymoney.html) | |personale | | |package= | | | | | |kmymoney) | | | | |-------------------+-------------+----------------------+-----+--------------| | |V:44, I:327 | | | | |shotwell (http:// |(http:// |5660 (http:// | |organizzatore | |packages.debian.org|qa.debian.org|packages.qa.debian.org|GTK |di foto | |/sid/shotwell) |/popcon.php? |/s/shotwell.html) | |digitali | | |package= | | | | | |shotwell) | | | | |-------------------+-------------+----------------------+-----+--------------| | |V:33, I:248 | | | | |xsane (http:// |(http:// |763 (http:// | | | |packages.debian.org|qa.debian.org|packages.qa.debian.org|GTK |frontend per | |/sid/xsane) |/popcon.php? |/x/xsane.html) | |lo scanner | | |package= | | | | | |xsane) | | | | +-----------------------------------------------------------------------------+ Attenzione     Per far sì che evince e okular visualizzino documenti PDF CJK usando dati Cmap (Sezione 7.6.3, «Tipi di carattere CJK»), deve essere installato il pacchetto poppler-data (precedentemente non libero, vedere Sezione 11.3.1, «Ghostscript»). Nota L'installazione di software come scribus (KDE) nell'ambiente     desktop GNOME è piuttosto accettabile dato che le funzionalità corrispondenti non sono disponibili in GNOME. Tuttavia l'installazione di troppi pacchetti con le stesse funzionalità ingombra il menu. 7.8. Informazioni varie su X 7.8.1. Mappatura della tastiera e dei pulsanti del dispositivo di puntamento in X xmodmap(1) è un'utilità per modificare mappature di tastiera e dei pulsanti del dispositivo di puntamento nel sistema X Window. Per ottenere il codice dei tasti, eseguire xev(1) in X e premere     i tasti. Per capire il significato di keysym, guardare la definizione di MACRO nel file "/usr/include/X11/keysymdef.h" (pacchetto x11proto-core-dev). Tutte le dichiarazioni "#define" in questo file hanno un nome che inizia con "XK_" che è seguito da i nomi keysym. 7.8.2. Client X classici La maggior parte dei programmi client X tradizionali, come xterm     (1), può essere avviata con un insieme di opzioni a riga di comando standard per specificare la geometria, il tipo di carattere e il display. Usano anche il database delle risorse X per configurare il loro aspetto. I valori predefiniti a livello di sistema delle risorse     X sono memorizzati in "/etc/X11/Xresources/*" e i valori predefiniti per le singole applicazioni sono memorizzati in "/etc /X11/app-defaults/*". Usare queste impostazioni come punto di partenza. Il file "~/.Xresources" viene usato per memorizzare valori specifici dell'utente per le risorse. Questo file viene     automaticamente unito ai valori predefiniti delle risorse X al momento del login. Per fare cambiamenti a queste impostazioni e rendere attivo immediatamente il loro effetto, unire le loro impostazioni al database usando il comando seguente.     $ xrdb -merge ~/.Xresources     Vedere x(7) e xrdb(1). 7.8.3. L'emulatore di terminale per X - xterm Si può imparare tutto ciò che c'è da sapere su xterm(1)     all'indirizzo http://dickey.his.com/xterm/xterm.faq.html (http:// invisible-island.net/xterm/xterm.faq.html) . 7.8.4. Eseguire client X come root Avvertimento Non avviare mai il gestore di display/sessione X dall'account root digitando "root al prompt di un display manager come gdm3,     perché è considerato rischioso (non sicuro), anche quando si ha in mente di eseguire attività di amministrazione del sistema. L'intera architettura X è considerata non sicura se eseguita come utente root. Bisogna sempre utilizzare il livello di privilegi più basso possibile, come un account di un utente regolare.     Un modo facile di eseguire un particolare client X, ad esempio "pippo", come root è l'uso di sudo(8) ecc., nel modo seguente.     $ sudo pippo &     $ sudo -s # pippo &     $ gksu pippo &     $ ssh -X root@localhost # pippo & Attenzione     L'uso di ssh(1) solo per questo scopo, come nell'esempio precedente, è uno spreco di risorse.     Per fare sì che il client X si connetta al server X, tenere a mente quanto segue. * I valori delle variabili d'ambiente "$XAUTHORITY" e "$DISPLAY" del vecchio utente devono essere copiati nelle     variabili del nuovo utente. * Il nuovo utente deve avere i permessi di lettura per il file a cui punta la variabile d'ambiente "$XAUTHORITY". Il pacchetto gksu (popcon: V:143, I:480) è un pacchetto specializzato, con interfaccia utente grafica GTK+, per ottenere i privilegi di root. Può essere configurato per usare su(1) o     sudo(8) come backend, a seconda della chiave di gconf "/apps/gksu /sudo-mode". Si può modificare la chiave di gconf usando gconf-editor(1) (menu: "Applicazioni" → "Strumenti di sistema" → "Editor della configurazione"). Capitolo 8. I18N e L10N Il supporto per le lingue native o M17N (Multilingualization)     (http://it.wikipedia.org/wiki/ Internazionalizzazione_e_localizzazione) per un software applicativo è ottenuto in 2 passi. * L'internazionalizzazione (I18N): per rendere un software capace di gestire potenzialmente localizzazioni multiple.     * Localizzazione (L10N): per fare gestire dal software una localizzazione specifica. Suggerimento     Ci sono 17, 18 o 10 lettere tra le lettere "m" e "n", "i" e "n" o "l" e "n" in, rispettivamente, "multilingualization", "internazionalization" e "localization" che sono i termini inglesi corrispondenti a M17N, I18N e L10N. Il software moderno, come GNOME e KDE ha il supporto per le lingue native. È internazionalizzato rendendolo capace di gestire dati UTF-8 (http://it.wikipedia.org/wiki/UTF-8) e localizzato     fornendo i messaggi tradotti attraverso l'infrastruttura gettext (1). I messaggi tradotti possono essere forniti in pacchetti separati di localizzazione e possono essere selezionati semplicemente impostando al valore di localizzazione appropriato le variabili d'ambiente pertinenti. La più semplice rappresentazione di dati testuali è ASCII che è sufficiente per l'inglese ed usa meno di 127 caratteri (rappresentabili con 7 bit). Al fine di supportare molti più     caratteri per il supporto internazionale, sono stati inventati molti sistemi di codifica dei caratteri. Il sistema di codifica moderno e intelligente è UTF-8 che può in pratica gestire tutti i caratteri conosciuti (vedere Sezione 8.3.1, «Nozioni base sulla codifica»).     Vedere Introduzione all'i18n (http://www.debian.org/doc/manuals/ intro-i18n/) per i dettagli.     Il supporto internazionale per l'hardware viene abilitato con dati di configurazione dell'hardware localizzati. 8.1. L'input da tastiera     Il sistema Debian può essere configurato per funzionare con molte disposizioni di tastiera internazionali. Tabella 8.1. Elenco di metodi di riconfigurazione della tastiera +----------------------------------------------------------+ |ambiente |comando |     |-------------+--------------------------------------------| |Console Linux|dpkg-reconfigure --priority=low console-data| |-------------+--------------------------------------------| |X Window |dpkg-reconfigure --priority=low xserver-xorg| +----------------------------------------------------------+ Ciò supporta l'input da tastiera per i caratteri accentati di molte lingue Europee tramite la funzione dead-key. Per le lingue     asiatiche, è necessario il supporto per metodi di input (http:// en.wikipedia.org/wiki/Input_method) più complessi, come IBus (http://en.wikipedia.org/wiki/Intelligent_Input_Bus) che sarà trattato in seguito. 8.1.1. Il supporto per metodo di input con IBus La configurazione dell'input per più lingue per il sistema Debian     è semplificato dall'uso della famiglia di pacchetti IBus (http:// en.wikipedia.org/wiki/Intelligent_Input_Bus) con il pacchetto im-config. Quello che segue è un elenco dei pacchetti IBus. Tabella 8.2. Elenco dei metodi di input supportati da IBus +--------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |localizzazioni| | | | |supportate | |-------------------+----------------+----------------------+--------------| |ibus (http:// |V:7, I:10 (http:|1854 (http:// |infrastruttura| |packages.debian.org|//qa.debian.org/|packages.qa.debian.org|per metodo di | |/sid/ibus) |popcon.php? |/i/ibus.html) |input che usa | | |package=ibus) | |dbus | |-------------------+----------------+----------------------+--------------| | |V:1, I:1 (http:/| | | |ibus-mozc (http:// |/qa.debian.org/ |889 (http:// | | |packages.debian.org|popcon.php? |packages.qa.debian.org|giapponese | |/sid/ibus-mozc) |package= |/i/ibus-mozc.html) | | | |ibus-mozc) | | | |-------------------+----------------+----------------------+--------------| | |V:1, I:3 (http:/| | | |ibus-anthy (http://|/qa.debian.org/ |627 (http:// | | |packages.debian.org|popcon.php? |packages.qa.debian.org|" " | |/sid/ibus-anthy) |package= |/i/ibus-anthy.html) | | | |ibus-anthy) | | | |-------------------+----------------+----------------------+--------------| | |V:0, I:0 (http:/| | | |ibus-skk (http:// |/qa.debian.org/ |293 (http:// | | |packages.debian.org|popcon.php? |packages.qa.debian.org|" " | |/sid/ibus-skk) |package= |/i/ibus-skk.html) | | | |ibus-skk) | | | |-------------------+----------------+----------------------+--------------| |ibus-pinyin (http:/|V:1, I:2 (http:/| | | |/ |/qa.debian.org/ |1539 (http:// |cinese (per | |packages.debian.org|popcon.php? |packages.qa.debian.org|zh_CN) | |/sid/ibus-pinyin) |package= |/i/ibus-pinyin.html) | | | |ibus-pinyin) | | | |-------------------+----------------+----------------------+--------------|     |ibus-chewing (http:|V:0, I:0 (http:/| | | |// |/qa.debian.org/ |214 (http:// |" " (per | |packages.debian.org|popcon.php? |packages.qa.debian.org|zh_TW) | |/sid/ibus-chewing) |package= |/i/ibus-chewing.html) | | | |ibus-chewing) | | | |-------------------+----------------+----------------------+--------------| |ibus-hangul (http:/|V:0, I:1 (http:/| | | |/ |/qa.debian.org/ |296 (http:// | | |packages.debian.org|popcon.php? |packages.qa.debian.org|coreano | |/sid/ibus-hangul) |package= |/i/ibus-hangul.html) | | | |ibus-hangul) | | | |-------------------+----------------+----------------------+--------------| | |V:1, I:2 (http:/| | | |ibus-table (http://|/qa.debian.org/ |481 (http:// |motore di | |packages.debian.org|popcon.php? |packages.qa.debian.org|tabelle per | |/sid/ibus-table) |package= |/i/ibus-table.html) |IBus | | |ibus-table) | | | |-------------------+----------------+----------------------+--------------| |ibus-table-thai |I:0 (http:// |143 (http:// | | |(http:// |qa.debian.org/ |packages.qa.debian.org| | |packages.debian.org|popcon.php? |/i/ |thailandese | |/sid/ |package= |ibus-table-thai.html) | | |ibus-table-thai) |ibus-table-thai)| | | |-------------------+----------------+----------------------+--------------| |ibus-unikey (http:/|V:0, I:0 (http:/| | | |/ |/qa.debian.org/ |224 (http:// | | |packages.debian.org|popcon.php? |packages.qa.debian.org|vietnamita | |/sid/ibus-unikey) |package= |/i/ibus-unikey.html) | | | |ibus-unikey) | | | |-------------------+----------------+----------------------+--------------| | |V:0, I:1 (http:/| |multilingue: | |ibus-m17n (http:// |/qa.debian.org/ |163 (http:// |indico, | |packages.debian.org|popcon.php? |packages.qa.debian.org|arabico e | |/sid/ibus-m17n) |package= |/i/ibus-m17n.html) |altri | | |ibus-m17n) | | | +--------------------------------------------------------------------------+ Il metodo kinput2 e altri classici metodi di input (http:// en.wikipedia.org/wiki/Input_method) dipendenti dalla localizzazione per le lingue asiatiche esistono sempre, ma non     sono raccomandati per i moderni ambienti X UTF-8. Gli insiemi di strumenti SCIM (http://it.wikipedia.org/wiki/SCIM) e uim (http:// en.wikipedia.org/wiki/Uim) costituiscono un approccio un po' più datato al metodo di input internazionale per gli ambienti X UTF-8 moderni. 8.1.2. Un esempio per il giapponese Trovo che il metodo di input per il giapponese avviato     dall'ambiente inglese ("en_US.UTF-8") sia molto utile. Ecco come farlo con Ibus. 1. Installare il pacchetto con gli strumenti di input per il giapponese ibus-mozc insieme ai pacchetti che raccomanda, come im-config. 2. Eseguire "im-config" da una shell utente e selezionare "ibus". 3. Selezionare "Sistema" → "Preferenze" → "Preferenze di IBus" → "Input Method" → "Selezione di un metodo di input" →     "Giapponese" → "MOZC" e fare clic su "Aggiungi". 4. Rieseguire il login nell'account utente 5. Verificare le impostazioni con "im-config". 6. Impostare il metodo di input e la modalità cliccando con il pulsante destro sulla barra degli strumenti GUI. (Si può ridurre la scelta di menu dei metodi di input.) 7. Avviare il metodo di input IBus con CTRL-SPAZIO.     Notare quanto segue. * im-config(8) si comporta in modo diverso a seconda se è eseguito da root o no. * im-config(8) abilita il miglior metodo di input sul sistema     come impostazione predefinita senza alcuna azione dell'utente. * La voce di menu GUI per im-config(8) è disabilitata in modo predefinito per evitare sovraffollamenti. 8.1.3. disabilitare il metodo di input Se si desidera inserire dell'input senza passare da XIM, impostare il valore di "$XMODIFIERS" a "none" quando si avvia un     programma. Una situazione di questo tipo potrebbe verificarsi quando si usa l'infrastruttura di input in giapponese egg in emacs(1). Dalla shell usare il comando seguente.     $ XMODIFIERS=none emacs Per modificare il comando eseguito dal menu Debian, posizionare     una configurazione personalizzata in "/etc/menu/" seguendo il metodo descritto in "/usr/share/doc/menu/html". 8.2. L'output sul display La console Linux può mostrare solamente un numero limitato di     caratteri. (È necessario usare speciali programmi per terminale come jfbterm(1) per mostrare lingue non Europee nella console non-X.) X Window può mostrare qualsiasi carattere in UTF-8 purché     esistano i tipi di carattere richiesti. (La codifica dei dati dei tipi di carattere originali viene gestita dal sistema X Window in modo trasparente per l'utente.) 8.3. La localizzazione     Questa sezione si concentra sulla localizzazione per applicazioni eseguite nell'ambiente X Window avviato da gdm3(1). 8.3.1. Nozioni base sulla codifica La variabile d'ambiente "LANG=xx_YY.ZZZZ" imposta la     localizzazione al codice di lingua "xx", alla codice di nazione "yy" e alla codifica "ZZZZ" (vedere Sezione 1.5.2, «La variabile "$LANG"»). Il sistema Debian attuale normalmente imposta la localizzazione come "LANG=xx_YY.UTF-8" che fa uso della codifica UTF-8 (http:// it.wikipedia.org/wiki/UTF-8) con l'insieme di caratteri Unicode (http://it.wikipedia.org/wiki/Unicode) . Il sistema di codifica     UTF-8 (http://it.wikipedia.org/wiki/UTF-8) è un sistema multibyte e usa i punti del codice in modo intelligente. I dati ASCII (http://it.wikipedia.org/wiki/Ascii) , che consistono solamente di codici a 7 bit, sono comunque dati UTF-8 validi che usano 1 solo byte per carattere.     I sistemi Debian precedenti impostavano la localizzazione come "LANG=C" o "LANG=xx_YY" (senza ".UTF-8"). * Per "LANG=C" o "LANG=POSIX" viene usato l'insieme di carattteri ASCII (http://it.wikipedia.org/wiki/Ascii) .     * Il sistema di codifica tradizionale in Unix è usato per "LANG =xx_YY". I sistemi di codifica tradizionale di fatto usati per "LANG=     xx_YY" possono essere identificati controllando "/usr/share/i18n/ SUPPORTED". Per esempio, "en_US" usa la codifica ISO-8859-1" e "it_IT@euro" usa la codifica "ISO-8859-15". Suggerimento     Per il significato dei valori delle codifiche vedere Tabella 11.2, «Elenco dei valori delle codifiche e loro uso». 8.3.2. Logica alla base dell'uso della localizzazione UTF-8 La codifica UTF-8 (http://it.wikipedia.org/wiki/UTF-8) è il sistema di codifica moderno e razionale per l'internazionalizzazione e permette di rappresentare i caratteri     Unicode (http://it.wikipedia.org/wiki/Unicode) , cioè praticamente tutti i caratteri conosciuti. UTF sta per schemi Unicode Transformation Format (formato di trasformazione di Unicode). È raccomandato l'uso della localizzazione UTF-8 (http:// it.wikipedia.org/wiki/UTF-8) per il desktop, per esempio "LANG= en_US.UTF-8". La prima parte della localizzazione determina i     messaggi presentati dalle applicazioni. Per esempio, gedit(1) (un editor di testi per il desktop GNOME) nella localizzazione "LANG= it_IT.UTF-8" può mostrare e modificare testi in caratteri cinesi e allo stesso tempo presentare i menu in italiano, a patto che siano installati i necessari tipi di carattere e metodi di input. È raccomandabile anche impostare la localizzazione usando     solamente la variabile d'ambiente "$LANG". Non vedo la convenienza nell'impostare nella localizzazione UTF-8 una complessa combinazione di variabili "LC_*" (vedere locale(1)). Anche un testo in semplice inglese può contenere caratteri non     ASCII; le virgolette singole destra e sinistra per esempio non sono disponibili in ASCII.     “citazione tra virgolette doppie” ‘citazione tra virgolette singole’ Quando dati di testo in puro ASCII (http://it.wikipedia.org/wiki/ Ascii) sono convertiti in UTF-8 (http://it.wikipedia.org/wiki/     UTF-8) hanno contenuto e dimensioni esattamente identici a quelli dei dati ASCII originali. Perciò non si può perdere nulla usando la localizzazione UTF-8. Alcuni programmi usano più memoria dopo l'inclusione del supporto per l'internazionalizzazione. Questo avviene perché il loro codice è programmato per usare internamente UTF-32(UCS4) (http://     it.wikipedia.org/wiki/UTF-32) per supportare Unicode al fine di ottimizzare la velocità e consumano 4 byte per ogni dato di carattere ASCII, indipendentemente dalla localizzazione selezionata. Ancora una volta usando la localizzazione UTF-8 non si perde nulla. I vecchi sistemi di codifica non UTF-8 specifici di produttori, tendono ad avere piccolissime, ma noiose, differenze per molte     nazioni in alcuni caratteri come quelli grafici. L'uso del sistema UTF-8 da parte dei sistemi operativi moderni ha praticamente risolto questi problemi di conflitti tra le codifiche. 8.3.3. La (ri)configurazione della localizzazione Per far sì che un sistema abbia accesso ad una localizzazione particolare, è necessario che i dati della localizzazione siano stati compilati a partire dal database della localizzazione. (Il sistema Debian non viene fornito con tutte le localizzazioni     disponibili già compilate a meno che non si sia installato il pachetto locales-all.) L'elenco completo delle localizzazioni supportate disponibili per la compilazione è contenuto in "/usr/ share/i18n/SUPPORTED" che elenca tutti i nomi esatti delle localizzazioni. Il comando seguente elenca tutte le localizzazioni UTF-8 già compilate in forma binaria.     $ locale -a | grep utf8     Si può riconfigurare il pacchetto locales eseguendo il comando seguente.     # dpkg-reconfigure locales     Questo processo comprende 3 passi successivi. 1. Aggiornare l'elenco delle localizzazioni disponibili 2. Compilarle in forma binaria     3. Impostare, per l'uso da parte di PAM (vedere Sezione 4.5, «PAM e NSS») il valore della localizzazione di sistema nel file "/etc/defaults/locale".     L'elenco delle localizzazioni disponibili dovrebbe includere "en_US.UTF-8" e tutte le lingue desiderate con "UTF-8". La localizzazione predefinita raccomandata è "en_US.UTF-8" per     l'inglese statunitense. Per le altre lingue, assicurasi di scegliere la localizzazione con "UTF-8"; ognuna di queste può gestire qualsiasi carattere internazionale. Nota     Benché l'impostazione della localizzazione a "C" usi i messaggi in inglese statunitense, gestisce solo i caratteri ASCII. 8.3.4. Il valore della variabile di ambiente "$LANG"     Il valore della variabile d'ambiente "$LANG" viene impostato e modificato da molte applicazioni. * È impostato inizialmente dal meccanismo PAM di login(1) per i programmi nelle console Linux locali * È impostato inizialmente dal meccanismo PAM del display manager per tutti i programmi X * È impostato inizialmente dal meccanismo PAM per ssh(1) per i programmi nelle console remote     * È modificato da alcuni display manager come gdm3(1) per tutti i programmi X * È modificato dal codice di avvio della sessione X tramite "~ /.xsessionrc" per tutti i programmi X (funzionalità di lenny) * È modificato dal codice di avvio della shell, ad esempio "~ /.bashrc" per tutti i programmi in console Suggerimento     È una buona idea installare la localizzazione predefinita per tutto il sistema come "en_US.UTF-8" per avere la massima compatibilità. 8.3.5. Localizzazione specifica solamente in X Window Si può scegliere una localizzazione specifica solo sotto X     Window, indipendentemente dalla localizzazione predefinita di sistema, usando la personalizzazione di PAM (vedere Sezione 4.5, «PAM e NSS») nel modo descritto in seguito. Questo ambiente dovrebbe fornire la migliore esperienza desktop possibile mantenendo la stabilità. Si ha accesso ad un terminale     a caratteri funzionante con messaggi leggibili, anche quando il sistema X Window non funziona. Ciò diventa essenziale per le lingue che usano caratteri non romani, come cinese, giapponese e coreano. Nota Potrebbe essere disponibile un modo alternativo per ottenere lo     stesso risulato, visti i miglioramenti che avvengono nei pacchetti dei gestori delle sessioni X, ma la lettura di quanto segue fornisce un metodo generico di base per l'impostazione della localizzazione. Per gdm3(1), è possibile selezionare la localizzazione della sessione X dal suo menu. La riga seguente definisce la posizione del file dell'ambiente     della lingua, nel file di configurazione di PAM, come "/etc/pam.d /gdm3".     auth required pam_env.so read_env=1 envfile=/etc/default/locale     Cambiare tale riga nel modo seguente     auth required pam_env.so read_env=1 envfile=/etc/default/locale-x     Per il giapponese, creare un file "/etc/default/locale-x" permessi "-rw-r--r-- 1 root root" contenente quanto segue.     LANG="ja_JP.UTF-8"     Mantenere il file predefinito "/etc/default/locale" per l'uso da parte di altri programmi nel modo seguente.     LANG="en_US.UTF-8" Questa è la tecnica più generica per personalizzare la     localizzazione e rende localizzato il dialogo di selezione stesso del menu di gdm3(1).     In alternativa in questo caso, si può semplicemente cambiare la localizzazione usando il file "~/.xsessionrc". 8.3.6. Codifica per i nomi di file Per lo scambia di dati interpiattaforma (vedere Sezione 10.1.10, «Supporti di archiviazione removibili»), può essere necessario montare alcuni file system con codifiche particolari. Per esempio, mount(8), se usato senza opzioni, assume che venga usata     la codifica CP437 (http://en.wikipedia.org/wiki/Code_page_437) per il file system vfat (http://it.wikipedia.org/wiki/ File_Allocation_Table) . È necessario fornire esplicitamente opzioni di montaggio per usare nomi di file UTF-8 (http:// it.wikipedia.org/wiki/UTF-8) o CP932 (http://en.wikipedia.org/ wiki/Code_page_932) . Nota Quando una chiavetta USB inseribile a caldo viene automaticamente montata in un ambiente desktop moderno come GNOME, si può fornire     una informazione di montaggio di questo tipo cliccando con il tasto destro sull'icona del dispositivo sul desktop, cliccare sulla scheda "Drive", cliccare per espandere "Impostazioni" ed inserire "utf8" in "Opzioni di mount:". La prossima volta che questa chiavetta di memoria verrà montata, sarà abilitato il montaggio con UTF-8. Nota Se si sta facendo l'aggiornamento di un sistema o spostando dischi da un sistema non UTF-8, i nomi di file con caratteri non ASCII potranno essere codificati con codifiche usate una volta e     ora deprecate, come ISO-8859-1 (http://en.wikipedia.org/wiki/ISO/ IEC_8859-1) o eucJP (http://it.wikipedia.org/wiki/ Extended_Unix_Code) . Cercare aiuto sugli strumenti di conversione dei testi per convrtirli in UTF-8 (http:// it.wikipedia.org/wiki/UTF-8) . Vedere Sezione 11.1, «Strumenti di conversione di dati testuali». Samba (http://it.wikipedia.org/wiki/Samba_(software)) usa in modo predefinito Unicode per i client più moderni (Windows NT, 200x, XP), ma usa CP850 (http://en.wikipedia.org/wiki/Code_page_850)     per client più vecchi (DOS e Windows 9x/Me). Questo comportamento predefinito per i client più vecchi può essere modificato usando "dos charset" nel file "/etc/samba/smb.conf", per esempio usando "CP932 (http://en.wikipedia.org/wiki/Code_page_932) " per il giapponese. 8.3.7. Messaggi localizzati e documentazione tradotta Esistono le traduzioni di molti dei messaggi di testo e dei documenti che sono mostrati nel sistema Debian, come messaggi di     errore, output standard dei programmi, menu e pagine di manuale. L'insieme di strumenti GNU gettext(1) (http://it.wikipedia.org/ wiki/Gettext) è usato come strumento di backend per la maggior parte delle attività di traduzione. aptitude(8) fornisce in "Task" → "Localizzazione" un ampio elenco     di utili pacchetti binari che aggiungono alle applicazioni messaggi localizzati e che forniscono documentazione nella versione tradotta. Per esempio, si possono ottenere i messaggi localizzati per le     pagine man installando il pacchetto manpages-. Per leggere le pagine man di in italiano contenute in "/usr/share/man/it/", eseguire il comando seguente.     LANG=it_IT.UTF-8 man 8.3.8. Effetti della localizzazione La disposizione dell'ordinamento dei caratteri con sort(1) è     influenzata dalla lingua scelta dalla localizzazione. Le localizzazioni spagnola e inglese ordinano in modo diverso. Il formato della data mostrato da ls(1) è influenzato dalla     localizzazione. Il formato della data di "LANG=C ls -l" è differente da quello con "LANG=en_US.UTF-8" (vedere Sezione 9.2.5, «Visualizzazione personalizzata di date e orari»). I caratteri di punteggiatura usati per i numeri sono diversi nelle varie localizzazioni. Per esempio, nella localizzazione     inglese mille virgola uno è rappresentato come "1,000.1", mentre nella localizzazione in tedesco è mostrato come "1.000,1". Si può vedere questa differenza nei programmi per fogli di calcolo. Capitolo 9. Suggerimenti per il sistema     In questa sezione vengono descritti suggerimenti base per configurare e gestire il sistema, per lo più dalla console. 9.1. Il programma screen screen(1) è uno strumento molto utile per permettere alle persone     di accedere a siti remoti attraverso una connessione non affidabile o intermittente, dato che supporta connessioni interrotte. Tabella 9.1. Elenco di programmi che supportano connessioni di rete interrotte +--------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione| |-------------------+-------------+----------------------+-----------| | | | |multiplexer|     | |V:77, I:302 | |per | |screen (http:// |(http:// |950 (http:// |terminale | |packages.debian.org|qa.debian.org|packages.qa.debian.org|con | |/sid/screen) |/popcon.php? |/s/screen.html) |emulazione | | |package= | |di | | |screen) | |terminale | | | | |VT100/ANSI | +--------------------------------------------------------------------+ 9.1.1. Scenario di uso per screen(1) screen(1) non permette solamente il funzionamento di una finestra     di terminale con processi multipli, ma permette anche ai processi in shell remote di sopravvivere a connessioni interrotte. Quello che segue è un tipico scenario di uso di screen(1). 1. Si fa il login in una macchina remota. 2. Si avvia screen in una console singola. 3. Si eseguono svariati programmi in finestre screen create con ^A c ("Control-A" seguito da "c"). 4. Ci si sposta tra le svariate finestre screen create con ^A n ("Control-A" seguito da "n"). 5. All'improvviso si ha la necessità di lasciare il terminale, ma non si vuole perdere il lavoro attivo e si vuole mantenere la connessione. 6. Si può scollegare la sessione screen in uno qualsiasi dei     metodi seguenti. * Scollegare brutalmente la connessione di rete * Digitare ^A d ("Control-A" seguito da "d") e fare manualmente il log out dalla connessione remota. * Digitare ^A DD ("Control-A" seguito da "DD") per far si che screen si scolleghi e faccia il log out. 7. Ci si ricollega alla stessa macchina remota (anche da un terminale diverso). 8. Si avvia screen con "screen -r". 9. screen magicamente ricollega tutte le finestre screen precedente con tutti i programmi in esecuzione attivi. Suggerimento Con screen si può risparmiare sui costi di connessione per     connessioni a tempo, come dial-up o conteggiate a pacchetti, perché si può lasciare un processo attivo mentre si è disconnessi e poi ricollegarvisi successivamente quando è possibile connettersi di nuovo. 9.1.2. Associazioni dei tasti per il comando screen In una sessione screen tutto l'input da tastiera viene inviato alla finestra attuale, tranne per le combinazioni di tasti per i     comandi. Tutte le combinazioni di tasti per i comandi di screen vengono inserite digitando ^A ("Control-A") più un singolo tasto [più eventuali parametri]. Ecco alcune combinazioni di tasti importanti da ricordare. Tabella 9.2. Elenco di associazioni di tasti per screen +---------------------------------------------------------------+ |azione |significato | |associata | | |-----------+---------------------------------------------------| |^A ? |mostra una schermata di aiuto (visualizza le | | |associazioni di tasti) | |-----------+---------------------------------------------------| |^A c |crea una nuova finestra e si sposta in essa | |-----------+---------------------------------------------------| |^A n |va alla finestra successiva | |-----------+---------------------------------------------------| |^A p |va alla finestra precedente | |-----------+---------------------------------------------------| |^A 0 |va alla finestra numero 0 | |-----------+---------------------------------------------------| |^A 1 |va alla finestra numero 1 |     |-----------+---------------------------------------------------| |^A w |mostra l'elenco delle finestre | |-----------+---------------------------------------------------| |^A a |invia Ctrl-A alla finestra attuale come input da | | |tastiera | |-----------+---------------------------------------------------| |^A h |scrive una copia della schermata della finestra | | |attuale in un file | |-----------+---------------------------------------------------| |^A H |inizia/termina la registrazione dell'attività della| | |finestra attuale in un file | |-----------+---------------------------------------------------| |^A ^X |blocca il terminale (protetto da password) | |-----------+---------------------------------------------------| |^A d |scollega la sessione screen dal terminale | |-----------+---------------------------------------------------| |^A DD |scollega la sessione di screen e fa il log out | +---------------------------------------------------------------+     Vedere screen(1) per i dettagli. 9.2. Registrazione e presentazione di dati 9.2.1. Demoni di registro     Molti programmi registrano le proprie attività nella directory "/ var/log/". * Il demone del registro del kernel: klogd(8)     * Il demone del registro di sistema: rsyslogd(8)     Vedere Sezione 3.5.9, «I messaggi di sistema» e Sezione 3.5.10, «I messaggi del kernel». 9.2.2. Analizzatori di registro     Quelli che seguono sono alcuni analizzatori di registro degni di nota ("~Gsecurity::log-analyzer" in aptitude(8)). Tabella 9.3. Elenco di analizzatori del registro di sistema +-------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+---------------+----------------------+--------------| | |V:23, I:26 | |analizzatore | |logwatch (http:// |(http:// |2086 (http:// |di registro | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|scritto in | |/sid/logwatch) |popcon.php? |/l/logwatch.html) |Perl con un | | |package= | |bell'output | | |logwatch) | | | |-------------------+---------------+----------------------+--------------| | |V:65, I:75 | |strumento per | |fail2ban (http:// |(http:// |402 (http:// |interdire IP | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|che causano | |/sid/fail2ban) |popcon.php? |/f/fail2ban.html) |errori di | | |package= | |autenticazione| | |fail2ban) | |multipli | |-------------------+---------------+----------------------+--------------| | |V:8, I:144 | | | |analog (http:// |(http:// |3270 (http:// |analizzatore | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|del registro | |/sid/analog) |popcon.php? |/a/analog.html) |di server web | | |package=analog)| | | |-------------------+---------------+----------------------+--------------| | |V:18, I:26 | |analizzatore | |awstats (http:// |(http:// |3060 (http:// |potente e | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|ricco di | |/sid/awstats) |popcon.php? |/a/awstats.html) |funzionalità | | |package= | |per registro | | |awstats) | |di server web | |-------------------+---------------+----------------------+--------------| | |V:11, I:11 | |generatore di | |sarg (http:// |(http:// |685 (http:// |rapporti | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|sull'analisi | |/sid/sarg) |popcon.php? |/s/sarg.html) |di squid | | |package=sarg) | | | |-------------------+---------------+----------------------+--------------| | |V:2, I:5 (http:| |strumento per | |pflogsumm (http:// |//qa.debian.org|133 (http:// |riassunti | |packages.debian.org|/popcon.php? |packages.qa.debian.org|delle voci di | |/sid/pflogsumm) |package= |/p/pflogsumm.html) |registro di | | |pflogsumm) | |Postfix | |-------------------+---------------+----------------------+--------------| |syslog-summary |V:1, I:10 | |riassume i | |(http:// |(http:// |84 (http:// |contenuti di | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|un file di | |/sid/ |popcon.php? |/s/ |registro di | |syslog-summary) |package= |syslog-summary.html) |sistema |     | |syslog-summary)| | | |-------------------+---------------+----------------------+--------------| | | | |analizzatore | | |V:0, I:0 (http:| |di file di | |lire (http:// |//qa.debian.org|5040 (http:// |registro e | |packages.debian.org|/popcon.php? |packages.qa.debian.org|generatore di | |/sid/lire) |package=lire) |/l/lire.html) |rapporti ricco| | | | |di | | | | |funzionalità | |-------------------+---------------+----------------------+--------------| | |V:0, I:1 (http:| | | |fwlogwatch (http://|//qa.debian.org|440 (http:// |analizzatore | |packages.debian.org|/popcon.php? |packages.qa.debian.org|del registro | |/sid/fwlogwatch) |package= |/f/fwlogwatch.html) |del firewall | | |fwlogwatch) | | | |-------------------+---------------+----------------------+--------------| | |V:0, I:4 (http:| |monitora e | |squidview (http:// |//qa.debian.org|198 (http:// |analizza i | |packages.debian.org|/popcon.php? |packages.qa.debian.org|file | |/sid/squidview) |package= |/s/squidview.html) |access.log di | | |squidview) | |squid | |-------------------+---------------+----------------------+--------------| | |V:0, I:1 (http:| |analizzatore | |visitors (http:// |//qa.debian.org|293 (http:// |veloce del | |packages.debian.org|/popcon.php? |packages.qa.debian.org|registro di | |/sid/visitors) |package= |/v/visitors.html) |server web | | |visitors) | | | |-------------------+---------------+----------------------+--------------| | | | |visualizzatore| | | | |di file di | | |V:0, I:1 (http:| |registro con | |swatch (http:// |//qa.debian.org|112 (http:// |corrispondenze| |packages.debian.org|/popcon.php? |packages.qa.debian.org|con | |/sid/swatch) |package=swatch)|/s/swatch.html) |espressioni | | | | |regolari, | | | | |evidenziazione| | | | |ed eventi | |-------------------+---------------+----------------------+--------------| | |V:0, I:1 (http:| |Controllable | |crm114 (http:// |//qa.debian.org|1066 (http:// |Regex | |packages.debian.org|/popcon.php? |packages.qa.debian.org|Mutilator e | |/sid/crm114) |package=crm114)|/c/crm114.html) |filtro per | | | | |spam (CRM114) | |-------------------+---------------+----------------------+--------------| | |V:0, I:1 (http:| | | |icmpinfo (http:// |//qa.debian.org|84 (http:// |interpreta i | |packages.debian.org|/popcon.php? |packages.qa.debian.org|messaggi ICMP | |/sid/icmpinfo) |package= |/i/icmpinfo.html) | | | |icmpinfo) | | | +-------------------------------------------------------------------------+ Nota CRM114 (http://crm114.sourceforge.net/) fornisce     un'infrastruttura basata su un linguaggio per scrivere filtri fuzzy con la libreria per espressioni regolari TRE (http:// www.laurikari.net/tre/) . Il suo utilizzo più comune è come filtro per la posta spazzatura, ma può anche essere usato come analizzatore di registro. 9.2.3. Registrare le attività della shell in modo pulito Il semplice uso di script(1) (vedere Sezione 1.4.9, «Registrare     le attività della shell») per registrare l'attività della shell produce un file con caratteri di controllo. Ciò può essere evitato usando col(1) nel modo seguente.     $ script Script è avviato, il file è typescript     Fare tutto quello che si vuole … e poi premere Ctrl-D per uscire da script.     $ col -bx filepulito $ vim filepulito     Se script non è disponibile (per esempio, durante il processo di avvio in initramfs), si può usare invece il comando seguente.     $ sh -i 2>&1 | tee typescript Suggerimento     Alcuni x-terminal-emulator (emulatori di terminale in X), come Terminale di GNOME hanno la funzione di registrazione. Si potrebbe voler ampliare il buffer delle righe per scorrerle all'indietro. Suggerimento     Si può usare screen(1) con "^A H" (vedere Sezione 9.1.2, «Associazioni dei tasti per il comando screen») per registrare la console. Suggerimento     È possibile usare emacs(1) con "M-x shell", "M-x eshell" o "M-x term" per registrare la console. Si può successivamente usare "C-x C-w" per scrivere il buffer in un file. 9.2.4. Visualizzazione personalizzata di dati di testo Sebbene gli strumenti di paginazione, come more(1) e less(1) (vedere Sezione 1.4.5, «Il paginatore») e gli strumenti personalizzati per l'evidenziazione e la formattazione (vedere     Sezione 11.1.8, «Evidenziare e formattare dati in puro testo») possano mostrare il testo in un modo piacevole, gli editor generici (vedere Sezione 1.4.6, «L'editor di testo») sono più versatili e personalizzabili. Suggerimento     Per vim(1) e la sua modalità per paginatore, ossia view(1), ":set hls" abilita la ricerca con evidenziazione. 9.2.5. Visualizzazione personalizzata di date e orari Il formato predefinito per la visualizzazione delle date e degli orari per il comando "ls -l" dipende dalla localizzazione (vedere     Sezione 1.2.6, «Orari» per il valore). Si fa dapprima riferimento alla variabile "$LANG" che può essere scavalcata dalla variabile "$LC_TIME". Il formato effettivo di visualizzazione predefinito per ciascuna     localizzazione dipende dalla versione della libreria C (il pacchetto libc6) usata. Differenti rilasci di Debian hanno cioè valori predefiniti diversi. Se si desidera veramente personalizzare questo formato di visualizzazione delle date e degli orari, oltre a ciò che è fatto     con la localizzazione, si deve impostare il valore dello stile degli orari con l'opzione "--time-style" o con il valore di "$TIME_STYLE" (vedere ls(1), date(1), "info coreutils 'ls invocation'"). Tabella 9.4. Esempi di visualizzazione di date e orari per il comando "ls -l" per wheezy +---------------------------------------------------------------+ |valore dello stile per|localizzazione|visualizzazione di data e| |gli orari | |ora | |----------------------+--------------+-------------------------| |iso |qualsiasi |01-19 00:15 | |----------------------+--------------+-------------------------| |long-iso |qualsiasi |2009-01-19 00:15 | |----------------------+--------------+-------------------------| |full-iso |qualsiasi |2009-01-19 | | | |00:15:16.000000000 +0900 |     |----------------------+--------------+-------------------------| |locale |C |Jan 19 00:15 | |----------------------+--------------+-------------------------| |locale |en_US.UTF-8 |Jan 19 00:15 | |----------------------+--------------+-------------------------| |locale |es_ES.UTF-8 |ene 19 00:15 | |----------------------+--------------+-------------------------| |+%d.%m.%y %H:%M |qualsiasi |19.01.09 00:15 | |----------------------+--------------+-------------------------| |+%d.%b.%y %H:%M |C o |19.Jan.09 00:15 | | |en_US.UTF-8 | | |----------------------+--------------+-------------------------| |+%d.%b.%y %H:%M |es_ES.UTF-8 |19.ene.09 00:15 | +---------------------------------------------------------------+ Suggerimento     Si può evitare di digitare lunghe opzioni nella riga di comando usando alias, per esempio "alias ls='ls --time-style=+%d.%m.%y\ %H:%M'" (vedere Sezione 1.5.9, «Alias di comandi»). Suggerimento     Per i formati iso viene seguito lo standard ISO 8601 (http:// it.wikipedia.org/wiki/ISO_8601) . 9.2.6. Output colorato per la shell L'output inviato a schermo dalla shell nella maggior parte dei     terminali moderni può essere colorato usando codici di escape ANSI (http://en.wikipedia.org/wiki/ANSI_escape_code) (vedere "/ usr/share/doc/xterm/ctlseqs.txt.gz").     Per esempio, provare a fare quanto segue. $ RED=$(printf "\x1b[31m")     $ NORMAL=$(printf "\x1b[0m") $ REVERSE=$(printf "\x1b[7m") $ echo "${RED}TESTO-ROSSO${NORMAL} ${REVERSE}TESTO-IN-NEGATIVO${NORMAL}" 9.2.7. Comandi colorati I comandi colorati sono comodi per ispezionare il loro output in     modo interattivo. Nel mio file "~/.bashrc" io includo quanto segue. if [ "$TERM" != "dumb" ]; then eval "`dircolors -b`" alias ls='ls --color=always' alias ll='ls --color=always -l' alias la='ls --color=always -A' alias less='less -R' alias ls='ls --color=always'     alias grep='grep --color=always' alias egrep='egrep --color=always' alias fgrep='fgrep --color=always' alias zgrep='zgrep --color=always' else alias ll='ls -l' alias la='ls -A' fi Questo uso degli alias limita gli effetti colorati all'uso interattivo dei comandi. Ha il vantaggio, rispetto all'esportazione della variabile d'ambiente "export GREP_OPTIONS=     '--color=auto'", che i colori possono essere visti in programmi di paginazione come less(1). Se si desidera eliminare i colori quando si invia l'output con una pipe ad altri comandi, usare nell'esempio precedente per "~/.bashrc" "--color=auto". Suggerimento     Questi alias di colorazione possono essere disattivati nell'ambiente interattivo invocando la shell con il comando "TERM =dumb bash". 9.2.8. Registrare le attività dell'editor per ripetizioni complesse     È possibile registrare le attività dell'editor per ripetere azioni complesse.     Per vim (http://it.wikipedia.org/wiki/Vim_(editor_di_testo)) fare nel modo seguente. * "qa": avviare la registrazione dei caratteri digitati in un registro chiamato "a".     * … attività nell'editor * "q": terminare la registrazione dei caratteri digitati. * "@a": eseguire il contenuto del registro "a".     Per Emacs (http://it.wikipedia.org/wiki/Emacs) fare nel modo seguente. * "C-x (": iniziare la definizione di una macro da tastiera. * … attività nell'editor     * "C-x )": terminare la definizione di una macro da tastiera. * "C-x e": eseguire la definizione di una macro da tastiera. 9.2.9. Registrare l'immagine grafica di un'applicazione X     Ci sono alcuni modi per registrare l'immagine grafica di un'applicazione X, incluso il display di un xterm. Tabella 9.5. Elenco di strumenti di manipolazione di immagini grafiche +-----------------------------------------------------------------+ |pacchetto |popcon |dimensione |comando| |-------------------+--------------+----------------------+-------| |xbase-clients |I:244 (http://| | | |(http:// |qa.debian.org/|62 (http:// | | |packages.debian.org|popcon.php? |packages.qa.debian.org|xwd(1) | |/sid/xbase-clients)|package= |/x/xbase-clients.html)| | | |xbase-clients)| | | |-------------------+--------------+----------------------+-------| | |V:112, I:506 | | | |gimp (http:// |(http:// |15404 (http:// |menu | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|della |     |/sid/gimp) |popcon.php? |/g/gimp.html) |GUI | | |package=gimp) | | | |-------------------+--------------+----------------------+-------| | |V:197, I:553 | | | |imagemagick (http:/|(http:// |419 (http:// | | |/ |qa.debian.org/|packages.qa.debian.org|import | |packages.debian.org|popcon.php? |/i/imagemagick.html) |(1) | |/sid/imagemagick) |package= | | | | |imagemagick) | | | |-------------------+--------------+----------------------+-------| | |V:3, I:14 | | | |scrot (http:// |(http:// |80 (http:// |scrot | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|(1) | |/sid/scrot) |popcon.php? |/s/scrot.html) | | | |package=scrot)| | | +-----------------------------------------------------------------+ 9.2.10. Registrare i cambiamenti a file di configurazione     Esistono strumenti specializzati per registrare i cambiamenti nei file di configurazione con l'aiuto del sistema DVCS. Tabella 9.6. Elenco di pacchetti per registrare la cronologia della configurazione in VCS +---------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+-------------+----------------------+------------------------| | | | |archivia i file di | | | | |configurazione ed i loro| | | | |metadati con Git (http:/| | |V:19, I:23 | |/it.wikipedia.org/wiki/ | |etckeeper (http:// |(http:// |225 (http:// |Git_(software)) | |packages.debian.org|qa.debian.org|packages.qa.debian.org|(predefinito), Mercurial| |/sid/etckeeper) |/popcon.php? |/e/etckeeper.html) |(http://en.wikipedia.org|     | |package= | |/wiki/Mercurial_ | | |etckeeper) | |(software)) o Bazaar | | | | |(http://en.wikipedia.org| | | | |/wiki/Bazaar_(software))| | | | |(nuovo) | |-------------------+-------------+----------------------+------------------------| | |V:1, I:1 | |archivia i file di | |changetrack (http:/|(http:// |148 (http:// |configurazione con RCS | |/ |qa.debian.org|packages.qa.debian.org|(http://en.wikipedia.org| |packages.debian.org|/popcon.php? |/c/changetrack.html) |/wiki/ | |/sid/changetrack) |package= | |Revision_Control_System)| | |changetrack) | |(vecchio) | +---------------------------------------------------------------------------------+ Io raccomando l'uso del pacchetto etckeeper con git(1) che mette     l'intera directory "/etc" sotto il controllo di VCS. La sua guida di installazione ed il suo tutorial si trovano in "/usr/share/doc /etckeeper/README.gz". Fondamentalmente, l'esecuzione di "sudo etckeeper init" inizializza il repository git per "/etc", esattamente come nel     procedimento spiegato in Sezione 10.9.5, «Git per registrare la cronologia della configurazione» ma con speciali script attivati da eventi per impostazioni più accurate. Quando si cambia la configurazione, si può usare normalmente git     (1) per registrare i cambiamenti. Esso registra automaticamente i cambiamenti in modo comodo anche ogni volta che vengono eseguiti i comandi di gestione dei pacchetti. Suggerimento     Si può sfogliare la cronologia dei cambiamenti di "/etc" eseguendo "sudo GIT_DIR=/etc/.git" ottenendo una chiara visualizzazione dei nuovi pacchetti installati, di quelli rimossi e dei cambiamenti di versione dei pacchetti. 9.3. Suggerimenti per l'archiviazione dei dati L'avvio del sistema con un CD live (http://it.wikipedia.org/wiki/ Live_CD) Linux o un CD del debian-installer (http://     www.debian.org/releases/stable/debian-installer/index.it.html) in modalità ripristino rende semplice la riconfigurazione dell'archiviazione dei dati sul dispositivo di avvio. Vedere anche Sezione 10.3, «I dati binari». 9.3.1. Uso dello spazio su disco     L'uso dello spazio su disco può essere valutato con i programmi forniti dai pacchetti mount, coreutils e xdu: * mount(8) mostra tutti i file system (= dischi) montati. * df(1) mostra l'uso dello spazio su disco da parte dei file     system. * du(1) mostra l'uso dello spazio su disco da parte dell'albero di directory. Suggerimento     Si può indirizzare l'output di du(8) a xdu(1x) per far sì che che produca la sua rappresentazione grafica e interattiva, usando "du -k . |xdu", "sudo du -k -x / |xdu", ecc. 9.3.2. Configurazione del partizionamento dei dischi Per la configurazione del partizionamento dei dischi (http:// en.wikipedia.org/wiki/Disk_partitioning) , benché fdisk(8) sia     considerato lo strumento standard, parted(8) merita un po' di attenzione. "Dati di partizionamento del disco", "tabella delle partizioni", "mappa delle partizioni" e "etichetta del disco" sono tutti sinonimi. La maggior parte dei PC usa il classico schema basato su MBR (Master Boot Record) (http://it.wikipedia.org/wiki/     Master_boot_record) per contenere i dati sul partizionamento del disco (http://en.wikipedia.org/wiki/Disk_partitioning) nel primo settore, cioè il settore LBA (http://it.wikipedia.org/wiki/ Logical_block_addressing) 0 (512 byte). Nota Alcuni PC più recenti con EFI (Extensible Firmware Interface) (http://it.wikipedia.org/wiki/Extensible_Firmware_Interface) ,     compresi i Mac basati su Intel, usano lo schema GPT (GUID Partition Table) (http://en.wikipedia.org/wiki/ GUID_Partition_Table) per contenere i dati sul partizionamento del disco (http://en.wikipedia.org/wiki/Disk_partitioning) non nel primo settore.     Sebbene fdisk(8) sia stato lo strumento standard per il partizionamento dei dischi, parted(8) lo sta sostituendo. Tabella 9.7. Elenco di pacchetti di gestione delle partizioni dei dischi +-------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |GPT |descrizione | |-------------------+-------------+----------------------+----------+-----------------| | |V:868, I:999 | | | | |util-linux (http://|(http:// |1603 (http:// | |utilità di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Non |sistema varie | |/sid/util-linux) |/popcon.php? |/u/util-linux.html) |supportato|inclusi fdisk(8) | | |package= | | |e cfdisk(8) | | |util-linux) | | | | |-------------------+-------------+----------------------+----------+-----------------| | |V:16, I:150 | | |programma GNU | |parted (http:// |(http:// |264 (http:// | |Parted per il | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Supportato|ridimensionamento| |/sid/parted) |/popcon.php? |/p/parted.html) | |delle partizioni | | |package= | | |dei dischi | | |parted) | | | | |-------------------+-------------+----------------------+----------+-----------------| | |V:27, I:156 | | | | |gparted (http:// |(http:// |6182 (http:// | |editor delle | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Supportato|partizioni di | |/sid/gparted) |/popcon.php? |/g/gparted.html) | |GNOME basato su | | |package= | | |libparted | | |gparted) | | | | |-------------------+-------------+----------------------+----------+-----------------|     | |V:2, I:13 | | | | |gnu-fdisk (http:// |(http:// |262 (http:// | |sostituti GNU in | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Supportato|console di fdisk | |/sid/gnu-fdisk) |/popcon.php? |/g/gnu-fdisk.html) | |(8), cfdisk(8), | | |package= | | |ecc. | | |gnu-fdisk) | | | | |-------------------+-------------+----------------------+----------+-----------------| | |V:1, I:13 | | | | |gdisk (http:// |(http:// |742 (http:// | |editor delle | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Supportato|partizioni per i | |/sid/gdisk) |/popcon.php? |/g/gdisk.html) | |dischi GPT | | |package= | | | | | |gdisk) | | | | |-------------------+-------------+----------------------+----------+-----------------| | |V:0, I:2 | | |sincronizza una | |gptsync (http:// |(http:// |72 (http:// | |tabella delle | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Supportato|partizioni MBR | |/sid/gptsync) |/popcon.php? |/g/gptsync.html) | |classica con una | | |package= | | |GPT | | |gptsync) | | | | |-------------------+-------------+----------------------+----------+-----------------| | |V:13, I:23 | | |programma per | |kpartx (http:// |(http:// |56 (http:// | |creare la | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Supportato|mappatura a | |/sid/kpartx) |/popcon.php? |/k/kpartx.html) | |device per le | | |package= | | |partizioni | | |kpartx) | | | | +-------------------------------------------------------------------------------------+ Attenzione     Sebbene parted(8) sostenga di creare e ridimensionare anche i file system, è più sicuro fare queste cose usando gli strumenti specializzati meglio mantenuti, come mkfs(8) (mkfs.msdos(8), mkfs.ext2(8), mkfs.ext3(8), …) e resize2fs(8). Nota Per poter commutare tra GPT (http://en.wikipedia.org/wiki/ GUID_Partition_Table) e MBR (http://it.wikipedia.org/wiki/     Master_boot_record) , è necessario cancellare direttamente i primi pochi blocchi del contenuto del disco (vedere Sezione 10.3.6, «Pulire il contenuto di file») e usare "parted / dev/sdx mklabel gpt" o "parted /dev/sdx mklabel msdos", per fare il cambiamento. Notare che in questo contesto è usato "msdos" per MBR (http://it.wikipedia.org/wiki/Master_boot_record) . 9.3.3. Accedere alle partizioni usando UUID Anche se la riconfigurazione delle partizioni o l'ordine di attivazione di supporti di archiviazione removibili può portare     ad avere nomi diversi per le partizioni, è possibili accedere ad esse in modo coerente. Ciò è utile anche se si hanno più dischi ed il BIOS non assegna loro un nome di dispositivo costante. * mount(8) con l'opzione "-U" può montare un device a blocchi usando l'UUID (http://en.wikipedia.org/wiki/ Universally_Unique_Identifier) invece di usare il suo nome di file come "/dev/sda3".     * Il file "/etc/fstab" (vedere fstab(5)) può usare gli UUID (http://en.wikipedia.org/wiki/Universally_Unique_Identifier) . * Anche i bootloader (Sezione 3.3, «Stadio 2: il bootloader») possono usare gli UUID (http://en.wikipedia.org/wiki/ Universally_Unique_Identifier) . Suggerimento     Si può scoprire l'UUID (http://en.wikipedia.org/wiki/ Universally_Unique_Identifier) di un device a blocchi speciale con blkid(8). Suggerimento     I nodi di device dei dispositivi come i supporti di archiviazione rimovibili possono essere resi statici usando regole udev (http:/ /www.reactivated.net/writing_udev_rules.html) , se necessario. Vedere Sezione 3.5.11, «Il sistema udev». 9.3.4. LVM2 LVM2 è un gestore di volumi logici (http://en.wikipedia.org/wiki/     Logical_Volume_Manager_(Linux)) per il kernel Linux. Con LVM2 si possono creare partizioni dei dischi in volumi logici invece che sugli hard disk fisici.     LVM richiede quanto segue. * la gestione di device-mapper nel kernel Linux (predefinita per i kernel Debian)     * la libreria per la gestione di device-mapper in spazio utente (pacchetto libdevmapper*) * gli strumenti LVM2 in spazio utente (pacchetto lvm2)     Per iniziare a comprendere LVM2 guardare le pagine di manuale seguenti. * lvm(8): Principi di base del meccanismo LVM2 (elenco di tutti i comandi di LVM2) * lvm.conf(5): File di configurazione per LVM2     * lvs(8): Riporta informazioni sui volumi logici * vgs(8): Riporta informazioni sui gruppi di volumi * pvs(8): Riporta informazioni sui volumi fisici 9.3.5. Configurazione del file system     Per il file system ext3 (http://it.wikipedia.org/wiki/Ext3) , il pacchetto e2fsprogs fornisce gli strumenti seguenti. * mkfs.ext3(8) per creare nuovi file system ext3 (http:// it.wikipedia.org/wiki/Ext3)     * fsck.ext3(8) per controllare e riparare file system ext3 (http://it.wikipedia.org/wiki/Ext3) esistenti * tune2fs(8) per configurare i superblocchi di un file system ext3 (http://it.wikipedia.org/wiki/Ext3) I comandi mkfs(8) e fsck(8) sono forniti dal pacchetto e2fsprogs come front-end per vari programmi dipendenti dal file syste     (mkfs.tipofs e fsck.tipofs). Per il file system ext3 (http:// it.wikipedia.org/wiki/Ext3) , sono mkfs.ext3(8) e fsck.ext3(8) (sono un collegamento fisico a mke2fs(8) e e2fsck(8)).     Sono disponibili comandi simili per ciascun file system supportato da Linux. Tabella 9.8. Elenco di pacchetti di gestione dei file system +-----------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+--------------+----------------------+-------------------------| | | | |utilità per i file system| | |V:576, I:999 | |ext2 (http:// | |e2fsprogs (http:// |(http:// |2222 (http:// |it.wikipedia.org/wiki/ | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|Ext2) /ext3 (http:// | |/sid/e2fsprogs) |popcon.php? |/e/e2fsprogs.html) |it.wikipedia.org/wiki/ | | |package= | |Ext3) /ext4 (http:// | | |e2fsprogs) | |it.wikipedia.org/wiki/ | | | | |Ext4) | |-------------------+--------------+----------------------+-------------------------| | |V:7, I:34 | | | |reiserfsprogs |(http:// |1200 (http:// |utilità per i file system| |(http:// |qa.debian.org/|packages.qa.debian.org|Reiserfs (http:// | |packages.debian.org|popcon.php? |/r/reiserfsprogs.html)|it.wikipedia.org/wiki/ | |/sid/reiserfsprogs)|package= | |ReiserFS) | | |reiserfsprogs)| | | |-------------------+--------------+----------------------+-------------------------| | |V:51, I:564 | |utilità per i file system| |dosfstools (http://|(http:// |177 (http:// |FAT (http:// | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|it.wikipedia.org/wiki/ | |/sid/dosfstools) |popcon.php? |/d/dosfstools.html) |File_Allocation_Table) | | |package= | |(Microsoft: MS-DOS, | | |dosfstools) | |Windows) | |-------------------+--------------+----------------------+-------------------------| | |V:20, I:78 | |utilità per i file system| |xfsprogs (http:// |(http:// |3079 (http:// |XFS (http:// | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|it.wikipedia.org/wiki/ | |/sid/xfsprogs) |popcon.php? |/x/xfsprogs.html) |XFS_(file_system)) (SGI: | | |package= | |IRIX) | | |xfsprogs) | | | |-------------------+--------------+----------------------+-------------------------| | |V:172, I:545 | |utilità per i file system| |ntfs-3g (http:// |(http:// |1385 (http:// |NTFS (http:// | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|it.wikipedia.org/wiki/ | |/sid/ntfs-3g) |popcon.php? |/n/ntfs-3g.html) |NTFS) (Microsoft: Windows|     | |package= | |NT, …) | | |ntfs-3g) | | | |-------------------+--------------+----------------------+-------------------------| | |V:3, I:17 | |utilità per i file system| |jfsutils (http:// |(http:// |1031 (http:// |JFS (http:// | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|it.wikipedia.org/wiki/ | |/sid/jfsutils) |popcon.php? |/j/jfsutils.html) |Journaled_File_System) | | |package= | |(IBM: AIX, OS/2) | | |jfsutils) | | | |-------------------+--------------+----------------------+-------------------------| | |V:0, I:5 | | | |reiser4progs (http:|(http:// |1296 (http:// |utilità per i file system| |// |qa.debian.org/|packages.qa.debian.org|Reiser4 (http:// | |packages.debian.org|popcon.php? |/r/reiser4progs.html) |it.wikipedia.org/wiki/ | |/sid/reiser4progs) |package= | |Reiser4) | | |reiser4progs) | | | |-------------------+--------------+----------------------+-------------------------| | |V:0, I:9 | |utilità per i file system| | |(http:// | |HFS (http:// | |hfsprogs (http:// |qa.debian.org/|317 (http:// |it.wikipedia.org/wiki/ | |packages.debian.org|popcon.php? |packages.qa.debian.org|Hierarchical_File_System)| |/sid/hfsprogs) |package= |/h/hfsprogs.html) |e HFS Plus (http:// | | |hfsprogs) | |it.wikipedia.org/wiki/ | | | | |HFS_Plus) (Apple: Mac OS)| |-------------------+--------------+----------------------+-------------------------| | |V:11, I:24 | | | |btrfs-tools (http:/|(http:// |3051 (http:// |utilità per i file system| |/ |qa.debian.org/|packages.qa.debian.org|Btrfs (http:// | |packages.debian.org|popcon.php? |/b/btrfs-tools.html) |it.wikipedia.org/wiki/ | |/sid/btrfs-tools) |package= | |Btrfs) | | |btrfs-tools) | | | |-------------------+--------------+----------------------+-------------------------| | |V:1, I:13 | | | |zerofree (http:// |(http:// |14 (http:// |programma per impostare a| |packages.debian.org|qa.debian.org/|packages.qa.debian.org|0 i blocchi liberi in | |/sid/zerofree) |popcon.php? |/z/zerofree.html) |file system ext2/3 | | |package= | | | | |zerofree) | | | +-----------------------------------------------------------------------------------+ Suggerimento     Il file system Ext4 (http://it.wikipedia.org/wiki/Ext4) è il predefinito per il sistema Linux e il suo uso è caldamente raccomandato a meno che non sia abbiano specifiche ragioni per non farlo. Suggerimento     Il file system Btrfs (http://it.wikipedia.org/wiki/Btrfs) è disponibile nel kernel Linux 3.2 (Debian wheezy). Dovrebbe diventare il prossimo file system predefinito dopo quello ext4. Avvertimento     Non si dovrebbe ancora usare il file system Btrfs per i propri dati importanti prima che abbia la funzionalità fsck(8) live in spazio kernel e il supporto nel boot loader. Suggerimento     Alcuni strumenti permettono l'accesso a file system non supportati del kernel Linux (vedere Sezione 10.3.2, «Manipolare file senza montare i dischi»). 9.3.6. Creare file system e verificarne l'integrità In un sistema Linux, il comando mkfs(8) crea i file system ed il     comando fsck(8) fornisce funzioni di controllo dell'integrità e di riparazione dei file system. Attenzione     In generale l'esecuzione di fsck su file system montati non è sicura. Suggerimento     Per vedere i risultati del comando fsck(8) avviato dallo script di avvio, controllare i file in "/var/log/fsck/". Suggerimento     Per forzare l'esecuzione del comando fsck(8) in modo sicuro su tutti i file system, compreso il file system root, al prossimo avvio usare "shutdown -F -r now. Vedere la pagina man di shutdown (8) per ulteriori dettagli. 9.3.7. Ottimizzare il file system con opzioni di mount     La configurazione statica di base del file system è fornita da «/ etc/fstab». Ad esempio, # proc /proc proc defaults 0 0     UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 noatime,errors=remount-ro 0 1 UUID=817bae6b-45d2-5aca-4d2a-1267ab46ac23 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0 Suggerimento Per identificare un dispositivo a blocchi si può usare il suo     UUID (http://en.wikipedia.org/wiki/Universally_Unique_Identifier) (vedere Sezione 9.3.3, «Accedere alle partizioni usando UUID») invece del normale nome di device a blocchi quale «/dev/sda1», «/ dev/sda2», … Le prestazioni e le caratteristiche di un file system possono     essere ottimizzate usando per esso opzioni per il montaggio (vedere fstab(5) e mount(8)).Alcune opzioni importanti sono le seguenti. * L'opzione "defaults" implica le opzioni predefinite: "rw,suid,dev,exec,auto,nouser,async". (Uso generico) * L'opzione "noatime" o "relatime" è molto efficace nel velocizzare l'accesso in lettura. (Uso generico) * L'opzione "user" permette ad un normale utente di montare il file system. Questa opzione implica la combinazione di opzioni "noexec,nosuid,nodev". (Uso generico, usato per CD e floppy)     * La combinazione di opzioni "noexec,nodev,nosuid" è usata per migliorare la sicurezza. (Uso generico) * L'opzione "noauto" limita il montaggio solamente a quando esplicitamente richiesto. (Uso generico) * L'opzione "data=journal" per ext3fs può migliorare la salvaguardia dell'integrità dei dati contro interruzioni dell'alimentazione a prezzo della perdita di un po' di velocità in scrittura. Suggerimento Per utilizzare una modalità di journaling non predefinita per il     file system root, è necessario fornire i parametri di avvio del kernel (vedere Sezione 3.3, «Stadio 2: il bootloader»), ad esempio "rootflags=data=journal". Per lenny la modalità di journaling predefinita è "rootflags=data=ordered"; per squeeze è "rootflags=data=writeback". 9.3.8. Ottimizzare il file system tramite il superblocco     Le caratteristiche di un file system possono essere ottimizzate attraverso il suo superblocco usando il comando tune2fs(8). * L'esecuzione di "sudo tune2fs -l /dev/hda1" mostra il contenuto del superblocco del file system in "/dev/hda1". * L'esecuzione di "sudo tune2fs -c 50 /dev/hda1" cambia per "/ dev/hda1" la frequenza dei controlli dei file system (l'esecuzione di fsck all'avvio) a 50 avvii. * L'esecuzione di "sudo tune2fs -j /dev/hda1" aggiunge la     funzionalità di journaling al file system in "/dev/hda1", cioè converte il file system da ext2 (http://it.wikipedia.org /wiki/Ext2) a ext3 (http://it.wikipedia.org/wiki/Ext3) . (Eseguire questo comando su file system non montati.) * L'esecuzione di "sudo tune2fs -O extents,uninit_bg,dir_index /dev/hda1 && fsck -pf /dev/hda1" converte il filesystem in "/ dev/hda1" da ext3 (http://it.wikipedia.org/wiki/Ext3) a ext4 (http://it.wikipedia.org/wiki/Ext4) . (Eseguire questo comando su file system non montati.) Avvertimento La conversione del file system del dispositivo di avvio al file     system ext4 (http://it.wikipedia.org/wiki/Ext4) dovrebbe essere evitato fino a che il boot loader GRUB non supporti bene il file system ext4 (http://bugs.debian.org/511121) e non sia stata installata la versione 2.6.30, o una più recente, del kernel Linux. Suggerimento     Nonostante il suo nome, tune2fs(8) non funziona soltanto sui file system ext2 (http://it.wikipedia.org/wiki/Ext2) , ma anche sui file system ext3 (http://it.wikipedia.org/wiki/Ext3) e ext4 (http://it.wikipedia.org/wiki/Ext4) . 9.3.9. Ottimizzare il disco rigido Avvertimento     Prima di giocare con la configurazione dei dischi controllare il proprio hardware e leggere la pagina man di hdparam(8), perché è una cosa piuttosto pericolosa per l'integrità dei dati. Si può testare la velocità di accesso ai dischi di un disco rigido, ad esempio "/dev/hda" con "hdparm -tT /dev/hda". È possibile velocizzare alcuni dischi fissi connessi con (E)IDE con     "hdparm -q -c3 -d1 -u1 -m16 /dev/hda" che abilita il "supporto (E)IDE per I/O a 32 bit", l'uso dell'opzione "using_dma", imposta l'opzione "interrupt-unmask" e imposta l'"I/O di settori multipli a 16" (pericoloso!). Si possono testare le capacità della cache in scrittura di un     disco fisso, ad esempio "/dev/sda", con "hdparm -W /dev/sda". Si può disabilitare la funzionalità di cache in scrittura con "hdparm -W 0 /dev/sda". Potrebbe essere possibile leggere CDROM masterizzati male in     unità CD-ROM moderne ad alta velocità rallentandole con "setcd -x 2". 9.3.10. Ottimizzare le unità a stato solido Le prestazioni e l'usura dei dischi delle unità a stato solido     (SSD) (http://it.wikipedia.org/wiki/Unità_a_stato_solido) possono essere ottimizzate nel modo seguente. * Usare il kernel Linux più recente (>= 3.2). * Ridurre le scritture su disco per gli accessi in lettura. o Impostare l'opzione di montaggio "noatime" o "relatime" in /etc/fstab. * Abilitare il comando TRIM (http://it.wikipedia.org/wiki/TRIM) . o Impostare l'opzione di montaggio "discard" in /etc/fstab per il file system ext4, le partizioni di swap, Btrfs, ecc. Vedere fstab(5). o Impostare l'opzione "discard" in /etc/lvm/lvm.conf per LVM (http://en.wikipedia.org/wiki/Logical_Volume_Manager_ (Linux)) . Vedere lvm.conf(5).     o Impostare l'opzione "discard" in /etc/crypttab per dm-crypt (http://en.wikipedia.org/wiki/Dm-crypt) . Vedere crypttab(5). * Abilitare lo schema di allocazione dello spazio su disco ottimizzato SSD. o Impostare l'opzione di mountaggio "ssd" in /etc/fstab per Btrfs. * Fare sì che il sistema muova tutti i dati su disco ogni 10 minuti sui PC portatili. o Impostare l'opzione di montaggio "commit=600" in /etc/ fstab. Vedere fstab(5). o Impostare pm-utils in modo che usi la modalità laptop-mode anche quando collegato alla rete elettrica. Vedere Debian BTS #659260 (http://bugs.debian.org/659260) . Avvertimento     Modificare l'intervallo di scrittura dei dati dai normali 5 secondi a 10 minuti rende i dati vulnerabili in caso di mancanza di corrente. 9.3.11. Usare SMART per prevedere danni ai dischi fissi Con il demone smartd (8) è possibile monitorare e registrare i     dischi fissi che sono conformi a SMART (http://it.wikipedia.org/ wiki/S.M.A.R.T.) . 1. Abilitare la funzionalità SMART (http://it.wikipedia.org/wiki /S.M.A.R.T.) nel BIOS (http://it.wikipedia.org/wiki/Bios) . 2. Installare il pacchetto smartmontools. 3. Identificare i dispositivi dei dischi fissi usando df(1). * Si supponga che uno dei dispositivi dei dischi fissi da monitorare sia "/dev/hda". 4. Controllare l'output di "smartctl -a /dev/hda" per vedere se     la funzionalità SMART (http://it.wikipedia.org/wiki/ S.M.A.R.T.) è veramente abilitata. * Se non la è, abilitarla con "smartctl -s on -a /dev/hda". 5. Abilitare l'esecuzione del demone smartd(8) nel modo seguente. * Rimuovere il carattere iniziale di commento dalla riga "start_smartd=yes" nel file "/etc/default/smartmontools". * Riavviare il demone smartd(8) con il comando "sudo /etc/ init.d/smartmontools restart". Suggerimento     Il demone smartd(8) può essere personalizzato con il file /etc/ smartd.conf, incluso per ciò che riguarda le notifiche dei messaggi di avvertimento. 9.3.12. Specificare una directory per l'archiviazione di dati temporanei usando $TMPDIR Le applicazioni creano file temporanei normalmente nella directory di memorizzazione temporanea «/tmp». Se «/tmp» non     contiene abbastanza spazio, si può specificare una directory di memorizzazione temporanea usando la variabile $TMPDIR per i programmi che si comportano in modo corretto. 9.3.13. Espandere lo spazio di archiviazione utilizzabile con LVM Le partizioni create al momento dell'installazione su LVM (Logical Volume Manager (http://en.wikipedia.org/wiki/ Logical_Volume_Manager_(Linux)) (funzionalità di Linux) possono     essere facilmente ridimensionate concatenando ad esse delle estensioni o suddividendo le loro estensioni su dispositivi di archiviazione multipli senza riconfigurazioni importanti del sistema. 9.3.14. Espandere lo spazio di archiviazione utilizzabile montando un'altra partizione Se è disponibile una nuova partizione vuota (per esempio "/dev/     sdx"), la si può formattare con mkfs.ext3(1) e montarla con mount (8) in una directory in cui è necessario avere più spazio. (È necessario copiare il contenuto originale della directory.) $ sudo mv dir-da-usare vecchia-dir $ sudo mkfs.ext3 /dev/sdx     $ sudo mount -t ext3 /dev/sdx dir-da-usare $ sudo cp -a vecchia-dir/* dir-da-usare $ sudo rm -rf vecchia-dir Suggerimento In alternativa si può montare un file immagine vuoto del disco     (vedere Sezione 10.2.5, «Creare un file con immagine di disco vuoto») come device loop (vedere Sezione 10.2.3, «Montare un file con un'immagine di disco»). Il reale uso del disco cresce mano a mano che vengono archiviati i dati. 9.3.15. Espandere lo spazio di archiviazione utilizzabile montando un collegamento ad un'altra directory Se è disponibile una directory vuota (ad esempio "/percorso/della /dir-vuota") in un'altra partizione con spazio disponibile, si     può, usando mount(8) con l'opzione "--bind", montarla in una directory (ad esempio "dir-di-lavoro") dove è necessario più spazio.     $ sudo mount --bind /percorso/della/dir-vuota dir-di-lavoro 9.3.16. Espandere lo spazio di archiviazione utilizzabile usando collegamenti simbolici Suggerimento     Questo è un metodo deprecato. Usare invece Sezione 9.3.15, «Espandere lo spazio di archiviazione utilizzabile montando un collegamento ad un'altra directory», se possibile. Se è disponibile una directory vuota (ad esempio "/percorso/della     /dir-vuota" in un'altra partizione con spazio disponibile, si può creare un collegamento simbolico alla directory con ln(8). $ sudo mv dir-da-usare vecchia-dir $ sudo mkdir -p /percorso/della/dir-vuota     $ sudo ln -sf /percorso/della/dir-vuota dir-da-usare $ sudo cp -a vecchia-dir/* dir-da-usare $ sudo rm -rf vecchia-dir Avvertimento     Non usare un "collegamento simbolico ad una directory" per le directory gestite dal sistema, come "/opt". Un collegamento simbolico simile potrebbe essere sovrascritto quando il sistema viene aggiornato. Attenzione     Certo software può non funzionare bene con un "collegamento simbolico ad una directory". 9.3.17. Espandere lo spazio di archiviazione utilizzabile usando aufs Se è disponibile dello spazio utilizzabile in un'altra partizione     (ad esempio "/percorso/della/"), si può creare in essa una directory e impilarla nella directory in cui si ha bisogno di spazio usando aufs (http://en.wikipedia.org/wiki/Aufs) . $ sudo mv dir-da-usare vecchia-dir     $ sudo mkdir dir-da-usare $ sudo mkdir -p /percorso/della/dir-vuota $ sudo mount -t aufs -o br:/percorso/della/dir-vuota:vecchia-dir none dir-da-usare Attenzione     Non è una buona idea usare aufs (http://en.wikipedia.org/wiki/ Aufs) per archiviazione di dati a lungo termine, dato che è uno strumento in fase di sviluppo e cambiamenti nella sua struttura potrebbero causare problemi. Suggerimento     Per poter usare aufs (http://en.wikipedia.org/wiki/Aufs) , devono essere installati il suo pacchetto di utilità aufs-tools e un pacchetto con il modulo del kernel per aufs (http:// en.wikipedia.org/wiki/Aufs) , come aufs-modules-2.6-amd64. Suggerimento     aufs (http://en.wikipedia.org/wiki/Aufs) è usato da molti progetti moderni per CD live (http://it.wikipedia.org/wiki/ Live_CD) per fornire un file system root scrivibile. 9.4. Suggerimenti per la cifratura dei dati Avendo l'accesso fisico alla macchina, chiunque può facilmente ottenere privilegi di root e accedere a tutti i file nel PC (vedere Sezione 4.7.4, «Rendere sicura la password di root»). Ciò significa che il sistema delle password di login non può mettere     al sicuro i dati privati e sensibili contro un possibile furto del PC. Per farlo deve essere usata una tecnologia di cifratura dei dati. Sebbene GNU Privacy Guard (http://it.wikipedia.org/wiki /GNU_Privacy_Guard) (vedere Sezione 10.4, «Infrastruttura di sicurezza dei dati») possa cifrare file, richiede un po' di lavoro da parte dell'utente. dm-crypt (http://en.wikipedia.org/wiki/Dm-crypt) e eCryptfs     (http://ecryptfs.sourceforge.net/) facilitano la cifratura automatica dei dati in modo nativo attraverso moduli del kernel Linux con un minimo lavoro da parte dell'utente. Tabella 9.9. Elenco di utilità per la cifratura dei dati +-----------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+---------------+----------------------+------------------------| | | | |utilità per device a | | |V:42, I:63 | |blocchi cifrati ( | |cryptsetup (http://|(http:// |329 (http:// |dm-crypt (http:// | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|en.wikipedia.org/wiki/ | |/sid/cryptsetup) |popcon.php? |/c/cryptsetup.html) |Dm-crypt) / LUKS (http:/| | |package= | |/en.wikipedia.org/wiki/ | | |cryptsetup) | |Linux_Unified_Key_Setup)| | | | |) | |-------------------+---------------+----------------------+------------------------| | | | |utilità per device a | | | | |blocchi cifrati ( |     | | | |dm-crypt (http:// | | |V:3, I:5 (http:| |en.wikipedia.org/wiki/ | |cryptmount (http://|//qa.debian.org|350 (http:// |Dm-crypt) / LUKS (http:/| |packages.debian.org|/popcon.php? |packages.qa.debian.org|/en.wikipedia.org/wiki/ | |/sid/cryptmount) |package= |/c/cryptmount.html) |Linux_Unified_Key_Setup)| | |cryptmount) | |) con particolare | | | | |attenzione al montaggio/| | | | |smontaggio da parte di | | | | |utenti normali | |-------------------+---------------+----------------------+------------------------| |ecryptfs-utils |V:5, I:6 (http:|311 (http:// |utilità per file system | |(http:// |//qa.debian.org|packages.qa.debian.org|stack cifrati (eCryptfs | |packages.debian.org|/popcon.php? |/e/ |(http:// | |/sid/ |package= |ecryptfs-utils.html) |ecryptfs.sourceforge.net| |ecryptfs-utils) |ecryptfs-utils)| |/) ) | +-----------------------------------------------------------------------------------+ Dm-crypt (http://en.wikipedia.org/wiki/Dm-crypt) è un file system     crittografico che usa device-mapper (http://en.wikipedia.org/wiki /Device_mapper) . Device mapper (http://en.wikipedia.org/wiki/ Device_mapper) mappa un blocco di un device ad un altro. eCryptfs (http://ecryptfs.sourceforge.net/) è un altro file     system crittografico che usa un file system stack; quest'ultimo si sovrappone ad una directory esistente in un file system montato. Attenzione     La cifratura dei dati consuma tempo CPU, ecc. Valutare bene i suoi costi e i benefici. Nota È possibile installare un intero file system Debian in un disco     cifrato con l'Installatore Debian (http://it.wikipedia.org/wiki/ Debian-Installer) (lenny o successivo) usando dm-crypt (http:// en.wikipedia.org/wiki/Dm-crypt) /LUKS (http://en.wikipedia.org/ wiki/Linux_Unified_Key_Setup) e initramfs. Suggerimento     Per lo strumento di cifratura in spazio utente GNU Privacy Guard (http://it.wikipedia.org/wiki/GNU_Privacy_Guard) vedere Sezione 10.4, «Infrastruttura di sicurezza dei dati». 9.4.1. Cifratura di dischi removibili con dm-crypt/LUKS Si può cifrare il contenuto di device di memorizzazione di massa removibili, ad esempio una chiavetta USB in "/dev/sdx", usando     dm-crypt (http://en.wikipedia.org/wiki/Dm-crypt) /LUKS (http:// en.wikipedia.org/wiki/Linux_Unified_Key_Setup) . Formattarla semplicemente nel modo seguente. # badblocks -c 1024 -s -w -t random -v /dev/sdx # fdisk /dev/sdx ... "n" "p" "1" "return" "return" "w" # cryptsetup luksFormat /dev/sdx1 ... # cryptsetup luksOpen /dev/sdx1 sdx1     ... # ls -l /dev/mapper/ total 0 crw-rw---- 1 root root 10, 60 2008-10-04 18:44 control brw-rw---- 1 root disk 254, 0 2008-10-04 23:55 sdx1 # mkfs.vfat /dev/mapper/sdx1 ... # cryptsetup luksClose sdx1 Si può poi montarla come una chiavetta qualunque in "/media/ ", tranne per il fatto che verrà chiesta la password (vedere Sezione 10.1.10, «Supporti di archiviazione     removibili») nei moderni ambienti desktop, come GNOME che usa gnome-mount(1). La differenza è che ogni dato scritto in essa è cifrato. In alternativa è possibile formattare il supporto in un formato diverso, ad esempio ext3 usando "mkfs.ext3 /dev/sdx1". Nota     Se si è veramente paranoici per ciò che riguarda la sicurezza dei propri dati, potrebbe essere necessario sovrascrivere diverse volte nell'esempio precedente. Questa operazione richiede però parecchio tempo. 9.4.2. Cifratura della partizione di swap con dm-crypt     In questo esempio si suppone che il file "/etc/fstab" originale contenga quanto segue.     /dev/sda7 swap sw 0 0 Si può abilitare la cifratura della partizione di swap usando     dm-crypt (http://en.wikipedia.org/wiki/Dm-crypt) nel modo seguente. # aptitude install cryptsetup # swapoff -a # echo "cswap /dev/sda7 /dev/urandom swap" >> /etc/crypttab     # perl -i -p -e "s/\/dev\/sda7/\/dev\/mapper\/cswap/" /etc/fstab # /etc/init.d/cryptdisks restart ... # swapon -a 9.4.3. Cifratura automatica di file con eCryptfs È possibile cifrare automaticamente i file scritti in "~/Private/     " usando eCryptfs (http://ecryptfs.sourceforge.net/) e il pacchetto ecryptfs-utils. * Eseguire ecryptfs-setup-private(1) e impostare "~/Private/" nei prompt mostrati. * Attivare "~/Private/" eseguendo ecryptfs-mount-private(1). * Spostare i file con dati sensibili in "~/Private/" e creare i collegamenti simbolici necessari. o File candidati sono:"~/.fetchmailrc", "~/.ssh/identity", "~/.ssh/id_rsa", "~/.ssh/id_dsa" e altri file con permessi "go-rwx" * Spostare le directory con dati sensibili in una     sottodirectory in "~/Private/" e creare i collegamenti simbolici necessari. o Directory candidate sono: "~/.gnupg" e altre directory con permessi "go-rwx" * Creare un collegamento simbolico da "~/Desktop/Private/" a "~ /Private/" per facilitare le operazioni dal desktop. * Disattivare "~/Private/" eseguendo ecryptfs-umount-private(1) . * Attivare "~/Private/" eseguendo ecryptfs-mount-private(1) quando sono necessari dati cifrati.. Suggerimento Dato che eCryptfs (http://ecryptfs.sourceforge.net/) cifra selettivamente solo i file sensibili, il suo costo in termini di     risorse di sistema è molto minore dell'uso di dm-crypt (http:// en.wikipedia.org/wiki/Dm-crypt) sull'intero device root o "/ home". Non richiede nessun lavoro speciale di archiviazione su disco, ma non può mantenere confidenziali tutti i metadati del file system. 9.4.4. Montare automaticamente eCryptfs Se si usa la propria password di login come wrapper per le chiavi     di cifratura, si può automatizzare il montaggio di eCryptfs tramite PAM (Pluggable Authentication Modules) (http:// it.wikipedia.org/wiki/Pluggable_authentication_modules) .     Inserire la riga seguente immediatamente prima di "pam_permit.so" in "/etc/pam.d/common-auth".     auth required pam_ecryptfs.so unwrap     Inserire la riga seguente come ultima riga in "/etc/pam.d/ common-session".     session optional pam_ecryptfs.so unwrap     Insrire la riga seguente come prima riga attiva in "/etc/pam.d/ common-password".     password required pam_ecryptfs.so     Ciò risulta molto comodo. Avvertimento     Errori di configurazione di PAM (http://it.wikipedia.org/wiki/ Pluggable_authentication_modules) possono lasciare l'utente chiuso fuori dal proprio sistema. Vedere Capitolo 4, Autenticazione. Attenzione Se si usa la propria password di login per fare da wrapper alle chiavi di cifratura, i dati cifrati sono sicuri tanto quanto la password di login dell'utente (vedere Sezione 4.3, «Password     buone»). A meno che non si scelga prudentemente una password forte (http://en.wikipedia.org/wiki/Password_strength) , i propri dati saranno a rischio se qualcuno esegue software di forzatura della password (http://en.wikipedia.org/wiki/Password_cracking) dopo aver rubato il portatile (vedere Sezione 4.7.4, «Rendere sicura la password di root»). 9.5. Monitorare, controllare ed avviare l'attività dei programmi     Le attività dei programmi possono essere monitorare e controllate usando strumenti specializzati. Tabella 9.10. Elenco di strumenti per monitorare e controllare l'attività dei programmi. +---------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+-------------+----------------------+------------------| | |V:869, I:999 | |nice(1): esegue un| |coreutils (http:// |(http:// |13461 (http:// |programma con | |packages.debian.org|qa.debian.org|packages.qa.debian.org|priorità di | |/sid/coreutils) |/popcon.php? |/c/coreutils.html) |schedulazione | | |package= | |modificata | | |coreutils) | | | |-------------------+-------------+----------------------+------------------| | |V:809, I:999 | |renice(1): | |bsdutils (http:// |(http:// |185 (http:// |modifica la | |packages.debian.org|qa.debian.org|packages.qa.debian.org|priorità di | |/sid/bsdutils) |/popcon.php? |/b/bsdutils.html) |schedulazione di | | |package= | |un processo in | | |bsdutils) | |esecuzione | |-------------------+-------------+----------------------+------------------| | |V:828, I:999 | |utilità per il | |procps (http:// |(http:// |651 (http:// |file system "/ | |packages.debian.org|qa.debian.org|packages.qa.debian.org|proc": ps(1), top | |/sid/procps) |/popcon.php? |/p/procps.html) |(1), kill(1), | | |package= | |watch(1), … | | |procps) | | | |-------------------+-------------+----------------------+------------------| | |V:646, I:960 | |utilità per il | |psmisc (http:// |(http:// |721 (http:// |file system "/ | |packages.debian.org|qa.debian.org|packages.qa.debian.org|proc": killall(1),| |/sid/psmisc) |/popcon.php? |/p/psmisc.html) |fuser(1), peekfd | | |package= | |(1), pstree(1) | | |psmisc) | | | |-------------------+-------------+----------------------+------------------| | |V:63, I:888 | |time(1): esegue un| |time (http:// |(http:// |78 (http:// |programma per | |packages.debian.org|qa.debian.org|packages.qa.debian.org|riportare l'uso | |/sid/time) |/popcon.php? |/t/time.html) |delle risorse di | | |package=time)| |sistema in | | | | |funzione del tempo| |-------------------+-------------+----------------------+------------------| | |V:78, I:99 | |sar(1), iostat(1),| |sysstat (http:// |(http:// |1016 (http:// |mpstat(1), …: | |packages.debian.org|qa.debian.org|packages.qa.debian.org|strumenti per le | |/sid/sysstat) |/popcon.php? |/s/sysstat.html) |prestazioni di | | |package= | |sistema per Linux | | |sysstat) | | | |-------------------+-------------+----------------------+------------------| | |V:0, I:8 | |Interactive System| |isag (http:// |(http:// |129 (http:// |Activity Grapher | |packages.debian.org|qa.debian.org|packages.qa.debian.org|(tracciamento | |/sid/isag) |/popcon.php? |/i/isag.html) |interattivo | | |package=isag)| |dell'attivita) per| | | | |sysstat | |-------------------+-------------+----------------------+------------------| | |V:422, I:930 | |lsof(8): elenca, |     |lsof (http:// |(http:// |420 (http:// |usando l'opzione | |packages.debian.org|qa.debian.org|packages.qa.debian.org|"-p", i file | |/sid/lsof) |/popcon.php? |/l/lsof.html) |aperti da un | | |package=lsof)| |processo in | | | | |esecuzione | |-------------------+-------------+----------------------+------------------| | |V:33, I:219 | | | |strace (http:// |(http:// |404 (http:// |strace(1): traccia| |packages.debian.org|qa.debian.org|packages.qa.debian.org|le chiamate e i | |/sid/strace) |/popcon.php? |/s/strace.html) |segnali di sistema| | |package= | | | | |strace) | | | |-------------------+-------------+----------------------+------------------| | |V:2, I:29 | | | |ltrace (http:// |(http:// |188 (http:// |ltrace(1): traccia| |packages.debian.org|qa.debian.org|packages.qa.debian.org|le chiamate di | |/sid/ltrace) |/popcon.php? |/l/ltrace.html) |libreria | | |package= | | | | |ltrace) | | | |-------------------+-------------+----------------------+------------------| | |V:0, I:1 | | | |xtrace (http:// |(http:// |336 (http:// |xtrace(1): traccia| |packages.debian.org|qa.debian.org|packages.qa.debian.org|la comunicazione | |/sid/xtrace) |/popcon.php? |/x/xtrace.html) |tra client e | | |package= | |server X11 | | |xtrace) | | | |-------------------+-------------+----------------------+------------------| | |V:7, I:213 | |powertop(1): | |powertop (http:// |(http:// |474 (http:// |informazioni | |packages.debian.org|qa.debian.org|packages.qa.debian.org|sull'uso | |/sid/powertop) |/popcon.php? |/p/powertop.html) |dell'alimentazione| | |package= | |in portatili | | |powertop) | |basati su Intel | |-------------------+-------------+----------------------+------------------| | |V:867, I:998 | |esegue processi | |cron (http:// |(http:// |300 (http:// |dal demone cron(8)| |packages.debian.org|qa.debian.org|packages.qa.debian.org|sullo sfondo in | |/sid/cron) |/popcon.php? |/c/cron.html) |base ad una | | |package=cron)| |pianificazione | |-------------------+-------------+----------------------+------------------| | |V:440, I:530 | |pianificatore di | |anacron (http:// |(http:// |163 (http:// |comandi in stile | |packages.debian.org|qa.debian.org|packages.qa.debian.org|cron, per i | |/sid/anacron) |/popcon.php? |/a/anacron.html) |sistemi che non | | |package= | |sono in esecuzione| | |anacron) | |24 ore al giorno | |-------------------+-------------+----------------------+------------------| | | | |at(1) o batch(1): | | |V:501, I:890 | |esegue un compito | |at (http:// |(http:// |101 (http:// |ad un orario | |packages.debian.org|qa.debian.org|packages.qa.debian.org|specificato o | |/sid/at) |/popcon.php? |/a/at.html) |quando il carico | | |package=at) | |di sistema scende | | | | |sotto un certo | | | | |livello | +---------------------------------------------------------------------------+ Suggerimento     Il pacchetto procps fornisce strumenti estremamente di base per monitorare, controllare ed avviare le attività dei programmi. È consigliabile imparare ad usarli tutti. 9.5.1. Cronometrare un processo     Mostrare il tempo usato dal processo invocato da un comando. # time un_qualche_comando >/dev/null     real 0m0.035s # tempo di orologio (tempo reale trascorso) user 0m0.000s # tempo in modalità utente sys 0m0.020s # tempo in modalità kernel 9.5.2. Priorità di schedulazione     Per controllare la priorità di schedulazione di un processo è usato il valore di nice. Tabella 9.11. Elenco di valori di nice per la priorità di schedulazione +---------------------------------------------------------------+ |valore di |priorità di schedulazione | |nice | | |-----------+---------------------------------------------------|     |19 |processo dalla priorità più bassa possibile (nice -| | |gentile) | |-----------+---------------------------------------------------| |0 |processo a priorità molto alta per l'utente | |-----------+---------------------------------------------------| |-20 |processo a priorità molto alta per root (not-nice -| | |non gentile) | +---------------------------------------------------------------+     # nice -19 top # molto gentile # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # molto veloce     A volte un valore molto alto di nice fa più male che bene al sistema; usare quindi questo comando con molta cautela. 9.5.3. Il comando ps Il comando ps(1) in Debian supporta sia le funzionalità BSD sia     quelle SystemV ed aiuta ad identificare l'attività dei processi in modo statico. Tabella 9.12. Elenco degli stili per il comando ps +----------------------------------------+ |stile |comando tipico|funzione |     |--------+--------------+----------------| |BSD |ps aux |mostra %CPU %MEM| |--------+--------------+----------------| |System V|ps -efH |mostra PPID | +----------------------------------------+     È possibile uccidere i processi figli zombie (defunti) tramite l'ID di processo del genitore identificato dal campo "PPID".     Il comando pstree(1) mostra un albero dei processi. 9.5.4. Il comando top top(1) in Debian ha molte funzionalità e aiuta ad indentificare     in modo dinamico i processi che si stanno comportando in modo strano. Tabella 9.13. Elenco dei comandi per top +---------------------------------------------------------------+ |tasto del |descrizione della risposta | |comando | | |---------------+-----------------------------------------------| |h o ? |mostra l'aiuto | |---------------+-----------------------------------------------| |f |imposta/reimposta i campi mostrati | |---------------+-----------------------------------------------|     |o |riordina i campi mostrati | |---------------+-----------------------------------------------| |F |imposta il campo da usare come chiave di | | |ordinamento | |---------------+-----------------------------------------------| |k |uccide un processo | |---------------+-----------------------------------------------| |r |modifica il valore di nice di un processo | |---------------+-----------------------------------------------| |q |esce dal comando top | +---------------------------------------------------------------+ 9.5.5. Elencare i file aperti da un processo È possibile elencare tutti i file aperti da un processo     attraverso il suo PID (Identificativo di processo), ad esempio 1, con il comando seguente.     $ sudo lsof -p 1     Di solito il processo con PID=1 è il programma init. 9.5.6. Tenere traccia delle attività di un programma Si può tenere traccia dell'attività di un programma con strace(1)     , ltrace(1) o xtrace(1) rispettivamente per quello che riguarda chiamate e segnali di sistema, chiamate di libreria o comunicazioni tra client e server X11.     Si può tenere traccia delle chiamate di sistema del comando ls nel modo seguente.     $ sudo strace ls 9.5.7. Identificazione di processi in base a file o socket Usando fuser(1) è anche possibile identificare i processi in base     ai file usando, ad esempio per "/var/log/mail.log" con il comando seguente. $ sudo fuser -v /var/log/mail.log     USER PID ACCESS COMMAND /var/log/mail.log: root 2946 F.... rsyslogd     Come si vede il file "/var/log/mail.log" è aperto in scrittura dal comando rsyslogd(8).     Usando fuser(1) si può anche identificare i processi in base ai socket, ad esempio per "smtp/tcp" con il comando seguente. $ sudo fuser -v smtp/tcp     USER PID ACCESS COMMAND smtp/tcp: Debian-exim 3379 F.... exim4 Ora si può vedere che sul sistema è in esecuzione exim4(8) per     gestire le connessioni TCP (http://it.wikipedia.org/wiki/ Transmission_Control_Protocol) alla porta SMTP (http:// it.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol) (25). 9.5.8. Ripetere un comando ad intervalli costanti     watch(1) esegue un programma in modo ripetitivo ad intervalli regolari mostrando il suo output sullo schermo.     $ watch w     Questo comando mostra chi è attualmente connesso al sistema in modo aggiornato ogni 2 secondi. 9.5.9. Ripetere un comando su diversi file Ci sono svariati modi di ripetere uno stesso comando su diversi     file che rispondono ad una qualche condizione, ad esempio che corrispondono al modello glob "*.ext".     * Metodo del ciclo for nella shell (vedere Sezione 12.1.4, «Cicli di shell»):     for x in *.ext; do if [ -f "$x"]; then comando "$x" ; fi; done     * Combinazione di find(1) e xargs(1):     find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 comando     * find(1) con l'opzione "-exec" con un comando:     find . -type f -maxdepth 1 -name '*.ext' -exec comando '{}' \;     * find(1) con l'opzione "-exec" con un breve script di shell:     find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "comando '{}' && echo 'esecuzione con successo'" \; Gli esempi precedenti sono stati scritti per assicurare la     gestione appropriata di nomi di file particolari come quelli contenenti spazi. Per usi più avanzati di find(1), vedere Sezione 10.1.5, «Esempi di invocazione per la selezione di file». 9.5.10. Avviare un programma dalla GUI     È possibile avviare un processo dalla interfaccia utente grafica (GUI) (http://it.wikipedia.org/wiki/Interfaccia_grafica) . Nell'ambiente desktop GNOME, un programma può essere avviato con le opzioni appropriate facendo doppio clic sulla icona del     lanciatore, trascinando e rilasciando un'icona di file sull'icona del lanciatore o usando la voce di menu"Apri con …" che si ottiene cliccando con il pulsante destro sull'icona di un file. Anche in KDE si possono fare le azioni equivalenti.     Quello che segue è un esempio per GNOME di creazione di un'icona di lanciatore per mc(1) avviato in gnome-terminal(1).     Creare un programma "mc-term" eseguibile nel modo seguente. # cat >/usr/local/bin/mc-term <> $HOME/tmp/output 2>&1     # eseguito alle 14:15 il primo giorno di ogni mese -- output inviato a paolo 15 14 1 * * $HOME/bin/mensile # eseguito alle 22:00 nei giorni infrasettimanali(1-5), disturbare Gianni. % per a capo, ultimo % per cc: 0 22 * * 1-5 mail -s "Sono le 10pm" giannie%Gianni,%%dove sono i tuoi ragazzi?%.%% 23 */2 2 * echo "eseguito 23 minuti dopo le 0am, 2am, 4am ..., il giorno 1 Feb " 5 4 * * sun echo "eseguito alle 04:05 ogni domenica" # eseguito alle 03:40 il primo lunedi' di ogni mese 40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && comando -opzioni Suggerimento Per i sistemi non in esecuzione in maniera continuata, installare     il pacchetto anacron per pianificare l'esecuzione di comandi periodici, in maniera il più possibile vicina agli intervalli specificati, in base a quanto permesso dal tempo di attività della macchina. Vedere anacron(8) e anacrontab(5). Suggerimento Gli script con compiti pianificati di amministrazione del sistema     possono essere eseguiti periodicamente dall'account di root, ponendoli in "/etc/cron.hourly/", "/etc/cron.daily/", "/etc/ cron.weekly/" o "/etc/cron.monthly/". L'orario di esecuzione di questi script può essere personalizzato con "/etc/crontab" e "/ etc/anacrontab". 9.5.15. Tasto Alt-SysRq L'opzione "Magic SysRq key" (tasto R Sist (http:// en.wikipedia.org/wiki/Secure_attention_key) ), di compilazione     del kernel, che è ora lo standard per i kernel Debian, fornisce una garanzia contro i malfunzionamenti del sistema. Premendo Alt-R Sist seguito da uno dei tasti seguenti, si ottiene magicamente di recuperare il controllo del sistema. Tabella 9.15. Elenco di tasti per il comando SAK +---------------------------------------------------------------+ |tasto premuto |descrizione dell'azione | |dopo Alt-R_Sist| | |---------------+-----------------------------------------------| |r |ripristina la tastiera dalla modalità raw dopo | | |un crash di X | |---------------+-----------------------------------------------| | |cambia il livello di visualizzazione del | |0 |registro sulla console a 0 per ridurre i | | |messaggi di errore | |---------------+-----------------------------------------------| |k |uccide (kill) tutti i processi nella console | | |virtuale attuale |     |---------------+-----------------------------------------------| |e |invia un segnale SIGTERM a tutti i processi, | | |tranne init(8) | |---------------+-----------------------------------------------| |i |invia un segnale SIGKILL a tutti i processi, | | |tranne init(8) | |---------------+-----------------------------------------------| |s |sincronizza tutti i file system montati | |---------------+-----------------------------------------------| |u |monta nuovamente tutti i file system in sola | | |letturra (umount) | |---------------+-----------------------------------------------| |b |riavvia (reboot) il sistema senza sincronizzare| | |o smontare i file system | +---------------------------------------------------------------+     La combinazione di "Alt-R_Sist s", "Alt-R_Sist u" e "Alt-R_Sist r" è buona per uscire da situazioni veramente brutte.     Vedere "/usr/share/doc/linux-doc-2.6.*/Documentation/ sysrq.txt.gz". Attenzione La funzione Alt-R_Sist può essere considerata un rischio per la     sicurezza dato che permette agli utenti l'accesso a funzioni con privilegi di root. Per disabilitale la funzione Alt-R_Sist mettere "echo 0 >/proc/sys/kernel/sysrq" in "/etc/rc.local" o "kernel.sysrq = 0" in "/etc/sysctl.conf". Suggerimento Si può usare la funzione Alt-R_Sist da un terminale SSH, ecc.     scrivendo su "/proc/sysrq-trigger". Per esempio, "echo s > /proc/ sysrq-trigger; echo u > /proc/sysrq-trigger" dal prompt di shell di root sincronizza ed esegue umount per tutti i file system montati. 9.6. Suggerimenti per l'amministrazione del sistema 9.6.1. Chi è nel sistema?     Si può controllare chi è connesso al sistema nei modi seguenti. * who(1) mostra chi ha fatto il login ed è connesso. * w(1) mostra l'elenco di chi ha fatto il login ed è connesso e cosa sta facendo.     * last(1) mostra l'elenco degli utenti che hanno fatto il login più recentemente. * lastb(1) mostra l'elenco degli utenti che hanno tentato il login non riuscendovi più recentemente. Suggerimento     Queste informazioni sugli utenti sono contenute in "/var/run/ utmp", "/var/log/wtmp" e "/var/run/utmp". Vedere login(1) e utmp (5). 9.6.2. Avvertire tutti gli utenti     Si può mandare un messaggio a tutti gli utenti che sono connessi al sistema con wall(1) nel modo seguente.     $ echo "Arresto pianificato del sistema tra 1 ora" | wall 9.6.3. Identificazione dell'hardware Per i dispositivi di tipo simile PCI (http://it.wikipedia.org/ wiki/Peripheral_Component_Interconnect) (AGP (http:// it.wikipedia.org/wiki/Accelerated_Graphics_Port) , PCI-Express     (http://it.wikipedia.org/wiki/PCI_Express) , CardBus (http:// it.wikipedia.org/wiki/PC_Card#CardBus) , ExpressCard (http:// en.wikipedia.org/wiki/ExpressCard) , ecc.), lspci(8) (probabilmente con l'opzione "-nn") è un buon punto di partenza per l'identificazione dell'hardware. In alternativa, si può identificare l'hardware leggendo il     contenuto di "/proc/bus/pci/devices" o sfogliando l'albero di directory in "/sys/bus/pci" (vedere Sezione 1.2.12, «procfs e sysfs»). Tabella 9.16. Elenco di strumenti per l'identificazione dell'hardware +------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+-------------+----------------------+---------------| | |V:169, I:982 | | | |pciutils (http:// |(http:// |1044 (http:// | | |packages.debian.org|qa.debian.org|packages.qa.debian.org|utilità PCI | |/sid/pciutils) |/popcon.php? |/p/pciutils.html) |Linux: lspci(8)| | |package= | | | | |pciutils) | | | |-------------------+-------------+----------------------+---------------| | |V:263, I:905 | | | |usbutils (http:// |(http:// |640 (http:// | | |packages.debian.org|qa.debian.org|packages.qa.debian.org|utilità Linux | |/sid/usbutils) |/popcon.php? |/u/usbutils.html) |USB: lsusb(8) | | |package= | | | | |usbutils) | | | |-------------------+-------------+----------------------+---------------| | |V:75, I:201 | | | |pcmciautils (http:/|(http:// |121 (http:// |utilità PCMCIA | |/ |qa.debian.org|packages.qa.debian.org|per Linux 2.6: | |packages.debian.org|/popcon.php? |/p/pcmciautils.html) |pccardctl(8) | |/sid/pcmciautils) |package= | | | | |pcmciautils) | | | |-------------------+-------------+----------------------+---------------|     | |V:1, I:6 | |raccosta di | |scsitools (http:// |(http:// |316 (http:// |strumenti per | |packages.debian.org|qa.debian.org|packages.qa.debian.org|la gestione | |/sid/scsitools) |/popcon.php? |/s/scsitools.html) |dell'hardware | | |package= | |SCSI:lsscsi(8) | | |scsitools) | | | |-------------------+-------------+----------------------+---------------| | |V:1, I:26 | | | |procinfo (http:// |(http:// |164 (http:// |informazioni | |packages.debian.org|qa.debian.org|packages.qa.debian.org|sul sistema | |/sid/procinfo) |/popcon.php? |/p/procinfo.html) |ottenute da "/ | | |package= | |proc": lsdev(8)| | |procinfo) | | | |-------------------+-------------+----------------------+---------------| | |V:10, I:82 | |informazioni | |lshw (http:// |(http:// |763 (http:// |sulla | |packages.debian.org|qa.debian.org|packages.qa.debian.org|configurazione | |/sid/lshw) |/popcon.php? |/l/lshw.html) |hardware: lshw | | |package=lshw)| |(1) | |-------------------+-------------+----------------------+---------------| | |V:51, I:793 | | | |discover (http:// |(http:// |66 (http:// |sistema di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|identificazione| |/sid/discover) |/popcon.php? |/d/discover.html) |dell'hardware: | | |package= | |discover(8) | | |discover) | | | +------------------------------------------------------------------------+ 9.6.4. Configurazione dell'hardware Sebbene nei moderni sistemi desktop con interfaccia grafica, come GNOME e KDE, la maggior parte della configurazione dell'hardware     possa essere gestita attraverso strumenti di configurazione con interfaccia grafica da essi forniti, è bene conoscere alcuni metodi di base di configurazione. Tabella 9.17. Elenco di strumenti di configurazione dell'hardware +-------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+------------------+-----------------------+----------------| | |V:104, I:154 | | | |hal (http:// |(http:// |1495 (http:// |HAL (Hardware | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/|Abstraction | |/sid/hal) |popcon.php?package|h/hal.html) |Layer): lshal(1)| | |=hal) | | | |-------------------+------------------+-----------------------+----------------| | | | |utilità Linux | |console-tools |V:94, I:210 (http:|956 (http:// |per i tipi di | |(http:// |//qa.debian.org/ |packages.qa.debian.org/|carattere e la | |packages.debian.org|popcon.php?package|c/console-tools.html) |mappa di | |/sid/console-tools)|=console-tools) | |tastiera in | | | | |console | |-------------------+------------------+-----------------------+----------------| |x11-xserver-utils |V:374, I:601 | | | |(http:// |(http:// |485 (http:// |utilità del | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/|server X: xset | |/sid/ |popcon.php?package|x/ |(1), xmodmap(1) | |x11-xserver-utils) |= |x11-xserver-utils.html)| | | |x11-xserver-utils)| | | |-------------------+------------------+-----------------------+----------------| | | | |demone per | | | | |gestire eventi | | | | |inviati | | |V:519, I:941 | |dall'ACPI | |acpid (http:// |(http:// |189 (http:// |(Advanced | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/|Configuration | |/sid/acpid) |popcon.php?package|a/acpid.html) |and Power | | |=acpid) | |Interface, | | | | |interfaccia | | | | |avanzata per | | | | |configurazione | | | | |ed energia) | |-------------------+------------------+-----------------------+----------------| |acpi (http:// |V:53, I:802 (http:|70 (http:// |utilità per | |packages.debian.org|//qa.debian.org/ |packages.qa.debian.org/|mostrare | |/sid/acpi) |popcon.php?package|a/acpi.html) |informazioni sui| | |=acpi) | |device ACPI | |-------------------+------------------+-----------------------+----------------| | | | |demone per | | | | |gestire eventi | |apmd (http:// |V:4, I:68 (http://|252 (http:// |inviati dall'APM| |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/|(Advanced Power | |/sid/apmd) |popcon.php?package|a/apmd.html) |Management, | | |=apmd) | |gestione | | | | |avanzata | | | | |dell'energia) | |-------------------+------------------+-----------------------+----------------| | |V:0, I:0 (http:// | |demone per | |sleepd (http:// |qa.debian.org/ |148 (http:// |sospendere un | |packages.debian.org|popcon.php?package|packages.qa.debian.org/|portatile |     |/sid/sleepd) |=sleepd) |s/sleepd.html) |durante | | | | |l'inattività | |-------------------+------------------+-----------------------+----------------| | | | |ottimizzazione | | |V:334, I:617 | |degli accessi al| |hdparm (http:// |(http:// |285 (http:// |disco fisso | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/|(vedere | |/sid/hdparm) |popcon.php?package|h/hdparm.html) |Sezione 9.3.9, | | |=hdparm) | |«Ottimizzare il | | | | |disco rigido») | |-------------------+------------------+-----------------------+----------------| | | | |controllo e | | | | |monitoraggio dei| | | | |sistemi di | |smartmontools |V:65, I:249 (http:|1602 (http:// |archiviazione | |(http:// |//qa.debian.org/ |packages.qa.debian.org/|usando | |packages.debian.org|popcon.php?package|s/smartmontools.html) |S.M.A.R.T. | |/sid/smartmontools)|=smartmontools) | |(http:// | | | | |it.wikipedia.org| | | | |/wiki/ | | | | |S.M.A.R.T.) | |-------------------+------------------+-----------------------+----------------| |setserial (http:// |V:8, I:19 (http://|141 (http:// |raccolta di | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/|strumenti per la| |/sid/setserial) |popcon.php?package|s/setserial.html) |gestione delle | | |=setserial) | |porte seriali | |-------------------+------------------+-----------------------+----------------| | |V:3, I:78 (http://| |raccolta di | |memtest86+ (http://|qa.debian.org/ |2342 (http:// |strumenti per la| |packages.debian.org|popcon.php?package|packages.qa.debian.org/|gestione di | |/sid/memtest86+) |=memtest86+) |m/memtest86+.html) |hardware di | | | | |memoria | |-------------------+------------------+-----------------------+----------------| | | | |raccolta di | | |V:1, I:6 (http:// | |strumenti per la| |scsitools (http:// |qa.debian.org/ |316 (http:// |gestione di | |packages.debian.org|popcon.php?package|packages.qa.debian.org/|hardware SCSI | |/sid/scsitools) |=scsitools) |s/scsitools.html) |(http:// | | | | |it.wikipedia.org| | | | |/wiki/SCSI) | |-------------------+------------------+-----------------------+----------------| |tpconfig (http:// |V:1, I:5 (http:// |164 (http:// |utilità per | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/|configurare i | |/sid/tpconfig) |popcon.php?package|t/tpconfig.html) |dispositivi | | |=tpconfig) | |touchpad | |-------------------+------------------+-----------------------+----------------| |setcd (http:// |V:0, I:2 (http:// |28 (http:// |ottimizzazione | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/|dell'accesso | |/sid/setcd) |popcon.php?package|s/setcd.html) |alle unità CD | | |=setcd) | | | |-------------------+------------------+-----------------------+----------------| |big-cursor (http://|I:1 (http:// |68 (http:// |puntatori del | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/|mouse più grandi| |/sid/big-cursor) |popcon.php?package|b/big-cursor.html) |per X | | |=big-cursor) | | | +-------------------------------------------------------------------------------+ ACPI (http://it.wikipedia.org/wiki/ACPI) è un'infrastruttura per     il sistema di gestione dell'energia più nuovo di APM (http:// it.wikipedia.org/wiki/Advanced_Power_Management) Suggerimento     La modifica della frequenza della CPU nei sistemi moderni è controllata da moduli del kernel come acpi_cpufreq. 9.6.5. Orario di sistema e hardware     I comandi seguenti impostano l'ora di sistema e hardware a MM/GG hh:mm, AAAA. # date MMGGhhmmAAAA     # hwclock --utc --systohc # hwclock --show Nei sistemi Debian, gli orari sono mostrati normalmente come ora     locale, ma l'ora di sistema e quella hardware usano di solito l'ora UT(GMT) (http://it.wikipedia.org/wiki/Tempo_universale) .     Se l'ora hardware (BIOS) è impostata ad UT, modificare l'impostazione nel file "/etc/default/rcS" ad "UTC=yes". Se si desidera tenere aggiornata l'ora di sistema attraverso la     rete, si consideri l'uso del servizion NTP (http:// it.wikipedia.org/wiki/Network_Time_Protocol) con pacchetti come ntp, ntpdate e chrony.     Vedere la documentazione seguente. * Managing Accurate Date and Time HOWTO (http://www.tldp.org/ HOWTO/TimePrecision-HOWTO/index.html)     * Progetto servizi NTP pubblici (http://www.ntp.org/) * Il pacchetto ntp-doc Suggerimento     ntptrace(8), nel pacchetto ntp può tracciare una catena di server NTP all'indietro fino alla fonte originaria. 9.6.6. Configurazione del terminale     Ci sono diversi componenti per configurare le funzionalità della console a caratteri e il sistema ncurses(3). * Il file "/etc/terminfo/*/*" (terminfo(5))     * La variabile d'ambiente "$TERM" (term(7)) * setterm(1), stty(1), tic(1) e toe(1) :(Se, con un xterm non Debian, la voce terminfo per xterm non funziona, cambiare il tipo di terminale "$TERM" da "xterm" ad una     delle versioni con funzionalità limitate come "xterm-r6" quando si fa il login ad un sistema Debian da remoto. Per ulteriori iedere "/usr/share/doc/libncurses5/FAQ" . 9.6.7. L'infrastruttura audio I driver di dispositivo per le schede audio per l'attuale Linux 2.6 sono forniti da ALSA (Advanced Linux Sound Architecture)     (http://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture) . ALSA fornisce una modalità di emulazione per la compatibilità con il precedente sistema OSS (Open Sound System) (http:// it.wikipedia.org/wiki/Open_Sound_System) . Suggerimento     Per testare l'altoparlante usare "cat /dev/urandom > /dev/audio" oppure speaker-test(1). (^C per interrompere) Suggerimento Se non si ottiene l'audio, è possibile che l'altroparlante sia     connesso ad un output impostato come muto. I moderni sistemi sonori hanno svariati output. alsamixer(1) nel pacchetto alsa-utils è utile per configurare le impostazioni del volume e di muto. I software applicativi possono essere configurati non solo per     accedere direttamente a device audio, ma anche per accedervi attraverso un qualche sistema server sonoro standardizzato. Tabella 9.18. Elenco di pacchetti relativi all'audio +-------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+-------------------+------------------------+--------------------------| |alsa-base (http:// |V:15, I:546 (http:/|131 (http:// | | |packages.debian.org|/qa.debian.org/ |packages.qa.debian.org/a|file di configurazione del| |/sid/alsa-base) |popcon.php?package=|/alsa-base.html) |driver ALSA | | |alsa-base) | | | |-------------------+-------------------+------------------------+--------------------------| |alsa-utils (http://|V:380, I:548 (http:|2022 (http:// | | |packages.debian.org|//qa.debian.org/ |packages.qa.debian.org/a|utilità per configurare ed| |/sid/alsa-utils) |popcon.php?package=|/alsa-utils.html) |usare ALSA | | |alsa-utils) | | | |-------------------+-------------------+------------------------+--------------------------| |oss-compat (http://|V:45, I:127 (http:/|46 (http:// |compatibilità OSS in ALSA | |packages.debian.org|/qa.debian.org/ |packages.qa.debian.org/o|per prevenire errori "/dev| |/sid/oss-compat) |popcon.php?package=|/oss-compat.html) |/dsp not found" | | |oss-compat) | | | |-------------------+-------------------+------------------------+--------------------------| | |V:4, I:28 (http:// | |server JACK (JACK Audio | |jackd (http:// |qa.debian.org/ |32 (http:// |Connection Kit) (http:// | |packages.debian.org|popcon.php?package=|packages.qa.debian.org/j|it.wikipedia.org/wiki/ | |/sid/jackd) |jackd) |/jackd.html) |JACK_Audio_Connection_Kit)| | | | |(bassa latenza) | |-------------------+-------------------+------------------------+--------------------------| | |I:64 (http:// | |libreria JACK (JACK Audio | |libjack0 (http:// |qa.debian.org/ |137 (http:// |Connection Kit) (http:// | |packages.debian.org|popcon.php?package=|packages.qa.debian.org/ |it.wikipedia.org/wiki/ | |/sid/libjack0) |libjack0) |libj/libjack0.html) |JACK_Audio_Connection_Kit)| | | | |(bassa latenza) | |-------------------+-------------------+------------------------+--------------------------| |nas (http:// |V:0, I:1 (http:// |267 (http:// |server NAS (Network Audio | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/n|System) (http:// |     |/sid/nas) |popcon.php?package=|/nas.html) |en.wikipedia.org/wiki/ | | |nas) | |Network_Audio_System) | |-------------------+-------------------+------------------------+--------------------------| |libaudio2 (http:// |V:108, I:544 (http:|179 (http:// |libreria NAS (Network | |packages.debian.org|//qa.debian.org/ |packages.qa.debian.org/ |Audio System) (http:// | |/sid/libaudio2) |popcon.php?package=|liba/libaudio2.html) |en.wikipedia.org/wiki/ | | |libaudio2) | |Network_Audio_System) | |-------------------+-------------------+------------------------+--------------------------| |pulseaudio (http://|V:249, I:344 (http:|4902 (http:// |server PulseAudio (http://| |packages.debian.org|//qa.debian.org/ |packages.qa.debian.org/p|en.wikipedia.org/wiki/ | |/sid/pulseaudio) |popcon.php?package=|/pulseaudio.html) |PulseAudio) , sostituto | | |pulseaudio) | |per ESD | |-------------------+-------------------+------------------------+--------------------------| |libpulse0 (http:// |V:272, I:620 (http:|855 (http:// |libreria client PulseAudio| |packages.debian.org|//qa.debian.org/ |packages.qa.debian.org/ |(http://en.wikipedia.org/ | |/sid/libpulse0) |popcon.php?package=|libp/libpulse0.html) |wiki/PulseAudio) , | | |libpulse0) | |sostituto per ESD | |-------------------+-------------------+------------------------+--------------------------| |libgstreamer0.10-0 |V:370, I:589 (http:|3573 (http:// |GStreamer (http:// | |(http:// |//qa.debian.org/ |packages.qa.debian.org/ |it.wikipedia.org/wiki/ | |packages.debian.org|popcon.php?package=|libg/ |GStreamer) : motore audio | |/sid/ |libgstreamer0.10-0)|libgstreamer0.10-0.html)|di GNOME | |libgstreamer0.10-0)| | | | |-------------------+-------------------+------------------------+--------------------------| |libxine1 (http:// |I:114 (http:// |1 (http:// |xine (http:// | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/ |it.wikipedia.org/wiki/ | |/sid/libxine1) |popcon.php?package=|libx/libxine1.html) |Xine) : vecchio motore | | |libxine1) | |audio di KDE | |-------------------+-------------------+------------------------+--------------------------| |libphonon4 (http://|I:260 (http:// |566 (http:// |Phonon (http:// | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org/ |it.wikipedia.org/wiki/ | |/sid/libphonon4) |popcon.php?package=|libp/libphonon4.html) |Phonon) : motore audio di | | |libphonon4) | |KDE | +-------------------------------------------------------------------------------------------+ Normalmente esiste un motore audio comune per ciascun ambiente     desktop. Ciascun motore audio usato dalle applicazioni può scegliere di connettersi a diversi server audio. 9.6.8. Disabilitare il salvaschermo     Per disabilitare il salvaschermo usare i comandi seguenti. Tabella 9.19. Elenco di comandi per disabilitare il salvaschermo +---------------------------------------------------------------+ |ambiente |comando | |-----------------------------------------+---------------------| |Console Linux |setterm -powersave | | |off |     |-----------------------------------------+---------------------| |X Window (disabilitare il salvaschermo) |xset s off | |-----------------------------------------+---------------------| |X Window (disabilitare DPMS) |xset -dpms | |-----------------------------------------+---------------------| |X Window (configurazione tramite GUI del |xscreensaver-command | |salvaschermo) |-prefs | +---------------------------------------------------------------+ 9.6.9. Disabilitare i bip sonori Per disabilitare i bip sonori è sempre possibile disconnettere     l'altoparlante del PC; la rimozione del modulo pcspkr del kernel fa stessa cosa per conto dell'utente.     Il comando seguente evita che il programma readline(3) usato da bash(1) emetta suoni bip quando incontra "\a" (ASCII=7).     $ echo "set bell-style none">> ~/.inputrc 9.6.10. Uso della memoria     I messaggi di avvio del kernel nel file "/var/log/dmesg" contengono la dimensione esatta della memoria disponibile.     free(1) e top(1) mostrano informazioni sulle risorse di memoria nel sistema mentre è in funzione. # grep '\] Memory' /var/log/dmesg [ 0.004000] Memory: 990528k/1016784k available (1975k kernel code, 25868k reserved, 931k data, 296k init) $ free -k     total used free shared buffers cached Mem: 997184 976928 20256 0 129592 171932 -/+ buffers/cache: 675404 321780 Swap: 4545576 4 4545572 Suggerimento     Non ci si deve preoccupare della grande dimensione del valore "used" (usata) e della piccolo valore di "free" (libera) nella riga "Mem:", ma si può invece leggere la riga sottostante (con 675404 e 321780 nell'esempio precedente) e rilassarsi.     Per il mio MacBook con 1GB=1048576k DRAM (il sistema video ne ruba un po'), vedo le informazioni seguenti. Tabella 9.20. Elenco di dimensioni della memoria riportate +------------------------------------------------------------+ |fonte |dimensione | |-----------------------------+------------------------------| |Dimensione totale in dmesg |1016784k = 1GB - 31792k |     |-----------------------------+------------------------------| |Libera in dmesg |990528k | |-----------------------------+------------------------------| |Dimensione totale nella shell|997184k | |-----------------------------+------------------------------| |Libera nella shell |20256k (ma in effetti 321780k)| +------------------------------------------------------------+ 9.6.11. Verifica della sicurezza e dell'integrità del sistema     Una cattiva manutenzione del sistema può esporlo ad attacchi esterni.     Per verificare la sicurezza e l'integrità del sistema, si dovrebbe iniziare dai punti seguenti. * Il pacchetto debsums. Vedere debsums(1) e Sezione 2.5.2, «File "Release" nella directory principale ed autenticità». * Il pacchetto chkrootkit. Vedere chkrootkit(1). * La famiglia di pacchetti clamav. Vedere clamscan(1) e     freahclam(1). * FAQ Debian Security (http://www.debian.org/security/ faq.it.html) . * Manuale Securing Debian (http://www.debian.org/doc/manuals/ securing-debian-howto/) . Tabella 9.21. Elenco di strumenti per verificare la sicurezza e l'integrità del sistema +---------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+-------------+----------------------+------------------| | |V:19, I:24 | |demone per inviare| |logcheck (http:// |(http:// |218 (http:// |via posta anomalie| |packages.debian.org|qa.debian.org|packages.qa.debian.org|nei file di | |/sid/logcheck) |/popcon.php? |/l/logcheck.html) |registro di | | |package= | |sistema | | |logcheck) | |all'amministratore| |-------------------+-------------+----------------------+------------------| | |V:18, I:46 | |utilità per | |debsums (http:// |(http:// |64 (http:// |controllare i file| |packages.debian.org|qa.debian.org|packages.qa.debian.org|dei pacchetti | |/sid/debsums) |/popcon.php? |/d/debsums.html) |installati con le | | |package= | |somme di controllo| | |debsums) | |MD5 | |-------------------+-------------+----------------------+------------------| | |V:13, I:47 | | | |chkrootkit (http://|(http:// |920 (http:// |rilevatore di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|rootkit (http:// | |/sid/chkrootkit) |/popcon.php? |/c/chkrootkit.html) |it.wikipedia.org/ | | |package= | |wiki/Rootkit) | | |chkrootkit) | | | |-------------------+-------------+----------------------+------------------| | |V:22, I:82 | | | |clamav (http:// |(http:// |593 (http:// |utilità anti-virus| |packages.debian.org|qa.debian.org|packages.qa.debian.org|per Unix - | |/sid/clamav) |/popcon.php? |/c/clamav.html) |interfaccia a riga| | |package= | |di comando | | |clamav) | | | |-------------------+-------------+----------------------+------------------| | |V:5, I:7 | | | |tiger (http:// |(http:// |2374 (http:// |riporta | |packages.debian.org|qa.debian.org|packages.qa.debian.org|vulnerabilità |     |/sid/tiger) |/popcon.php? |/t/tiger.html) |nella sicurezza di| | |package= | |sistema | | |tiger) | | | |-------------------+-------------+----------------------+------------------| | |V:5, I:6 | | | |tripwire (http:// |(http:// |9049 (http:// |strumento di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|controllo | |/sid/tripwire) |/popcon.php? |/t/tripwire.html) |dell'integrità di | | |package= | |file e directory | | |tripwire) | | | |-------------------+-------------+----------------------+------------------| | |V:4, I:18 | | | |john (http:// |(http:// |472 (http:// |strumento di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|violazione delle | |/sid/john) |/popcon.php? |/j/john.html) |password attive | | |package=john)| | | |-------------------+-------------+----------------------+------------------| | |V:2, I:2 | |AIDE - ambiente | |aide (http:// |(http:// |1351 (http:// |avanzato di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|rilevamento delle | |/sid/aide) |/popcon.php? |/a/aide.html) |intrusioni - | | |package=aide)| |binario statico | |-------------------+-------------+----------------------+------------------| | |V:0, I:1 | | | |integrit (http:// |(http:// |440 (http:// |programma di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|controllo | |/sid/integrit) |/popcon.php? |/i/integrit.html) |dell'integrità di | | |package= | |file | | |integrit) | | | |-------------------+-------------+----------------------+------------------| | |V:0, I:1 | | | |crack (http:// |(http:// |160 (http:// |programma per | |packages.debian.org|qa.debian.org|packages.qa.debian.org|indovinare | |/sid/crack) |/popcon.php? |/c/crack.html) |password | | |package= | | | | |crack) | | | +---------------------------------------------------------------------------+ Con il piccolo script seguente è possibile controllare la     presenza di tipici errori con permessi di scrittura per tutti per i file sbagliati.     # find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \) Attenzione     Data che il pacchetto debsums usa le somme di controllo MD5 (http://it.wikipedia.org/wiki/MD5) salvate localmente, non può essere completamente affidabile come strumento di controllo della sicurezza del sistema contro attacchi malevoli. 9.7. Il kernel     Debian distribuisce, per le architetture supportate, kernel Linux modulari contenuti in pacchetti. 9.7.1. Kernel Linux 2.6/3.x     Nel kernel Linux 2.6 ci sono alcune funzionalità degne di nota rispetto alla versione 2.4. * I device vengono creati dal sistema udev (vedere Sezione 3.5.11, «Il sistema udev»).     * L'accesso in lettura/scrittura ai dispositivi CD/DVD IDE non usa il modulo ide-scsi. * Le funzioni di filtraggio dei pacchetti di rete usando i moduli iptable del kernel. Il salto di versione da Linux 2.6.39 a Linux 3.0 non è dovuto a     cambiamenti tecnologici fondamentali, ma al ventesimo anniversario. 9.7.2. Parametri del kernel     Molte caratteristiche di Linux possono essere configurate tramite parametri del kernel, nei modi seguenti. * Parametri del kernel inizializzati dal bootloader (vedere Sezione 3.3, «Stadio 2: il bootloader») * Se accessibili attraverso sysfs (vedere Sezione 1.2.12,     «procfs e sysfs»), parametri del kernel modificati da sysctl (8) durante l'esecuzione del sistema. * Parametri di moduli impostati dagli argomenti di modprobe(8) al momento dell'attivazione di un modulo (vedere Sezione 10.2.3, «Montare un file con un'immagine di disco») Vedere "kernel-parameters.txt(.gz)" e altri documenti correlati     nella documentazione del kernel Linux ("/usr/share/doc/ linux-doc-2.6.*/Documentation/filesystems/*") fornita dai pacchetti linux-doc-2.6.*. 9.7.3. Header del kernel La maggior parte dei normali programmi non ha bisogno degli header del kernel per essere compilata, anzi di fatto può     corrompersi se si usano direttamente gli header. Questi programmi dovrebbero essere compilati nel sistema Debian usando gli header in "/usr/include/linux" e "/usr/include/asm" forniti dal pacchetto libc6-dev (creato dal pacchetto sorgente glibc). Nota Per compilare alcuni programmi specifici per il kernel, come moduli per il kernel da fonti esterne e il demone automounter     (amd), è necessario includere nella propria riga di comando il percorso ai corrispondenti header del kernel, ad esempio "-I/usr/ src/linux-particular-version/include/". module-assistant(8) (o la suo forma abbbreviata m-a) aiuta l'utente a compilare ed installare pacchetti di moduli in modo semplice per uno o più kernel personalizzati. 9.7.4. Compilare il kernel ed i moduli relativi     Debian ha un proprio metodo di compilazione del kernel e dei moduli relativi. Tabella 9.22. Elenco di pacchetti chiave da installare per la ricompilazione del kernel in un sistema Debian +------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+----------------+----------------------+------------------------------| |build-essential |I:455 (http:// |36 (http:// | | |(http:// |qa.debian.org/ |packages.qa.debian.org|pacchetti essenziali per | |packages.debian.org|popcon.php? |/b/ |compilare pacchetti Debian: | |/sid/ |package= |build-essential.html) |make, gcc, … | |build-essential) |build-essential)| | | |-------------------+----------------+----------------------+------------------------------| | |V:433, I:856 | | | |bzip2 (http:// |(http:// |119 (http:// |utilità di compressione e | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|decompressione per file bz2 | |/sid/bzip2) |popcon.php? |/b/bzip2.html) | | | |package=bzip2) | | | |-------------------+----------------+----------------------+------------------------------| |libncurses5-dev |V:19, I:196 | | | |(http:// |(http:// |980 (http:// | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|librerie di sviluppo e | |/sid/ |popcon.php? |/libn/ |documentazione per ncurses | |libncurses5-dev) |package= |libncurses5-dev.html) | | | |libncurses5-dev)| | | |-------------------+----------------+----------------------+------------------------------| | |V:136, I:412 | | | |git (http:// |(http:// |18504 (http:// |git: sistema distribuito di | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|controllo delle revisioni | |/sid/git) |popcon.php? |/g/git.html) |usato dal kernel Linux |     | |package=git) | | | |-------------------+----------------+----------------------+------------------------------| | |V:48, I:506 | | | |fakeroot (http:// |(http:// |339 (http:// |fornisce un ambiente fakeroot | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|per compilare pacchetti da | |/sid/fakeroot) |popcon.php? |/f/fakeroot.html) |utente non root | | |package= | | | | |fakeroot) | | | |-------------------+----------------+----------------------+------------------------------| |initramfs-tools |V:159, I:988 | | | |(http:// |(http:// |325 (http:// |strumento per compilare un | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|initramfs (specifico di | |/sid/ |popcon.php? |/i/ |Debian) | |initramfs-tools) |package= |initramfs-tools.html) | | | |initramfs-tools)| | | |-------------------+----------------+----------------------+------------------------------| | |V:77, I:231 | |DKMS (Dynamic Kernel Module | |dkms (http:// |(http:// |191 (http:// |Support, supporto dinamico per| |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|i noduli del kernel) (http:// | |/sid/dkms) |popcon.php? |/d/dkms.html) |en.wikipedia.org/wiki/ | | |package=dkms) | |Dynamic_Kernel_Module_Support)| | | | |(generico) | |-------------------+----------------+----------------------+------------------------------| | |V:13, I:85 | | | |devscripts (http://|(http:// |1721 (http:// |script di aiuto per i | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|manutentori di pacchetti | |/sid/devscripts) |popcon.php? |/d/devscripts.html) |Debian (specifico di Debian) | | |package= | | | | |devscripts) | | | +------------------------------------------------------------------------------------------+ Se si usa initrd nello Sezione 3.3, «Stadio 2: il bootloader», ci     si assicuri di leggere le informazioni relative in initramfs-tools(8), update-initramfs(8), mkinitramfs(8) e initramfs.conf(5). Avvertimento Quando si compilano i sorgenti del kernel Linux, non mettere     collegamenti simbolici alle directory nell'albero dei sorgenti (ad esempio, "/usr/src/linux*") in "/usr/include/linux" e "/usr/ include/asm". (Alcuni documenti ormai datati suggeriscono di farlo.) Nota     Quando si compila il kernel Linux più recente nel sistema Debian stable, potrebbe essere necessario l'uso delle versioni backport degli strumenti piu recenti da Debian unstable. Nota Il DKMS (Dynamic Kernel Module Support, supporto dinamico per i moduli del kernel) (http://en.wikipedia.org/wiki/     Dynamic_Kernel_Module_Support) è un nuova infrastruttura indipendente dalla distribuzione progettata per permettere l'aggiornamento di singoli moduli del kernel senza cambiare tutto il kernel. Verrà utilizzata per squeeze per il mantenimento dei moduli esterni all'albero dei sorgenti. Rende anche molto facile la ricompilazione dei moduli quando si aggiornano i kernel. 9.7.5. Compilare i sorgenti del kernel: il metodo raccomandato dal Team del Kernel di Debian Per compilare pacchetti binari del kernel personalizzati a     partire dai sorgenti originali del kernel, si deve usare il target "deb-pkg fornito. $ sudo apt-get build-dep linux-2.6 $ cd /usr/src $ wget http://www.kernel.org/pub/linux/kernel/v3.2/linux-.tar.bz2 $ tar -xjvf linux-.tar.bz2     $ cd linux- $ cp /boot/config- .config $ make menuconfig ... $ make deb-pkg Suggerimento     Il pacchetto linux-source- fornisce i sorgenti del kernel Linux con le patch Debian come "/usr/src/linux- .tar.bz2". Per compilare pacchetti binari specifici a partire dal pacchetto     Debian dei sorgenti del kernel, si devono usare i target "binary-arch___" in "debian/ rules.gen". $ sudo apt-get build-dep linux-2.6     $ apt-get source linux-2.6 $ cd linux-2.6-* $ fakeroot make -f debian/rules.gen binary-arch_i386_none_686     Ulteriori informazioni: * Wiki Debian: FAQ del Kernel (http://wiki.debian.org/it/ KernelFAQ) * Wiki Debian: Kernel Debian (http://wiki.debian.org/     DebianKernel) * Debian Linux Kernel Handbook: http:// kernel-handbook.alioth.debian.org (http:// kernel-handbook.alioth.debian.org) 9.7.6. Driver per hardware e firmware Un driver hardware è il codice eseguito nel sistema target. La     maggior parte dei driver hardware sono ora disponibili come software libero e sono inclusi nei normali pacchetti Debian dei kernel nell'area main. * driver GPU (http://it.wikipedia.org/wiki/ Graphics_Processing_Unit) o driver GPU Intel (main) o driver GPU AMD/ATI (main)     o driver GPU NVIDIA (main per il driver nouveau (http:// it.wikipedia.org/wiki/Nouveau) e non-free per i driver solo binari supportati dal produttore. * driver Softmodem (http://en.wikipedia.org/wiki/Softmodem) o pacchetti martian-modem e sl-modem-dkms (non-free) Il firmware è il codice o i dati caricati sul dispositivo (ad esempio microcodice (http://it.wikipedia.org/wiki/Microcodice) della CPU, codice di rendering eseguito nella GPU oppure dati     FPGA (http://it.wikipedia.org/wiki/FPGA) /CPLD (http:// it.wikipedia.org/wiki/CPLD) , …). Alcuni pacchetti firmware sono disponibili come software libero, ma molti pacchetti firmware non lo sono dato che contengono dati binari senza sorgenti. * firmware-linux-free (main) * firmware-linux-nonfree (non-free) * firmware-linux-* (non-free)     * *-firmware (non-free) * intel-microcode (non-free) * amd64-microcode (non-free) Notare che i pacchetti non-free e contrib non fanno parte del sistema Debian. La configurazione per abilitare e disabilitare le aree non-free e contrib è descritta in Sezione 2.1.4, «Nozioni di     base sugli archivi Debian». Si dovrebbe essere consapevoli degli aspetti negativi legati all'uso dei pacchetti non-free e contrib come descritto in Sezione 2.1.5, «Debian è al 100% software libero». 9.8. Sistema virtualizzato     L'uso di sistemi virtualizzati permette di eseguire più istanze di un sistema simultaneamente su un singolo hardware. Suggerimento     Vedere http://wiki.debian.org/SystemVirtualization (http:// wiki.debian.org/SystemVirtualization) . 9.8.1. Strumenti per la virtualizzazione Ci sono diversi pacchetti in Debian relativi alla virtualizzazione (http://en.wikipedia.org/wiki/Virtualization) ed     emulazione (http://it.wikipedia.org/wiki/Emulatore) di sistema che vanno oltre il semplice chroot (http://it.wikipedia.org/wiki/ Chroot) . Alcuni pacchetti aiutano anche nell'impostazione di tali sistemi. Tabella 9.23. Elenco di strumenti di virtualizzazione +---------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+----------------+----------------------+---------------------------------| |schroot (http:// |V:8, I:13 (http:|2638 (http:// |strumento specializzato per | |packages.debian.org|//qa.debian.org/|packages.qa.debian.org|eseguire pacchetti Debian binari | |/sid/schroot) |popcon.php? |/s/schroot.html) |in chroot | | |package=schroot)| | | |-------------------+----------------+----------------------+---------------------------------| |sbuild (http:// |V:0, I:2 (http:/|462 (http:// | | |packages.debian.org|/qa.debian.org/ |packages.qa.debian.org|strumento per compilare pacchetti| |/sid/sbuild) |popcon.php? |/s/sbuild.html) |Debian binari da sorgenti Debian | | |package=sbuild) | | | |-------------------+----------------+----------------------+---------------------------------| | |V:3, I:23 (http:| | | |pbuilder (http:// |//qa.debian.org/|996 (http:// |creatore di pacchetti personali | |packages.debian.org|popcon.php? |packages.qa.debian.org|per pacchetti Debian | |/sid/pbuilder) |package= |/p/pbuilder.html) | | | |pbuilder) | | | |-------------------+----------------+----------------------+---------------------------------| | |V:10, I:84 | | | |debootstrap (http:/|(http:// |227 (http:// | | |/ |qa.debian.org/ |packages.qa.debian.org|avviare un sistema Debian base | |packages.debian.org|popcon.php? |/d/debootstrap.html) |(scritto in sh) | |/sid/debootstrap) |package= | | | | |debootstrap) | | | |-------------------+----------------+----------------------+---------------------------------| |cdebootstrap (http:|V:0, I:9 (http:/| | | |// |/qa.debian.org/ |66 (http:// |avviare un sistema Debian | |packages.debian.org|popcon.php? |packages.qa.debian.org|(scritto in C) | |/sid/cdebootstrap) |package= |/c/cdebootstrap.html) | | | |cdebootstrap) | | | |-------------------+----------------+----------------------+---------------------------------| | |V:0, I:1 (http:/| | | |rootstrap (http:// |/qa.debian.org/ |97 (http:// |strumento per creare immagini | |packages.debian.org|popcon.php? |packages.qa.debian.org|complete di un file system Linux | |/sid/rootstrap) |package= |/r/rootstrap.html) | | | |rootstrap) | | | |-------------------+----------------+----------------------+---------------------------------| |virt-manager (http:|V:7, I:25 (http:| |Virtual Machine Manager (http:// | |// |//qa.debian.org/|6520 (http:// |en.wikipedia.org/wiki/ | |packages.debian.org|popcon.php? |packages.qa.debian.org|Virtual_Machine_Manager) : | |/sid/virt-manager) |package= |/v/virt-manager.html) |applicazione desktop per gestire | | |virt-manager) | |macchine virtuali | |-------------------+----------------+----------------------+---------------------------------| | |V:36, I:55 | | | |libvirt-bin (http:/|(http:// |8725 (http:// |programmi per la libreria libvirt| |/ |qa.debian.org/ |packages.qa.debian.org|(http://en.wikipedia.org/wiki/ | |packages.debian.org|popcon.php? |/libv/ |Libvirt) | |/sid/libvirt-bin) |package= |libvirt-bin.html) | | | |libvirt-bin) | | | |-------------------+----------------+----------------------+---------------------------------| |user-mode-linux |V:0, I:2 (http:/|23956 (http:// | | |(http:// |/qa.debian.org/ |packages.qa.debian.org|Linux User-mode (http:// | |packages.debian.org|popcon.php? |/u/ |en.wikipedia.org/wiki/ | |/sid/ |package= |user-mode-linux.html) |User-mode_Linux) (kernel) | |user-mode-linux) |user-mode-linux)| | | |-------------------+----------------+----------------------+---------------------------------| |bochs (http:// |V:0, I:1 (http:/|2969 (http:// | | |packages.debian.org|/qa.debian.org/ |packages.qa.debian.org|Bochs (http://it.wikipedia.org/ | |/sid/bochs) |popcon.php? |/b/bochs.html) |wiki/Bochs) : emulatore PC IA-32 | | |package=bochs) | | | |-------------------+----------------+----------------------+---------------------------------| |qemu (http:// |I:58 (http:// |487 (http:// |QEMU (http://it.wikipedia.org/ | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|wiki/QEMU) : veloce emulatore | |/sid/qemu) |popcon.php? |/q/qemu.html) |generico di processore | | |package=qemu) | | | |-------------------+----------------+----------------------+---------------------------------| | |V:34, I:61 | | |     |qemu-system (http:/|(http:// |48 (http:// |QEMU (http://it.wikipedia.org/ | |/ |qa.debian.org/ |packages.qa.debian.org|wiki/QEMU) : binari per | |packages.debian.org|popcon.php? |/q/qemu-system.html) |emulazione completa del sistema | |/sid/qemu-system) |package= | | | | |qemu-system) | | | |-------------------+----------------+----------------------+---------------------------------| | |V:4, I:58 (http:| | | |qemu-user (http:// |//qa.debian.org/|66188 (http:// |QEMU (http://it.wikipedia.org/ | |packages.debian.org|popcon.php? |packages.qa.debian.org|wiki/QEMU) : binari per | |/sid/qemu-user) |package= |/q/qemu-user.html) |emulazione in spazio utente | | |qemu-user) | | | |-------------------+----------------+----------------------+---------------------------------| | |V:9, I:93 (http:| | | |qemu-utils (http://|//qa.debian.org/|2047 (http:// |QEMU (http://it.wikipedia.org/ | |packages.debian.org|popcon.php? |packages.qa.debian.org|wiki/QEMU) : utilità | |/sid/qemu-utils) |package= |/q/qemu-utils.html) | | | |qemu-utils) | | | |-------------------+----------------+----------------------+---------------------------------| | |V:37, I:66 | |KVM (http://it.wikipedia.org/wiki| | |(http:// | |/Kernel-based_Virtual_Machine) : | |qemu-kvm (http:// |qa.debian.org/ |51 (http:// |virtualizzazione completa su | |packages.debian.org|popcon.php? |packages.qa.debian.org|hardware x86 convirtualizzazione | |/sid/qemu-kvm) |package= |/q/qemu-kvm.html) |assistita da hardware (http:// | | |qemu-kvm) | |en.wikipedia.org/wiki/ | | | | |Hardware-assisted_virtualization)| |-------------------+----------------+----------------------+---------------------------------| | |V:46, I:58 | | | |virtualbox (http://|(http:// |48228 (http:// |VirtualBox (http:// | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|it.wikipedia.org/wiki/VirtualBox)| |/sid/virtualbox) |popcon.php? |/v/virtualbox.html) |: soluzione per virtualizzazione | | |package= | |i dx86 su i386 e amd64 | | |virtualbox) | | | |-------------------+----------------+----------------------+---------------------------------| | |V:1, I:12 (http:| | | |xen-tools (http:// |//qa.debian.org/|604 (http:// |strumenti per gestire server | |packages.debian.org|popcon.php? |packages.qa.debian.org|virtuali XEN (http:// | |/sid/xen-tools) |package= |/x/xen-tools.html) |it.wikipedia.org/wiki/Xen) Debian| | |xen-tools) | | | |-------------------+----------------+----------------------+---------------------------------| | |V:8, I:116 | |Wine (http://it.wikipedia.org/ | |wine (http:// |(http:// |80 (http:// |wiki/Wine) : implementazione | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|della API Windows (suite | |/sid/wine) |popcon.php? |/w/wine.html) |standard) | | |package=wine) | | | |-------------------+----------------+----------------------+---------------------------------| |dosbox (http:// |V:3, I:23 (http:|2526 (http:// |DOSBox (http://it.wikipedia.org/ | |packages.debian.org|//qa.debian.org/|packages.qa.debian.org|wiki/DOSBox) : emulatore x86 con | |/sid/dosbox) |popcon.php? |/d/dosbox.html) |grafica Tandy/Herc/CGA/EGA/VGA/ | | |package=dosbox) | |SVGA, suono e DOS | |-------------------+----------------+----------------------+---------------------------------| |dosemu (http:// |V:1, I:7 (http:/|4820 (http:// |DOSEMU (http://it.wikipedia.org/ | |packages.debian.org|/qa.debian.org/ |packages.qa.debian.org|wiki/DOSEMU) : emulatore DOS di | |/sid/dosemu) |popcon.php? |/d/dosemu.html) |Linux | | |package=dosemu) | | | |-------------------+----------------+----------------------+---------------------------------| |vzctl (http:// |V:5, I:8 (http:/|657 (http:// |OpenVZ (http://en.wikipedia.org/ | |packages.debian.org|/qa.debian.org/ |packages.qa.debian.org|wiki/OpenVZ) , soluzione per | |/sid/vzctl) |popcon.php? |/v/vzctl.html) |virtualizzazione server - | | |package=vzctl) | |strumenti di controllo | |-------------------+----------------+----------------------+---------------------------------| |vzquota (http:// |V:5, I:8 (http:/|210 (http:// |OpenVZ (http://en.wikipedia.org/ | |packages.debian.org|/qa.debian.org/ |packages.qa.debian.org|wiki/OpenVZ) , soluzione per | |/sid/vzquota) |popcon.php? |/v/vzquota.html) |virtualizzazione server - | | |package=vzquota)| |strumenti per quote | |-------------------+----------------+----------------------+---------------------------------| |lxc (http:// |V:2, I:8 (http:/|849 (http:// |strumenti in spazio utente per | |packages.debian.org|/qa.debian.org/ |packages.qa.debian.org|contenitori Linux containers | |/sid/lxc) |popcon.php? |/l/lxc.html) |(http://lxc.sourceforge.net/) | | |package=lxc) | | | +---------------------------------------------------------------------------------------------+ Vedere l'articolo di Wikipedia Comparison of platform virtual machines (http://en.wikipedia.org/wiki/     Comparison_of_platform_virtual_machines) per una comparazione dettagliata di diverse soluzioni per la virtualizzazione di piattaforme. 9.8.2. Fasi del processo di virtualizzazione Nota     Alcune funzionalità descritte in seguito sono disponibili solamente in squeeze. Nota     I kernel Debian predefiniti hanno il supporto per KVM (http:// it.wikipedia.org/wiki/Kernel-based_Virtual_Machine) a partire da lenny.     Il tipico processo di virtualizzazione (http://en.wikipedia.org/ wiki/Virtualization) comporta diverse fasi. * Creare un file system vuoto (un albero di file o un'immagine di disco). o L'albero di file può essere creato con "mkdir -p / percorso/di/chroot". o Il file immagine raw del disco può essere creato con dd (1) (vedere Sezione 10.2.1, «Creare un file con un'immagine di disco» e Sezione 10.2.5, «Creare un file con immagine di disco vuoto»). o Si può usare qemu-img(1) per creare e convertire file immagine di dischi supportati da QEMU (http:// it.wikipedia.org/wiki/QEMU) . o I formati di file raw e VMDK (http://it.wikipedia.org/ wiki/VMDK) possono essere usati come formati comuni tra i vari strumenti di virtualizzazione. * Montare l'immagine del disco con mount(8) nel file system (opzionale). o Per il file immagine raw sel disco, montarlo come device loop (http://en.wikipedia.org/wiki/Loop_device) o device mapper (http://en.wikipedia.org/wiki/Device_mapper) (vedere Sezione 10.2.3, «Montare un file con un'immagine di disco»). o Per le immagini disco supportate da QEMU (http:// it.wikipedia.org/wiki/QEMU) , montarle come device a blocchi di rete (http://en.wikipedia.org/wiki/     Network_block_device) (vedere Sezione 9.8.3, «Montare il file immagine di disco virtuale»). * Popolare il file system obiettivo con i dati di sistema necessari. o L'uso di programmi come debootstrap e cdebootstrap aiuta questo processo (vedere Sezione 9.8.4, «Sistema chroot»). o Usare gli installatori di sistemi operativi nell'emulazione di sistemi completi. * Eseguire un programma in un ambiente virtualizzato. o chroot (http://it.wikipedia.org/wiki/Chroot) fornisce un ambiente di virtualizzazione base sufficiente a compilare programmi, eseguire applicazioni in console ed eseguire demoni al suo interno. o QEMU (http://it.wikipedia.org/wiki/QEMU) fornisce emulazione di CPU inter-piattaforma. o QEMU (http://it.wikipedia.org/wiki/QEMU) con KVM (http:// it.wikipedia.org/wiki/Kernel-based_Virtual_Machine) fornisce una completa emulazione di sistema con virtualizzazione assistita da hardware (http:// en.wikipedia.org/wiki/Hardware-assisted_virtualization) . o VirtualBox (http://it.wikipedia.org/wiki/VirtualBox) fornisce una completa emulazione del sistema in i386 e amd64 con o senza virtualizzazione assistita da hardware (http://en.wikipedia.org/wiki/ Hardware-assisted_virtualization) . 9.8.3. Montare il file immagine di disco virtuale     Per i file immagine raw di disco, vedere Sezione 10.2, «Immagine del disco». Per altri file immagine di dischi virtuali, si può usare qemu-nbd     (8) per esportarli usando il protocollo per device a blocchi di rete (http://en.wikipedia.org/wiki/Network_block_device) e montarli usando il modulo nbd del kernel. qemu-nbd(8) supporta i formati di disco supportati da QEMU (http: //it.wikipedia.org/wiki/QEMU) ; QEMU (http://it.wikipedia.org/ wiki/QEMU) supporta i seguenti formati di dischi: raw, qcow2, qcow (http://it.wikipedia.org/wiki/Qcow) , vmdk (http:// it.wikipedia.org/wiki/VMDK) , vdi (http://en.wikipedia.org/wiki/     VirtualBox#Virtual_Desktop_Image) , bochs (http:// it.wikipedia.org/wiki/Bochs) , cow (copy-on-write di user-mode Linux), parallels (http://it.wikipedia.org/wiki/ Parallels_Workstation) , dmg (http://en.wikipedia.org/wiki/ Apple_Disk_Image) , cloop (http://en.wikipedia.org/wiki/Cloop) , vpc (http://en.wikipedia.org/wiki/VHD_(file_format)) , vvfat (VFAT virtuale) e host_device. I device a blocchi di rete (http://en.wikipedia.org/wiki/ Network_block_device) possono supportare partizioni nello stesso     modo dei device loop (http://en.wikipedia.org/wiki/Loop_device) (vedere Sezione 10.2.3, «Montare un file con un'immagine di disco»). Si può montare la prima partizione di "disk.img" nel modo seguente. # modprobe nbd max_part=16 # qemu-nbd -v -c /dev/nbd0 disk.img     ... # mkdir /mnt/part1 # mount /dev/nbd0p1 /mnt/part1 Suggerimento     È possibile esportare solamente la prima partizione di "disk.img" usando l'opzione "-P 1"per qemu-nbd(8). 9.8.4. Sistema chroot chroot(8) offre il metodo più basilare per eseguire diverse     istanze dell'ambiente GNU/Linux simultaneamente in un singolo sistema senza riavviare. Attenzione     Gli esempi seguenti presuppongono che entrambi i sistemi, quello genitore e quello chroot, condividano la stessa architettura.     Si può imparare a impostare ed usare chroot(8) eseguendo il programma pbuilder(8) in script(1) nel modo seguente.     $ sudo mkdir /sid-root $ sudo pbuilder --create --no-targz --debug --buildplace /sid-root     Si può vedere come debootstrap(8) o cdebootstrap(1) popoli i dati di sistema per l'ambiente sid in "/sid-root". Suggerimento L'installatore Debian usa debootstrap(8) o cdebootstrap(1) per l'     installazione Debian (http://www.debian.org/releases/stable/ installmanual.it.html) . Possono anche essere usati per installare Debian in un sistema senza usare un disco di installazione Debian, ma invece uno di un'altra distribuzione GNU /Linux.     $ sudo pbuilder --login --no-targz --debug --buildplace /sid-root     Si può vedere come venga creata una shell di sistema in esecuzione nell'ambiente sid, nel modo seguente. 1. Copiare la configurazione locale ("/etc/hosts", "/etc/ hostname", "/etc/resolv.conf") 2. Montare il file system "/proc"     3. Montare il file system "/dev/pts" 4. Creare "/usr/sbin/policy-rc.d" che restituisca sempre il codice 101 5. Esegiore "chroot /sid-root bin/bash -c 'exec -a -bash bin/ bash'" Nota Alcuni programmi in chroot per funzionare possono aver bisogno     dell'accesso ad più file nel sistema genitore di quanti ne fornisca pbuilder. Per esempio, per essere montati con bind o copiati, possono essere necessari "/sys", "/etc/passwd", "/etc/ group", "/var/run/utmp", "/var/log/wtmp", ecc. Nota     Il file "/usr/sbin/policy-rc.d" evita che, in un sistema Debian, i programmi demone vengano avviati automaticamente. Vedere "/usr/ share/doc/sysv-rc/README.policy-rc.d.gz". Suggerimento Lo scopo originale del pacchetto specializzato chroot, pbuilder è     di costruire un sistema chroot e di compilare un pacchetto all'interno del chroot. È un sistema ideale per controllare che le dipendenze di compilazione di un pacchetto siano corrette e per assicurare che, nel pacchetto risultante, non ci siano dipendenze sbagliate o superflue. Suggerimento     Il pacchetto simile schroot può dare un'idea di come eseguire un sistema chroot i386 in un sistema genitore amd64. 9.8.5. Sistemi desktop multipli Io raccomando l'uso di QEMU (http://it.wikipedia.org/wiki/QEMU) o VirtualBox (http://it.wikipedia.org/wiki/VirtualBox) per eseguire, in un sistema Debian stable, sistemi desktop multipli     in maniera sicura usando la virtualizzazione (http:// en.wikipedia.org/wiki/Virtualization) . Permettono di eseguire applicazioni desktop di Debian unstable e testing senza i comuni rischi ad essi associati. Dato che QEMU (http://it.wikipedia.org/wiki/QEMU) puro è molto     lento, è raccomandata la sua velocizzazione con KVM (http:// it.wikipedia.org/wiki/Kernel-based_Virtual_Machine) quando il sistema host lo permette. L'immagine disco virtuale "virtdisk.qcow2" contenente un sistema     Debian per QEMU (http://it.wikipedia.org/wiki/QEMU) si può creare con i piccoli CD dell'installatore Debian (http://www.debian.org/ distrib/netinst.it.html) nel modo seguente. $ wget http://cdimage.debian.org/debian-cd/5.0.3/amd64/iso-cd/debian-503-amd64-netinst.iso     $ qemu-img create -f qcow2 virtdisk.qcow2 5G $ qemu -hda virtdisk.qcow2 -cdrom debian-503-amd64-netinst.iso -boot d -m 256 ...     Vedere altri suggerimenti su Debian Wiki: QEMU (http:// wiki.debian.org/QEMU) . VirtualBox (http://it.wikipedia.org/wiki/VirtualBox) è fornito con strumenti con interfaccia utente grafica Qt (http:// it.wikipedia.org/wiki/Qt_(toolkit)) piuttosto intuitivi. I suoi     strumenti grafici e a riga di comando sono spiegati nel Manuale utente di VirtualBox (http://www.virtualbox.org/manual/ UserManual.html) e Manuale utente di VirtualBox (PDF) (http:// download.virtualbox.org/virtualbox/UserManual.pdf) . Suggerimento Eseguire altre distribuzioni GNU/Linux come Ubuntu (http:// www.ubuntu.com/) e Fedora (http://fedoraproject.org/) in una     virtualizzazione (http://en.wikipedia.org/wiki/Virtualization) è un ottimo metodo per imparare trucchetti di configurazione. Anche altri sistemi operativi proprietari possono essere eseguiti tranquillamente in queste virtualizzazioni (http:// en.wikipedia.org/wiki/Virtualization) GNU/Linux. Capitolo 10. Gestione dei dati     In questo capitolo sono descritti strumenti e trucchi per gestire dati binari e di testo in un sistema Debian. Avvertimento L'accesso in scrittura non coordinato a device a cui si sta     attivamente accedendo e a file da parte di processi diversi deve essere evitato per prevenire le race condition (http:// it.wikipedia.org/wiki/Race_condition) . Per evitare ciò devono essere usati i meccanismi di lock dei file (http:// en.wikipedia.org/wiki/File_locking) utilizzando flock(1). 10.1. Condividere, copiare ed archiviare     La sicurezza dei dati e la loro condivisione controllata hanno diversi aspetti. * La creazione di archivi di dati * L'accesso ad archivi remoti * La duplicazione     * Il tenere traccia della cronologia delle modifiche * La facilitazione della condivisione dei dati * Il prevenire l'accesso non autorizzato ai file * La rilevazione di modifiche non autorizzate ai file     Queste azioni possono essere realizzate usando una combinazione di strumenti. * Strumenti di archiviazione e compressione * Strumenti di copia e sincronizzazione * file system di rete * Supporti di archiviazione removibili     * Secure Shell * Il sistema di autenticazione * Strumenti per sistemi di controllo delle versioni * Strumenti crittografici per hash e cifratura 10.1.1. Strumenti di archiviazione e compressione     Ecco una tabella riassuntiva degli strumenti di archiviazione e compressione disponibili per il sistema Debian. Tabella 10.1. Elenco di strumenti di archiviazione e compressione +-----------------------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |estensione|comando|commento | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | |V:530, I:999 | | | | | |tar (http:// |(http:// |2115 (http:// | | |strumento di archiviazione | |packages.debian.org|qa.debian.org|packages.qa.debian.org|.tar |tar(1) |standard (standard de facto) | |/sid/tar) |/popcon.php? |/t/tar.html) | | | | | |package=tar) | | | | | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | |V:312, I:998 | | | | | |cpio (http:// |(http:// |844 (http:// | | |strumento di archiviazione Unix| |packages.debian.org|qa.debian.org|packages.qa.debian.org|.cpio |cpio(1)|in stile System V, da usare con| |/sid/cpio) |/popcon.php? |/c/cpio.html) | | |find(1) | | |package=cpio)| | | | | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | |V:404, I:741 | | | | | |binutils (http:// |(http:// |18806 (http:// | | |strumento di archiviazione per | |packages.debian.org|qa.debian.org|packages.qa.debian.org|.ar |ar(1) |la creazione di librerie | |/sid/binutils) |/popcon.php? |/b/binutils.html) | | |statiche | | |package= | | | | | | |binutils) | | | | | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | |V:9, I:105 | | | | | |fastjar (http:// |(http:// |191 (http:// | | | | |packages.debian.org|qa.debian.org|packages.qa.debian.org|.jar |fastjar|strumento di archiviazione per | |/sid/fastjar) |/popcon.php? |/f/fastjar.html) | |(1) |Java (simile a zip) | | |package= | | | | | | |fastjar) | | | | | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | |V:21, I:75 | | | | | |pax (http:// |(http:// |181 (http:// | | |nuovo strumento POSIX di | |packages.debian.org|qa.debian.org|packages.qa.debian.org|.pax |pax(1) |archiviazione, compromesso tra | |/sid/pax) |/popcon.php? |/p/pax.html) | | |tar e cpio | | |package=pax) | | | | | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | |V:869, I:999 | | | |utilità GNU di compressione | |gzip (http:// |(http:// |240 (http:// | |gzip(1)|LZ77 (http://it.wikipedia.org/ | |packages.debian.org|qa.debian.org|packages.qa.debian.org|.gz |, zcat |wiki/LZ77_e_LZ78) (standard de | |/sid/gzip) |/popcon.php? |/g/gzip.html) | |(1), … |facto) | | |package=gzip)| | | | | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | | | | | |utilità per compressione con | | |V:433, I:856 | | | |ordinamento dei blocchi | | |(http:// | | |bzip2 |Burrows-Wheeler (http:// | |bzip2 (http:// |qa.debian.org|119 (http:// | |(1), |it.wikipedia.org/wiki/ | |packages.debian.org|/popcon.php? |packages.qa.debian.org|.bz2 |bzcat |Trasformata_di_Burrows-Wheeler)| |/sid/bzip2) |package= |/b/bzip2.html) | |(1), … |con maggiore rapporto di | | |bzip2) | | | |compressione di gzip(1) (più | | | | | | |lenta di gzip con sintassi | | | | | | |simile) | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | |V:15, I:203 | | | |utilità di compressione LZMA |     |lzma (http:// |(http:// |144 (http:// | | |(http://it.wikipedia.org/wiki/ | |packages.debian.org|qa.debian.org|packages.qa.debian.org|.lzma |lzma(1)|Algoritmo_Lempel-Ziv-Markov) | |/sid/lzma) |/popcon.php? |/l/lzma.html) | | |con maggiore rapporto di | | |package=lzma)| | | |compressione di gzip(1) | | | | | | |(deprecata) | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | | | | | |utilità di compressione XZ | | |V:222, I:901 | | | |(http://en.wikipedia.org/wiki/ | | |(http:// | | | |Xz) con maggiore rapporto di | |xz-utils (http:// |qa.debian.org|472 (http:// | |xz(1), |compressione di bzip2(1) (più | |packages.debian.org|/popcon.php? |packages.qa.debian.org|.xz |xzdec |lenta di gzip, ma più veloce di| |/sid/xz-utils) |package= |/x/xz-utils.html) | |(1), … |bzip2; sostituto dell'utilità | | |xz-utils) | | | |di compressione LZMA (http:// | | | | | | |it.wikipedia.org/wiki/ | | | | | | |Algoritmo_Lempel-Ziv-Markov) ) | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | |V:10, I:94 | | | |strumento di archiviazione file| | |(http:// | | | |7-Zip (http://it.wikipedia.org/| |p7zip (http:// |qa.debian.org|986 (http:// | |7zr(1),|wiki/7-Zip) con alto rapporto | |packages.debian.org|/popcon.php? |packages.qa.debian.org|.7z |p7zip |di compressione (compressione | |/sid/p7zip) |package= |/p/p7zip.html) | |(1) |LZMA (http://it.wikipedia.org/ | | |p7zip) | | | |wiki/ | | | | | | |Algoritmo_Lempel-Ziv-Markov) ) | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | | | | | |strumento di archiviazione file| | |V:230, I:496 | | | |7-Zip (http://it.wikipedia.org/| |p7zip-full (http://|(http:// |3895 (http:// | | |wiki/7-Zip) con alto rapporto | |packages.debian.org|qa.debian.org|packages.qa.debian.org|.7z |7z(1), |di compressione (compressione | |/sid/p7zip-full) |/popcon.php? |/p/p7zip-full.html) | |7za(1) |LZMA (http://it.wikipedia.org/ | | |package= | | | |wiki/ | | |p7zip-full) | | | |Algoritmo_Lempel-Ziv-Markov) e | | | | | | |altre) | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | | | | | |utilità di compressione LZO | | |V:4, I:38 | | | |(http://en.wikipedia.org/wiki/ | |lzop (http:// |(http:// |112 (http:// | | |Lempel-Ziv-Oberhumer) con | |packages.debian.org|qa.debian.org|packages.qa.debian.org|.lzo |lzop(1)|velocità di compressione e | |/sid/lzop) |/popcon.php? |/l/lzop.html) | | |decompressione più alta di | | |package=lzop)| | | |quella di gzip(1) (più basso | | | | | | |rapporto di compressione di | | | | | | |gzip con sintassi simile) | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | |V:57, I:368 | | | |InfoZIP (http:// | |zip (http:// |(http:// |597 (http:// | | |en.wikipedia.org/wiki/Info-ZIP)| |packages.debian.org|qa.debian.org|packages.qa.debian.org|.zip |zip(1) |: strumento di archiviazione e | |/sid/zip) |/popcon.php? |/z/zip.html) | | |compressione per DOS | | |package=zip) | | | | | |-------------------+-------------+----------------------+----------+-------+-------------------------------| | |V:240, I:760 | | | |InfoZIP (http:// | |unzip (http:// |(http:// |377 (http:// | | |en.wikipedia.org/wiki/Info-ZIP)| |packages.debian.org|qa.debian.org|packages.qa.debian.org|.zip |unzip |: strumento di estrazione di | |/sid/unzip) |/popcon.php? |/u/unzip.html) | |(1) |archivi e decompressione per | | |package= | | | |DOS | | |unzip) | | | | | +-----------------------------------------------------------------------------------------------------------+ Avvertimento     Non impostare la variabile "$TAPE" a meno che non si sappia esattamente cosa aspettarsi. Cambia il comportamento di tar(1). Nota     Gli archivi tar(1) compressi con gzip usano l'estensione di file ".tgz" o ".tar.gz". Nota     Gli archivi tar(1) compressi con xz usano l'estensione di file ".txz" o ".tar.xz". Nota     La popolarità dei metodi di compressione negli strumenti FOSS (http://it.wikipedia.org/wiki/Free_and_Open_Source_Software) come tar(1) è cambiata nel tempo nel modo seguente gzip → bzip2 → xz Nota     cp(1), scp(1) e tar(1) possono avere alcune limitazioni per file speciali. cpio(1) è più versatile. Nota     cpio(1) è progettato per essere usato con find(1) ed altri comandi adatti per creare script di backup, dato che la porzione di selezione dei file dello script può essere testata in modo autonomo. Nota     La struttura interna dei file di dati di OpenOffice è quella dei file ".jar". 10.1.2. Strumenti di copia e sincronizzazione     Ecco una tabella riassuntiva dei semplici strumenti di copia e backup disponibili in un sistema Debian. Tabella 10.2. Elenco di strumenti di copia e sincronizzazione +-------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |strumento|funzione | |-------------------+---------------+----------------------+---------+----------------| | |V:869, I:999 | | |copia file e | |coreutils (http:// |(http:// |13461 (http:// | |directory | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|GNU cp |localmente ("-a"| |/sid/coreutils) |popcon.php? |/c/coreutils.html) | |per modalità | | |package= | | |ricorsiva) | | |coreutils) | | | | |-------------------+---------------+----------------------+---------+----------------| |openssh-client |V:547, I:995 | | |copia file e | |(http:// |(http:// |2357 (http:// | |directory da | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|scp |remoto (client, | |/sid/ |popcon.php? |/o/ | |"-r" per | |openssh-client) |package= |openssh-client.html) | |modalità | | |openssh-client)| | |ricorsiva) | |-------------------+---------------+----------------------+---------+----------------|     |openssh-server |V:664, I:826 | | | | |(http:// |(http:// |747 (http:// | |copia file e | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|sshd |directory da | |/sid/ |popcon.php? |/o/ | |remoto (server | |openssh-server) |package= |openssh-server.html) | |remoto) | | |openssh-server)| | | | |-------------------+---------------+----------------------+---------+----------------| | |V:181, I:585 | | |sincronizzazione| |rsync (http:// |(http:// |638 (http:// | |e backup in | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|- |remoto | |/sid/rsync) |popcon.php? |/r/rsync.html) | |unidirezionale | | |package=rsync) | | | | |-------------------+---------------+----------------------+---------+----------------| | |V:6, I:28 | | |sincronizzazione| |unison (http:// |(http:// |1977 (http:// | |e backup in | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|- |remoto | |/sid/unison) |popcon.php? |/u/unison.html) | |bidirezionale | | |package=unison)| | | | +-------------------------------------------------------------------------------------+     La copia dei file con rsync(8) offre un insieme di funzionalità più ricco di altri strumenti. * l'algoritmo delta-transfer, che invia solamente le differenze tra il file sorgente ed il file esistente nella destinazione * algoritmo veloce di verifica (predefinito) che cerca i file la cui dimensione o il cui orario di ultima modifica sono cambiati     * opzioni "--exclude" e "--exclude-from" simili a quelle di tar (1) * sintassi con "una barra / alla fine della directory sorgente" che evita di dover creare un livello aggiuntivo di directory nella destinazione Suggerimento     L'esecuzione, tramite cron(8), dello script bkup citato in Sezione 10.1.9, «Uno script di copia per backup di dati» con l'opzione "-gl", dovrebbe fornire funzionalità moltio simili a dumpfs di Plan9 per un archivio di dati statici. Suggerimento     Gli strumenti di controllo delle versioni VCS (Version control system) in Tabella 10.15, «Elenco di strumenti per sistemi di controllo delle versioni» possono essere usati come strumenti di copia e sincronizzazione multidirezionali. 10.1.3. Esempi di invocazione per archivi     Ecco diversi modi di archiviare ed estrarre archivi con l'intero contenuto della directory "./sorgente", usando diversi strumenti.     GNU tar(1):     $ tar cvzf archivio.tar.gz ./sorgente $ tar xvzf archivio.tar.gz     cpio(1):     $ find ./sorgente -xdev -print0 | cpio -ov --null > archivio.cpio; gzip archivio.cpio $ zcat archivio.cpio.gz | cpio -i 10.1.4. Esempi di invocazione per la copia     Ecco diversi modi di copiare l'intero contenuto della directory "./sorgente", usando diversi strumenti. * Copia locale: directory "./sorgente" → directory "/dest"     * Copia remota: directory "./sourgente" sull'host locale → directory "/dest" sull'host "utente@host.dom"     rsync(8):     # cd ./sorgente; rsync -av . /dest # cd ./sorgente; rsync -av . utente@host.dom:/dest     In alternativa si può usare la sintassi con "una barra / alla fine della directory sorgente".     # rsync -av ./sorgente/ /dest # rsync -av ./sourgente/ utente@host.dom:/dest     GNU cp(1) e openSSH scp(1):     # cd ./sorgente; cp -a . /dest # cd ./sorgente; scp -pr . utente@host.dom:/dest     GNU tar(1):     # (cd ./sorgente && tar cf - . ) | (cd /dest && tar xvfp - ) # (cd ./sorgente && tar cf - . ) | ssh utente@host.dom '(cd /dest && tar xvfp - )'     cpio(1):     # cd ./sorgente; find . -print0 | cpio -pvdm --null --sparse /dest In tutti gli esempi contenenti ".", si può sostituire "." con     "pippo" per copiare i file dalla directory "./sorgente/pippo" alla directory "/dest/pippo". In tutti gli esempi contenenti ".", si può sostituire "." con il percorso assoluto "/percorso/di/sorgente/pippo" per evitare di     fare "cd ./sorgente;". I file verranno copiati in posizioni diverse a seconda dello strumento utilizzato, come descritto qui di seguito. * in "/dest/pippo": rsync(8), GNU cp(1) e scp(1)     * "/percorso/di/sorgente/pippo": GNU tar(1) e cpio(1) Suggerimento     rsync(8) e GNU cp(1) hanno l'opzione "-u" per saltare i file che sono più recenti nella destinazione. 10.1.5. Esempi di invocazione per la selezione di file find(1) viene usato per selezionare i file per i comandi di archiviazione e copia (vedere Sezione 10.1.3, «Esempi di     invocazione per archivi» e Sezione 10.1.4, «Esempi di invocazione per la copia») o per xargs(1) (vedere Sezione 9.5.9, «Ripetere un comando su diversi file»). Questo funzionamento può essere migliorato usando le sue opzioni di comando.     La sintassi base di find(1) può essere riassunta nel modo seguente. * Gli argomenti condizionali sono valutati da sinistra a destra. * Questa valutazione si ferma una volta che il risultato è determinato. * L'operatore "OR logico" (specificato con "-o" tra condizioni) ha una precedenza più bassa dell'operatore "AND logico" (specificato da "-a" o dall'assenza di un operatore tra condizioni). * L'operatore "NOT logico" (specificato da "!" prima di una condizione) ha una precedenza più alta di un operatore "AND logico". * L'opzione "-prune" restituisce sempre una condizione di VERO logico e, se si tratta di una directory, la ricerca si ferma a questo punto. * L'opzione "-name trova corrispondenze con il nome base del     file tramite espressioni glob di shell (vedere Sezione 1.5.6, «Glob della shell»), ma fa corrispondenza anche con il carattere iniziale "." con l'uso di metacaratteri come "*" e "?". (Nuova funzionalità POSIX (http://it.wikipedia.org/wiki/ POSIX) .) * L'opzione "-regex" trova corrispondenze con il percorso completo usando, in modo predefinito, BRE in stile emacs (vedere Sezione 1.6.2, «Espressioni regolari»). * L'opzione "-size" trova corrispondenze con file in base alla loro dimensione (valori preceduti da "+" o "-" per cercare dimensioni, rispettivamente, più grandi o piccole del valore). * L'opzione "-newer" trova corrispondenze con file più recenti di quello specificato come argomento dell'opzione. * L'opzione "-print0" restituisce sempre il valore logico VERO e stampa il nome file completo (terminato dal carattere null (http://en.wikipedia.org/wiki/Null_character) ) sullo standard output.     find(1) è spesso usato con uno stile di invocazione come il seguente. # find /path/to \ -xdev -regextype posix-extended \     -type f -regex ".*\.cpio|.*~" -prune -o \ -type d -regex ".*/\.git" -prune -o \ -type f -size +99M -prune -o \ -type f -newer /path/to/timestamp -print0     Il comando precedente si traduce nelle azioni seguenti. 1. Cercare tutti i file a partire da "/percorso/di" 2. Limitare globalmente la ricerca al file system da cui è richiamato e usare espressioni regolari ERE (vedere Sezione 1.6.2, «Espressioni regolari») 3. Escludere i file che corrispondono all'espressione regolare ".*\.cpio" o ".*~" dalla ricerca fermando la loro elaborazione     4. Escludere le directory che corrispondono all'espressione regolare ".*/\.git" dalla ricerca fermando la loro elaborazione 5. Escludere i file più grandi di 99 Megabyte (unità di 1048576 byte) dalla ricerca fermando la loro elaborazione 6. Stampare i nomi di file che soddisfano le condizioni di ricerca precedenti e che siano più recenti di "/percorso/di/ marcaturaorario"     Notare nell'esempio precedente l'uso della parte di comando "-prune -o per escludere file. Nota Alcune opzioni per find(1) potrebbero non essere supportate per i     sistemi *nix (http://it.wikipedia.org/wiki/Unix-like) non Debian. In questi casi, cambiare le invocazioni in quelle adatte corrispondenti e sostituire "-print0" con "-print". Potrebbe essere necessario modificare anche comandi correlati. 10.1.6. Backup e ripristino Tutti sanno che i computer a volte si danneggiano oppure errori umani causano danni al sistema e ai dati. Le operazioni di backup     e ripristino sono una parte essenziale di un'amministrazione di sistema di successo. Tutte i possibili modi in cui si possono creare danni si verificano prima o poi. Suggerimento     Mantenere il proprio sistema di backup semplice e fare il backup di sistema spesso. Avere dati di backup è più importante della qualità tecnica del metodo di backup.     Ci sono 3 fattori chiave che determinano la reale politica di backup e ripristino. 1. Sapere di cosa fare il backup ed il ripristino * I file dati direttamente creati dall'utente: in "~/" * I file dati creati da applicazioni usate dall'utente: dati in "/var/" (tranne "/var/cache/", "/var/run/" e "/ var/tmp/") * File di configurazione del sistema: dati in "/etc/" * Software locali: dati in "/usr/local/" o "/opt/" * Informazioni di installazione del sistema: un memorandum in puro testo sui passi chiave (partizioni, …) * Insiemi di dati comprovati: confermati da operazioni preventive sperimentali di ripristino 2. Sapere come fare il backup ed il ripristino     * Rendere sicura l'archiviazione dei dati: protezione da sovrascritture e fallimenti del sistema * Backup frequenti: backup pianificati * Backup ridondanti: mirror di dati * Procedura a prova di idioti: singolo facile comando di backup 3. Valutazione dei rischi e dei costi * Valore dei dati se persi * Risorse necessarie per il backup: umane, hardware, software, … * Modi in cui le cose possono andare storte e loro probabilità Nota Non fare il backup dei contenuti dei pseudo file system che si     trovano in /proc, /sys, /tmp e /run (vedere Sezione 1.2.12, «procfs e sysfs» e Sezione 1.2.13, «tmpfs»). A meno di non sapere esattamente ciò che si sta facendo, sono un'enorme mole di dati senza utilità. Per quanto riguarda il rendere sicura l'archiviazione dei dati, questi dovrebbero essere come minimo in una partizione diversa del disco e preferibilmente su dischi e macchine diversi per sopravvivere alla corruzione del file system. È preferibile     archiviare i dati importanti su supporti scrivibili una sola volta, come CD/DVD-R per prevenire incidenti di sovrascrittura. (Vedere Sezione 10.3, «I dati binari» per come scrivere sul supporto di archiviazione dalla riga di comando. L'ambiente desktop GNOME con interfaccia grafica fornisce un facile accesso tramite menu: "Risorse→Creazione CD/DVD".) Nota     Durante il backup dei dati può essere preferibile fermare alcuni demoni applicativi come l'MTA (vedere Sezione 6.3, «Agente di trasporto della posta (MTA)»). Nota Si dovrebbe dare un'attenzione particolare al backup ed al ripristino di file con dati relativi all'identità dell'utente,     come "/etc/ssh/ssh_host_dsa_key", "/etc/ssh/ssh_host_rsa_key", "~ /.gnupg/*", "~/.ssh/*", "/etc/passwd", "/etc/shadow", "/etc/ fetchmailrc", "popularity-contest.conf", "/etc/ppp/pap-secrets" e "/etc/exim4/passwd.client". Alcuni di questi dati non possono essere ricreati inserendo la stessa stringa di input nel sistema. Nota Se si esegue un compito di cron come processo di un utente, si     deve ripristinare i file nella directory "/var/spool/cron/ crontabs" e riavviare cron(8). Vedere Sezione 9.5.14, «Pianificare compiti in modo regolare» per informazioni su cron (8) e crontab(1). 10.1.7. Suite con utilità di backup     Quello che segue è un elenco di importanti suite di utilità di backup disponibili in un sistema Debian Tabella 10.3. Elenco di suite con utilità di backup +-------------------------------------------------------------------------------------------------------------+ |pacchetto |popcon |dimensione |descrizione | |-------------------+---------------+----------------------+--------------------------------------------------| |obnam (http:// |V:0, I:2 (http:|620 (http:// | | |packages.debian.org|//qa.debian.org|packages.qa.debian.org|backup incrementali (remoti) | |/sid/obnam) |/popcon.php? |/o/obnam.html) | | | |package=obnam) | | | |-------------------+---------------+----------------------+--------------------------------------------------| | |V:11, I:25 | | | |rdiff-backup (http:|(http:// |704 (http:// | | |// |qa.debian.org/ |packages.qa.debian.org|backup incrementali (remoti) | |packages.debian.org|popcon.php? |/r/rdiff-backup.html) | | |/sid/rdiff-backup) |package= | | | | |rdiff-backup) | | | |-------------------+---------------+----------------------+--------------------------------------------------| | |V:2, I:10 | |dump(8) e restore(8) di BSD (http:// | |dump (http:// |(http:// |716 (http:// |it.wikipedia.org/wiki/ | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|Berkeley_Software_Distribution) 4.4 per file | |/sid/dump) |popcon.php? |/d/dump.html) |system ext2 (http://it.wikipedia.org/wiki/Ext2) / | | |package=dump) | |ext3 (http://it.wikipedia.org/wiki/Ext3) | |-------------------+---------------+----------------------+--------------------------------------------------| | |V:1, I:17 | | | |xfsdump (http:// |(http:// |787 (http:// |dump e ripristino con xfsdump(8) e xfsrestore(8) | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|per file system XFS (http://it.wikipedia.org/wiki/| |/sid/xfsdump) |popcon.php? |/x/xfsdump.html) |XFS_(file_system)) in GNU/Linux e IRIX (http:// | | |package= | |it.wikipedia.org/wiki/Irix) | | |xfsdump) | | | |-------------------+---------------+----------------------+--------------------------------------------------| |backupninja (http:/|V:4, I:5 (http:| | | |/ |//qa.debian.org|277 (http:// | | |packages.debian.org|/popcon.php? |packages.qa.debian.org|sistema di meta-backup leggero ed estensibile | |/sid/backupninja) |package= |/b/backupninja.html) | | | |backupninja) | | | |-------------------+---------------+----------------------+--------------------------------------------------| | |V:0, I:0 (http:| | | |sbackup (http:// |//qa.debian.org|488 (http:// | | |packages.debian.org|/popcon.php? |packages.qa.debian.org|semplice suite di backup per il desktop GNOME | |/sid/sbackup) |package= |/s/sbackup.html) | | | |sbackup) | | | |-------------------+---------------+----------------------+--------------------------------------------------| | |V:11, I:22 | | | |bacula-common |(http:// |1186 (http:// |Bacula (http://en.wikipedia.org/wiki/Bacula) : | |(http:// |qa.debian.org/ |packages.qa.debian.org|backup, ripristino e controllo in rete - file | |packages.debian.org|popcon.php? |/b/bacula-common.html)|comuni di supporto | |/sid/bacula-common)|package= | | | | |bacula-common) | | | |-------------------+---------------+----------------------+--------------------------------------------------| |bacula-client |I:7 (http:// | | | |(http:// |qa.debian.org/ |137 (http:// |Bacula (http://en.wikipedia.org/wiki/Bacula) : |     |packages.debian.org|popcon.php? |packages.qa.debian.org|backup, ripristino e controllo in rete - | |/sid/bacula-client)|package= |/b/bacula-client.html)|metapacchetto client | | |bacula-client) | | | |-------------------+---------------+----------------------+--------------------------------------------------| |bacula-console |V:2, I:9 (http:|197 (http:// | | |(http:// |//qa.debian.org|packages.qa.debian.org|Bacula (http://en.wikipedia.org/wiki/Bacula) : | |packages.debian.org|/popcon.php? |/b/ |backup, ripristino e controllo in rete - console | |/sid/ |package= |bacula-console.html) |testuale | |bacula-console) |bacula-console)| | | |-------------------+---------------+----------------------+--------------------------------------------------| |bacula-server |I:3 (http:// | | | |(http:// |qa.debian.org/ |137 (http:// |Bacula (http://en.wikipedia.org/wiki/Bacula) : | |packages.debian.org|popcon.php? |packages.qa.debian.org|backup, ripristino e controllo in rete - | |/sid/bacula-server)|package= |/b/bacula-server.html)|metapacchetto server | | |bacula-server) | | | |-------------------+---------------+----------------------+--------------------------------------------------| |amanda-common |V:3, I:5 (http:| |Amanda (http://en.wikipedia.org/wiki/ | |(http:// |//qa.debian.org|7167 (http:// |Advanced_Maryland_Automatic_Network_Disk_Archiver)| |packages.debian.org|/popcon.php? |packages.qa.debian.org|: Advanced Maryland Automatic Network Disk | |/sid/amanda-common)|package= |/a/amanda-common.html)|Archiver (Librerie) | | |amanda-common) | | | |-------------------+---------------+----------------------+--------------------------------------------------| |amanda-client |V:2, I:5 (http:| |Amanda (http://en.wikipedia.org/wiki/ | |(http:// |//qa.debian.org|814 (http:// |Advanced_Maryland_Automatic_Network_Disk_Archiver)| |packages.debian.org|/popcon.php? |packages.qa.debian.org|: Advanced Maryland Automatic Network Disk | |/sid/amanda-client)|package= |/a/amanda-client.html)|Archiver (Client) | | |amanda-client) | | | |-------------------+---------------+----------------------+--------------------------------------------------| |amanda-server |V:0, I:1 (http:| |Amanda (http://en.wikipedia.org/wiki/ | |(http:// |//qa.debian.org|919 (http:// |Advanced_Maryland_Automatic_Network_Disk_Archiver)| |packages.debian.org|/popcon.php? |packages.qa.debian.org|: Advanced Maryland Automatic Network Disk | |/sid/amanda-server)|package= |/a/amanda-server.html)|Archiver (Server) | | |amanda-server) | | | |-------------------+---------------+----------------------+--------------------------------------------------| | |V:6, I:7 (http:| |BackupPC (http://en.wikipedia.org/wiki/Backuppc) è| |backuppc (http:// |//qa.debian.org|2021 (http:// |un sistema ad altre prestazioni di qualità | |packages.debian.org|/popcon.php? |packages.qa.debian.org|professionale per il backup di PC (basato su | |/sid/backuppc) |package= |/b/backuppc.html) |dischi) | | |backuppc) | | | |-------------------+---------------+----------------------+--------------------------------------------------| |backup-manager |V:2, I:4 (http:|615 (http:// | | |(http:// |//qa.debian.org|packages.qa.debian.org| | |packages.debian.org|/popcon.php? |/b/ |strumento di backup a riga di comando | |/sid/ |package= |backup-manager.html) | | |backup-manager) |backup-manager)| | | |-------------------+---------------+----------------------+--------------------------------------------------| | |V:1, I:2 (http:| | | |backup2l (http:// |//qa.debian.org|86 (http:// |strumento di backup/ripristino per supporti | |packages.debian.org|/popcon.php? |packages.qa.debian.org|montabile (basato su dischi) che richiede bassa | |/sid/backup2l) |package= |/b/backup2l.html) |manutenzione | | |backup2l) | | | +-------------------------------------------------------------------------------------------------------------+     Gli strumenti di backup hanno una propria specializzazione. * Mondo Rescue (http://en.wikipedia.org/wiki/Mondo_Rescue)