La guida Debian --------------- Osamu Aoki Traduzione italiana: Davide Di Lazzaro Sezione A.1, `Autori' CVS, lun giu 16 21:20:33 UTC 2008 ------------------------------------------------------------------------------- Estratto -------- La guida Debian (http://qref.sourceforge.net/) è pensata per fornire un'ampio panorama del sistema Debian come una _guida dell'utente post-installazione_. Essa copre molti aspetti dell'amministrazione di sistema attraverso esempi di _comandi da shell_. Vengono proposte lezioni base, trucchi e molte altre informazioni su molti argomenti, tra cui i concetti fondamentali tipici di un sistema Debian, suggerimenti per l' installazione, il sistema Debian di gestione dei pacchetti, il kernel sotto Debian, l'affinamento del sistema, la costruzione di un gateway, editor di testo, CVS, programmazione e GnuPG per i _non sviluppatori_. Avviso di Copyright ------------------- Copyright (C) 2001--2005 by Osamu Aoki Copyright (Chapter 2) (C) 1996--2001 by Software in the Public Interest. Questa guida può essere utilizzata nei termini della GNU General Public License versione 2 o successive. (http://www.gnu.org/copyleft/gpl.html) Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. ------------------------------------------------------------------------------- Contenuti --------- 1. Prefazione 1.1. Il documento ufficiale 1.2. Convenzioni utilizzate 1.3. Script di esempio 1.4. Impostazione di base 1.5. Le basi delle distribuzioni Debian 2. Nozioni fondamentali della Debian 2.1. Gli archivi Debian 2.1.1. Struttura della directory 2.1.2. Le distribuzioni Debian 2.1.3. La distribuzione `stable' 2.1.4. La distribuzione `testing' 2.1.5. La distribuzione `unstable' 2.1.6. La distribuzione `frozen' 2.1.7. Codice dei nomi della distribuzioni Debian 2.1.8. Nomi in codice usati in passato 2.1.9. Da dove vengono i nomi delle distribuzioni? 2.1.10. La directory `pool' 2.1.11. Alcune note storiche su Sid 2.1.12. Pacchetti caricati in `incoming' 2.1.13. Recuperare un vecchio pacchetto 2.1.14. Sezioni per architettura 2.1.15. Il codice sorgente 2.2. Il sistema di gestione dei pacchetti Debian 2.2.1. Panoramica dei pacchetti Debian 2.2.2. Il formato dei pacchetti Debian 2.2.3. Convenzioni nei nomi dei pacchetti Debian 2.2.4. Mantenimento della configurazione locale 2.2.5. Script di gestione Debian 2.2.6. Priorità dei pacchetti 2.2.7. Pacchetti Virtuali 2.2.8. Dipendenze dei pacchetti 2.2.9. Cosa significa "Pre-Depends" 2.2.10. Lo stato dei pacchetti 2.2.11. Evitare l'aggiornamento dei pacchetti 2.2.12. Pacchetti sorgente 2.2.13. Compilare pacchetti binari dai sorgenti 2.2.14. Creare nuovi pacchetti Debian 2.3. Aggiornare un sistema Debian 2.3.1. `dpkg' 2.3.2. APT 2.3.3. `dselect' 2.3.4. Aggiornare un sistema in funzione 2.3.5. File `.deb' scaricati e tenuti in cache 2.3.6. Tenere una registrazione dell'aggiornamento 2.4. La sequenza di boot della Debian 2.4.1. Il programma `init' 2.4.2. I Runlevel 2.4.3. Personalizzare i runlevel 2.5. Supportare le differenze 2.6. Internazionalizzazione 2.7. Debian ed il kernel 2.7.1. Compilare un kernel da un sorgente non-Debian 2.7.2. Gli strumenti per compilare un kernel personalizzato. 2.7.3. Funzioni speciali per trattare con i moduli 2.7.4. Disinstallare un vecchio pacchetto kernel 3. Suggerimenti per l'installazione di un sistema Debian 3.1. Tracce generali per l'installazione di Linux 3.1.1. Le basi della compatibilità hardware 3.1.2. Definire i componenti del PC ed il chipset 3.1.3. Definire i componenti del PC tramite Debian 3.1.4. Definire i componenti del PC tramite altri S.O. 3.1.5. Il mito di Lilo 3.1.6. GRUB 3.1.7. Scegliere i floppy di avvio 3.1.8. Installazione 3.1.9. Quale host ed IP usare per una LAN 3.1.10. Account utenti 3.1.11. Creare i filesystem 3.1.12. Linee guida per la memoria DRAM 3.1.13. Lo spazio di Swap 3.2. Configurare Bash 3.3. Configurare il mouse 3.3.1. Mouse PS/2 3.3.2. Mouse USB 3.3.3. Touchpad 3.4. Configurare NFS 3.5. Configurare Samba 3.6. Configurare la stampante 3.6.1. `lpr'/`lpd' 3.6.2. CUPS(TM) 3.7. Altri consigli di configurazione per l'host 3.7.1. Installate pochi altri pacchetti dopo l'installazione iniziale 3.7.2. Moduli 3.7.3. Impostazione base del CD-RW 3.7.4. Grosse memorie e spegnimento automatico 3.7.5. Strani problemi di accesso con alcuni siti web 3.7.6. Configurazione di PPP per una connessione dial-up 3.7.7. Altri file di configurazione da perfezionare in `/etc' 4. Lezioni di Debian 4.1. Per iniziare 4.1.1. Login come root al prompt dei comandi 4.1.2. Impostare un ambiente minimale per il novizio 4.1.3. Aggiungere un account utente 4.1.4. Muoversi tra le console virtuali 4.1.5. Lo spegnimento del PC 4.1.6. E' tempo di giocare 4.2. Midnight commander (MC) 4.2.1. Migliorare MC 4.2.2. Lanciare MC 4.2.3. Il file manager in MC 4.2.4. Trucchi per la riga di comando in MC 4.2.5. L'editor in MC 4.2.6. Il visualizzatore in MC 4.2.7. Le caratteristiche di lancio automatico di MC 4.2.8. Il fileystem FTP virtuale di MC 4.3. Ambiente di lavoro Unix-like 4.3.1. Combinazioni speciali di tasti 4.3.2. Comandi base Unix 4.3.3. Esecuzione dei comandi 4.3.4. Il comando semplice 4.3.5. Esecuzione dei comandi e variabili d'ambiente 4.3.6. Il percorso di ricerca dei comandi 4.3.7. Opzioni della riga di comando 4.3.8. Metacaratteri della shell 4.3.9. Restituire il valore dei comandi 4.3.10. Tipiche sequenze di comandi 4.3.11. Alias dei comandi 4.4. Elaborazione del testo Unix-like 4.4.1. Le espressioni regolari 4.4.2. Espressioni sostitutive 4.5. Il filesystem Unix-like 4.5.1. Le basi dei file Unix 4.5.2. Il concetto di filesystem in Debian 4.5.3. Permessi di accesso a file e directory 4.5.4. Timestamp 4.5.5. Collegamenti 4.5.6. Named pipe (FIFO) 4.5.7. Socket 4.5.8. Device 4.5.9. Il filesystem `/proc' 4.6. Il sistema X Window 4.6.1. Lanciare il sistema X Window 4.6.2. Il menu di X Window 4.6.3. Sequenze di tasti per X Window 4.7. Studi ulteriori 5. Aggiornare una distribuzione a `stable', `testing' o `unstable' 5.1. Aggiornare da Potato a Woody 5.2. Preparazione per l'aggiornamento 5.3. Aggiornamento 5.3.1. Usare `dselect' 5.3.2. Usare `apt-get' 6. Gestione dei pacchetti in Debian 6.1. Introduzione 6.1.1. Strumenti principali di gestione dei pacchetti 6.1.2. Strumenti utili 6.2. Iniziare la gestione dei pacchetti Debian 6.2.1. Impostare APT 6.2.2. Installare i task 6.2.3. `aptitude' 6.2.4. `dselect' 6.2.5. Tracciare una distribuzione con APT 6.2.6. I comandi di `aptitude', `apt-get' e `apt-cache' 6.3. Comandi di sopravvivenza Debian 6.3.1. Controllo dei bachi in Debian e ricerca di aiuto 6.3.2. Aggiornamento con APT: risoluzione dei problemi 6.3.3. Salvataggio mediante `dpkg' 6.3.4. Recuperare i dati sulla selezione dei pacchetti 6.3.5. Recupero del sistema dopo danneggiamento di `/var' 6.3.6. Installare un pacchetto su un sistema non bootabile 6.3.7. Cosa fare se `dpkg' non funziona 6.4. Comandi del "paradiso" Debian 6.4.1. Informazioni su di un file 6.4.2. Informazioni su di un pacchetto 6.4.3. Installazione automatica con APT 6.4.4. Riconfigurare i pacchetti già installati 6.4.5. Rimozione e purga dei pacchetti 6.4.6. Mantenere vecchi pacchetti 6.4.7. Sistema misto `stable'/`testing'/`unstable' 6.4.8. Potare i file della cache 6.4.9. Salvare/copiare la configurazione del sistema 6.4.10. Portare un pacchetto nel sistema `stable' 6.4.11. Archivio locale dei pacchetti 6.4.12. Convertire od installare un pacchetto binario di altra distribuzione 6.4.13. Comando di installazione automatica 6.4.14. Verificare i file dei pacchetti installati 6.4.15. Ottimizzare `sources.list' 6.5. Altre particolarità di Debian 6.5.1. Il comando `dpkg-divert' 6.5.2. Il pacchetto `equivs' 6.5.3. Comandi alternativi 6.5.4. Uso dei runlevel 6.5.5. Demoni di servizio disabilitati 7. Il kernel Linux su Debian 7.1. Ricompilare il kernel 7.1.1. Il metodo Debian standard 7.1.2. Il metodo classico 7.1.3. I Kernel header 7.2. Kernel 2.4 modulare 7.2.1. PCMCIA 7.2.2. SCSI 7.2.3. Funzioni di rete 7.2.4. Il filesystem EXT3 ( > 2.4.17) 7.2.5. Supporto nel kernel 2.4 per Realtek RTL-8139 7.2.6. Supporto per la porta parallela 7.3. Mettere a punto il kernel tramite il filesystem proc 7.3.1. Troppi file aperti 7.3.2. Intervalli di flush del disco rigido 7.3.3. Vecchie macchine lente e con poca memoria 7.4. Il kernel 2.6 con udev 8. Trucchi per Debian 8.1. Avviare il sistema 8.1.1. "Ho scordato la password di root!" (1) 8.1.2. "Ho scordato la password di root!" (2) 8.1.3. Non riesco a fare il boot 8.1.4. "Voglio disabilitare X al boot!" 8.1.5. Altri trucchi con il boot prompt 8.1.6. Come impostare i parametri di boot (GRUB) 8.2. Registrazione degli eventi 8.2.1. Registrare gli eventi della shell 8.2.2. Registrare gli eventi di X 8.3. Copia ed archiviazione di una intera sottodirectory 8.3.1. Comandi base per copiare una intera sottodirectory 8.3.2. `cp' 8.3.3. `tar' 8.3.4. `pax' 8.3.5. `cpio' 8.3.6. `afio' 8.4. Backup differenziali e sincronizzazione dei dati 8.4.1. Backup differenziale con rdiff 8.4.2. Backup giornalieri con `pdumpfs' 8.4.3. Backup differenziali regolari con RCS 8.5. Recuperare un sistema bloccato 8.5.1. Uccidere un processo 8.5.2. Alt-SysRq 8.6. Alcuni piccoli comandi da ricordare 8.6.1. Pager 8.6.2. Memoria libera 8.6.3. Impostare l'ora (BIOS) 8.6.4. Impostare l'ora (NTP) 8.6.5. Come controllare le funzionalità della console, come lo screensaver 8.6.6. Ricerca dei database amministrativi 8.6.7. Disabilitare il suono (beep) 8.6.8. Messaggi di errore sulla console 8.6.9. Impostare i caratteri corretti per la console 8.6.10. Riportare la console allo stato normale 8.6.11. Convertire file di testo da DOS a Unix 8.6.12. Convertire un file di testo con `recode' 8.6.13. Sostituzione delle espressioni regolari 8.6.14. Modificare un file "in situ" tramite uno script 8.6.15. Estrarre le differenze e fondere gli aggiornamenti da un file sorgente 8.6.16. Convertire grossi file in file più piccoli 8.6.17. Estrarre dati da un file tabella 8.6.18. Parti di script per il piping 8.6.19. Pezzi di script ricorsivi 8.6.20. Brevi follie in Perl script 8.6.21. Catturare il testo od un archivio delle ML da una pagina web 8.6.22. Stampare bene una pagina Web 8.6.23. Stampare bene una pagina di manuale 8.6.24. Unire due file Postscript o PDF 8.6.25. Cronometrare un comando 8.6.26. Il comando `nice' 8.6.27. Programmare gli eventi (`cron', `at') 8.6.28. Scambio di console con `screen' 8.6.29. Testare la rete: le basi 8.6.30. Eliminare la posta dallo spool locale 8.6.31. Rimuovere la posta congelata dallo spool locale 8.6.32. Riinviare il contenuto delle caselle di posta 8.6.33. Ripulire il contenuto di un file 8.6.34. File fantoccio 8.6.35. `chroot' 8.6.36. Come controllare i collegamenti 8.6.37. `mount' il file immagine del disco rigido 8.6.38. Samba 8.6.39. Utilità per filesystem estranei 8.7. Errori tipici da notare 8.7.1. `rm -rf .*' 8.7.2. `rm /etc/passwd' 9. Messa a punto del sistema Debian 9.1. Inizializzazione del sistema 9.1.1. Personalizzare gli script di inizializzazione 9.1.2. Personalizzare i file di log 9.1.3. Ottimizzare l'accesso hardware 9.2. Controllare gli accessi 9.2.1. Restrizione tramite PAM 9.2.2. "Why GNU `su' does not support the `wheel' group" (Perchè GNU `su' non supporta il gruppo `wheel') 9.2.3. Il significato dei vari gruppi 9.2.4. `sudo' -- lavorare con maggiore sicurezza 9.2.5. Controllare l'accesso ai servizi 9.2.6. Centralizzare l'autenticazione -- LDAP 9.3. Masterizzatori 9.3.1. Introduzione 9.3.2. Approccio 1: moduli + `lilo' 9.3.3. Approccio 2: ricompilare il kernel 9.3.4. Procedure post-configurazione 9.3.5. Il file CD-image (avviabile) 9.3.6. Scrivere sul masterizzatore (R, RW): 9.3.7. Creare un file immagine di un CD 9.3.8. CD con le immagini Debian 9.3.9. Backup del sistema su CD-R 9.3.10. Copiare CD musicali su CD-R 9.3.11. Masterizzare i DVD-R, DVD-RW e DVD+RW 9.4. X 9.4.1. Pacchetti del sistema X 9.4.2. Pacchetti per il riconoscimento hardware per X 9.4.3. X server 9.4.4. X client 9.4.5. Le X session 9.4.6. Connessione TCP/IP ad X 9.4.7. Connessioni ad un X server remoto -- `xhost' 9.4.8. Connessioni ad un X server remoto -- `ssh' 9.4.9. L'emulatore di terminale di X -- `xterm' 9.4.10. X resources 9.4.11. Mappatura della tastiiera e dei tasti del puntatore in X 9.4.12. Diventare root in X 9.4.13. Font TrueType in X 9.4.14. Web Browser (grafici) 9.5. SSH 9.5.1. Principi basilari di SSH 9.5.2. Port forwarding -- per il tunneling SMTP/POP3 9.5.3. Connettersi con meno passwords -- RSA 9.5.4. Client SSH differenti 9.5.5. SSH agent 9.5.6. Risoluzione dei problemi con SSH 9.6. Posta 9.6.1. Mail transport agent (MTA) 9.6.2. Ritirare la posta -- Fetchmail 9.6.3. Processare la posta -- Procmail 9.6.4. Processare lo spam con `crm114' 9.6.5. Leggere la posta -- Mutt 9.7. Localizzazione (l10n) 9.7.1. Le basi della localizzazione 9.7.2. I locale 9.7.3. Introduzione ai locale 9.7.4. Attivare le capacità di supporto locale 9.7.5. Attivare un locale in particolare 9.7.6. Formato data ISO 8601 9.7.7. Esempio per US (ISO-8859-1) 9.7.8. Esempio per l'Italiano con euro (ISO-8859-15) 9.7.9. Esempio per un sistema multilingue per X window system 9.7.10. Metodi alternativi di input in X 9.7.11. Emulatori di terminale in X 9.7.12. Supporto UTF-8 per l'emulatore di terminale in X 9.7.13. Esempio per UTF-8 in console framebuffer 9.7.14. Oltre i locale 9.8. Multilingualizzazione (m17n) 10. Configurare la rete 10.1. Le basi dell'IP networking 10.2. Configurazione della rete a basso livello 10.2.1. Configurazione a basso livello -- `ifconfig' and `route' 10.2.2. Configurazione a basso livello -- `ip' 10.2.3. Configrazione di un'interfaccia Wi-Fi. 10.2.4. Configurare un'interfaccia PPP 10.3. Dare un nome al computer 10.3.1. Hostname 10.3.2. Mailname 10.4. Domain Name Service (DNS) 10.4.1. Il risolutore 10.4.2. Gestire le informazioni del nameserver -- `resolvconf' 10.4.3. Salvare i nomi cercati -- `nscd', `dnsmasq', `pdnsd', `bind9' 10.4.4. Fornire un Domain Name Service -- `bind' 10.5. Configurare le interfacce di rete con DHCP 10.6. Configurazione di rete ad alto livello in Debian 10.6.1. Configurare un'interfaccia con un indirizzo IP statico 10.6.2. Configurare un'interfaccia con DHCP 10.6.3. Configurare un'interfaccia Wi-Fi 10.6.4. Configurare un'interfaccia PPP 10.6.5. Configurare un'interfaccia PPPoE 10.6.6. Configurare più interfacce Ethernet per un gateway 10.6.7. Configurare le interfacce virtuali 10.7. Configurazione di rete mediante definizione delle interfacce logiche 10.8. Magie della configurazione di rete 10.8.1. Selezione delle interfacce logice con guessnet 10.8.2. Configurazione di rete automatica con laptop-net 10.9. Gestire nomi inconsistenti delle interfacce dati dal kernel 10.10. Iniziare la configurazione di rete 10.10.1. Iniziare la configurazione di rete all'avvio 10.10.2. Iniziare la configurazione di rete -- `hotplug' 10.10.3. Iniziare la configurazione di rete -- `ifplugd' 10.10.4. Iniziare la configurazione di rete -- `waproamd' 10.10.5. Configurazione di rete e PCMCIA 10.11. Mappatura multilivello 10.12. Configurazione dei servizi di rete 10.13. Risoluzione dei problemi di rete 10.14. Costruire un gateway router 10.14.1. Configurare Netfilter 10.14.2. La tabella di netfilter 10.14.3. Gestione di connessioni multiple di rete 11. Gli Editor 11.1. Editor più popolari 11.2. Editor di salvataggio 11.3. Emacs e Vim 11.3.1. Tracce per Vim 11.3.2. Tracce per Emacs 11.3.3. Lanciare l'editor 11.3.4. Riassunto dei comandi (Emacs e Vim) 11.3.5. Configurare Vim 11.3.6. Ctags 11.3.7. Convertire una schermata da sintassi-evidenziata in sorgente HTML 11.3.8. Dividere lo schermo con `vim' 12. Sistemi per il controllo versione 12.1. Concurrent Version System (CVS) 12.1.1. Installare un server CVS 12.1.2. Esempi di una sessione CVS 12.1.3. Risoluzione dei problemi 12.1.4. Comandi CVS 12.2. Subversion 12.2.1. Installazione di un server Subversion 12.2.2. Muovere un deposito CVS a Subversion 12.2.3. Subversion usage examples 13. Programmazione 13.1. Dove iniziare 13.2. Shell 13.2.1. Bash -- la shell interattiva standard _GNU_ 13.2.2. Le shell POSIX 13.2.3. Parametri della shell 13.2.4. Redirezione 13.2.5. Condizionali 13.2.6. Processamento delle righe di comando 13.3. Awk 13.4. Perl 13.5. Python 13.6. Make 13.7. C 13.7.1. Un semplice programma in C (`gcc') 13.7.2. Debugging 13.7.3. Flex -- un miglior Lex 13.7.4. Bison -- un Yacc migliore 13.7.5. Autoconf 13.8. Web 13.9. Preparazione di documenti 13.9.1. `roff' 13.9.2. SGML 13.9.3. TeX/LaTeX 13.9.4. Literate Programming 13.10. Creare pacchetti debian 13.10.1. Impacchettare un singolo binario 13.10.2. Impacchettare con gli strumenti 14. GnuPG 14.1. Installazione di GnuPG 14.2. Uso di GnuPG 14.3. Gestione di GnuPG 14.4. Usare GnuPG con altre applicazioni 14.5. Uso con Mutt 14.5.1. Uso con Vim 15. Supporto per Debian 15.1. Riferimenti 15.2. Trovare il significato di una parola 15.3. Scoprire la popolarità di un pacchetto Debian 15.4. Il sistema Debian di tracciamento dei bachi 15.5. Liste di messaggi 15.6. Internet Relay Chat (IRC) 15.7. Motori di ricerca 15.8. Siti Web A. Appendice A.1. Autori A.2. Garanzie A.3. Feedback A.4. Formato del documento A.5. Il labirinto di Debian A.6. Citazioni Debian ------------------------------------------------------------------------------- 1. Prefazione ------------- La guida Debian (http://qref.sourceforge.net/) è nata per fornire una descrizione a grandi linee del sistema Debian, intesa come guida utente post-installazione. Il lettore a cui è indirizzata è qualcuno interessato a leggere gli script di shell. Mi aspetto che il lettore abbia acquisito delle conoscenze base dei sistemi tipo Unix, prima di leggere questo documento. Ho fatto una scelta ponderata di _non_ spiegare ogni cosa in dettaglio, se questa può essere trovata in una pagina di manuale, o in una pagina info, oppure in un documento HOWTO. Al posto di dare delle spiegazioni complete, ho tentato di fornire delle informazioni pratiche, fornendo le sequenze esatte dei comandi nel testo principale, oppure negli script di esempio reperibili sotto http://www.debian.org/doc/manuals/debian-reference/examples/. Dovete comprendere il contenuto degli esempi prima di dare i comandi. Il vostro sistema potrebbe richidere sequenze di comandi lievemente diverse. Molte delle informazioni incluse consistono in richiami ai riferimenti più autorevoli, elencati in Sezione 15.1, `Riferimenti'. Questo documento è nato come "guida rapida", poi è cresciuto. Nondimeno, _Keep it short and simple (Sii semplice e conciso)_ (KISS) è il mio principio guida. Per un aiuto sulle procedure di emergenza per il vostro sistema, andate subito a Sezione 6.3, `Comandi di sopravvivenza Debian'. 1.1. Il documento ufficiale --------------------------- L'ultima versione ufficiale del documento è reperibile negli archivi Debian come pacchetto di nome `debian-reference-it' ed anche reperibile da http://www.debian.org/doc/manuals/debian-reference/. L'ultima versione in fase di sviluppo è http://qref.sourceforge.net/Debian/. Il progetto è ospitato presso http://qref.sourceforge.net/, dove questo documento è disponibile per essere scaricato in formato testo, HTML, PDF, SGML e PostScript. 1.2. Convenzioni utilizzate --------------------------- "La guida Debian" fornisce informazioni attraverso brevi comandi `bash'. Le convenzioni utilizzate sono le seguenti: # comando nell'account root $ comando nell'account utente ... descrizione dell'azione Questi esempi di comandi di shell usano `PS2=" "' Vedere Sezione 13.2.1, `Bash -- la shell interattiva standard _GNU_' per maggiori informazioni su Bash. Il riferimento a: * una _pagina di manuale_ in stile UNIX è dato sotto forma di bash(1). * una _pagina TEXINFO_ GNU è dato sotto forma di `info libc'. * un _libro_ è dato sotto forma di _The C Programming Language_. * una _URL_ è dato sotto forma di http://www.debian.org/doc/manuals/debian-reference/. * un _file_ nel sistema è dato sotto forma di `file:///usr/share/doc/Debian/reference/'. Abbreviazioni: * _LDP_: Linux Documentation Project (http://www.tldp.org/) * _DDP_: Debian Documentation Project (http://www.debian.org/doc/) Altre abbreviazioni vengono definite nel testo prima di essere usate. In questo documento per i documenti LDP si forniscono solo i riferimenti alle URL. Tuttavia, dei documenti LDP ne sono stati fatti dei pacchetti per Debian; quando sono installati, i documenti sono disponibili in `file:///usr/share/doc/HOWTO/'. Vedere Sezione 15.1, `Riferimenti'. 1.3. Script di esempio ---------------------- Gli script di esempio (http://www.debian.org/doc/manuals/debian-reference/examples/) che accompagnano questo documento nel pacchetto `debian-reference-it' disponibile in `file:///usr/share/doc/Debian/reference/examples/'. Il punto "." che precede il nome dei file nascosti è convertito in sottolineatura "_". Estensioni aggiuntive sono state date quando ci sono altri script di esempio alternativi. 1.4. Impostazione di base ------------------------- Se il sistema è stato installato con il minimo dei pacchetti, e volete fare l'uso migliore di questo documento, allora è consigliabile dare i seguenti comandi per installare altri pacchetti che contengono documenti utili: # aptitude install mc less ssh vim kernel-package \ manpages-dev doc-debian doc-linux-text \ debian-policy developers-reference maint-guide \ apt-howto harden-doc debian-reference \ libpam-doc glibc-doc samba-doc exim4-doc-html 1.5. Le basi delle distribuzioni Debian --------------------------------------- Debian mantiene tre distribuzioni diverse simultaneamente. Esse sono: * `stable' --- Ottima per organizzare un server, dato che è l'unica a ricevere aggiornamenti per la sicurezza. Vedere Sezione 2.1.3, `La distribuzione `stable''. * `testing' --- la distribuzione preferita per una workstation, siccome contiene le ultime versioni di software per desktop che ha ricevuto un minimo di prove. Vedere Sezione 2.1.4, `La distribuzione `testing''. * `unstable' --- Sul filo del rasoi. la scelta degli sviluppatori Debian Vedere Sezione 2.1.5, `La distribuzione `unstable''. Quando i pacchetti in `unstable' non hanno annunci di bachi release-critical (RC) da almeno una settimana o più, vengono automaticamente passati a `testing'. le distribuzioni Debian hanno dei nomi in codice, come descritto in Sezione 2.1.7, `Codice dei nomi della distribuzioni Debian'. Prima del rilascio di Woody, nell'agosto del 2002, le tre distribuzioni erano, rispettivamente, Potato, Woody, e Sid. Dopo il rilascio di Woody erano diventate, Woody, Sarge, e Sid. Quando verrà rilasciata Sarge, le distribuzioni `stable' ed `unstable' diventeranno Sarge e Sid; verrà quindi creata una nuova `testing' (all'inizio come copia di `stable') e le verrà dato un nuovo nome in codice. Sottoscrivete alla lista di messaggi a basso volume `debian-devel-announce@lists.debian.org' per annunci importanti su Debian. Vedere Sezione 2.1, `Gli archivi Debian'. Se volete usare dei pacchetti con versioni più recenti di quelle rilasciate con la distribuzione che state usando, allora o aggiornate ad una distribuzione più nuova, come descritto in Capitolo 5, `Aggiornare una distribuzione a `stable', `testing' o `unstable'', oppure aggiornate solo i singoli pacchetti. Se questi non possono essere aggiornati facilmente, allora potreste pensare ad un backport, come descritto in Sezione 6.4.10, `Portare un pacchetto nel sistema `stable''. Tracciare `testing' può avere come effetto collaterale di ritardare l'installazione dei pacchetti che contengono aggiornamenti per la sicurezza. Questi vengono caricati in `unstable' e migrano in `testing' solo dopo un certo ritardo. Se mescolate le distribuzioni, p. es. `testing' con `stable' o `unstable' con `stable', vi troverete alla fine a prendere pacchetti fondamentali, tipo `libc6' da `testing' o `unstable', senza garanzie che non contengano bachi. Siete stati avvertiti. Usare `testing' o `unstable' aumenta il rischio di incappare in bachi seri. Potete gestirlo o impiantando uno schema multiboot con una distribuzione Debian più stabile, o con il trucco elegante di usare `chroot', come descritto in Sezione 8.6.35, ``chroot''. Quest'ultimo vi permetterà di far girare distribuzioni Debian diverse contemporaneamente su console differenti. Dopo una spiegazione sui fondamentali della distribuzione Debian in Capitolo 2, `Nozioni fondamentali della Debian', vi verranno fornite alcune informazioni di base per aiutarvi a vivere felicemente con il software più recente, usufruendo dei vantaggi delle distribuzioni `testing' e `unstable' di Debian. Gli impazienti dovrebbero procedere immediatamente a Sezione 6.3, `Comandi di sopravvivenza Debian'. Felice aggiornamento! ------------------------------------------------------------------------------- 2. Nozioni fondamentali della Debian ------------------------------------ Questo capitolo fornisce le informazioni fondamentali sul sistema debian per i non-sviluppatori. Per avere informazioni più autorevoli, vedere: * Debian Policy Manual * Debian Developer's Reference * Debian New Maintainers' Guide reperibili sotto Sezione 15.1, `Riferimenti'. Se state cercando una qualsiasi risposta che li riguarda senza, però, tutti i loro dettagli,andate direttamente a Capitolo 6, `Gestione dei pacchetti in Debian' o ad altri capitoli. Questo capitolo è formato da documenti presi dalla "Debian FAQ", e profondamente riorganizzati, per permettere ad un qualsiasi amministratore di un sistema Debian di avere un solido punto di partenza. 2.1. Gli archivi Debian ----------------------- 2.1.1. Struttura della directory -------------------------------- Il software impacchettato per la debian, è disponibile in una delle numerose directory su ciascun Mirror Debian (http://www.debian.org/mirror/) raggiungibili tramite FTP o HTTP. Queste sono le directory presenti su ciascun mirror, sotto la directory `/debian/': `/dists/': Contiene le "distribuzioni" ed era il luogo canonico di accesso dei pacchetti disponibili nelle versioni rilasciate e pre-rilascio. Alcuni vecchi pacchetti, i files `Contents-*.gz', ed i files `Packages.gz' sono ancora qui. `pool/': Nuova locazione, che contiene fisicamente tutti i pacchetti, sia quelli della versione rilasciata, che quelli pre-rilascio. `tools/': Utilità DOS per creare dischetti boot, partizionare il disco rigido, comprimere/decomprimere i file e lanciare Linux. `doc/': La documentazione base, come le FAQ, le istruzioni per la notifica dei bachi, ecc. `indices/': I file dei Manutentori, ed i file override. `project/': In gran parte materiale solo per sviluppatori, tipo: `project/experimental/': Pacchetti e strumenti ancora in via di sviluppo, in fase alfa. I normali utenti non dovrebbero utilizzare i pacchetti qui contenuti, che possono essere pericolosi persino per i più esperti. `project/orphaned/': Pacchetti lasciati dai loro vecchi manutentori e tolti dalla distribuzione. 2.1.2. Le distribuzioni Debian ------------------------------ Di norma sono tre le distribuzioni contenute nella directory `dists'. Sono definite come la distribuzione `stable', la `testing' e la `unstable'. Talvolta se ne aggiunge una quarta, la `frozen'. Ogni distribuzione viene definita con un collegamento simbolico alla directory reale, tramite un nome proprio nella directory `dists'. 2.1.3. La distribuzione `stable' -------------------------------- Le voci dei pacchetti per la distribuzione `stable', Debian Etch (4.0), vengono inserite nella directory `stable' (collegamento simbolico a `etch/'): * `stable/main/': Contiene i pacchetti che costituiscono formalmente il rilascio più recente del sistema Debian. Tutti i pacchetti sono totalmente complianti con le Linee guida Debian per il Software Libero (http://www.debian.org/social_contract#guidelines) (DFSG) (disponibile anche come `file:///usr/share/doc/debian/social-contract.txt' installato da `debian-doc'). * `stable/non-free/': Contiene i pacchetti la cui distribuzione è in qualche modo limitata, tale da richiedere ai distributori delle cautele dovute ai loro requisiti specifici di copyright. Per esempio alcuni pacchetti hanno licenze che ne vietano la distribuzione commerciale. Altri possono essere ridistribuiti, ma sono degli shareware. * `stable/contrib/': Contiene i pacchetti che sono di per sè DFSG-free e DFSG-liberi, ma dipendono in qualche modo da un pacchetto che _non è_ DFSG-libero. Ora, in aggiunta alle locazioni sopra descritte, i nuovi pacchetti sono fisicamente localizzati nella directory `pool' (Sezione 2.1.10, `La directory `pool''). Lo stato attuale dei bachi della distribuzione `stable' è riportato in sulla pagina Web Problemi di Stable (http://ftp-master.debian.org/testing/stable_probs.html). 2.1.4. La distribuzione `testing' --------------------------------- Le voci dei pacchetti per la distribuzione `testing', Debian Lenny, sono registrate nella directory `testing' (collegamento simbolico a `lenny') dopo aver subito un periodo di prova in `unstable'. Ora, in aggiunta alle locazioni sopra descritte, i nuovi pacchetti sono fisicamente localizzati nella directory `pool' (Sezione 2.1.10, `La directory `pool''). La directory `testing' ha delle sottodirectory, `main', `contrib' e `non-free', che hanno le stesse funzioni che in `stable'. I pacchetti devono essere sincronizzati in tutte le architetture per le quali sono stati compilati e non devono mostrare dipendenze tali da renderli non installabili; devono inoltre avere meno bachi release-critical delle versioni in `unstable'. In questo modo si auspica che `testing' sia sempre molto vicina ad essere candidata al rilascio. Per maggiori dettagli sul meccanismo che regola la distribuzione vedere http://www.debian.org/devel/testing. Lo stato aggiornato della distribuzione `testing' è riportato presso: * update excuses (http://ftp-master.debian.org/testing/update_excuses.html) * testing problems (http://ftp-master.debian.org/testing/testing_probs.html) * bug release-critical (http://bugs.debian.org/release-critical/) * bug del base system (http://bugs.qa.debian.org/cgi-bin/base.cgi) * bug nei pacchetti standard e dei task (http://bugs.qa.debian.org/cgi-bin/standard.cgi) * altri bug e note sul bug squashing party (http://bugs.qa.debian.org/) 2.1.5. La distribuzione `unstable' ---------------------------------- Le voci dei pacchetti della distribuzione `unstable', sempre con nome in codice "Sid", sono registrate nella directory `unstable' (collegamento simbolico a `sid/') dopo essere state caricate nell'archivio Debian, rimanendovi finchè non vengono spostate in `testing'. I nuovi pacchetti sono fisicamente localizzati nella directory `pool' (Sezione 2.1.10, `La directory `pool''). La directory `unstable' ha delle sottodirectory, `main', `contrib' e `non-free', che hanno le stesse funzioni che in `stable'. La distribuzione `unstable' contiene le immagini più recenti del sistema in fase di sviluppo. Gli utenti possono liberamente usare e testare questi pacchetti, ma vengono avvisati del loro precario stato di preparazione. Il vantaggio di usare `unstable' è quello di essere sempre al massimo dell'aggiornamento del progetto Debian relativo al software---siate però pronti a raccogliere i pezzi se qualcosa va storto. Lo stato aggiornato della distribuzione `unstable' è riportato presso la pagina Web Unstable Problems (http://ftp-master.debian.org/testing/unstable_probs.html). 2.1.6. La distribuzione `frozen' -------------------------------- Una volta che la distribuzione testing è sufficientemente matura, diventa frozen; ciò significa che nessun nuovo codice viene più accettato, solo eliminazioni di bachi, se necessari. In aggiunta un nuovo albero testing viene creato nella directory `dists', con un nuovo nome. La distribuzione frozen passa attraverso un ciclo di test (chiamato appunto "test cycles") di qualche mese caratterizzato da aggiornamenti intermittenti ed importanti stabilizzazioni. Viene tenuto un registro dei bug della distribuzione frozen che possono impedire il rilascio di un pacchetto o di tutta la distribuzione. Una volta che il conteggio dei bug scende al di sotto di una valore massimo prestabilito, la distribuzione frozen diventa `stable' e viene rilasciata. La precedente distribuzione stable diventa obsoleta (e finisce in archivio). 2.1.7. Codice dei nomi della distribuzioni Debian ------------------------------------------------- I nomi delle directory localizzate fisicamente nella directory `dists', come `etch' e `lenny', sono semplicemente dei nomi in codice. Quando una distribuzione Debian è nella fase di sviluppo le viene assegnato un nome in codice e non un numero di versione. Lo scopo di questi nomi è di rendere il mirroring delle distribuzioni Debian più semplice (se, ad esempio, una directory reale come `unstable' cambiasse improvvisamente di nome in `stable', una gran quantità di programmi dovrebbe essere nuovamente scaricata senza motivo). Attualmente `stable' è un collegamento simbolico a `etch' e `testing' è un collegamento simbolico a `lenny'. Ciò significa che `Etch' è la distribuzione attualmente stable e `Lenny' è l'attuale testing. `unstable' è un collegamento simbolico permanente a `sid', dato che Sid è sempre la distribuzione unstable. 2.1.8. Nomi in codice usati in passato -------------------------------------- I nomi in codice che sono già stati utilizzati sono: "Buzz" per la release 1.1, "Rex" per la 1.2, "Bo" per la 1.3.x, "Hamm" per la 2.0, "Slink" per la 2.1, "Potato" per la 2.2, "Woody" per la 3.0 e "Sarge" per la 3.1. 2.1.9. Da dove vengono i nomi delle distribuzioni? -------------------------------------------------- Finora sono stati presi dai nomi dei personaggi del film _Toy Story_ della Pixar. * _Buzz_ (Buzz Lightyear) era l'astronauta, * _Rex_ era il tirannosauro, * _Bo_ (Bo Peep) era la bambina che si prese cura della pecorella, * _Hamm_ era il porcellino salvadanaio, * _Slink_ (Slinky Dog) era il cane giocattolo, * _Potato_ era, ovviamente, Mr. Potato, * _Woody_ era il cowboy. * _Sarge_ era il "leader of The Green Plastic Army Men". * _Etch_ (Etch-a-Sketch) era la lavagna. * _Sid_ era il bambino della porta accanto che rompeva i giocattoli. 2.1.10. La directory `pool' --------------------------- Storicamente i pacchetti erano contenuti nella subdirectory di `dists' corrispondente alla distribuzione di cui facevano parte. Questo portò a vari problemi, tipo un grosso consumo di banda di connessione dei mirror ogni volta che venivano fatti dei cambiamenti di grossa entità. Ora i pacchetti vengono tenuti in una grossa "vasca" (pool), strutturata in accordo con il nome del pacchetto sorgente. Per rendere il tutto maneggevole, la vasca è suddivisa in sezioni (`main', `contrib' e `non-free') e per la prima lettera del nome del pacchetto sorgente. Queste directory contengono svariati file: binari per ciascuna architettura ed i pacchetti sorgente da cui i pacchetti binari sono stati generati. E' possibile sapere dove ciascun pacchetto è situato eseguendo un comando tipo: `apt-cache showsrc ' ed andando a leggere la riga "Directory:". Per esempio, i pacchetti `apache' sono immagazzinati in `pool/main/a/apache/'. Essendo molteplici, i pacchetti `lib*' vengono trattati in maniera particolare: per esempio, i pacchetti `libpaper' sono immagazzinati in `pool/main/libp/libpaper/'. Le directory `dists' vengono ancora utilizzate per i file indice usati da programmi tipo `apt'. Inoltre, al momento attuale le vecchie distribuzioni non sono state convertite ad usare le vasche, per cui si troveranno i percorsi contenenti distribuzioni tipo `potato' o `woody' nel campo "Filename" dell'intestazione. Di norma non avete da preoccuparvi di ciò, poichè il nuovo `apt' e probabilmente il vecchio `dpkg-ftp' sono in grado di gestire la cosa senza problemi. Se volete maggiori informazioni, andate a vedere RFC: implementazione dei pool dei pacchetti (http://lists.debian.org/debian-devel-announce/2000/debian-devel-announce-200010/msg00007.html). 2.1.11. Alcune note storiche su Sid ----------------------------------- Quando il Sid attuale non esisteva, l'organizzazione dell'archivio Debian aveva un problema principale: l'assunto che quando un'architettura veniva creata nell'attuale `unstable', sarebbe stata rilasciata quando la distribuzione diventava la nuova `stable'. Però per molte architetture questo non era il caso, con il risultato che quelle directory dovevano essere mosse al momento del rilascio. Fatto poco pratico, poichè lo spostamento avrebbe fagocitato grosse quantità di banda. Gli amministratori dell'archivio hanno evitato questo problema per pacchetti anni piazzando i binari delle architetture ancora non rilasciate in una directory speciale chiamata `sid'. Al momento del loro rilascio esisteva un collegamento dall'architettura a quel momento `stable' a `sid' e da quel momento in poi essa veniva creata all'interno dell'albero `unstable', come di norma. Tutto ciò era motivo di confusione per gli utenti. Con l'avvento della vasca dei pacchetti (vedere Sezione 2.1.10, `La directory `pool'') durante lo sviluppo della distribuzione Woody i pacchetti binari cominciarono ad essere immagazzinati in una locazione canonica nella vasca, indipendentemente dalla distribuzione; in tal modo il rilascio di una distribuzione non determina più la grossa dispersione di banda sui mirror (c'è, ovviamente, un notevole consumo, ma graduale, di banda durante la fase di sviluppo). 2.1.12. Pacchetti caricati in `incoming' ---------------------------------------- I pacchetti che vengono caricati nell'archivio vengono dapprima immagazzinati in http://incoming.debian.org/ prima di accertarsi che provengano realmente da uno sviluppatore Debian (e vengono piazzati nella sottodirectory `DELAYED' in caso di Non-Maintainer Upload (NMU)). Una volta al giorno, vengono mossi da `incoming' ad `unstable'. In caso di emergenza, potreste voler installare i pacchetti da qui, prima che raggiungano `unstable'. 2.1.13. Recuperare un vecchio pacchetto --------------------------------------- Mentre le distribuzioni Debian più recenti vengono tenute nella directory `debian' su ciascun Mirror Debian (http://www.debian.org/mirror/), gli archivi per le distribuzioni più vecchie, tipo Scollegamento , sono tenuti su http://archive.debian.org/ o sotto la directory `debian-archive' di ciascun mirror Debian. I vecchi pacchetti `testing' ed `unstable' sono localizzati in http://snapshot.debian.net/. 2.1.14. Sezioni per architettura -------------------------------- All'interno di ciascun albero directory principale (`dists/stable/main', `dists/stable/contrib', `dists/stable/non-free' `dists/unstable/main', etc.), le voci dei pacchetti binari risiedono all'interno di sottodirectory i cui nomi indicano l'architettura per la quale sono stati compilati. * `binary-all/', per pacchetti architettura-indipendenti. Comprendono, per esempio, scripts Perl o pura documentazione. * `binary-/', per pacchetti che girano su una particolare piattaforma. Ricordate che i reali pacchetti binari per `testing' ed `unstable' non risiedono più in queste directory, ma al livello principale della directory `pool'. I file elenco (`Packages' e `Packages.gz') sono stati comunque mantenuti, per compatibilità con il vecchio sistema. Per sapere quali architetture sono al momento supportate, leggetevi le Note di Rilascio per ciascuna distribuzione. Possono essere trovate presso i siti delle Note di Rilascio per stable (http://www.debian.org/releases/stable/releasenotes) e testing (http://www.debian.org/releases/testing/releasenotes). 2.1.15. Il codice sorgente -------------------------- Il codice sorgente è disponibile per ogni cosa contenuta nel sistema Debian. In più, i termini di licenza della maggior parte dei programmi _richiedono_ che il codice venga distribuito insieme ai programmi, o che un'offerta di fornire il codice li accompagni. Di regola il codice viene reperito nelle directory `source', che sono in parallelo a tutte le directory dei binari architettura-specifiche, o più di recente alla directory `pool' (vedere Sezione 2.1.10, `La directory `pool''). Per scaricare il codice sorgente senza la necessità di essere addentro alla struttura dell'archivio Debian, provate un comando tipo `apt-get source '. Alcuni pacchetti, in particolare `pine', sono disponibili solamente come sorgenti, a causa delle limitazioni delle licenze. (Recentemente è stato fornito il pacchetto `pine-tracker' per facilitare l'installazione di Pine). Le procedure descritte in Sezione 6.4.10, `Portare un pacchetto nel sistema `stable'' e Sezione 13.10, `Creare pacchetti debian' dovrebbero fornire tutto il necessario per compilare un pacchetto manualmente. Il codice sorgente potrebbe non essere disponibile, invece, per i pacchetti delle directory `contrib' e `non-free', che formalmente non fanno parte del sistema Debian. 2.2. Il sistema di gestione dei pacchetti Debian ------------------------------------------------ 2.2.1. Panoramica dei pacchetti Debian -------------------------------------- Normalmente i pacchetti contengono tutti i file necessari all'implementazione di una serie di comandi o di funzionalità. Esistono due tipi di pacchetti: * _Pacchetti binari_, che contengono eseguibili, file di configurazione, pagine man/info, informazioni sul copyright ed altra documentazione. Questi pacchetti vengono distribuiti in un formato specifico alla Debian (vedere Sezione 2.2.2, `Il formato dei pacchetti Debian'); si riconoscono per il suffisso `.deb'. Questi pacchetti possono essere "spacchettati" usando l'utilità tutta Debian `dpkg'; i dettagli si possono vedere alla pagina di manuale corrispondente. * _Pacchetti sorgente_, che consistono in un file `.dsc' che descrive il pacchetto sorgente (inclusi in nomi dei file seguenti), un file `.orig.tar.gz' che contiene i sorgenti originali non modificati in formato tar gzip ed in genere un file `.diff.gz' che contiene le modifiche specifiche per Debian ai sorgenti originali. L'utilità `dpkg-source' impacchetta e spacchetta questo tipo di pacchetti. Per i dettagli, ovviamente, la pagina man corrispondente. L'installazione del software attraverso il sistema dei pacchetti utilizza delle "dipendenze", che sono state dichiarate dal responsabile (manutentore) del pacchetto. Le dipendenze vengono descritte nel file `control', associato a ciascun pacchetto. Ad esempio, il pacchetto contenente il compilatore GNU C (`gcc') "dipende" dal pacchetto `binutils' che include il collegamento e l'assembler. Se si prova ad installare `gcc' senza aver prima installato `binutils', il sistema di gestione dei pacchetti (dpkg) invierà un messaggio di errore riguardo alla necessità di avere anche `binutils' e bloccherà l'installazione di `gcc'. (Questo comportamento può comunque essere scavalcato dall'utente tenace, vedere al riguardo dpkg(8).) Per dettagli aggiuntivi, vedere più sotto in Sezione 2.2.8, `Dipendenze dei pacchetti'. Gli strumenti Debian per la gestione dei pacchetti possono essere usati per: * manipolare e gestire i pacchetti o parte di essi, * aiutare l'utente nella frammentazione dei pacchetti che devono essere trasmessi con un mezzo di limitate capacità come un floppy, * aiutare gli sviluppatori nella costruzione degli archivi dei pacchetti e * aiutare gli utenti nell'installazione dei pacchetti residenti in un archivio remoto Debian. 2.2.2. Il formato dei pacchetti Debian -------------------------------------- Un "pacchetto" Debian, od un file dell'archivio Debian contiene gli eseguibili,le librerie e tutta la documentazione associata ad un gruppo o suite di programmi correlati. I file dell'archivio Debian, di norma, hanno il suffisso `.deb'. [1] I dettagli dei pacchetti binari Debian sono descritti nella pagina di manuale deb(5). Il loro formato interno è soggetto a cambiamenti (tra una versione maggiore e l'altra di Debian), per cui leggete sempre dpkg-deb(1) prima di manipolare i`.deb' file. Almeno fino a Sarge, gli archivi Debian sono sempre stati manipolabili anche dai normali comandi Unix, tipo `ar' e `tar', anche quando i comandi `dpkg' non erano disponibili. [1] Il progetto `debian-installer' ha introdotto dei pacchetti i cui nomi finiscono in `.udeb'. In breve, è un formato micro-`.deb' che non necessita di seguire alla lettera le linee guida Debian, manca di alcune parti, tipo la documentazione ed è pensato per essere utlizzato solo dal `debian-installer', il nuovo programma di installazione Debian, sviluppato per il rilascio di Sarge. I due formati, `.deb' e `.udeb' sono uguali. Il programma `udpkg', usato per gestire i pacchetti `.udeb', ha limitate capacità rispetto a `dpkg' e supporta minori relazioni fra i pacchetti. La differenza di nomi sta nel fatto che i manutentori dell'archivio Debian non erano contenti di avere dei `.deb' che non seguissero le regole, per cui venne scelto un nome diverso per accentuare questa diversità e per rendere meno probabile l'installazione accidentale su sistemi reali. Gli `.udeb' vengono usati in un ramdisk iniziale durante l'installazione di base, solo per creare un sistema Debian molto ristretto. 2.2.3. Convenzioni nei nomi dei pacchetti Debian ------------------------------------------------ Il nome di un pacchetto Debian segue la convenzione seguente: _-_.deb Dove in genere sta per il nome del pacchetto. è la versione del programma originale, è il numero di revisione Debian e è l'architettura per la quale il pacchetto è stato compilato. I file vengono facilmente rinominati, naturalmente. Potete scoprire quale pacchetto è realmente contenuto in un dato file di none dando il comando seguente: dpkg --info Il numero di revisione Debian viene specificato dallo sviluppatore Debian o da chiunque compili il pacchetto. Un cambio nel numero di revisione in genere indica che qualche aspetto nel pacchetto è cambiato. 2.2.4. Mantenimento della configurazione locale ----------------------------------------------- I file che sono considerati modificabili dall'amministratore locale si trovano in `/etc'. Le linee guida Debian prescrivono che tutte le modifiche ai file localmente configurabili vengano mantenute attraverso gli aggiornamenti dei pacchetti. Se una versione predefinita di un file localmente configurabile viene fornita con il pacchetto stesso, allora il file viene etichettato come un "conffile". Il sistema di gestione dei pacchetti non aggiorna i conffile che sono stati modificati dall'amministratore dopo l'ultima installazione del dato pacchetto senza prima aver chiesto il permesso dell'amministratore stesso. D'altro canto, se il conffile non è stato modificato, allora verrà aggiornato insieme al resto del pacchetto. Ciò è sempre auspicabile, così è vantaggiorso minimizzare le modifiche ai conffile. Per elencare i conffile appartenenti ad un dato pacchetto, lanciare: dpkg --status L'elenco segue la riga "Confflies". Per maggiori informazioni sui conffile potete leggere la sezione del Debian Policy Manual intitolata "Configuration files" (Vedere Sezione 15.1, `Riferimenti'). 2.2.5. Script di gestione Debian -------------------------------- Gli script di gestione Debian sono degli script eseguibili che vengono lanciati automaticamente prima o dopo l'installazione di un pacchetto. Insieme ad un file chiamato `control', tutti questi file fanno parte della sezione "control" di un file Debian. I singoli file sono: preinst Questo script viene eseguito prima che il pacchetto venga estratto dal file Debian (`.deb'). Molti script "preinst" interrompono i servizi per i pacchetti che devono essere aggiornati fino a che la loro installazione o aggiornamento non sono completati (a seguire dell'esecuzione con successo dello script "postinst"). postinst Questo script tipicamente completa ogni configurazione richiesta da un pacchetto dopo che è stato estratto dal suo file Debian (`.deb'). Spesso gli script "postinst" richiedono all'utente determinate azioni e/o lo avvertono che, qualora accettasse le impostazioni di base, deve ricordarsi di riconfigurare il pacchetto se la situazione lo richiede. Molti script "postinst", poi, eseguono tutti i comandi necessari a lanciare o far ripartire i servizi, dopo che il pacchetto è stato aggiornato o installato. prerm Questo script ferma tutti i demoni associati con un pacchetto. Viene eseguito prima della rimozione di file associati ad un determinato pacchetto. postrm Modifica i collegamenti od altri file correlati ad un pacchetto e/o rimuove i files creati da esso.(Vedere anche Sezione 2.2.7, `Pacchetti Virtuali'.) Tutti i file di controllo possono essere localizzati nella directory `/var/lib/dpkg/info'. I file correlati con il pacchetto `foo' iniziano, appunto, con il nome "foo" ed hanno le estensioni "preinst", "postinst", ecc. a seconda della funzione. Il file `foo.list' nella stessa directory elenca tutti i file installati con il pacchetto `foo'. (Notate che la localizzazione di questi file è interna a dpkg e può essere soggetta a modifiche.) 2.2.6. Priorità dei pacchetti ----------------------------- Ad ogni pacchetto viene assegnata una _priorità_ dai responsabili della distribuzione, come aiuto al sistema di gestione dei pacchetti. Le priorità sono: * _Richiesto_ (Required): pacchetti necessari al corretto funzionamento del sistema. Comprende tutti gli strumenti necessari alla riparazione di difetti di sistema. Questi pacchetti non devono essere rimossi, pena la completa inutilizzabilità del sistema, probabilmente nemmeno con `dpkg' si riuscirebbe a mettere le cose a posto. I sistemi con solo i pacchetti Richiesti probabilmente sarebbero inutilizzabili, ma hanno abbastanza funzionalità per permettere all'amministratore di sistema di fare un boot ed installare altri programmi. * _Importante_ (Important): pacchetti che si ritrovano probabilmente su qualsiasi sistema Unix o correlato. Altri pacchetti necessari ad un corretto funzionamento del sistema, senza i quali non sarebbe utilizzabile. Tra questi _non_ sono inclusi Emacs o X11 o TeX o qualsiasi altra grossa applicazione. Qui si parla di pacchetti che costituiscono l'infrastruttura di base. * _Standard_: pacchetti comuni su qualsiasi sistema Linux, compreso un sistema ragionevolmente piccolo ma nemmeno troppo limitato all'interfaccia a carattere. Questo è ciò che viene installato di base se l'utente non seleziona altro. Non include grosse applicazioni, però include Emacs (più un pezzo di infrastruttura che un'applicazione) ed un ragionevole sottogruppo di TeX e LaTeX (se è possibile senza X). * _Opzionale_ (Optional): pacchetti che comprendono tutto quello di cui potete aver voglia di installare senza nemmeno sapere che cosa è, o se non avete delle necessità particolari. Comprende X11, una distribuzione completa di TeX e molte applicazioni. * _Extra_: pacchetti che o entrano in conflitto con altri di priorità più alta, probabilmente utili se già sapete a che servono, oppure hanno requisiti speciali che li rendono non consoni come "Opzionali". Notate le differenze fra "Priority: required", "Section: base" ed "Essential: yes" nella descrizione dei pacchetti. "Section: base" significa che il pacchetto viene installato prima tutti su un nuovo sistema. Molti dei pacchetti in "Section: base" hanno "Priority: required" o almenot "Priority: important" e molti di loro sono etichettati con "Essential: yes". "Essential: yes" significa che il pacchetto richiede di specificare un'ulteriore opzione force al sistema di gestione dei pacchetti, tipo `dpkg' quando viene rimosso dal sistema. Per esempio, `libc6', `mawk' e `makedev' sono "Priority: required" and "Section: base" ma non "Essential: yes". 2.2.7. Pacchetti Virtuali ------------------------- Il termine pacchetto virtuale è un termine generico che si applica a tutti i pacchetti di un gruppo che provvede alla medesima funzione. Per esempio, i programmi `tin' e `trn' sono entrambi dei newsreader, in grado di soddisfare qualsiasi dipendenza di un programma che richieda un newsreader su un sistema, al fine di funzionare correttamente. Entrambi, quindi, si dice che provvedano il "pacchetto virtuale" definito `news-reader'. Allo stesso modo `exim' `exim4', `sendmail' e `postfix' forniscono la funzionalità di un agente di trasporto posta (mail transport agent). Perciò, provvedono al pacchetto virtuale `mail transport agent'. Se uno di loro è installato, qualsiasi programma che dipenda dall'installazione di un agente di trasporto posta vedrà le proprie dipendenze soddisfatte dall'esistenza di questo pacchetto virtuale. La Debian ha un meccanismo tale che, se più di un pacchetto che fornisce lo stesso pacchetto virtuale è installato, l'amministratore di sistema è in grado di sceglierne uno come pacchetto preferito. Il comando che viene chiamato in causa è`update-alternatives' e verrà descritto in dettaglio oltre, in Sezione 6.5.3, `Comandi alternativi'. 2.2.8. Dipendenze dei pacchetti ------------------------------- Il sistema dei pacchetti Debian ha una serie di dipendenze che sono utilizzate per esprimere il fatto che un pacchetto, per funzionare, o per funzionare meglio, ha bisogno dell'installazione di un altro pacchetto: * Il Pacchetto A _Dipende_ dal Pacchetto B se B deve essere assolutamente installato per eseguire A. In alcuni casi, esso noN dipende solo da B, ma da una sua specifica versione. In tal caso la dipendenza dalla versione rappresenta un limite inferiore, nel senso che A dipende da qualsiasi versione di B più recente di quella specificata. * Il Pacchetto A _Raccomanda_ il B, se il responsabile del pacchetto giudica che la maggior parte degli utenti non vorrebbe A senza le funzioni fornite anche da B. * Il Pacchetto A _Suggerisce_ B se B contiene file correlati e che migliorano le funzioni di A. La stessa relazione si esprime dichiarando che il Pacchetto B _Migliora_ il Pacchetto B. * Il Pacchetto A _è in Conflitto_ con B quando A non è in grado di funzionare se B è installato nel sistema. Spesso "è in conflitto" è combinato con "Sostituisce". * Il Pacchetto A _Sostituisce_ B quando i file installati da B vengono rimossi o sovrascritti da quelli in A. * Il Pacchetto A _Fornisce_ B quando tutti i file e le funzioni di B vengono incorporate da A. Informazioni più dettagliate possono essere trovate nel _Packaging Manual_ e nel _Policy Manual_. Notate che `dselect' ha un controllo molto più raffinato sui pacchetti contrassegnati da _Raccomanda_ e _Suggerisce_ rispetto ad `apt-get', che prende semplicemente tutti i pacchetti specificati da _Dipende_ e lascia quelli indicati da _Raccomanda_ e _Suggerisce_. Entrambi i programmi nelle forme più moderne utilizzano come back-end APT. 2.2.9. Cosa significa "Pre-Depends" ----------------------------------- `dpkg' conigura sempre un pacchetto da cui ne Dipende un altro prima di configurare quast'ultimo. Tuttavia, `dpkg' in genere spacchetterà il file seguendo un ordine arbitrario, indipendentemente dalle dipendenze. (Spacchettare il file vuol dire che estrarre i file e metterli al posto giusto). Se, però un pacchetto _Pre-Dipende_ da un altro, allora quast'ultimo veràà spacchettato e configurato prima che quello che ne Pre-Dipende sia anche solo spacchettato. [1] L'uso di questo tipo di dipendenza è ridotto al minimo. [1] Questo meccanismo è stato previsto per supportare un aggiornamento sicuro di sistemi dal formato `a.out' al formato `ELF', dove _l'ordine_ in cui i pacchetti venivano estratti risultava critico. 2.2.10. Lo stato dei pacchetti ------------------------------ Lo stato di un pacchetto può essere "sconosciuto", "installa", "rimuovi", "elimina" o "mantieni". Queste etichette "voglio", indicano il volere dell'utente riguardo ad un pacchetto (come indicato dalle azioni dell'utente nella sezione "Scegli" di `dselect' o dal richiamo diretto dell'utente di `dpkg'). Il loro significato è il seguente: * _sconosciuto_ - l'utente non ha mai indicato se vuole il pacchetto * _installa_ - l'utente vuole il pacchetto installato od aggiornato * _rimuovi_ - l'utente vuole che il pacchetto sia rimosso, ma non i suoi file di configurazione. * _elimina_ - l'utente vuole il pacchetto completamente rimosso, compresi i file di configurazione. * _mantieni_ - l'utente non vuole che il pacchetto sia processato, ovvero vuole mantenere la versione attuale con lo stato corrente, qualunque essa sia. 2.2.11. Evitare l'aggiornamento dei pacchetti --------------------------------------------- Esistono due modi per evitare l'aggiornamento di un pacchetto, tramite `dpkg' o, da Woody in poi, tramite APT. Con `dpkg', dovete solo esportare la lista dei pacchetti selezionati con: dpkg --get-selections > Dopodichè modificate il file risultante `', cambiando la riga che contiene il pacchetto da mantenere, tipo `libc6', da: libc6 install a: libc6 hold Salvate il file e ricaricatelo nel database di `dpkg' con: dpkg --set-selections < Se conoscete il nome del pacchetto da mantenere, basta eseguire: echo libc6 hold | dpkg --set-selections Questo processo evita l'aggiornamento dei pacchetti al momento dell'installazione di ciascun file. Lo stesso risultato si ottiene tramite `dselect'. Basta accedere alla schermata [S]cegli, trovare il pacchetto da mantenere nello stato attuale e premere il tasto `=' (o `H'). I cambiamenti saranno effettivi non appena lasciata la schermata [S]cegli. Il sistema APT nella nuova distribuzione Woody ha un meccanismo alternativo per mantenere i pacchetti durante il processo di raccolta di un archivio, utilizzando la `Pin-Priority'. Vedere la pagina di manuale apt_preferences(5), l'http://www.debian.org/doc/manuals/apt-howto/ o il pacchetto `apt-howto'. 2.2.12. Pacchetti sorgente -------------------------- I pacchetti sorgente vengono distribuiti in una directory chiamata `source' e possono essere scaricati o manualmente, oppure tramite il comando apt-get source (vedere apt-get(8) la pagina man su come impostare APT all'uopo). 2.2.13. Compilare pacchetti binari dai sorgenti ----------------------------------------------- Per un dato pacchetto `' avete bisogno di tutti i `.dsc', `.tar.gz' e `.gz' (nota bene: non esiste nessun `.diff.gz' per un pacchetto Debian nativo). Una volta presi, se avete installato il pacchetto `dpkg-dev' il seguente comando: $ dpkg-source -x .dsc estrarrà il pacchetto in una directory denominata `'. Date i seguenti comandi per compilare il pacchetto binario: $ cd foo-versione $ su -c "apt-get update ; apt-get install fakeroot" $ dpkg-buildpackage -rfakeroot -us -uc poi # su -c "dpkg -i ../.deb" per installarlo. Vedere Sezione 6.4.10, `Portare un pacchetto nel sistema `stable''. 2.2.14. Creare nuovi pacchetti Debian ------------------------------------- Per maggiori dettagli al riguardo, leggete la _New Maintainers' Guide_, reperibile nel pacchetto `maint-guide' oppure presso http://www.debian.org/doc/manuals/maint-guide/. 2.3. Aggiornare un sistema Debian --------------------------------- Uno degli scopi della Debian è di fornire un sentiero solido di ed un processo sicuro di aggiornamento. Il sistema di gestione dei pacchetti avverete l'amministratore delle modifiche importanti e talvolta gli chiede di prendere delle decisioni. Dovreste leggere anche le Note di Rilascio; vengono fornite con tutti i CD Debian e sono disponibili sul WWW presso http://www.debian.org/releases/stable/releasenotes oppure http://www.debian.org/releases/testing/releasenotes. Una guida pratica viene fornita in Capitolo 6, `Gestione dei pacchetti in Debian'. Questa sezione fornisce una panoramica generale, cominciando con gli strumenti di gestione dei pacchetti. 2.3.1. `dpkg' ------------- E' il programma principale per la manipolazione dei pacchetti. Per ulteriori informazioni, leggere la pagina di manuale dpkg(8). `dpkg' è fornito con parecchi programmi supplementari di base. * `dpkg-deb': Manipola i files `.deb'. dpkg-deb(1) * `dpkg-ftp': Vecchio comando per il recupero dei pacchetti. dpkg-ftp(1) * `dpkg-mountable': Vecchio comando per il recupero dei pacchetti. dpkg-mountable(1) * `dpkg-split': Divide grossi pacchetti in files più piccoli. dpkg-split(1) `dpkg-ftp' e `dpkg-mountable' sono stati resi obsoleti dall'introduzione del sistema APT. 2.3.2. APT ---------- APT (Advanced Packaging Tool) è un'interfaccia avanzata per il sistema Debian di gestione dei pacchetti e consiste di vari programmi i cui nomi iniziano tipicamente con "apt-". `apt-get', `apt-cache' e `apt-cdrom' sono gli strumenti da riga di comando per maneggiare i pacchetti. Funzionano anche come programmi backend per l'utente di altri strumenti, come `dselect' ed `aptitude'. Per maggiori informazioni, installare `apt' e leggere apt-get(8), apt-cache(8), apt-cdrom(8), apt.conf(5), sources.list(5), apt_preferences(5) (Woody), e `/usr/share/doc/apt/guide.html/index.html'. Esistono fonti di informazione alternative, come APT HOWTO (http://www.debian.org/doc/manuals/apt-howto/). Può essere installato tramite `apt-howto' in `file:///usr/share/doc/Debian/apt-howto/'. `apt-get upgrade' e `apt-get dist-upgrade' prendono solo i pacchetti elencati sotto "Dipende", mentre lasciano quelli sotto "Raccomanda" e "Suggerisce". Per evitare ciò, usate `dselect'. 2.3.3. `dselect' ---------------- Questo programma rappresenta un'interfaccia utente basata su menu al sistema di gestione dei pacchetti. E' particolarmente utile per prime installazioni ed aggiornamenti su larga scala. Vedere Sezione 6.2.4, ``dselect''. Per ulteriori informazioni, installare `install-doc' e leggere `/usr/share/doc/install-doc/dselect-beginner.en.html' oppure Documentazione per dselect per Principianti (http://www.debian.org/releases/woody/i386/dselect-beginner). 2.3.4. Aggiornare un sistema in funzione ---------------------------------------- Il kernel (filesystem) in Debian supporta la sostituzione dei file anche mentre sono in uso. Quando i pacchetti vengono aggiornati, tutti i servizi forniti da essi vengono riavviati se sono configurati per girare nel runlevel corrente. Il sistema Debian non ha bisogno della modalità singolo utente per aggiornare un sistema in funzione. 2.3.5. File `.deb' scaricati e tenuti in cache ---------------------------------------------- Se avete scaricato i pacchetti nel vostro disco rigido (cosa assolutamente non necessaria, vedere sopra per la descrizione di `dpkg-ftp' o di APT), dopo l'installazione dei pacchetti potete rimuoverli dal vostro sistema. Se si usa APT, i file vengono tenuti nella directory `/var/cache/apt/archives'. Potete cancellarli dopo l'installazione (`apt-get clean'), oppure copiarli sulla stessa directory `/var/cache/apt/archives' di un'altra macchina, per evitare un nuovo download durante la successiva installazione. 2.3.6. Tenere una registrazione dell'aggiornamento -------------------------------------------------- `dpkg' mantiene una registrazione dei pacchetti scompattati, configurati, rimossi e/o eliminati, ma (al momento) non tiene nessuna registrazione dell'attività scritta su terminale durante tali manipolazioni. Il metodo più semplice per aggirare questo impedimento è di lanciare una qualsiasi sessione di `dpkg', `dselect' `apt-get', ecc. all'interno del programma script(1). 2.4. La sequenza di boot della Debian ------------------------------------- 2.4.1. Il programma `init' -------------------------- Come ogni buon appartenente alla famiglia degli Unix, Debian esegue il boot eseguendo il programma `init'. Il file di configurazione di `init' (che è `/etc/inittab') specifica che il primo script da eseguire deve essere `/etc/init.d/rcS'. Quello che accade poi dipende se è installato il pacchetto `sysv-rc' oppure `file-rc'. Quanto segue assume che sia installato `sysv-rc'. (`file-rc' il proprio script `/etc/init.d/rcS' ed usa un file invece che collegamenti simbolici nelle directory rc per controllare quali servizi siano stati avviati ed in quali runlevel.) Il file `/etc/init.d/rcS' del pacchetto `sysv-rc' lancia tutti gli script in `/etc/rcS.d/' per eseguire l'inizializzazione, tipo controllo e montaggio dei filesystem, caricamento dei moduli, lancio dei servizi di rete, impostazione dell'orologio, e così via. Poi, per compatibilità, lancia tutti i file (tranne quelli con `.' nel filename) localizzati in `/etc/rc.boot/'. Quest'ultima è riservata all'amministratore di sistema, ed il suo utilizzo è deprecato. Vedere Sezione 9.1, `Inizializzazione del sistema' e System run levels and init.d scripts (http://www.debian.org/doc/debian-policy/ch-opersys#s-sysvinit) nel Debian Policy Manual per maggiori informazioni. Debian non usa una directory `rc.local' in stile BSD. 2.4.2. I Runlevel ----------------- Dopo il completamento del processo di boot, `init' lancia tutti i servizi configurati per girare nel runlevel predefinito. Questo è definito dalla riga per `id' in `/etc/inittab'. Debian arriva con `id=2'. Debian usa i seguenti runlevel: * 1 (modalità singolo utente), * 2 a 5 (varie modalità multiutente) e * 0 (arresta il sistema) * 6 (riavvia il sistema). I runlevel 7, 8, e 9 possono essere utilizzati, ma le loro directory rc non vengono popolate quando i pacchetti vengono installati. Scambiate i runlevel mediante il comando `telinit'. Quando si entra in un runlevel tutti gli script in `/etc/rc.d/' vengono eseguiti. La prima lettera del nome determina il _modo_ in cui lo script viene lanciato: quelli che iniziano con `K' vengono lanciati con l'argomento `stop'. Quelli che iniziano per `S' vengono lanciati con l'argomento `start'. Gli script vengono eseguiti in ordine alfabetico; per cui quelli "stop" vengono lanciati prima di quelli "start" e i numeri a due cifre che seguono `K' o `S' determinano l'ordine in cui venono eseguiti. Gli script in `/etc/rc.d' sono infatti semplici collegamenti simbolici agli script in `/etc/init.d/'. Essi accettano anche argomenti tipo "restart" e "force-reload"; questi ultimi metodi possono essere utilizzati dopo che un sistema è stato avviato per riavviare i servizi o forzarli a ricaricare i loro file di configurazione. Per esempio: # /etc/init.d/exim4 reload 2.4.3. Personalizzare i runlevel -------------------------------- La personalizzazione dei runlevel è un compito avanzato di amministrazione di sistema. Il suggerimento seguente vale per gran parte dei servizi. Per abilitare il servizio nel runlevel create il collegamento simbolico `/etc/rc.d/S' con obiettivo `../init.d/'. Il numero di sequenza dovrebbe essere quello che è stato assegnato al servizio quando il pacchetto è stato installato. Per disabilitare il servizio, rinominate il the collegamento simbolico in maniera che il nome inizi con `K' invece che con `S' ed il suo numero di sequenza sia 100 meno . E' conveniente usare un editor di runlevel, come `sysv-rc-conf' o `ksysv' per questi scopi. E' possibile cancellare il collegamento simbolico `S' ad un servizio in una data directory di un dato runlevel invece di rinominarlo. Ciò non disabilita il servizio, ma lo lascia in uno stato "fluttuante", finchè il sistema di inizio `sysv-rc' è interessato: al cambio di runlevel il servizio non sarà nè lanciato nè fermato, ma verrà lasciato così com'è, che stia girando o no. Notate comunque che un servizio lasciato in uno stato tale verrà lanciato se il pacchetto corrispondente verrà aggiornato, che girasse o meno prima dell'aggiornamento. Questo è un limite noto del sistema Debian attuale. Notate anche che dovreste mantenere i collegamenti simbolici `K' di un servizio nei runlevel 0 e 6. Se cancellate tutti i collegamenti simbolici di un servizio, allora durante un aggiornamento il pacchetto corrispodente ripristinerà tutti i collegamenti simbolici al loro stato predefinito iniziale. _Not_ è consigliabile modificare i collegamenti simbolici in `/etc/rcS.d/'. 2.5. Supportare le differenze ----------------------------- Debian offre parecchie opportunità per soddisfare le esigenze (e i desideri) degli amministratori di sistema, senza per questo renderlo inutilizzabile. * `dpkg-divert', vedere Sezione 6.5.1, `Il comando `dpkg-divert''. * `equivs', vedere Sezione 6.5.2, `Il pacchetto `equivs''. * `update-alternative', vedere Sezione 6.5.3, `Comandi alternativi'. * `make-kpkg' può accettare svariati boot loaders. Vedere make-kpkg(1) e Sezione 7.1.1, `Il metodo Debian standard'. Tutti i file in `/usr/local/' appartengono all'amministratore di sistema e Debian non li toccherà. Gran parte dei file in `/etc' sono `conffiles' e Debian non li sovrascriverà in caso di aggiornamento a meno che l'amministratore non lo richieda espressamente. 2.6. Internazionalizzazione --------------------------- Il sistema Debian è internazionalizzato e fornisce il supporto per la visualizzazione e la scrittura dei caratteri in molte lingue, sia da console che sotto X. Molti documenti, pagine di manuali e messaggi di sistema sono stati tradotti in numero sempre crescente di lingue. Durante l'installazione Debian chiede all'utente di scegliere la lingua di installazione (e talvolta una variante locale della stessa). Se il vostro sistema non supporta tutte le caratteristiche della lingua di cui avete bisogno, o se dovete cambiare la lingua od installare una diversa tastiera che supporti la vostra lingua, andate a leggere Sezione 9.7, `Localizzazione (l10n)'. 2.7. Debian ed il kernel ------------------------ Vedere Capitolo 7, `Il kernel Linux su Debian'. 2.7.1. Compilare un kernel da un sorgente non-Debian ---------------------------------------------------- Bisogna comprendere le linee guida Debian nei confronti degli header. Le librerie C Debian sono compilate con le versioni _stabili_ più recenti degli header del _kernel_. Ad esempio, le versione Debian-1.2 usava la versione 5.4.13 degli header. Questa pratica è in contrasto con i pacchetti sorgente del kernel distribuiti in tutti gli archivi Linux FTP, pacchetti che usano versioni persino più recenti degli header. Gli header distribuiti con i sorgenti del kernel sono localizzati in `/usr/include/linux/include/'. Se avete bisogno di compilare un programma con header più recenti di quelli di quelli forniti da `libc6-dev', quando compilate dovete aggiungere alla riga di comando `-I/usr/src/linux/include/'. Un problema del genere è uscito, per esempio, quando si è creato il pacchetto del demone automounter (`amd'). Quando i nuovi kernel cambiavano alcune istruzioni relative al NFS, `amd' aveva necessità di esserne al corrente. Ciò ha richiesto l'inclusione degli header più recenti. 2.7.2. Gli strumenti per compilare un kernel personalizzato. ------------------------------------------------------------ Gli utenti che desiderano (o devono) compilare un kernel personalizzato, sono incoraggiati a scaricare il pacchetto `kernel-package'. Il pacchetto contiene lo script per compilare il pacchetto del kernel e fornisce le capacità di creare un pacchetto Debian kernel-image, semplicemente dando il comando # make-kpkg kernel_image dalla directory principale del kernel sorgente. L'aiuto è disponibile dando il comando # make-kpkg --help o tramite la pagina di manuale make-kpkg(1) e Capitolo 7, `Il kernel Linux su Debian'. L'utente deve scaricarsi a parte il sorgente per il kernel, sia esso il più recente o quello di scelta, dall'archivio Linux preferito, a meno che un pacchetto kernel-source- non sia disponibile (dove sta per la versione del kernel). Lo script di boot Debian `initrd' richiede una speciale patch del kernel, chiamata `initrd'; vedere http://bugs.debian.org/149236. Le istruzioni dettagliate per usare il pacchetto `kernel-package' sono fornite nel file `/usr/share/doc/kernel-package/README.gz'. 2.7.3. Funzioni speciali per trattare con i moduli -------------------------------------------------- Il pacchetto Debian `modconf' fornisce uno script di shell (`/usr/sbin/modconf') che può essere utilizzato per personalizzare la configurazione dei moduli. Lo script presenta un'interfaccia a menu, chiedendo all'utente particolari circa i device drivers caricabili presenti sul proprio sistema. La risposte vengono utilizzate per personalizzare il file `/etc/modules.conf' (che elenca alias ed altri argomenti che devono essere utilizzati insieme ai vari moduli), tramite i file in `/etc/modutils/', e `/etc/modules' (che elencano i moduli che devono essere caricati al boot). Così come i (nuovi) file `Configure.help' ora disponibili per aiutare nella compilazione di kernel personalizzati, il pacchetto `modconf' arriva con tutta una serie di file di aiuto (in `/usr/share/modconf/') che forniscono informazioni dettagliate sugli argomenti appropriati da dare a ciascun modulo. Vedere Sezione 7.2, `Kernel 2.4 modulare' per gli esempi. 2.7.4. Disinstallare un vecchio pacchetto kernel ------------------------------------------------ Si, lo script `kernel-image-.prerm' controlla se il kernel attualmente in uso è lo stesso che state tentando di disinstallare. Perciò potete rimuovere pacchetti kernel che non volete più tramite il comando: # dpkg --purge --force-remove-essential kernel-image- (sostituite con la versione ed il numero di revisione del vostro kernel, naturalmente) ------------------------------------------------------------------------------- 3. Suggerimenti per l'installazione di un sistema Debian -------------------------------------------------------- La documentazione ufficiale sull'installazione di Debian è localizzata presso http://www.debian.org/releases/stable/ e http://www.debian.org/releases/stable/installmanual. Per le versioni in fase di sviluppo è localizzata presso http://www.debian.org/releases/testing/ e http://www.debian.org/releases/testing/installmanual (il lavoro è in corso, talvolta potrebbe non essere reperibile) Sebbene questo capitolo sia stato inizialmente scritto durante i giorni dell'installatore di Potato, gran parte del suo contenuto è stato aggiornato all'installatore di Woody ed essi sono molto simili. Siccome Sarge ne userà uno totalmente nuovo, usate il capitolo come punto di riferimento per quest'ultimo. Anche alcuni pacchetti chiave hanno cambiato nome e priorità. Per esempio, il MTA predefinito di Sarge è `exim4' invece di `exim' e `coreutils' è stato introdotto per sostituire parecchi pacchetti. Potrebbe essere necessario aggiustare le vostre azioni. 3.1. Tracce generali per l'installazione di Linux ------------------------------------------------- Non dimenticate di leggere >url id="http://www.debian.org/CD/netinst/"> se state cercando per un'immagine CD compatta dell'installatore Debian. Usare le distribuzioni `testing' o `unstable' aumenta il rischio di incappare ne i seri bachi. Questo rischio può essere gestito impiantando uno schema multiboot con una versione di Debian più stabile, oppure usando un trucco elegante fornito da `chroot', come descritto in Sezione 8.6.35, ``chroot''. Quest'ultimo permette di usare versioni differenti della Debian simultaneamente su console diverse. 3.1.1. Le basi della compatibilità hardware ------------------------------------------- Linux è compatibile con la maggior parte dei componenti per PC esistenti. Può essere installato praticamente in ogni configurazione. Per quanto mi riguarda, l'installazione è stata semplice come per Windows 95/98/Me. La lista di componenti compatibili cresce di giorno in giorno. Se avete un laptop, andate su: Linux on Laptops (http://www.linux-laptop.net/) per indirizzi per l'installazione divisi per marca e modello. La mia raccomandazione per i componenti di un desktop è, invece, "Siate conservativi." * SCSI invece di IDE per il lavoro, IDE/ATAPI HD per uso privato. * IDE/ATAPI CD-ROM (o CD-RW). * PCI invece di ISA. In particolare per le NIC. * Usate NIC economiche. Tulip per PCI, NE2000 per ISA sono più che buone. * Evitare PCMCIA (notebook) se siete alla prima installazione. * Evitate le tastiere, mouse, ecc. USB..a meno che vogliate accettare una sfida. Per macchine lente, bypassarne il disco rigido ed interfacciarle con macchine più veloci per eseguire l'installazione di Linux può essere una buona idea. 3.1.2. Definire i componenti del PC ed il chipset ------------------------------------------------- Durante l'installazione vi verranno richieste informazioni sull'hardware o sui chipset, informazioni non sempre facili da reperire. Ecco un metodo: 1. Aprite il PC e guardate dentro. 2. Scrivete i numeri presenti sui grossi chip sulle schede grafiche, sulle schede di rete, sui chip situati vicino alle porte seriali ed alle porte IDE. 3. Scrivete i nomi scritti sul dorso delle schede PCI ed ISA. 3.1.3. Definire i componenti del PC tramite Debian -------------------------------------------------- Dare i comandi seguenti all'interno di un sistema Linux già installato, fornisce qualche idea sull'hardware presente e sulla sua configurazione. $ pager /proc/pci $ pager /proc/interrupts $ pager /proc/ioports $ pager /proc/bus/usb/devices Questi comandi possono essere dati durante il processo di installazione dalla console, premendo ALT-F2. Dopo l'installazione iniziale, installando i pacchetti opzionali, tipo `pciutils', `usbutils', e `lshw', potete ottenere informazioni più estese sul sistema. $ lspci -v |pager $ lsusb -v |pager # lshw |pager Uso tipico degli interrupt: * IRQ0: timer output (8254) * IRQ1: controller tastiera * IRQ2: cascata a IRQ8--IRQ15 su PC-AT * IRQ3: porta seriale secondaria (io-port=0x2F8) (`/dev/ttyS1') * IRQ4: porta seriale primaria (io-port=0x3F8) (`/dev/ttyS0') * IRQ5: libero [scheda audio (SB16: io-port=0x220, DMA-low=1, DMA-high=5)] * IRQ6: controller del floppy disk (io-port=0x3F0) (`/dev/fd0', `/dev/fd1') * IRQ7: parport (io-port=0x378) (`/dev/lp0') * IRQ8: rtc * IRQ9: software interrupt (int 0x0A), rediretto a IRQ2 * IRQ10: libero [network interface card (NE2000: io-port=0x300)] * IRQ11: libero [(SB16-SCSI: io-port=0x340, SB16-IDE: io-port=0x1E8,0x3EE)] * IRQ12: PS/2 Mouse * IRQ13: libero (era il coprocessore matematico 80287) * IRQ14: controller IDE primario (`/dev/hda', `/dev/hdb') * IRQ15: controller IDE secondario (`/dev/hdc', `/dev/hdd') Per le vecchie schede ISA non-PnP, potreste voler impostare gli IRQ5, 10 ed 11 come non-PnP dal BIOS. Per i dispositivi USB, le classi sono elencate in `/proc/bus/usb/devices' come `Cls=': * Cls=00 : Inutilizzato * Cls=01 : Audio (altoparlanti, ecc.) * Cls=02 : Comunicazione (MODEM, NIC, ...) * Cls=03 : HID (Human Interface Device: KB, mouse, joystick) * Cls=07 : Stampante * Cls=08 : Memorie di massa (FDD, CD/DVD, HDD, Flash, ...) * Cls=09 : Hub (USB hub) * Cls=255 : Specifico del construttore Se la classe non è 255, Linux supporta il dispositivo. 3.1.4. Definire i componenti del PC tramite altri S.O. ------------------------------------------------------ Una ulteriore fonte di informazione è rappresentata dagli altri sistemi operativi. Installate una distribuzione di Linux commerciale. I sistemi di riconoscimento dell'hardware tendono ad essere migliori della Debian, al momento. Le differenze si livelleranno all'introduzione del `debian-installer' con Sarge. Installate Windows. La configurazione attuale del PC può essere ottenuta cliccando con il pulsante destro del mouse su "Risorse del Computer" e poi "Proprietà", ottenendo informazioni tipo IRQ, indirizzi di porta I/O, DMA. Alcune vecchie schede ISA potrebbero aver bisogno di essere configurate sotto DOS, ed utilizzate di conseguenza. 3.1.5. Il mito di Lilo ---------------------- "Lilo è limitato ai primi 1024 cilindri."Sbagliato! Il nuovo `lilo', usato nella Debian Potato ha il supporto lba32. Se il BIOS o la scheda madre sono abbastanza recenti da supportare lba32, `lilo' dovrebbe essere in grado di caricarsi oltre il vecchio limite dei 1024 cilindri. Se avete tenuto il vostro vecchio `lilo.conf', vi basterà aggiungere una riga con "lba32" da qualche parte vicino all'inizio del file.Vedere `file:///usr/share/doc/lilo/Manual.txt.gz' 3.1.6. GRUB ----------- Il nuovo boot loader `grub', proveniente dal progetto GNU HURD, può essere installato su un sistema Debian Woody: # apt-get update # apt-get install grub-doc # mc file:///usr/share/doc/grub-doc/html/ ... leggete il contenuto # apt-get install grub # pager file:///usr/share/doc/grub/README.Debian.gz ... leggetelo :) Per modificare il menu di GRUB, aprite `/boot/grub/menu.lst'. Guardate Sezione 8.1.6, `Come impostare i parametri di boot (GRUB)' su come impostare i parametri di avvio durante il processo di inizializzazione, dato che sono lievemente diversi da `lilo'. 3.1.7. Scegliere i floppy di avvio ---------------------------------- Per Potato ho apprezzato molto il set di dischi denominato IDEPCI per il desktop. Per Woody, apprezzo il set bf2.4. Entrambi i set usano una versione di `boot-floppies' per creare i floppy di avvio. Se avete una scheda di rete PCMCIA, dovete usare il set di dischi di avvio standard (numero di floppy maggiore, ma tutti i moduli dei driver disponibili) e configurare la NIC nel setup PCMCIA; non provate ad impostare una card NIC dal dall'interfaccia di configurazione della rete standard. Per sistemi particolari, potete creare un disco di salvataggio fatto apposta, sostituendo l'immagine del kernel denominata "linux" sul disco di salvataggio Debian con un'altra immagine compilata apposta altrove per la suddetta macchina. I dettagli dell'operazione li trovate sul `readme.txt' sul dischetto di salvataggio. Il floppy è formattato con il filesystem MSDOS, per cui potete utilizzare qualunque sistema per leggerlo e modificarlo. Ciò dovrebbe rendere la vita più semplice a coloro con particolari schede di rete, ecc... Per Sarge, `debian-installer' e/o `pgi' si pensa verranno usati per creare i floppy di avvio. 3.1.8. Installazione -------------------- Seguite le istruzioni ufficiali reperibili presso http://www.debian.org/releases/stable/installmanual e http://www.debian.org/releases/testing/installmanual (il lavoro è in corso, talvolta potrebbe non essere reperibile). Se installate un sistema tramite i `boot floppies' della distribuzione testing, potreste avere bisogno di aprire un nuovo terminale durante il processo di installazione premendo ALT-F2 e di modificare manualmente le voci di `/etc/apt/sources.list' da "stable" a "testing" per aggiustare le fonti di APT. Io tendo ad installare `lilo' in posti tipo `/dev/hda3', mentre `mbr' in `/dev/hda'. Ciò minimizza il rischio di sovrascrivere le informazioni di boot. Ecco le mie scelte durante l'installazione. * MD5 passwords "si" * shadow passwords "si" * Installazione "avanzata" (dselect **) e scegliere * Escludere emacs (se è selezionato), nvi, tex, telnet, talk(d); * Includere mc, vim, uno fra nano-tiny od elvis-tiny. Vedere Sezione 6.2.4, ``dselect''. Anche se siete dei fanatici di Emacs, evitatelo per ora ed accontentatevi di nano durante l'installazione. Evitate anche di installare altri grossi pacchetti, tipo TEX (Potato faceva questo) a questo stadio. Vedere Sezione 11.2, `Editor di salvataggio' per le ragioni per installare nano-tiny od elvis-tiny. * Rispondo a tutte le domande di configurazione = "y" (sostituisce l'attuale) durante le domande per l'installazione di ciscun pacchetto. * `exim': seleziono 2 per la macchina, dato che invio la posta tramite il server SMTP del mio provider. Per ulteriori informazioni su dselect, vedere Sezione 6.2.4, ``dselect''. 3.1.9. Quale host ed IP usare per una LAN ----------------------------------------- Esempio di configurazione di una LAN (C subnet: 192.168.1.0/24): Internet | +--- Un ISP esterno fornisce il servizio POP (raggiunto da fetchmail) | Un punto di accesso dell'ISP fornisce i servizi DHCP e SMTP | : Modem (Dial-up) | : Porta esterna della macchina gateway della LAN: eth0 (IP dato dal DHCP dell'ISP) usa un vecchio notebook (IBM Thinkpad, 486 DX2 50 MHz, 20 MB RAM) gira Linux con kernel 2.4 e file system ext3. gira il pacchetto "ipmasq" (con patch più sicura, NAT e firewall) gira il pacchetto "dhcp-client" configurato per eth0 (scavalca le impostazioni DNS) gira il pacchetto "dhcp" configurato per eth1 gira "exim" come smarthost (modo 2) gira "fetchmail" con un intervallo lungo (ripiego) gira "bind" come cache name server per Internet dalla LAN come name server autoritativo per il dominio LAN dalla LAN gira "ssh" sulle porte 22 e 8080 (connessione da ovunque) gira "squid" come cache server per l'archivio Debian (per APT) Porta interna della macchina gateway della LAN: eth1 (IP = 192.168.1.1, fisso) | +--- LAN Switch (10 base T) ---+ | | Alcuni clienti IP fissi sulla LAN Alcuni clienti DHCP sulla LAN (IP = 192.168.1.2-127, fisso) (IP = 192.168.1.128-200, dinamico) Vedere Capitolo 10, `Configurare la rete' per i dettagli sulla configurazione del gateway server. Vedere Sezione 10.14, `Costruire un gateway router' per i dettagli sulla configurazione del server gateway per la LAN. 3.1.10. Account utenti ---------------------- Per avere lo stesso aspetto di "famiglia" tra le varie macchine, i primi account che imposto sono sempre gli stessi. Il primo account che creo è sempre uno del tipo "admin" (uid=1000). Tutta la posta per root viene reindirizzata lì. Questo account è aggiunto al gruppo `adm' (vedere Sezione 9.2.2, `"Why GNU `su' does not support the `wheel' group" (Perchè GNU `su' non supporta il gruppo `wheel')'), al quale viene data una certa quota di privilegi di root tramite `su', usando PAM, od il comando `sudo'. Vedere Sezione 4.1.3, `Aggiungere un account utente' per i dettagli. 3.1.11. Creare i filesystem --------------------------- 3.1.11.1. Partizionare il disco rigido -------------------------------------- Per limitare i danni in caso di blocco del sistema, preferisco tenere partizioni diverse per directory diverse. Per esempio, / == (/ + /boot + /bin + /sbin) == 50MB+ /tmp == 100MB+ /var == 100MB+ /home == 100MB+ /usr == 700MB+ con X /usr/local == 100MB Le dimensioni della directory `/usr' dipendono strettamente dal tipo di applicazione X window. `/usr' può essere di soli 300MB per la sola console, mentre 2GB--3GB non sono inusuali se si vogliono installare varie applicazioni di Gnome. Quando `/usr' diventa troppo grande, la cura più efficace è spostare `/usr/share/' in una partizione diversa. Con i nuovi kernel 2.4 pre-impacchettati, `/' può avere bisogno di più di 200MB di spazio. Per esempio, la configurazione attuale della mia macchina che funge da Internet gateway, è la seguente (output del comando `df -h'): Filesystem Size Used Avail Use% Mounted on /dev/hda3 300M 106M 179M 38% / /dev/hda7 100M 12M 82M 13% /home /dev/hda8 596M 53M 513M 10% /var /dev/hda6 100M 834k 94M 1% /var/lib/cvs /dev/hda9 596M 222M 343M 40% /usr /dev/hda10 596M 130M 436M 23% /var/cache/apt/archives /dev/hda11 1.5G 204M 1.2G 14% /var/spool/squid (Le grosse dimensioni di `/var/spool/squid' sono per la funzione di proxy cache e per lo scarico dei pacchetti). Per dare un'idea della struttura delle partizioni, il seguente è il risultato di `fdisk -l': # fdisk -l /dev/hda # commenti /dev/hda1 1 41 309928+ 6 FAT16 # DOS /dev/hda2 42 84 325080 83 Linux # (not used) /dev/hda3 * 85 126 317520 83 Linux # Main /dev/hda4 127 629 3802680 5 Extended /dev/hda5 127 143 128488+ 82 Linux swap /dev/hda6 144 157 105808+ 83 Linux /dev/hda7 158 171 105808+ 83 Linux /dev/hda8 172 253 619888+ 83 Linux /dev/hda9 254 335 619888+ 83 Linux /dev/hda10 336 417 619888+ 83 Linux /dev/hda11 418 629 1602688+ 83 Linux Ci sono alcune partizioni inutilizzate. Queste servono per installare una seconda distribuzione di Linux, o come spazio per espandere qualche directory in crescita. 3.1.11.2. Montare i filesystem ------------------------------ Il montaggio appropriato delle partizioni avviene mediante il seguente `/etc/fstab': # /etc/fstab: static file system information. # # filesystem mount point type options dump pass /dev/hda3 / ext2 defaults,errors=remount-ro 0 1 /dev/hda5 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto defaults,user,noauto 0 0 /dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0 # # mantenete le partizioni separate /dev/hda7 /home ext2 defaults 0 2 /dev/hda8 /var ext2 defaults 0 2 /dev/hda6 /var/lib/cvs ext2 defaults 0 2 # noatime accelera l'accesso ai file in lettura /dev/hda9 /usr ext2 defaults,noatime 0 2 /dev/hda10 /var/cache/apt/archives ext2 defaults 0 2 # una partizione molto grande come proxy cache /dev/hda11 /var/spool/squid ext2 rw 0 2 # DOS avviabile di backup /dev/hda1 /mnt/dos vfat rw,noauto 0 0 # Linux avviabile di backup (non ancora fatto) /dev/hda2 /mnt/linux ext2 rw,noauto 0 0 # # nfs mounts mickey:/ /mnt/mickey nfs ro,noauto,intr 0 0 goofy:/ /mnt/goofy nfs ro,noauto,intr 0 0 # minnie:/ /mnt/minnie smbfs ro,soft,intr,credentials={filename} 0 2 Per NFS, uso qui le opzioni `noauto,intr' combinate con quella di default `hard'. In tal modo, un processo che si blocca in seguito alla perdita di connessione può essere recuperato mediante Control-C. Usare `rw,auto,soft,intr' per macchine Windows connesse tramite Samba (smbfs), può essere una buona idea. Vedere Sezione 3.5, `Configurare Samba'. Per i floppy, utilizzare `noauto,rw,sync,user,exec' previene la corruzione dei file in caso di rimozione accidentale del disco prima di averlo smontato, però rallenta il processo di scrittura. 3.1.11.3. Montaggio con autofs ------------------------------ Punti chiave per il montaggio automatico (auto mount): * Caricare il modulo `vfat' per permettere a `/etc/auto.misc' di contenere `-fstype=auto': # modprobe vfat # prima del tentativo di accedere al floppy ... oppure automatizzate il processo, # echo "vfat" >> /etc/modules ... e riavviate il sistema. * Impostate `/etc/auto.misc' come segue: floppy -fstype=auto,sync,nodev,nosuid,gid=100,umask=000 :/dev/fd0 ... dove gid=100 è "users". * Create i collegamenti in `/home/', `cdrom' e `floppy', che puntino a `/var/autofs/misc/cdrom' e `/var/autofs/misc/floppy', rispettivamente. * Rendete membro del gruppo "users". 3.1.11.4. Montaggio del NFS --------------------------- Il server esterno NFS (goofy) risiede dietro un firewall (gateway). Dato che sono l'unico ad usarla, ho delle regole di sicurezza sulla LAN molto rilassate. Per abilitare l'accesso NFS, il server NFS necessita di aggiungere `/etc/exports' come segue: # /etc/exports: lista di controllo degli accessi per filesystem che possono # essere esportati ai client NFS. Vedere exports(5). / (rw,no_root_squash) Ciò è richiesto per attivare il server NFS, in aggiunta all'installazione e ad attivazione del server/client NFS. Per semplicità, in genere creo un partizione singola di circa 2GB per installazioni sperimentali e/o secondarie di linux. Opzionalmente condivido le partizioni di swap e `/tmp'. Per questi scopi lo schema a partizioni multiple è eccessivo. Se vi serve un semplice sistema a console, bastano 500MB. 3.1.12. Linee guida per la memoria DRAM --------------------------------------- Di seguito presento alcune (grandi) linee guida per le DRAM. 4MB: Il minimo necessario a far funzionale il kernel di Linux. 16MB: Il minimo per un sistema con console. 32MB: Il minimo per un semplice sistema X. 64MB: Il minimo per X con GNOME/KDE. 128MB: Il giusto per X con GNOME/KDE. 256MB: (o più): Perchè no se ve le potete permettere? Le DRAM sono economiche. L'opzione di boot `mem=4m' (o lilo `append="mem=4m"') vi mostra come il sistema si comporta con soli 4MB di memoria installati. Il parametro di boot per lilo è necessario per sistemi con vecchi BIOS e più di 64MB di memoria. 3.1.13. Lo spazio di Swap ------------------------- Uso la formula seguente: * Ciascuna partizione di swap è di < 128 MB (con vecchi kernel 2.0), < 2 GB (kernel recenti) * Totale = o (1 o 2 volte la RAM installata) o (da 128 MB a 2 GB) come guida generale * Spalmatele su dischi diversi e montatele tutte con le opzioni `sw,pri=1' in `/etc/fstab'. Ciò assicura che il kernel faccia una sorta di RAID di partizioni swap ed offre il massimo di prestazioni di swap. * Usate la porzione centrale del disco rigido quando possibile. Anche se non ne avrete mai bisogno, un pò di spazio swap (128MB) è comunque desiderabile, in modo che un programma che ha un leak di memoria rallenti progressivamente il sistema prima di bloccarlo definitivamente. 3.2. Configurare Bash --------------------- Modifico gli script di inizio della shell a mio piacimento: /etc/bash.bashrc Sostituire con copia privata /etc/profile Mantenere la copia della distribuzione ( \w -> \W) /etc/skel/.bashrc Sostituire con copia privata /etc/skel/.profile Sostituire con copia privata /etc/skel/.bash_profile Sostituire con copia privata ~/.bashrc Sostituire con copia privata per tutti gli account ~/.profile Sostituire con copia privata per tutti gli account ~/.bash_profile Sostituire con copia privata per tutti gli account Per i dettagli vedere i miei esempi. (http://www.debian.org/doc/manuals/debian-reference/examples/) Mi piace un sistema trasparente, così imposto `umask' a 002 o 022. `PATH' viene impostato dai seguenti file di configurazione, in questo ordine. /etc/login.defs - prima del PATH impostato per la shell /etc/profile ( può chiamare /etc/bash.bashrc) ~/.bash_profile ( può chiamare ~/.bashrc) 3.3. Configurare il mouse ------------------------- 3.3.1. Mouse PS/2 ----------------- In caso di un mouse PS/2 con scheda madre ATX, il flusso del segnale deve essere: mouse -> /dev/psaux -> gpm -> /dev/gpmdata = /dev/mouse -> X In questo caso si crea un collegamento simbolico `/dev/mouse' che punta a `/dev/gpmdata' per rendere felici alcune utilità di configurazione e per rendere facile la reconfigurazione. (Per esempio se decidete di non usare per niente il demone gpm, basta puntare il collegamento simbolico `/dev/mouse' a `/dev/psaux' dopo essersi liberati del demone `gpm'.) Il flusso del segnale permette di deconnettere e reinizializzare la tastiera ed il mouse riavviando `gpm' dopo la riconnessione. X rimarrà funzionante! Il protocollo del flusso del segnale tra l'output di `gpm' e l'input di X può essere implementato in due modi, come "ms3" (protocollo del mouse seriale Microsoft a 3 pulsanti) o come "raw" (usa lo stesso protocollo del mouse che è connesso) e questa scelta condiziona la scelta del protocollo usato nella configurazione di X. Mostrerò gli esempi di configurazione usando un mouse Logitech a 3 pulsanti (mouse tradizionale nello stile Unix) PS/2 come modello. Se siete tra gli sfortunati la cui scheda grafica non è supportata dal nuovo X4 e dovete utilizzare il vecchio X3 (alcune schede ATI 64), configurate `/etc/X11/XF86Config' invece di `/etc/X11/XF86Config-4' come negli esempi seguenti, durante l'installazione dei pacchetti di X3. 3.3.1.1. Approccio con protocollo ms3 ------------------------------------- /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=ms3 | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IntelliMouse" | EndSection Usando questo approccio, le modifiche del tipo di mouse vanno fatte solo in `gpm.conf', mentre la configurazione di X rimane costante. Vedere i miei script di esmpio (http://www.debian.org/doc/manuals/debian-reference/examples/). 3.3.1.2. Approccio con protocollo raw ------------------------------------- /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "MouseManPlusPS/2" | EndSection Usando questo approccio, le modifiche del tipo di mouse vanno fatte sia in `gpm.conf' che aggiustando la configurazione di X. 3.3.1.3. Come adattarsi ai diversi tipi di mouse ------------------------------------------------ Il dispositivo di `gpm' denominato `autops2' si suppone sia in grado di riconoscere la gran parte dei mouse PS/2 sul mercato. Sfortunatamente non sempre funziona e non è disponibile nelle versioni pre-Woody. Provate ad usare `ps2', o `imps2' in `gpm.conf' al posto di `autops2' in questi casi. Per scoprire quali tipi di mouse gpm conosce date: `gpm -t help'. Vedere gpm(8). Se utilizzate un mouse a 2 pulsanti PS/2, impostate il protocollo di X in modo da abilitare `Emulate3Buttons'. La differenza di protocollo fra un mouse a 2 pulsanti e quello a 3 viene riconosciuta ed impostata automaticamente da `gpm' dopo aver premuto il pulsante di mezzo una volta. Per il protocollo X con Sezione 3.3.1.2, `Approccio con protocollo raw' o senza `gpm', usate: * `IntelliMouse': mouse seriale (ripetitore `gpm' con "ms3") * `PS/2': mouse PS/2 (provatelo sempre, prima) * `IMPS/2': qualsiasi mouse PS/2 (2, 3, o con rotella, migliore) * `MouseManPlusPS/2': Mouse Logitech PS/2 * `...' Per saperne di più vedere Supporto per il mouse in XFree86 (http://www.xfree86.org/current/mouse.html). Il mouse con rotella classico Microsoft funziona al meglio con: /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection Per alcuni nuovi notebook Toshiba ultrapiatti: Attivare `gpm' prima di PCMCIA nello script di inizializzazione del System-V. Ciò evita che il sistema si pianti. Strano, ma vero. 3.3.2. Mouse USB ---------------- Accertatevi di avere tutte le funzioni del kernel richieste attivate o alla compilazione, oppure tramite i moduli: * Sotto "Input core support": * "Input core support" (CONFIG_INPUT, `input.o'), * "Mouse support" (CONFIG_INPUT_MOUSEDEV, `mousedev.o'), * Sotto "USB support": * "Support for USB" (CONFIG_USB, `usbcore.o'), * "Preliminary USB device filesystem" (CONFIG_USB_DEVICEFS), * "UHCI" o "OHCI" (CONFIG_USB_UHCI || CONFIG_USB_UHCI_ALT || CONFIG_USB_OHCI, `usb-uhci.o' || `uhci.o' || `usb-ohci.o'), * "USB Human Interface Device (full HID) support" (CONFIG_USB_HID, `hid.o'), e * "HID input layer support" (CONFIG_USB_HIDINPUT) Qui, i nomi in minuscolo sono i nomi dei moduli Se non usate devfs, create un device node `/dev/input/mice' con major 13 e minor 63 come segue: # cd /dev # mkdir input # mknod input/mice c 13 63 Per i tipici mouse a 3 pulsanti _USB_, le combinazioni di configurazione dovrebbero essere: /etc/gpm.conf | /etc/X11/XF86Config-4 =========================+====================================== device=/dev/input/mice | Section "InputDevice" responsiveness= | Identifier "Generic Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "SendCoreEvents" "true" append="" | Option "Device" "/dev/input/mice" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection Vedere il Linux USB Project (http://www.linux-usb.org/) per maggiori informazioni. 3.3.3. Touchpad --------------- Sebbene il touchpad di un portatile emuli un mouse PS/2 a 2 tasti come comportamento predefinito, il pacchetto `tpconfig' permette il controllo totale del dispositivo. Per esempio, `OPTIONS="--tapmode=0"' in `/etc/default/tpconfig' disabilta lo scomodo comportamento "click by tap". Impostate `/etc/gpm.conf' come segue per usare sia il touchpad che il mouse esterno USB in console: device=/dev/psaux responsiveness= repeat_type=ms3 type=autops2 append="-M -m /dev/input/mice -t autops2" sample_rate= 3.4. Configurare NFS -------------------- Impostate NFS tramite `/etc/exports'. # apt-get install nfs-kernel-server # echo "/ *.domainname-for-lan-hosts(rw,no_root_squash,nohide)" \ >> /etc/exports Per i dettagli vedere i miei esempi. (http://www.debian.org/doc/manuals/debian-reference/examples/) 3.5. Configurare Samba ---------------------- Riferimenti: * http://www.samba.org/ * il pacchetto `samba-doc' Impostare Samba in modalità "share" è molto più semplice, dato che crea dei dischi di share sul modello di WfW. E' comunque molto meglio l'impostazione in modalità "user". Samba può essere configurato con `debconf' o `vi': # dpkg-reconfigure --priority= samba # in Woody # vi /etc/samba/smb.conf Per i dettagli vedere i miei esempi. (http://www.debian.org/doc/manuals/debian-reference/examples/) L'aggiunta di un nuovo utente al file `smbpasswd' può essere fatta tramite `smbpasswd': $su -c "smbpasswd -a nomeutente" Per la migliore compatibilità, usate password criptate. Impostate il `os level' sulla base delle equivalenze di sistema seguenti (maggiore il numero, più alta la priorità come server). 0: Samba con attitudini molto lasse (non sarà mai un master browser) 1: Wfw 3.1, Win95, Win98, Win/me? 16: Win NT WS 3.51 17: Win NT WS 4.0 32: Win NT SVR 3.51 33: Win NT SVR 4.0 255: Samba con poteri estesi Accertatevi che gli utenti siano membri del gruppo a cui appartiene la directory che offre l'accesso condiviso e che il percorso alla directory abbia il bit di esecuzione impostato. 3.6. Configurare la stampante ----------------------------- Il metodo tradizionale è `lpr'/`lpd'. Esiste un nuovo sistema CUPS(TM) (Common UNIX Printing System). PDQ è un altro approccio. Vedere il Linux Printing HOWTO (http://www.tldp.org/HOWTO/Printing-HOWTO.html) per maggiori informazioni. 3.6.1. `lpr'/`lpd' ------------------ Per i vari tipi di spooler `lpr'/`lpd' (`lpr', `lprng', e `gnulpr'), impostate `/etc/printcap' come segue se sono connessi ad una stampante solo testo o PostScript (le basi): |:\ :sd=/var/spool/lpd/:\ :mx#0:\ :sh:\ :lp=/dev/lp0: Cosa significano le righe precedenti: * Riga di intestazione: --- nome dello spool, = alias * mx#0 --- dimensione massima del file illimitata * sh --- sopprime la stampa dell' header di pagina * lp=/dev/lp0 --- stampante locale, oppure porta@host se remota Questa è una buona configurazione se siete connessi ad una stampante PostScript. In più è una buona configurazione anche se state stampando da una macchina Windows tramite Samba per qualsiasi stampante supportata da Windows (la comunicazione bidirezionale non è supportata). Dovete solo selezionare la configurazione della stampante corrispondente sulla macchina Windows. Se non avete una stampante PostScript dovete impostare un sistema di filtro usando `gs'. Esistono molti strumenti di autoconfigurazione per l'impostazione di `/etc/printcap'. Una qualsiasi di queste combinazioni è un'opzione: * `gnulpr', (`lpr-ppd') e `printtool' --- Io uso questa. * `lpr' e `apsfilter' * `lpr' e `magicfilter' * `lprng' e `lprngtool' * `lprng' e `apsfilter' * `lprng' e `magicfilter' Per lanciare gli strumenti grafici di configurazione, tipo `printtool', vedere Sezione 9.4.12, `Diventare root in X' per ottenere i privilegi di root. Gli spool creati con `printtool' usano `gs' ed agiscono come stampanti PostScript. Per cui, quando vi accedete, usate i driver delle stampanti PostScript. Sul lato Windows, lo standard è "Apple LaserWriter". 3.6.2. CUPS(TM) --------------- Installazione del Common UNIX Printing System (o CUPS(TM)): # apt-get install cupsys cupsys-bsd cupsys-client cupsys-driver-gimpprint # apt-get install foomatic-db-engine foomatic-db-hpijs # apt-get install foomatic-filters-ppds foomatic-gui In Sarge, usando `aptitude', potete selezionare "Print Server Task". KDE e Gnome forniscono un ambiente per la facile configurazione delle stampanti. In alternativa, potete configurare il sistema con qualsiasi browser se avete installato `swat' is installed: $ http://localhost:631 Per esempio, per aggiungere la vostra stampante collegata ad una porta qualsiasi all'elenco delle stampanti accessibili: * cliccate "Printers" dalla pagina principale e poi "Add Printer", * date "root" come username e la sua password, * procedete ad aggiungere la stampante seguendo le istruzioni, * tornate alla pagina "Printers" e cliccate "Configure Printer" e * procedete alla configurazione delle dimensioni della carta, risoluzione, e degli altri parametri. per maggiori informazioni http://localhost:631/documentation.html e http://www.cups.org/cups-help.html. 3.7. Altri consigli di configurazione per l'host ------------------------------------------------ 3.7.1. Installate pochi altri pacchetti dopo l'installazione iniziale --------------------------------------------------------------------- Una volta qui, avete un piccolo, ma funzionante, sistema Debian. E' il momento giusto per installare i pacchetti più grandi. * Lanciate `tasksel'. Vedere Sezione 6.2.2, `Installare i task'. Potete scegliere fra i seguenti task, se ne avete bisogno: * Utente finale (End-user) --- X window system * Sviluppo (Development) --- C e C++ * Sviluppo --- Python * Sviluppo --- Tcl/Tk * Miscellanea --- ambiente TeX/LaTeX * Per gli altri, preferisco usare `tasksel' come guida guardando fra i loro componenti elencati sotto ed installandoli selettivamente attraverso `dselect'. * Lanciate `dselect'. La prima cosa che dovreste fare è selezionare il vostro editor preferito e tutti i programmi di cui avete bisogno. Potete installare tutte le varianti di Emacs in un colpo solo. Vedere Sezione 6.2.4, ``dselect'' e Sezione 11.1, `Editor più popolari'. Potete anche sostituire alcuni dei pacchetti di default con quelli più completi. * ... * ... In genere modifico `/etc/inittab' per un facile spegnimento. ... # Cosa succede quando si preme CTRL-ALT-DEL. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now ... 3.7.2. Moduli ------------- I moduli per i driver dei vari dispositivi vengono configurati durante l'installazione iniziale. `modconf' fornisce la possibilità di configurare i moduli in un secondo momento attraverso un'interfaccia a menu. Questo programma è estremamente utile quando alcuni moduli vengono tralasciati durante l'installazione iniziale, o quando è stato installato un nuovo kernel in un momento successivo. Tutti i nomi dei moduli da precaricare devono essere elencati in `/etc/modules'. Io uso anche `lsmod' e `depmod' per controllarli manualmente. Assicuratevi anche di aggiungere alcune righe a `/etc/modules' per gestire IP masquerading (ftp, ecc.) per i kernel 2.4. Vedere Sezione 7.2, `Kernel 2.4 modulare', specificatamente Sezione 7.2.3, `Funzioni di rete'. 3.7.3. Impostazione base del CD-RW ---------------------------------- Per i masterizzatori IDE e kernel 2.4, modificate i seguenti file: /etc/lilo.conf (aggiungere append="hdc=ide-scsi ignore=hdc" lanciate lilo per attivarlo) /dev/cdrom (collegamento simbolico # cd /dev; ln -sf scd0 cdrom) /etc/modules (aggiungere "ide-scsi" e "sg". "sr" a seguire, se necessario.) Vedere Sezione 9.3, `Masterizzatori' per i dettagli. 3.7.4. Grosse memorie e spegnimento automatico ---------------------------------------------- Modificate `/etc/lilo.conf' come segue per impostare i parametri al boot in caso di grosse memorie (per i kernel 2.2) e per lo spegnimento automatico (per apm): append="mem=128M apm=on apm=power-off noapic" Lanciate `lilo' per attivare queste nuove impostazioni. <`apm=power-off' è necessario per un kernel SMP e `noapic' è necessario per ridurre i problemi del mio hardware SMP un pò bacato. Si può fare lo stesso direttamente al boot prompt. Vedere Sezione 8.1.5, `Altri trucchi con il boot prompt'. Se apm è compilato come modulo, come avviene automaticamente nei kernel Debian 2.4, lanciate `# insmod apm power_off=1' dopo il boot, oppure impostate `/etc/modules' con: # echo "apm power_off=1" >>/etc/modules In alternativa, compilare il supporto ACPI ottiene lo stesso scopo con i kernel più nuovi, e sembra essere più "amichevole" con SMP (richiede una scheda madre recente). I kernels 2.4 su schede madri più recenti dovrebbero riconoscere correttamente le grosse memorie. CONFIG_PM=y CONFIG_ACPI=y ... CONFIG_ACPI_BUSMGR=m CONFIG_ACPI_SYS=m ed aggiungete le seguenti righe a `/etc/modules' in quest'ordine. ospm_busmgr ospm_system Oppure ricompilate il kernel con tutte le opzioni precedenti su "y". Nel caso dell'ACPI, non serve alcun parametro di boot. 3.7.5. Strani problemi di accesso con alcuni siti web ----------------------------------------------------- I kernel Linux recenti attivano l'ECN di default, cosa che può causare problemi di accesso ad alcuni siti web con dei cattivi routers. Per controllare lo stato dell'ECN: # cat /proc/sys/net/ipv4/tcp_ecn ... oppure # sysctl net.ipv4.tcp_ecn Per disattivarlo usate: # echo "0" > /proc/sys/net/ipv4/tcp_ecn ... oppure # sysctl -w net.ipv4.tcp_ecn=0 Per disabilitare TCP ECN ad ogni boot, aprite `/etc/sysctl.conf' ed aggiungete: net.ipv4.tcp_ecn = 0 3.7.6. Configurazione di PPP per una connessione dial-up -------------------------------------------------------- Installate il pacchetto `pppconfig' per impostare un accesso dial-up con PPP. # apt-get install pppconfig # pppconfig ... seguite le istruzioni per configurare PPP # adduser dip ... permette a di accedere a PPP L'accesso dial-up PPP può essere iniziato dall'utente (): $ pon # inizia l'accesso PPP al vostro IP ... gustatevi Internet $ poff # termina l'accesso PPP, è facoltativo Vedere Sezione 10.2.4, `Configurare un'interfaccia PPP' per maggiori dettagli. 3.7.7. Altri file di configurazione da perfezionare in `/etc' ------------------------------------------------------------- Potreste voler aggiungere un file `/etc/cron.deny', che manca nella installazione Debian standard (potete copiare `/etc/at.deny'). ------------------------------------------------------------------------------- 4. Lezioni di Debian -------------------- Questa sezione fornisce delle coordinate di base per orientarsi nel mondo Debian, mirate all'utente inesperto. Se è un pò di tempo che utilizzate un sistema Unix-like, probabilmente saprete già tutto di quello che verrà spiegato qui. In tal caso, usatela come ripasso. 4.1. Per iniziare ----------------- Dopo aver installato Debian sul vostro PC, dovete imparare alcune cose per renderlo utile. Partiamo a tambur battente con le lezioni. 4.1.1. Login come root al prompt dei comandi -------------------------------------------- Dopo il reboot vi si presenterà o la schermata grafica di accesso al sistema, oppure quella a carattere, a seconda della vostra selezione iniziale dei pacchetti. Per semplicità, se avete davanti la schermata grafica, premete Ctrl-Alt-F1 [1] per accedere alla schermata di accesso a carattere. Supponiamo che il vostro hostname sia `', il prompt del login sarà così: login: Digitate `root' , premete il tasto Enter e digitate la password scelta durante il processo di installazione. In Debian,come da tradizione del mondo Unix, la password è dipendente anche dal maiuscolo/minuscolo. Dopo di ciò, il sistema parte con il messaggio di benvenuto e vi presenta il prompt dei comandi di root in attesa di un vostro comando. [2] login: root Password: Last login: Sun Oct 26 19:04:09 2003 on tty3 Linux