Debian Administration Primer

Transcript

Debian Administration Primer
Debian Administration Primer
Debian Administration Primer
Table of Contents
1. Introduzione.......................................................................................................................................1
1.1. Convenzioni.........................................................................................................................1
2. Installazione Software.......................................................................................................................2
2.1. APT (Advanced Packaging Tool)........................................................................................2
2.2. dpkg.....................................................................................................................................4
2.3. Front−end testuali................................................................................................................5
2.4. Installare software non presente in Debian..........................................................................5
3. Avvio del sistema................................................................................................................................7
3.1. Init in breve..........................................................................................................................7
3.2. Gestione script avvio...........................................................................................................8
4. Kernel..................................................................................................................................................9
4.1. maniera tradizionale.............................................................................................................9
4.2. make−kpkg..........................................................................................................................9
4.3. Moduli................................................................................................................................10
5. Configurazione.................................................................................................................................12
5.1. Configurazione rete............................................................................................................12
i
1. Introduzione
La presente guida vuole essere un ausilio a chi ha installato Debian GNU/Linux per la prima volta, e
si ritrova spaesato rispetto ad altri sistemi operativi non−unix o rispetto ad altre distribuzioni Linux.
Potete trovare qui http://www.debian.org/releases/stable/i386/install una guida alla installazione, e qui
http://www.debian.org/distrib/ l'elenco dei modi in cui potete ottenere Debian.
Non mi soffermerò sugli aspetti generici di utilizzo di unix/linux, di una shell o di un editor. Per
questi argomenti potete trovare tutte le informazioni che volete in internet. Come guida introduttiva vi
consiglio http://www.pluto.linux.it/ildp/guide/PrgCulturale/prg.cult.html, avrete inoltre bisogno di un
buon editor come vim, se desiderata un editor più intuitivo potete provare nano.
La presente guida non tratterà se non in maniera superficiale argomenti sui quali è già possibile
trovare molta altra documentazione su http://www.debian.org/doc/ddp o che non sono strettamente
relativi a Debian.
Non dimenticate di consultare le pagine man ($man nome_programma) e eventualmente info ($info
nome_programma) per ulteriori e più approfondite spiegazioni.
Per correzioni, suggerimenti, o quant'altro scrivetemi a <[email protected]>.
1.1. Convenzioni
Nomi di file: /etc/apt/sources.list
Comandi: dpkg −i nome_pacchetto.deb
Le parentesi quadre, [], denotano eventuali argomenti opzionali.
La barra, /, indica una scelta fra più possibili alternative.
I comandi preceduti da un $ possono essere eseguiti in una shell di un utente normale, i comandi
preceduti da un # devono essere invece eseguiti dall'utente root.
Contenuto file di configurazione o parti di codice:
#!/bin/bash
#
...
Indirizzi EMail: <[email protected]>
Url: http://www.debian.org
1. Introduzione
1
2. Installazione Software
Una delle cose che probabilmente vi troverete a fare più spesso è installare, rimuovere o aggiornare
programmi. Debian permette di gestire questa operazione in una maniera comoda, efficiente, veloce e
ordinata. Esistono vari tool che permettono di gestire queste operazioni, alla fine della lettura del
paragrafo sarete in grado di cercarne di nuovi, magari con una comoda interfaccia grafica, se lo
desiderate.
2.1. APT (Advanced Packaging Tool)
È il tool che fa realmente la differenza fra Debian e le altre distribuzioni linux. Permette di scaricare
in maniera automatica il programma che desiderate, occupandosi di scaricare anche eventuali librerie
necessarie, eliminare pacchetti, fare ricerche, etc.
2.1.1. sources.list
Attraverso /etc/apt/sources.list viene specificato ad Apt dove andare a recuperare i pacchetti (per
risolvere problemi di dipendenze, per installare un nuovo pacchetto, per aggiornare un pacchetto
esistente, etc). Possono essere url (ftp, http) o cdrom. I cd−rom vengono aggiunti con #apt−cdrom
add, di uso totalmente intuitivo e guidato.
Per utilizzare il mirror Debian italiano (fortemente consigliato se siete in Italia) aggiungete le seguenti
righe al file, subito dopo eventuali cdrom.
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.
I pacchetti vengono scaricati dal primo archivio che contiene la versione più aggiornata, ad esempio
se avete nell'ordine i cd di potato e poi il mirror Debian italiano, quando installate un pacchetto verrà
scaricato dal cd in caso sia presente la setssa versione, da internet nel caso sui cd fosse presente una
versione meno recente.
Apt mantiene anche una cache dei pacchetti scaricati in /var/cache/apt/archive/ in modo da potere
riprendere un eventuale download interrotto a metà oppure di reinstallare in seguito un pacchetto
scaricato precedentemente e magari rimosso per qualche motivo.
Se navigate con un browser gli archivi potete capire la struttura delle directory di un mirror debian.
$man sources.list
2. Installazione Software
2
Debian Administration Primer
2.1.2. apt−get
#apt−get update
Risincronizza il database locale dei pacchetti con gli archivi remoti, necessario eseguirlo ogni volta
che vengono aggiornati gli archivi (praticamente ogni volta che installate un nuovo pacchetto se usate
testing o unstable).
#apt−get upgrade/dist−upgrade [−u]
Aggiorna la distribuzione, dist−upgrade e' necessario se passate da una release debian ad un altra (es.
da stable a 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. L'opzione [−u] mostra a schermo i
nomi dei pacchetti che verranno aggiornati prima di scaricarli.
#apt−get install nome_pacchetto
Installa nome_pacchetto nel sistema scaricandolo dal primo archivio che lo contiene indicato in
sources.list
#apt−get [−−purge] remove nome_pacchetto
Rimuove il pacchetto, l'opzione [−−purge] rimuove anche eventuali file di configurazione e tutto il
rimuovibile.
$apt−get [−−build] source nome_pacchetto
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.
#apt−get build−dep nome_pacchetto
Scarica e installa i pacchetti necessari a compilare nome_pacchetto (es. scarica i pacchetti −dev delle
librerie necessarie).
(Opzione non presente nelle release precedenti a Woody).
#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)
2.1.3. apt−cache
$apt−cache [−−names−only] search stringa
Serve a ricercare un pacchetto che contiene nel nome o nella descrizione la parola stringa, con il
parametro opzionale [−−names−only<rbracket> la ricerca viene effettuata solo nel nome.
2.1. APT (Advanced Packaging Tool)
3
Debian Administration Primer
$apt−cache show nome_pacchetto
Mostra le informazioni sul pacchetto: descrizione, dipendenze, nome mantainer, etc. Comodo per
verificare cosa contiene un pacchetto che avete trovato con $apt−cache search
2.2. dpkg
Il tool che viene chiamato da apt per gestire effettivamente i pacchetti.
#dpkg −i nome_pacchetto.deb
Installa uno o piu' pacchetti (accettta wildcard come parametri, es. #dpkg −i ~/dev/*.deb) scaricati a
mano o magari non appartenenti a debian (es. opera).
#dpkg [−−purge] remove nome_pacchetto
vedi relativo comando di APT.
#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 priorità fare domande, prendendo i default
stabiliti dal mantainer del pacchetto per le priorità 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 pipe a grep ^i.
(es. $dpkg −l '*libc*'|grep ^i)
$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.
2.2. dpkg
4
Debian Administration Primer
2.3. Front−end testuali
dselect è un front−end per dpkg. Necessario in fase di installazione, personalmente comunque cerco di
non usarlo in quanto è troppo macchinoso. Per ulteriori informazioni
http://www.debian.org/releases/stable/i386/dselect−beginner
aptitude
aptitude è un front−end per apt, anch'esso testuale, più intuitivo di dselect a mio parere.
2.4. Installare software non presente in Debian
È possibili che vi troviate ad avere bisogno di un software che non è presente in Debian, oppure che è
presente solo in una release successiva che voi non usate o avete bisogno di una versione più
aggiornata. Ci sono vari modi per risolvere questo sistema, e sicuramente una volta che sarete utenti
esperti riterrete questi semplici consigli banali.
Pacchetti non ufficiali
Il modo più veloce per risolvere il problema, se siete fortunati, è trovare qualcuno che abbia fatto il
pacchetto deb del programma che cercate per la vostra specifica release, che per qualche motivo non è
però incluso nella release Debian che state usando. Potete quindi limitarvi a scaricare il pacchetto e
installarlo con dpkg −i oppure aggiungendo nel vostro sources.list la riga dove è contenuto
l'archivio per apt. Un sito dove guardare è sicuramente questo:
http://www.internatif.org/bortzmeyer/debian/apt−sources/
Ricompilare dai sorgenti
Un'altra maniera è ricompilare i sorgenti del programma desiderato e installarli seguendo le istruzioni
presenti di solito nel file INSTALL. In genere i programmi verranno installati in /usr/local/. Il
problema di questo approccio è che si perde il controllo di cosa è effettivamente installato nel sistema
e dove sono tenuti i file dei progammi che avete installato, soprattutto se i programmi che vengono
aggiunti cosi sono molti. Inoltre potrebbero esserci problemi ad installare in seguito un eventuale
pacchetto .deb che ha fra le dipendenze un pacchetto installato da voi precedentemente dai sorgenti.
Note: in realtà se un pacchetto ha delle dipendenze in una distribuzione stable sono certamente
presenti anche le librerie necessarie
Installare da una release di Debian più aggiornata
Se usate woody e avete bisogno di un pacchetto da sid, a meno di problemi di dipendenze di librerie
(il pacchetto richiede magari alcune librerie più aggiornate di quelle presenti nella release che state
usando) potete tranquillamente scaricarlo e installarlo con dpkg −i.
Ricreare il pacchetto deb.
Se il programma non è presente in debian potete leggervi la documentazione su come pacchettizare un
programma presente a http://www.debian.org/doc/maint−guide/, avrete comunque ovviamente
2.3. Front−end testuali
5
Debian Administration Primer
bisogno di tutte le librerie che il programma richiede, che dovrete installare in qualche maniera se non
fosse presente il pacchetto deb. Inoltre non è di certo una operazione agevole per una persona alle
prime armi con linux.
Se il programma di cui avete bisogno è presente in una release Debian più recente, ma non potete
installarlo direttamente perchè compilato con delle librerie troppo recenti, che però il programma non
richiede necessariamente, potete, dopo avere aggiunto le apposite righe deb−src di unstable o testing
in sources.list eseguire $apt−get [−−build−package] source nome_pacchetto come spiegato
in questo paragrafo.
2.3. Front−end testuali
6
3. Avvio del sistema
Come accendete il vostro calcolatore, a seconda del tipo di macchina vi ritroverete davanti o il banale
BIOS di un PC x86 oppure altre cose più esoteriche a seconda della macchina che usate, potreste
anche non vedere nulla se state usando una macchina senza scheda video (nel caso dovreste avere
almeno una console seriale). Fatto questo la ROM del vostro calcolatore passerà il controllo a un
bootloader (Lilo probabilmente, ma potrebbe essere anche silo, milo, palo, etc.) che provederà a
caricare il kernel in memoria. Una volta che il kernel sarà stato caricato in memoria e avrà
inizializzato le proprie strutture dati lancerà init.
In questo paragrafo cercheremo di adattare alle nostre esigenze quando avviene dal momento in cui
init viene lanciato al momento in cui appare la richiesta di login.
Non verrà trattato l'uso del bootloader in Debian in quanto non presenta nessuna particolarità, le
modalità in cui la vostra macchina viene avviata e passa il controllo al kernel sono invece specifiche
della vostra architettura. Le problematiche relative al kernel sono invece trattate nel paragrafo Kernel.
Per capire esattamente come funziona init e come sono gestiti gli script di avvio in Debian
consultate i seguenti documenti:
$man init
$man inittab
/usr/share/doc/sysvinit/
/etc/init.d/README
/etc/rcS.d/README
http://www.debian.org/doc/debian−policy/ch−opersys.html#s−sysvinit
http://www.linuxdoc.org/HOWTO/From−PowerUp−To−Bash−Prompt−HOWTO.html
3.1. Init in breve
Una volta avviato init legge il proprio file di configurazione /etc/inittab/, se trova un
runlevel di default (es. id:2:initdefault:) entra in quello, altrimenti domanda all'utente di specificarlo.
Per prima cosa vengono eseguiti gli script in /etc/rcS.d/, vengono poi eseguiti gli script specifici
del runlevel contenuti in /etc/rcN.d/ dove N è il numero del runlevel (semplificando e
approssimando i runlevel sono in pratica 7, da 0 a 6). Nelle directory /etc/rc?.d/ sono contenuti
esclusivamente link simbolici a script presenti in /etc/init.d/, preceduti da una S o da una K,
rispettivamente a seconda se il programma/demone deve essere avviato o fermato (lanciato con il
parametro start oppure stop), e da un numero che indica l'ordine di esecuzione, in maniera crescente
(viene quindi eseguito prima uno script con numero 11 che uno con 50). Per rendere la cosa più chiara
facciamo un esempio: se in /etc/rc2.d/ è presente un link simbolico a /etc/init.d/cron
con nome /etc/rc2.d/S89cron vuol dire che verrà avviato /etc/init.d/cron start verso la fine
del boot (il massimo è 99) dopo che tutti gli script con numero inferiore a 89 sono stati avviati e prima
che vengano avviati script con numero maggiore a 89.
In debian il runlevel di default è il 2, altri runlevel hanno significati particolari, 0 è l'halt della
macchina, 6 il reboot, 1 uno speciale runlevel minimale chiamato single user mode, senza supporto di
rete o multiutenza.
È possibile specificare il runlevel al boot passando un parametro init=runlevel al kernel attraverso il
bootloader. Se il file /etc/inittab è assente il sistema parte automaticamente in single user.
3. Avvio del sistema
7
Debian Administration Primer
init avvia anche varie istanze di getty, il programma che mostra la richiesta di login sul terminale,
oltre a permettere altre cose come connessioni via modem, via console seriale, etc. ...
3.2. Gestione script avvio
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_script remove
rimuove i link simbolici a nome_script da tutti i runlevel, l'opzione [−f] è necessaria se nome_script e'
ancora presente in /etc/init.d/ [−n] non esegue nulla, effettua una simulazione di quello che
accadrebbe
#update−rc.d nome_script defaults
inserisce i link simbolici a nome_script nei corretti runlevel usando i defaults per il numero di avvio e
arresto (20)
#update−rc.d nome_script start 50 2 3 . stop 99 0 1 6 .
inserisce un link simbolico a nome_script come Start nei runlevel 2 e 3, al numero 50 (come se
faceste #ln −s /etc/init.d/nome_script /etc/rc3.d/S50nome_script) 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.
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 elimina, in modo da
poterli ripristinare e fare in modo che vengano eseguiti al momento corretto del boot senza doverseli
scrivere o ricordare.
3.2. Gestione script avvio
8
4. Kernel
Molto probabilmente prima o poi vi ritroverete a sostituire il kernel di default, perchè è uscita una
nuova feature che aspettavate con ansia, per fare funzionare il vostro ultimo stupendo masterizzatore
usb, per correggere un bug, etc. ...
A seconda del problema che volete risolvere potete optare per installare con apt l'immagine di un
kernel precompilato, trovabile facilmente cercando kernel−image con apt−cache, ricompilare il vostro
kernel nella maniera tradizionale, oppure compilare il kernel alla Debian−maniera.
Ricordatevi sempre di aggiornare il vostro bootloader se create l'immagine del kernel nella maniera
tradizionale. Inoltre ricordatevi che il funzionamento del kernel dipende anche da vari programmi in
user−space come mod−utils ad esempio. In particolare se passate da una major release ad un altra
assicuratevi che non ci siano problemi di questo tipo.
Prima di continuare con la lettura è fondamentale che leggiate questo documento,
http://www.pluto.linux.it/ildp/HOWTO/Kernel−HOWTO.html, magari nella versione inglese
http://www.linuxdoc.org/HOWTO/Kernel−HOWTO.html che attualmente risulta più aggiornata o un
documento equivalente che tratti gli argomenti generici di compilazione di un kernel, la
configurazione, i moduli, etc.
Note: per utilizzare #make menuconfig ricordatevi di installare il necessario pacchetto −dev delle
librerie ncurses (#apt−get install libncurses−dev)
4.1. maniera tradizionale
Non ci sono particolari precauzioni da seguire se non quelle specificate in qualunque documento
spieghi la compilazione di un kernel. Mettete l'albero dei sorgenti del kernel scaricato da
http://www.kernel.org o con apt da un pacchetto kernel−source in /usr/src/linux/ o
/usr/local/src/linux/ e eseguite le operazioni che eseguireste con una qualasiasi altra
distribuzione.
4.2. make−kpkg
Alcuni motivi per usare make−kpkg, fermo restando che non esiste nessuna controindicazione ad
usare il emtodo tradizionale.
♦ Meno passi da compiere, molti passi ripetitivi vengono eseguiti in maniera
automatica.
♦ Viene aggiornato in maniera automatica il bootloader permettendo cmq di avviare il
vecchio kernel limitando i danni dovuti a dimenticanze
♦ Possibilità di riutilizzare in maniera facile lo stesso kernel su più macchine avendo a
disposizione il pacchetto .deb
Note: per effettuare queste le operazioni descritte in questo paragrafo dovete essere root
Installate l'albero dei sorgenti del kernel in /usr/src/linux/ o creato un link simbolico
/usr/src/linux alla directory contenente i sorgenti del kernel. (#ln −l /usr/src/linux−2.4.18
4. Kernel
9
Debian Administration Primer
/usr/src/linux)
Per prima cosa, se state ricompilando nuovamente un kernel precedentemente compilato eliminate i
vecchi moduli in /lib/modules/x.y.z dove x.y.z sono il numero di versione del kernel che
state ricompilando. Questo perchè il vostro nuovo kernel potrebbe avere meno moduli del precedente
e quindi si potrebbero creare dei casini dovuti alla presenza della stessa parte di codice sia come
modulo sia compilata all'interno del kernel monolitico.
Entrate nella directory dove avete i sorgenti, supponiamo /usr/src/linux/, configurate il kernel,
con #make menuconfig ad esempio, una volta terminato uscite e salvate la vostra configurazione.
Cancellate i file binary rimasti da una eventuale precedente compilazione con
#make−kpkg clean
Eseguite
#make−kpkg −−revision nome−kernel−mio.numero−mia−release kernel_image
terminata la fase di compilazione trovate in
../kernel−image−x.y.z_nome−kernel−mio.numero−mia−release_ARCH.deb il
deb del vostro nuovo kernel. Potreste avere bisogno di moduli del kernel opzionali, ad esempio se
avete un portatile con pcmcia dovrete installare il pacchetto pcmcia−source, e decomprimere il file
/usr/src/pcmcia−cs.tar.gz. Vi ritroverete quindi in
/usr/src/modules/pcmcia−cs/ tutti i sorgenti che vi servono.
A questo punto, sempre dalla directory contenente i sorgenti del kernel che state compilando, eseguite
#make−kpkg −−revision nome−kernel−mio.numero−mia−release modules_configure
e poi
#make−kpkg −−revision nome−kernel−mio.numero−mia−release modules_image
terminata la fase di compilazione trovate in
../pcmcia−modules−x.y.z_RELPCMCIA+nome−kernel−mio.numero−mia−release_ARCH.deb
il deb.
Se avete altre cose in /usr/src/modules/ dovreste trovarvi in maniera simile i deb in /usr/src/
A questo punto basta che installiate i deb con #dpkg −i e dpkg dovrebbe proveddere a aggiornare il
vostro bootloader in modo che al successivo reboot abbiate il vostro kernel perfettamente funzionante.
4.3. Moduli
modconf
#modconf
permette di decidere quali moduli del kernel caricare al boot del sistema operativo tramite una
comoda interfaccia testuale. Può essere usato anche in maniera non interattiva da linea di comando,
4.3. Moduli
10
Debian Administration Primer
leggete la pagina man per ulteriori informazioni
4.3. Moduli
11
5. Configurazione
Una piccola guida alla configurazione/riconfigurazione della vostra linux−box. Non vuole essere
esaustiva e fa riferimento ai casi più tipici a mio avviso. Se avete schede pcmcia la parte relativa alla
configurazione della vostra scheda è diversa da quanto qui descritto, dovete modificare i file di
configurazione in /etc/pcmcia/*.opts (se avete una scheda di rete pcmcia dovete modificare il file
/etc/pcmcia/network.opts)
5.1. Configurazione rete
cambiare hostname
modificare la impostazioni della vostra scheda
5. Configurazione
12