Primi passi con pkgsrc
Da Wiki di NetBSD Italia.
(→Controllare i checksum) |
(→Estrarre il tarball) |
||
Riga 86: | Riga 86: | ||
$ su | $ su | ||
- | # tar -xzf pkgsrc- | + | # tar -xzf pkgsrc-2010Q1.tar.gz -C /usr |
Verrà creata la directory pkgsrc/ in /usr/ e tutti i pacchetti sorgente verranno messi su /usr/pkgsrc/. | Verrà creata la directory pkgsrc/ in /usr/ e tutti i pacchetti sorgente verranno messi su /usr/pkgsrc/. | ||
Ottimo, ora possiamo iniziare ad utilizzare pkgsrc. | Ottimo, ora possiamo iniziare ad utilizzare pkgsrc. | ||
- | |||
= Gestione dei pacchetti = | = Gestione dei pacchetti = |
Versione delle 22:23, 21 giu 2010
Cos' è pkgsrc
pkgsrc [package source] è il sistema di gestione dei pacchetti su NetBSD. Non ci soffermero a descrivere le potenzialità ed il perché utilizzare pkgsrc per il semplice motivo che tutto ciò si può leggere sulla relativa pagina: pkgsrc.
Richieste
L' albero del pkgsrc, contiene tutti i file necessari per le installazioni. Si avrà bisogno di minimo 200MB di spazio libero.
Preparazione
Creare la directory pkgsrc
Questa è una questione di gusti, ma la maggior parte delle persone creano la directory in /usr/pkgsrc/
# mkdir /usr/pkgsrc
Cambiare le proprietà del pkgsrc per l' utente, così da poter aggiornare successivamente attraverso esso.
# chown utente pkgsrc
Ottenere l' albero dei sorgenti di pkgsrc
Ci sono molte strade per avere l' albero del pkgsrc. Per esempio via ftp (illustrato più avanti), cvs, sup or cvsup. Noi raccomandiamo l' uso di csup, un leggerissimo (protocol) client cvsup scritto in C. Per usarlo, dobbiamo prima scaricarlo e poi installarlo. Non avendo l' albero dei sorgenti verrà utilizzato il pachetto binario precompilato.
# ftp ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0/All/csup-20070216.tgz
e poi installarlo con:
# pkg_add csup-20070216.tgz
csup ha bisogno di un file di configurazione, il supfile, dove contiene le informazioni per il sync tra il server e noi. Per favore crea il file pkgsrc-supfile nella tua home directory dove deve contenere:
*default tag=. *default release=cvs *default delete use-rel-suffix *default umask=002 *default host=cvsup.se.netbsd.org *default base=/home/utente *default prefix=/usr netbsd-pkgsrc
base è il punto della tua directory home prefix la directory di destinazione
Per avere il tuo albero pkgsrc in sync, fai:
$ csup pkgsrc-supfile
Per un aggiornamento regolare, una volta al giorno per ogni giorno, usa cron.
Creare il WRKOBJDIR
Volendo, si può convogliare tutto il "compilato" in una directory comune fuori dal pkgsrc definendo la variabile WRKOBJDIR in /etc/mk.conf aggiungendo:
WRKOBJDIR=/usr/work
e creare la directory
# mkdir /usr/work
Creare la DISTDIR
La stessa cosa si può fare con la directory distfiles, posizionando anch' essa al di fuori del pkgsrc. aggiungere la variabile DISTDIR nel /etc/mk.conf
DISTDIR=/usr/distfiles
e crearne la directory.
# mkdir /usr/distfiles
Ottenere pkgsrc via FTP
Il metodo più semplice per ottenerlo è scaricarsi il tarball Ora si può decidere tra ramo stabile e ramo current
Questo è il tar file per il ramo stabile 2010Q1
$ ftp ftp://ftp.netbsd.org/pub/pkgsrc/pkgsrc-2010Q1/pkgsrc-2010Q1.tar.gz
Mentre per scaricare il ramo current:
$ ftp ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz
Attenzione, il ramo current è autogenerato giornalmente!
Controllare i checksum
Prima di procedere con l'estrazione del tarball dobbiamo accertarci che i checksum combacino:
$ ftp ftp://ftp.netbsd.org/pub/pkgsrc/pkgsrc-2010Q1/pkgsrc-2010Q1.tar.gz.MD5 $ ftp ftp://ftp.netbsd.org/pub/pkgsrc/pkgsrc-2010Q1/pkgsrc-2010Q1.tar.gz.SHA1
Ed ora tramite cksum(1) e cmp(1) controliamo che tutto combaci:
$ md5 pkgsrc-2010Q1.tar.gz > MIOMD5 $ sha1 pkgsrc-2010Q1.tar.gz > MIOSHA1 $ cmp MIOMD5 pkgsrc-2010Q1.tar.gz.MD5 $ cmp MIOSHA1 pkgsrc-2010Q1.tar.gz.SHA1
Se cmp(1) non produce output, come nell'esempio precedente, allora possiamo continuare con l'estrazione, altrimenti si consiglia caldamente di riscaricare il tarball.
Estrarre il tarball
Ora che abbiamo il tarball, dobbiamo quindi estrarlo:
$ su # tar -xzf pkgsrc-2010Q1.tar.gz -C /usr
Verrà creata la directory pkgsrc/ in /usr/ e tutti i pacchetti sorgente verranno messi su /usr/pkgsrc/.
Ottimo, ora possiamo iniziare ad utilizzare pkgsrc.
Gestione dei pacchetti
Installare i pacchetti
per installare i pacchetti, abbiamo bisogno di essere root.
$ su
posizionarsi sulla directory di pkgsrc, scegliere la categoria e il pacchetto che si vuole installare.
# cd /usr/pkgsrc/editors/nano
per installare il pacchetto scelto digitare:
# make install
pkgsrc risolve tutte le eventuali dipendenze, ottiene dai mirror ufficiali di nano il tarball di nano (distfile), e applica eventuali patch. Il funzionamento è quindi semplice, ed anche il suo utilizzo. successivamente puliamo i risultati della compilazione con
# make clean
se il pacchetto ha delle dipendenze, puliamo anche quelle!
# make clean-depends
Volendo si può fare tutto su una sola linea.
# make install clean clean-depends
La directory /usr/pkgsrc/distfiles contiene tutti i download dei software installati, dopo la sua installazione si potrebbe avere la necessità di ripulirla per liberare più spazio. Vediamo come procedere, si possono cancellare i file a mano, oppure:
# make distclean
Questo è tutto. Semplice!
Rimozione di pacchetti
Abbiamo osservato come installare pacchetti, ora tratteremo la rimozione, rimuoverli è semplicissimo, ad esempio per rimuovere l'editor nano installato all'inizio:
# cd /usr/pkgsrc/editors/nano # make deinstall
Un altra alternativa che è usabile anche per il software binario (quindi un alternativa universale) è usare pkg_delete:
# pkg_delete nano
Altra opzione utile di pkg_delete è che è in grado di togliere tutte le dipendenze (utilizzate e non) grazie all'opzione -r, quindi:
# pkg_delete -r nano
Se invece si ha intenzione di rimuovere solo le dipendenze che rimangono orfane (cioè che non saranno più utilizzate da altri pacchetti) basta utilizzare l'opzione -R, ad esempio:
# pkg_delete -R mplayer
Comunque la lettura di pkg_delete(1) è consigliata.
On-line help
Besides The pkgsrc Guide there is also a built-in on-line help system.
# make help
gives you the usage information. This requires you to already know the name of the target or variable you want more info on (just like man does).
Most targets and variable names are documented, but not all are.
Utilizzo
Prima di iniziare
Prima di iniziare ad installare i pacchetti da pkgsrc è saggio eseguire download-vulnerability-list(1), se non è disponibile lo potete installare tramite pkgtools/pkg_install (in NetBSD 4.0 non è disponibile):
# cd /usr/pkgsrc/pkgtools/pkg_install # make install # download-vulnerability-list [...]
In questo modo se installeremo software vulnerabile saremo avvertiti.
Ottenere una lista dei pacchetti vulnerabili
Per conoscere tutti i pacchetti vulnerabili nel sistema basta un semplice:
# audit-packages
Per maggiori informazioni vi prego di consultare audit-packages(1).
Ottenere una descrizione di un pacchetto
Curiosando però possiamo vedere che ci sono altri file nella directory di ogni pacchetto. Uno tra i file più importanti per l'utente che sta installando un certo pacchetto e non sa che cosa fa quel software è il file DESCR. Questo file permette di ottenere una DESCRizione del pacchetto.
# cd /usr/pkgsrc/editors/nvi # cat DESCR Nvi is an implementation of the ex/vi text editor originally distributed as part of the Fourth Berkeley Software Distribution (4BSD), by the University of California, Berkeley. The source code to nvi is freely available, and nvi may be freely redistributed.
Ottenere informazione riguardo alla licenza e accettarla o no
Non tutti i pacchetti sono sotto licenze BSD o GPL. Ci sono software con altre licenze di Software Libero o Open Source in pkgsrc. Di norma con le licenze che soddisfano le 4 libertà o licenze approvato dall'OSI non avremo problemi. Con licenze invece che non soddisfano queste 4 libertà del software libero avremo problemi, vediamo subito un esempio pratico, con multimedia/win32-codecs, che è un pacchetto che contiene vari codec (non indispensabili) per il video player MPlayer:
# cd /usr/pkgsrc/multimedia/win32-codecs # make install [...] ERROR: This package has set PKG_FAIL_REASON: ERROR: win32-codecs-061022 has an unacceptable license: mplayer-codec-license. ERROR: To view the license, enter "/usr/bin/make show-license". ERROR: To indicate acceptance, add this line to /etc/mk.conf: ERROR: ACCEPTABLE_LICENSES+=mplayer-codec-license [...]
Ops, da come si può osservare abbiamo una licenza che non è soddisfatta, pkgsrc inoltre ci dice anche come soddisfare questo tipo di problemi brevemente, risolviamo subito il problema leggendo ed eventualmente accettando la licenza.
# make show-license [...] There is no license to copy granted for these codecs, and the copyright ownership is unclear. [...]
Mannaggia, la nostra libertà è incerta come questa licenza. Se decidessimo di accettare basta editare il file /etc/mk.conf aggiungendo sull'apposita variabile ACCEPTABLE_LICENSES la licenza che vogliamo accettare con un editor puro:
# vi /etc/mk.conf [...] # licenses ACCEPTABLE_LICENSES += openmotif-license [...]
Aggiungiamo quindi la licenza dei codec:
[...] # licenses ACCEPTABLE_LICENSES += openmotif-license mplayer-codec-license [...]
Ricordo comunque che MPlayer funziona benissimo anche senza questi codec.
Ottenere una lista delle dipendenze di un pacchetto
Molte volte un pacchetto per essere installato richiede altri pacchetti, che sono appunto delle dipendenze. Queste dipendenze in alcuni casi sono delle librerie, in altri appositi moduli per un linguaggio di programmazione, altre volte è un interprete e così via. Vediamo ora come vedere le dipendenze di un pacchetto prendendo come riferimento MPlayer:
# cd /usr/pkgsrc/multimedia/mplayer # make show-depends realplayer-codecs>=8nb2:../../multimedia/realplayer-codecs mplayer-share>=1.0rc9:../../multimedia/mplayer-share cdparanoia>=3.0.9.8nb5:../../audio/cdparanoia libdv>=0.104nb2:../../multimedia/libdv [...]
Da come si può osservare MPlayer dipende da diversi pacchetti, ma non ci dobbiamo assolutamente preoccupare, pkgsrc risolve qualsiasi tipo di dipendenza.
Selezionare un opzione di compilazione di un pacchetto
Molti pacchetti in pkgsrc hanno diverse opzioni, ad esempio possiamo abilitare o meno il supporto esound su MPlayer, o installare Mplayer con il supporto sdl e così via. Senza approfondire molto vediamo come bisogna agire in questi casi:
# make show-options Any of the following general options may be selected: aalib Enable aalib support. arts Use the aRts audio daemon. cdparanoia Use cdparanoia to rip CDDA media. [...]
Ora vogliamo calibrare bene le opzioni di MPlayer in modo tale che per ogni installazione abbiamo soltanto i supporti che vogliamo e altri supporti non abilitati di default che vogliamo. Senza ricordarlo il file che dovremo editare è /etc/mk.conf, infatti esso contiene tutte le informazioni:
# grep PKG_OPTIONS /etc/mk.conf # PKG_OPTIONS.package PKG_OPTIONS.mplayer += -mplayer-win32 -arts -dts -esound -nas PKG_OPTIONS.w3m += w3m-unicode w3m-image-imlib2 PKG_OPTIONS.SDL += -arts -esound -nas
Da questo esempio si può osservare per disabilitare un supporto basta un -opzione (ad esempio -mplayer-win32), mentre per abilitarlo basta un semplice opzione (ad esempio w3m-unicode). Da notare è che la sintassi è PKG_OPTIONS.pacchetto += opzione0 -opzione1 [...], va messo il += perché altrimenti le opzioni di default vengono ignorate e questo nella maggior parte dei casi è fastidioso.
Selezionare opzioni per tutti i pacchetti
Nell'esempio affrontato poco fa si può osservare che vi sono diverse ripetizioni, tutto ciò potrebbe essere noioso... Per fortuna che c'è PKG_DEFAULT_OPTIONS:
[...] PKG_DEFAULT_OPTIONS += -arts -esound -nas PKG_OPTIONS.mplayer += -mplayer-win32 -dts PKG_OPTIONS.w3m += w3m-unicode w3m-image-imlib2 [...]
Da come si può osservare in questo modo abbiamo anche eliminato le opzioni di SDL, infatti combaciano tutte con PKG_DEFAULT_OPTIONS. Se qualche pacchetto (ad esempio nel precedente esempio www/w3m) non ha quelle opzioni (e/o non usa il framework options.mk) quelle opzioni verranno semplicemente ignorate.
Conclusioni
In questo semplice how to si è osservato come installare il framework pkgsrc e inoltre dei semplici utilizzi e delle semplici configurazioni. Già con poche installazioni di pacchetti si potrà gustare la potenza, semplicità ed eleganza di pkgsrc. Per ulteriori (e doverosi) approfondimenti si rimanda a The pkgsrc guide.
Buon divertimento con pkgsrc! :-)