Nozioni in pillole sulle caratteristiche di alcune distribuzioni BSD e Linux
BLUG
Belluno — 24 aprile 2004
Debian è una distribuzione di Linux non commerciale, tutti i contenuti possono essere liberamente copiati e distribuiti. Ciò è vantaggioso, ha permesso tra l'altro la nascita di altri progetti che usano Debian come base (Knoppix, eduKnoppix, Morphix,...), ma ci sono alcune controindicazioni. Esistono software commerciali con restrizioni sulla distribuzione, tra cui ad esempio alcuni plugin di mozilla, compresa la java virtual machine , che non possono essere inseriti nella distribuzione, e vanno installati separatamente.
Per installare la base si può utilizzare un CD. Sul sito di Debian ci sono istruzioni per trovare o creare CD di Debian.
È vantaggioso creare un Minimal CD , e installare via rete. Così si utilizzano pacchetti aggiornati all'ultimo minuto, e non si sprecano risorse, poiché vengono scaricati solo i pacchetti selezionati.
Durante l'installazione viene chiesto quale mirror utilizzare per mantenere aggiornati i pacchetti. All'indirizzo http://ftp.it.debian.org/ si trova una lista dei mirror italiani. È preferibile sceglierne uno all'interno della rete del proprio provider.
Debian si basa su un sistema di gestione dei pacchetti denominato apt . Nel file /etc/apt/sources.list apt memorizza i dati dei luoghi da cui scaricare i pacchetti aggiornati. Eccone un esempio:
deb http://ftp.it.debian.org/debian stable main contrib non-free deb http://ftp.it.debian.org/debian-non-US stable/non-US main contrib non-free
La distribuzione si divide in tre rami: [http://www.it.debian.org/releases/]
Esiste un archivio separato non-US , in cui si trovano i pacchetti che contengono codice con crittografia forte, i cui server si trovano fuori dagli USA, per evitare problemi con le restrizioni sull'esportazione di tale software dagli Stati Uniti.
Un'ulteriore divisione prevede tre aree: main , contrib , non-free ; che si caratterizzano in base al tipo di licenza. Il software contenuto nell'area main utilizza licenza GPL o simile, ed è quindi propriamente software libero, mentre la sezione non-free contiene software che può essere distribuito liberamente, ma il cui utilizzo può comportare restrizioni in alcuni casi. L'area contrib contiene software che di per sé è libero, ma che per poter funzionare si appoggia ad altri componenti presenti nell'area non-free .
Dopo aver eseguito la prima installazione, e aver ottenuto un sistema funzionante, si possono aggiungere o rimuovere componenti a volontà.
dselect gestisce l'installazione dei pacchetti. Il metodo d'accesso utilizzato più comunemente è apt ; l'operazione di update va eseguita per aggiornare la lista dei pacchetti disponibili; quindi si procede con la selezione dei pacchetti da installare; infine si esegue l'installazione.
Debian `dselect' package handling frontend. * 0. [A]ccess Choose the access method to use. 1. [U]pdate Update list of available packages, if possible. 2. [S]elect Request which packages you want on your system. 3. [I]nstall Install and upgrade wanted packages. 4. [C]onfig Configure any packages that are unconfigured. 5. [R]emove Remove unwanted software. 6. [Q]uit Quit dselect. Move around with ^P and ^N, cursor keys, initial letters, or digits; Press <enter> to confirm selection. ^L redraws screen. Version 1.10.20 (i386). Copyright (C) 1994-1996 Ian Jackson. Copyright (C) 2000,2001 Wichert Akkerman. This is free software; see the GNU General Public Licence version 2 or later for copying conditions. There is NO warranty. See dselect --licence for details.
Nella schermata di selezione si vede una lista dei pacchetti, con una sintesi dello stato d'installazione e delle caratteristiche. Sulla sinistra compaiono quattro colonne EIOM che indicano rispettivamente:
Gli stati d'installazione di solito assumono i seguenti valori:
Un pacchetto non installato è completamente assente dal sistema, mentre di un pacchetto rimosso rimangono eventuali file di configurazione, che possono essere riutilizzati qualora lo si reinstalli.
Premendo il tasto + si richiede l'installazione [ install ] del pacchetto selezionato (compare il simbolo * nella colonna M ). Premendo il tasto - se ne richiede la rimozione [ remove ] (compare il simbolo - nella colonna M ).
Debian è composta da parecchie migliaia di pacchetti, in continuo aumento. Nonostante la classificazione in sezioni, scorrerli tutti alla ricerca di qualcosa può risultare tedioso. Vengono in aiuto gli strumenti a linea di comando, che possono essere facilmente abbinati ai potenti metodi di ricerca sulle stringhe offerti dagli unix.
Si può cercare una stringa all'interno delle descrizioni o i nomi dei pacchetti.
biso@atlas:~/presdist$ apt-cache search xkb fookb-plainx - An Xkb state indicator -- plain X version. fookb-wmaker - An Xkb state indicator -- WindowMaker version. libxkbd0 - A compact window keyboard (Development files) libxklavier7 - X Keyboard Extension high-level API nonlock - Thai (and other) Keyboard swithcher using XKB xbase-clients - miscellaneous X clients xiterm+thai - x-terminal program with Thai languague support xkbd - A compact window keyboard (Development files) xkbd-dev - A compact window keyboard (Development files) xlibs - X Window System client libraries metapackage and XKB data xlibs-data - X Window System client data xlibs-static-dev - X Window System client library development files xxkb - Keyboard state indicator and switcher for xkb keyboard-led-applet - GNOME keyboard LED applet libxkbsel-dev - Tool for defining, selecting, and indicating XKB keyboards. xkbsel - Tool for defining, selecting, and indicating XKB keyboards. xkbsel-gnome - Tool for defining, selecting, and indicating XKB keyboards. biso@atlas:~/presdist$
Senza la necessità di lanciare dselect, è possibile aggiornare la lista dei pacchetti installabili.
1 atlas:~# apt-get update Get:1 http://aptproxy sarge/main Packages Get:2 http://aptproxy sarge/main Release [81B] Get:3 http://aptproxy sarge/contrib Packages Get:4 http://aptproxy sarge/contrib Release [84B] Get:5 http://aptproxy sarge/non-free Packages Get:6 http://aptproxy sarge/non-free Release [85B] Hit http://aptproxy sarge/non-US/main Packages Hit http://aptproxy sarge/non-US/main Release Hit http://aptproxy sarge/non-US/contrib Packages 99% [Waiting for headers] 10.2kB/s 0s . . . Fetched 3100kB in 1m28s (34.9kB/s) Reading Package Lists... Done 2 atlas:~#
Scelto il pacchetto che si desidera, può essere facilmente installato con una sola riga di comando. Oltre al pacchetto voluto verranno automaticamente selezionati e installati tutti i pacchetti da cui dipende, in modo da garantirne un corretto funzionamento.
2 atlas:~# apt-get install xkbsel Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: xkbsel 0 upgraded, 1 newly installed, 0 to remove and 31 not upgraded. Need to get 95.6kB of archives. After unpacking 308kB of additional disk space will be used. Get:1 http://aptproxy woody/main xkbsel 0.13-10 [95.6kB] Fetched 95.6kB in 0s (277kB/s) Selecting previously deselected package xkbsel. (Reading database ... 65095 files and directories currently installed.) Unpacking xkbsel (from .../xkbsel_0.13-10_i386.deb) ... Setting up xkbsel (0.13-10) ... 3 atlas:~#
Analogamente si può eseguire l'upgrade di tutti i pacchetti per i quali esistono nuove versioni.
3 atlas:~# apt-get upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages have been kept back: gnumeric nemesis The following packages will be upgraded: dictionaries-common fontconfig gaim gdb gimageview gnumeric-doc libatm1 libdevmapper1.00 libeel2-2 libeel2-data libfontconfig1 libfontconfig1-dev libgtkglext1 libhtml-parser-perl libperl5.6 libxml2 libxslt1 libxslt1.1 lsof makedev man-db ntp ntp-doc ntp-server ntp-simple ntpdate portmap ssh ucf 29 upgraded, 0 newly installed, 0 to remove and 2 not upgraded. Need to get 15.4MB of archives. After unpacking 2504kB of additional disk space will be used. Do you want to continue? [Y/n] Get:1 http://aptproxy sarge/main man-db 2.4.2-14 [576kB] Get:2 http://aptproxy woody-proposed-updates/main libperl5.6 5.6.1-8.7 [348kB] Get:3 http://aptproxy sarge/main makedev 2.3.1-66 [38.8kB] Get:4 http://aptproxy sarge/main dictionaries-common 0.22.8 [145kB] Get:5 http://aptproxy sarge/main gdb 6.1-1 [2528kB] Get:6 http://aptproxy sarge/main lsof 4.71-1 [319kB] . . . Get:25 http://aptproxy sarge/main ntp 1:4.2.0a-8 [377kB] Get:26 http://aptproxy sarge/main ntp-doc 1:4.2.0a-8 [870kB] 91% [26 ntp-doc 163364/870kB 18%] 44.1kB/s 29s Fetched 15.4MB in 56s (273kB/s) Preconfiguring packages ... (Reading database ... 65125 files and directories currently installed.) Preparing to replace man-db 2.4.2-13 (using .../man-db_2.4.2-14_i386.deb) ... Unpacking replacement man-db ... Preparing to replace libperl5.6 5.6.1-8.6 (using .../libperl5.6_5.6.1-8.7_i386.deb) ... Unpacking replacement libperl5.6 ... Preparing to replace makedev 2.3.1-65 (using .../makedev_2.3.1-66_all.deb) ... Unpacking replacement makedev ... Preparing to replace dictionaries-common 0.22.5 (using .../dictionaries-common_0.22.8_all.deb) ... remove/dictionaries-common: Ignoring emacsen flavour emacs remove/dictionaries-common: Purging byte-compiled files for flavour emacs21 Unpacking replacement dictionaries-common ... Preparing to replace gdb 5.3-2 (using .../archives/gdb_6.1-1_i386.deb) ... Unpacking replacement gdb ... Setting up ntp-server (4.2.0a-8) ... Installing new version of config file /etc/init.d/ntp-server ... Configuration file `/etc/ntp.conf' ==> Modified (by you or by a script) since installation. ==> Package distributor has shipped an updated version. What would you like to do about it ? Your options are: Y or I : install the package maintainer's version N or O : keep your currently-installed version D : show the differences between the versions Z : background this process to examine the situation The default action is to keep your current version. *** ntp.conf (Y/I/N/O/D/Z) [default=N] ? Starting NTP server: ntpd. Setting up ntp-simple (4.2.0a-8) ... 4 atlas:~#
Uno strumento di livello più basso, dpkg , permette di eseguire molteplici operazioni. Per esempio si può rapidamente verificare lo stato d'installazione di uno o più pacchetti.
biso@atlas:~/presdist$ dpkg --list xkbsel Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii xkbsel 0.13-10 Tool for defining, selecting, and indicating biso@atlas:~/presdist$
biso@atlas:~/presdist$ apt-cache show xkbsel Package: xkbsel Priority: optional Section: x11 Installed-Size: 301 Maintainer: Milan Zamazal <pdm@debian.org> Architecture: i386 Version: 0.13-10 Depends: xbase-clients, libc6 (>= 2.2.4-4), libxaw7 (>> 4.1.0), xlibs (>> 4.1.0) Filename: pool/main/x/xkbsel/xkbsel_0.13-10_i386.deb Size: 95596 MD5sum: 4de4b87e9307764ee20922ed327088f4 Description: Tool for defining, selecting, and indicating XKB keyboards. xkbsel is a framework for defining, selecting, and indicating XKB keyboard mappings, without the need to modify X11 distribution in any way. . This package contains the xkbsel basic files and binaries, including the Athena keyboard switching applet. . Homepage: http://www.penguin.cz/~stano/sk/xkbsel.html biso@atlas:~/presdist$
Dato il nome di un pacchetto, è possibile verificare tutti i file che esso installa nel sistema.
biso@atlas:~/presdist$ dpkg --listfiles xkbsel /. /usr /usr/lib /usr/lib/menu /usr/lib/menu/xkbsel /usr/share /usr/share/man /usr/share/man/man5 /usr/share/man/man5/xkbsel.5.gz /usr/share/man/man1 /usr/share/man/man1/xkbsel.1.gz /usr/share/man/man1/xkbsel-aw.1.gz /usr/share/man/man1/xkbseldb.1.gz /usr/share/xkbsel /usr/share/xkbsel/compat /usr/share/xkbsel/compat/group_led /usr/share/xkbsel/keymap /usr/share/xkbsel/keymap/cssk /usr/share/xkbsel/symbols /usr/share/xkbsel/symbols/cssk_dual /usr/share/xkbsel/symbols/cssk_ibm /usr/share/locale /usr/share/locale/sk /usr/share/locale/sk/LC_MESSAGES /usr/share/locale/sk/LC_MESSAGES/xkbsel.mo /usr/share/doc /usr/share/doc/xkbsel /usr/share/doc/xkbsel/protocol.txt.gz /usr/share/doc/xkbsel/ABOUT-NLS.gz /usr/share/doc/xkbsel/copyright /usr/share/doc/xkbsel/AUTHORS /usr/share/doc/xkbsel/TODO /usr/share/doc/xkbsel/README /usr/share/doc/xkbsel/NEWS /usr/share/doc/xkbsel/changelog.Debian.gz /usr/bin /usr/bin/xkbseldb /usr/bin/xkbsel /usr/bin/xkbsel-aw /var /var/lib /var/lib/xkbsel /var/lib/xkbsel/compiled /etc /etc/xkbsel /etc/xkbsel/xkbsel.conf biso@atlas:~/presdist$
Dato il nome di un file, è possibile risalire a ritroso al pacchetto da cui è stato installato.
biso@atlas:~/presdist$ type ls ls is aliased to `ls --color=auto' biso@atlas:~/presdist$ type -P ls /bin/ls biso@atlas:~/presdist$ dpkg --search /bin/ls coreutils: /bin/ls
Quindi si possono ottenere informazioni sullo stato d'installazione del pacchetto.
biso@atlas:~/presdist$ dpkg --list coreutils Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii coreutils 5.0.91-2 The GNU core utilities biso@atlas:~/presdist$
Inoltre è semplice risalire alla descrizione completa e alle dipendenze, comprendendo completamente come il file che avevamo individuato si integra nel sistema.
biso@atlas:~/presdist$ apt-cache show coreutils Package: coreutils Essential: yes Priority: required Section: base Installed-Size: 6732 Maintainer: Michael Stone <mstone@debian.org> Architecture: i386 Version: 5.0.91-2 Replaces: textutils, shellutils, fileutils, stat, debianutils (<= 2.3.1) Provides: textutils, shellutils, fileutils Pre-Depends: libacl1 (>= 2.2.11-1), libattr1 (>= 2.4.4-1), libc6 (>= 2.3.2-1) Conflicts: stat Filename: pool/main/c/coreutils/coreutils_5.0.91-2_i386.deb Size: 2441244 MD5sum: abff427c3109ea078bd21a8d61a95070 Description: The GNU core utilities This package contains the essential basic system utilities. . Specifically, this package includes: basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir dircolors dirname du echo env expand expr factor false fmt fold groups head hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mv nice nl nohup od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir sha1sum seq shred sleep sort split stat stty sum sync tac tail tee test touch tr true tsort tty uname unexpand uniq unlink users vdir wc who whoami yes biso@atlas:~/presdist$
Capita spesso di voler installare su più computer, o reinstallare più volte gli stessi pacchetti. Sarebbe uno spreco abominevole scaricarli ogni volta da Internet, si tratta di download che complessivamente si aggirano sul gigabyte di dati. Una scelta intelligente consiste nell'installare subito su un computer il pacchetto apt-proxy . apt-proxy va configurato modificando il file /etc/apt-proxy/apt-proxy.conf . Eccone un esempio:
# Configuration for apt-proxy APT_PROXY_CACHE=/var/cache/apt-proxy add_backend /debian/ $APT_PROXY_CACHE/debian/ +http://ftp.bononia.it/debian/ http://debian.nettuno.it/debian/ add_backend /debian-non-US/ $APT_PROXY_CACHE/non-US/ +http://ftp.bononia.it/debian-non-US/ http://debian.nettuno.it/debian-non-US/ add_backend /security/ $APT_PROXY_CACHE/security/ +http://security.debian.org/debian-security/ http://non-us.debian.org/debian-security/ CLEANUP_DAYS=14 MAX_VERSIONS=2 BACKEND_FREQ=240 RSYNC_TIMEOUT=30 WGET_TIMEOUT=30
Collateralmente sarà in seguito facile eseguire un backup di /var/cache/apt-proxy/ , ottenendo così un proprio archivio personalizzato di Debian, contenente soltanto i pacchetti generalmente utilizzati.
Dopo l'avvio di apt-proxy, bisognerà opportunamente modificare /etc/apt/sources.list in modo da cercare i pacchetti da installare sul proprio proxy invece che su Internet. In una rete locale dove il server che agisce da proxy abbia hostname aptproxy , la risultante lista potrebbe apparire come la seguente:
deb http://aptproxy:9999/debian/ sarge main contrib non-free deb http://aptproxy:9999/debian-non-US/ sarge/non-US main contrib non-free
La versione stabile di Debian — il cui nome proprio attuale è woody — di solito viene aggiornata solo quando vengono scovati bug o vulnerabilità da eliminare, quindi il software in essa contenuto tende a una naturale obsolescenza.
Testing — ovvero sarge — nonostante il nome poco rassicurante, può essere considerata stabile quanto la media del software in circolazione, ed è adatta per un uso quotidiano. Talvolta però si percepisce un vuoto troppo grande tra il vecchio software della stable e le versioni in rapido sviluppo presenti in testing. Ciò causa alcuni svantaggi da tenere in considerazione:
Debian è sostanzialmente una distribuzione composta da binari precompilati. Capita spesso di aver bisogno di un programma per svolgere un determinato compito. Grazie a Internet, ad apt-cache search e apt-get install, usare un nuovo programma di cui nemmeno si immaginava l'esistenza, aggiornato all'ultimissima versione da un manutentore chissadove nel mondo, spesso è più semplice e rapido che bere un caffè. Favoloso! Questo è probabilmente uno dei maggiori punti di forza di Debian, dotata di oltre diecimila pacchetti, eccezion fatta per quei casi particolari come java, di cui già si era accennato.
Anche se nella stragrande maggioranza dei casi le opzioni scelte dai manutentori del pacchetto ci soddisfano, il software libero non sarebbe degno di tale nome se non potessimo personalizzare quando serve. Compilare dai sorgenti richiede certamente molto più tempo e pazienza, e quando il programma dev'essere integrato in una distribuzione mediamente complicata come Debian, può esserci un sovraccarico di lavoro.
Alcune installazioni sono pensate per inserire il CD nel computer, riavviare, premere N volte <Invio> , eseguire un balletto propiziatorio intorno alla sedia, e avere un sistema funzionante — si spera! Debian non è una di queste, anche se lo sono alcune derivate, come Knoppix. Alcuni automatismi sono presenti, ma talvolta il sistema d'installazione pone domande che richiedono una conoscenza almeno sommaria del funzionamento interno. Si gode di questa scelta non estremista quando bisogna personalizzare, o se qualcosa non funziona, in quanto gli script sono ancora abbastanza umanamente comprensibili da poterli capire e modificare in tempi ragionevoli.
http://www.it.debian.org/
Buon divertimento!