Copyright (c) 2002 Francesco Dolcini. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A full copy of the license is included in the file LICENSE that should always be distributed with this document. If the license text is not available, it can be downloaded from http://www.gnu.org/licenses/fdl.txt (NOTA probabilmente quando questo piccolo doc avra' assunto una forma piu' completa probabilmente inseriro' la licenza FDL direttamente in una appendice) Debian Administration Primer 0)Introduzione Con un * e' segnato cosa non e' strettamente relativo a debian e sul quale e' possibile trovare molta altra documentazione da altre parti Il presente doc non tratta le procedure di installazione, si puo' trovare guida qui: http://www.debian.org/releases/stable/installmanual http://www.debian.org/releases/woody/installmanual Il presente documento non vuole essere esaustivo, ma vuole essere corretto, quindi invito chiunque a segnalare le possibili imprecisioni che possono esserci. Non e' mia intenzione trattare in maniera approfondita la ricompilazione dei pacchetti, dpkg-source e similia, dh* e tutte quelle cose che possono essere trovate scritte meglio nelle varie guide per i mantainer debian. Prerequisiti sono sapere usare un editor, io consiglio vi, per un editor piu' intuitivo provate nano, sapere usare un po' una shell e avere una idea della struttura delle directory, etc. Qui potete trovare un documento introduttivo su questi temi http://www.pluto.linux.it/ildp/guide/PrgCulturale/prg.cult.html 0.1)Convenzioni I comandi da eseguire sono scritti con un $ davanti se possono essere eseguiti da un utente normale, da un # se devono essere eseguiti dall'utente root. Eventuali parametri opzionali tra paretensi [], stringhe da sostiture tra "" / scelta tra piu' possibili alternative 0.2)Appena ho tempo lo riscrivo in un formato un po' piu' gestibile di un file di testo ascii 1)Installazione software (o anche perchè Debian è avanti 10 anni luci rispetto al resto del mondo) 1.1)APT Apt e' un frontend per dpkg che permette installazione pacchetti, risoluzione automatica delle dipendenze, download automatico dei pacchetti, etc. 1.1.1)sources.list Attraverso /etc/apt/sources.list viene specificato ad Apt dove andare a recuperari i pacchetti (per risolvere problemi di dipendenze, per installare un pacchetto, per upgradare un pacchetto, etc) Possono essere url (ftp, http) o cdrom. I cd-rom vengono aggiunti con apt-cdrom add, di uso totalmente intuitivo e guidato. (NOTA mettere esempio) Righe da aggiungere per il mirror debian italiano (grazie a Inet, MD, ILS) Nota, mettele subito dopo eventuali CD-ROM deb http://ftp.it.debian.org/debian/ stable main non-free contrib deb http://ftp.it.debian.org/debian-non-US stable/non-US main contrib non-free deb-src http://ftp.it.debian.org/debian/ stable main non-free contrib deb-src http://ftp.it.debian.org/debian-non-US stable/non-US main contrib non-free Sostituite a stable la release debian che usate. Ad oggi esistono 3 tree di sviluppo della distribuzione mantenuti, "stable" (Debian 2.2 Potato), "testing" (la futura Debian 3.0 Woody) e "unstable" (Sid, la release di sviluppo e quindi la piu' aggiornata e la meno stabile) Se usate stable aggiungete anche deb http://security.debian.org stable/updates main contrib non-free per i repentini aggiornamenti di sicurezza presenti però solo in stable. Se navigate con un browser gli archivi potete capire la struttura delle directory di un mirror debian. $man sources.list 1.1.2)apt-get update #apt-get update aggiorna il database locale dei pacchetti, necessario eseguirlo ogni volta che vengono aggiornati gli archivi (praticamente ogni volta che installate un nuovo pacchetto se usate testing o unstable) 1.1.3)apt-get upgrade/dist-upgrade #apt-get upgrade/dist-upgrade Aggiorna la distribuzione, dist-upgrade e' Necessario se passate da una release debian ad un altra (es. da stable -> testing) Upgrade aggiorna semplicemente i pacchetti installati, mentre dist-upgrade cerca di risolvere eventuali problemi di dipendenze (es. un pacchetto da aggiornare ha delle dipendenze diverse rispetto al pacchetto precedentemente installato) Personalmente su una workstation personale eseguireri sempre un dist-upgrade senza preoccuparmi molto. 1.1.4)apt-get install "nome_pacchetto" Una volta trovato il pacchetto e' possibile installarlo con #apt-get install "nome_pacchetto" 1.1.5)apt-get [--purge] remove "nome_pacchetto" #apt-get [--purge] remove "nome_pacchetto" rimuove il pacchetto, l'opzione [--purge] rimuove anche eventuali file di configurazione e tutto il rimuovibile 1.1.6)apt-get [--build] source "nome_pacchetto" $apt-get [--build] source, scarica i sorgenti di un pacchetto (devono essere presenti i deb-src in sources.list) e se è presente l'opzione [--build] compila i sorgenti e crea il pacchetto .deb 1.1.7)apt-get build-dep "nome_pacchetto" #apt-get build-dep "nome_pacchetto" scarica e installa i pacchetti necessaria a compilare "nome_pacchetto" (es. scarica i pacchetti -dev delle librerie necessarie) 1.1.8)apt-get clean #apt-get clean Cancella l'archivo dei pacchetti scaricati in /var/cache/apt/archives/ che tende a crescere a dismisura in particolare se aggiornate spesso una distribuzione testing o unstable. (vedi anche apt-get autoclean) 1.1.N)apt-cache [--names-only] search "stringa" $apt-cache search "stringa" serve a ricercare un pacchetto che contiene nel nome o nella descrizione la parola "stringa", con il parametro opzionale [--names-only] la ricerca viene effettuata solo nel nome. 1.2)dpkg Il tool che viene chiamato da apt per installare effettivamente i pacchetti #dpkg -i "nome_pacchetto.deb" Installa uno o piu' pacchetti (accettta wildcard come parametri, es. *.deb) scaricati a mano o magari non appartenenti a debian (es opera) #dpkg [--purge] remove "nome_pacchetto" come 1.1.5) #dpkg-reconfigure [--priority=medium/critical/high/low] "nome_pacchetto" riconfigura un pacchetto usando debconf, il tool di configurazione dei pacchetti debian, rifacendo sostanzialmente le domande che vengono fatte durante l'installazione del pacchetto stesso in un momento successivo. --priority specifica da quale priorita' fare domande, prendendo i default stabiliti dal mantainer del pacchetto per le priorita' inferiori) (es. #dpkg-reconfigure debconf riconfigura debconf) $dpkg -S "pattern" Cerca tutti i file che corrispondono a pattern fra i pacchetti installati. Utile se volete sapere a che pacchetto appartiene un certo file. $dpkg -l "pattern" Elenca tutti i pacchetti corrispondenti a "pattern", proteggete il pattern con '' per evitare che eventuali wildcards vengono interpretate dalla shell invece che da dpkg (es. $dpkg -l '*libc*') Per visualizzare i soli pacchetti installati, e non anche i pacchetti rimossi o purgati in precedenza mandate l'output di dpkg in pipi a grep ^i. (es. $dpkg -l '*libc*'|grep ^i) (NOTA mi fa un po' schifo come frase) $dpkg -L "nome_pacchetto" Elenca tutti i file appartenenti a "nome_pacchetto" #dpkg -C Controlla che non ci siano pacchetti rimasti non configurati a seguito di qualche situazione imprevista, come la mancanza improvvisa di corrente durante un upgrade, o anche situazioni meno spiacevoli. 1.3)dselect Personalmente non uso dselect se non in fase di installazione (non mi piace, troppo macchinoso), è comunque fondamentale in fase di installazione, per infromazioni: http://www.debian.org/releases/woody/i386/dselect-beginner o http://www.debian.org/releases/stable/i386/dselect-beginner (NOTA non ho trovato una eventuale versione italiana) 1.4)Usare pacchetti da un altro tree di Debian 1.4.1)apt-sources pRiferimentis Usabile se non ci sono problemi di librerie (ad esempio fra woody e stable seri problemi con le libc) permette di scaricare ad esempio alcuni pacchetti da unstable su woody. (NOTA scoprire come funziona, dovrebbe essere una opzione non presente in apt di potato, devono essere passate almeno un paio di mail sulla cosa su debian-italian che ovviamente ora non trovo) 1.4.2)dpkg-buildpackage vedi 1.1.6, se e' gia' presente l'albero dei sorgenti debianizzato entrare nella dir e $dpkg-buildpackage e ci si ritrova un bel pacchetto .deb pronto da installare in ../ 1.5)Gestione pacchetti dispersi, librerie inutilizzate 1.5.1)deborphan deborphan cerca librerie che non hanno piu' nessun pacchetto che dipende da loro, risultato magari di installazione e rimozioni di pacchetti. 1.5.2)dpkg-eliminate.cc data una lista di file controlla quali non appartengono a nessun pacchetto. (NB /etc/passwd non appartiene a nessun utente ma vi consiglierei di non cancellarlo ...) apparso in debian-devel vario tempo addietro (se ricordo bene) vedere i sorgenti su come usarlo. www.linux.it/~pivi/ndnr/dpkg-eliminate.cc 1.5.3)cruft controlla il sistema per file dispersi, o cose che ci dovrebbero essere ma non ci sono. Non lo uso quindi vi consiglio di leggervi la relativa documentazione per sapere esattamente cosa fa. 1.6)Riferimenti $man apt-get $man apt-cache $man dpkg $man dpkg-reconfigure $man dselect http://www.debian.org/doc/manuals/apt-howto/ http://www.debian.org/doc/manuals/quick-Riferimenti/index.it.html 2)Installazione kernel/gestione moduli 2.1)make-kpkg (NOTA da una mail di fog su debian-italian, dargli una sistematina, magari provare anche ad usarlo almeno una votla nella vita) prima di installare un nuovo kernel della stessa versione installata rimuovi i vecchi moduli in /lib/modules/x.y.z. inoltre i passi fatti per installare possono essere condensati (sotto debian) in: #cd /usr/src/linux #make menuconfig #make-kpkg --revision kernelmio.1 kernel_image #dpkg -i ../kernel-image-x.y.z_kernelmio.1_i386.deb voilà. Ovviamente dopo avere installato i sorgenti del kernel (www.kernel.org) e eventualmente pcmcia-cs Riferimenti: $man make-kpkg 2.2)modconf #modconf permette di decidere quali moduli caricare al boot del sistema operativo tramite una comoda interfaccia ncurses. Riferimenti: $man modconf 3)Gestire il boot Se siete interessati a capire esattamente come funziona il boot in Debian vi consiglio di dare una occhiata alle Riferimenti, se invece gia' sapete tutto (quello che vi interessa) un elenco dei tool usati in Debian per gestire il boot. 3.3)script di avvio Breve riassunto: gli script di avvio in debian vengono tenuti in /etc/init.d/, viene posto poi un link simbolico nei runlevel in cui si vuole che parta o si fermi il servizio, e viene specificato anche in quale momento il servizio deve essere avviato o fermato. In debian il runlevel di default, configurabile modificando /etc/inittab e' il 2 3.2)update-rc.d Permette di installare e rimuovere i link agli script in /etc/init.d/ presenti nei vari runlevel. #update-rc.d [-n] [-f] "nome" remove rimuove i link simbolici a "nome" da tutti i runlevel, l'opzione [-f] e' necessaria se "nome" e' ancora presente in /etc/init.d/ [-n] non esegue nulla, effettua una simulazione di quello che accadrebbe #update-rc.d "nome" defaults inserisce i link simbolici a "nome" nei corretti runlevel usando i defaults per il numero di avvio e arresto (20) #update-rc.d "nome" start 50 2 3 . stop 99 0 1 6 . inserisce un link simbolico a "nome" come Start nei runlevel 2 e 3, al numero 50 (come se faceste ln -s /etc/init.d/"nome" /etc/rc3.d/S50"nome") e come Stop nei runlevel 0,1,6 al numero 99 Il numero di start e stop puo' essere combinato a piacere, intervallandolo da un '.', permettendo di realizzare qualsiasi combinazione di arresto e avvio in maniera rapida. $man update-rc.d 3.3) rcconf Permette di eseguire le stesse cose di update-rc.d con una interfaccia testuale, la differenza principale e' che tiene traccia del numero di avvio dei link simbolici dei programmi che leva, in modo da poterli ripristinare e fare in modo che vengano eseguiti al momento corretto del boot senza doverseli scrivere o ricordare. Riferimenti: $man init $man inittab /usr/share/doc/sysvinit /etc/init.d/README /etc/rcS.d/README http://www.debian.org/doc/debian-policy/ (cap. 10.3) *http://www.linuxdoc.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html Configurare la rete /etc/network/interfaces /etc/pcmcia/network.opts */etc/inetd */etc/rc2.d/ *netstat *nmap Configurare X */etc/X11/XF86Config *xinitrc Varie update-alternatives Gestione utenti add-user apt-cache -g pkgnames|grep ldap pacchetti non ufficiali mettere un pacchetto in hold Dove trovare info (man man, man info, cd /usr/doc/nome-pacchetto) apt-get install nomepacchetto-doc dpkg-www http://www.debian.org/doc/ http://www.google.com/linux http://lists.debian.org/debian-italian/ http://www.pluto.linux.it http://www.linuxdoc.org