Le sezioni seguenti forniscono le istruzioni basilari sull'uso della collezione dei port per installare e rimuovere programmi dal tuo sistema.
Prima che tu possa installare i port, devi procurarti la collezione
dei port-che essenzialmente è un set di
Makefiles
, patch, e file di descrizione collocati
in /usr/ports
.
Durante l'installazione del tuo sistema FreeBSD, sysinstall ti ha chiesto se volevi installare la collezione dei port. Se hai rifiutato, puoi seguire queste istruzioni per ottenerla:
Questo metodo richiede ancora l'uso di sysinstall per installare manualmente la collezione dei port.
Esegui da root
sysinstall
(/stand/sysinstall
nelle versioni di FreeBSD
precedenti alla 5.2) come mostrato qui sotto:
#
sysinstall
Scorri verso il basso e seleziona Invio.
, premiScorri verso il basso e seleziona Invio.
, premiScorri verso il basso fino a Spazio.
, premiScorri verso l'alto fino a Invio.
, premiSeleziona il modo di installazione desiderato, come CDROM, FTP, e così via.
Scorri verso l'alto fino a Invio.
e premiPremi X per uscire da sysinstall.
Un altro metodo per ottenere la tua collezione dei port e per
mantenerla aggiornata consiste nell'utilizzo di
CVSup. Dai un'occhiata al file di
CVSup riguardante i port,
/usr/share/examples/cvsup/ports-supfile
.
Guarda Usare CVSup (Sezione A.5, «Uso di CVSup») per maggiori informazioni sull'uso di
CVSup e del file menzionato.
Questo è un rapido metodo che utilizza CVSup per ottenere la collezione dei port. Se vuoi mantenere il tuo albero dei port aggiornato, o imparare di più su CVSup, leggi la sezione menzionata in precedenza.
Installa il package net/cvsup-without-gui:
#
pkg_add -r cvsup-without-gui
Guarda Installazione di CVSup (Sezione A.5.2, «Installazione») per maggiori dettagli.
Esegui cvsup
:
#
cvsup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
Cambia cvsup.FreeBSD.org
in un
server CVSup vicino a te. Guarda Mirror CVSup (Sezione A.5.7, «Siti CVSup») per una lista completa dei siti
mirror.
Qualcuno potrebbe voler usare il suo
ports-supfile
, per esempio per evitare di
passare il server CVSup su linea di
comando.
In questo caso, da root
, copia
/usr/share/examples/cvsup/ports-supfile
in una nuova locazione, come
/root
o la tua directory home.
Modifica ports-supfile
.
Cambia
CHANGE_THIS.FreeBSD.org
in un server CVSup vicino a
te. Guarda Mirror
CVSup (Sezione A.5.7, «Siti CVSup») per una
lista completa di siti mirror.
E ora esegui cvsup
, in questo
modo:
#
cvsup -L 2 /root/ports-supfile
Poco dopo aver eseguito il comando cvsup(1) verranno scaricate e applicate alla tua collezione dei port tutte le modifiche recenti, anche se di fatto i port già compilati sul tuo sistema non verranno aggiornati.
La prima cosa che dovrebbe essere chiara quando si ha a che fare con la collezione dei port è l'effettivo significato di «scheletro» di un port. Brevemente, lo scheletro di un port è un insieme minimo di file che dice al tuo sistema FreeBSD come compilare ed installare un programma in modo pulito. Ogni scheletro di un port include:
Un Makefile
. Il
Makefile
contiene varie espressioni che
specificano come l'applicazione deve essere compilata e dove
deve essere installata sul tuo sistema.
Un file distinfo
. Questo file contiene
informazioni sui file che devono essere scaricati per la
compilazione del port e sui loro checksum (somme di controllo),
utilizzati per verificare che quei file non siano stati corrotti
durante il download.
Una directory files
. Questa directory
contiene le patch utilizzate per la compilazione e per
l'installazione del programma sul tuo sistema FreeBSD. Le patch
sono sostanzialmente piccoli file che specificano come modificare
alcuni file. Sono in puro formato di testo, e in modo grossolano
dicono «Rimuovi la riga 10» o
«Cambia la riga 26 in ...». Le patch sono anche
conosciute con il termine «diff» poichè sono
generate dal programma diff(1).
Questa directory può anche contenere altri file utilizzati per la costruzione del port.
Un file pkg-descr
. Questo file contiene
una descrizione del programma più dettagliata, spesso su
più righe di testo.
Un file pkg-plist
. Questo file contiene
l'elenco di tutti i file che saranno installati dal port.
Dice anche al sistema dei port quale file rimuovere durante la
disinstallazione.
Alcuni port hanno altri file, come
pkg-message
. Il sistema dei port li usa
per affrontare speciali situazioni. Se vuoi maggiori dettagli
su questi file, e sui port in generale, leggi attentamente il
Manuale del Porter
di FreeBSD.
Il port include istruzioni su come compilare il codice sorgente, ma non include il codice sorgente stesso. Devi prendere il codice sorgente da un CDROM o da Internet. L'autore del codice sorgente può distribuirlo come desidera. Quasi sempre è un file di archivio tar compresso con gzip, ma potrebbe essere stato compresso con un altro tool o perfino potrebbe essere non compresso. Il codice sorgente del programma, in qualsiasi forma sia, è chiamato con il termine «distfile». I due metodi per installare un port di FreeBSD sono descritti qui sotto.
Devi essere root
per installare i
port.
Prima di installare qualche port, dovresti assicurarti di avere
l'albero della collezione dei port aggiornato e dovresti verificare
http://vuxml.freebsd.org/
per eventuali problemi di
sicurezza relativi alla tua applicazione.
Una verifica delle vulnerabilità di sicurezza può
essere fatta in modo automatico con
portaudit prima dell'installazione di nuove
applicazioni. Questo strumento può essere trovato nella
collezione dei port (security/portaudit). Esegui
portaudit -F
prima di installare un nuovo port,
per aggiornare la base di dati delle vulnerabilità. Durante
la verifica giornaliera del sistema verrà fatto un controllo
di integrità e un aggiornamento della base di dati delle
vulnerabilità. Per maggiori informazioni leggi le pagine man
portaudit(1) e periodic(8).
Le immagini ufficiali su CDROM del progetto FreeBSD non includono più i distfile. Occupano molto spazio che è meglio utilizzato per i package precompilati. I prodotti su CDROM come il FreeBSD PowerPak includono i distfile, e puoi ordinare questi set da un venditore come FreeBSD Mall. Questa sezione presuppone che tu abbia un simile set di CDROM di FreeBSD.
Metti il tuo CDROM di FreeBSD nell'apposito lettore. Montalo
su /cdrom
. (Se usi un punto di mount differente,
setta la variabile make CD_MOUNTPTS
.) Per prima cosa,
vai nella directory del port che vuoi installare:
#
cd /usr/ports/sysutils/lsof
Una volta dentro la directory lsof
,
vedrai lo scheletro del port. Il prossimo passo riguarda la
compilazione, o «costruzione», del port. Questo viene
fatto semplicemente digitando make
al prompt. Una
volta che hai fatto questo, dovresti vedere qualcosa simile a quanto
segue:
#
make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for lsof-4.57 ... [l'output dell'estrazione è stato tagliato] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [l'output della configurazione è stato tagliato] ... ===> Building for lsof-4.57 ... [l'output della compilazione è stato tagliato] ...#
Nota che una volta terminata la compilazione ritornerai al tuo
prompt. Il prossimo passo riguarda l'installazione del
port. Per installarlo, devi semplicemente affiancare una parola al
comando make
, e questa parola è
install
:
#
make install
===> Installing for lsof-4.57 ... [l'output dell'installazione è stato tagliato] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: I binari di questo port richiedono l'esecuzione con alti privilegi.#
Quando ritornerai al tuo prompt, dovresti essere in grado di
eseguire l'applicazione che hai appena installato. Siccome
lsof
è un programma che lavora con alti
privilegi, viene mostrato un avvertimento di sicurezza. Durante la
compilazione e l'installazione dei port, dovresti fare attenzione ad
ogni avvertimento che appare.
Potresti anche evitare un passaggio lanciando solamente
make install
invece dei due passi separati
make
e make install
.
Alcune shell mantengono una cache dei comandi che sono
disponibili nelle directory elencate nella variabile d'ambiente
PATH
, per velocizzare le operazioni di ricerca dei
file eseguibili di questi comandi. Se stai usando una di queste
shell, potresti dover usare il comando rehash
dopo l'installazione di un port, prima di poter usare il nuovo
comando. Questo comando funzionerà per le shell come
tcsh
. Usa il comando
hash -r
per le shell come
sh
o shells/bash. Per maggiori
informazioni guarda la documentazione della tua shell.
Per cortesia sii consapevole che le licenze di alcuni port non permettono l'inclusione degli stessi sul CDROM. Questa limitazione potrebbe essere dovuta dalla necessità di compilare un form di registrazione prima di scaricare il software, o perché la ridistribuzione non è permessa, o per altre ragioni. Se desideri installare un port non incluso nel CDROM, dovrai essere collegato ad Internet per farlo (vedi la prossima sezione).
Questa sezione presuppone che tu abbia una connessione ad Internet
funzionante. Se non ce l'hai, dovrai utilizzare l'installazione da CDROM, oppure dovrai
copiare manualmente il distfile in
/usr/ports/distfiles
.
L'installazione di un port da Internet viene fatta nello stesso modo con cui viene fatta l'installazione da CDROM. L'unica differenza tra i due modi è che il distfile del port viene preso da Internet invece che dal CDROM.
I passi richiesti sono gli stessi:
#
make install
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100% 439860 bytes transferred in 18.0 seconds (23.90 kBps) ===> Extracting for lsof-4.57 ... [l'output dell'estrazione è stato tagliato] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [l'output della configurazione è stato tagliato] ... ===> Building for lsof-4.57 ... [l'output della compilazione è stato tagliato] ... ===> Installing for lsof-4.57 ... [l'output dell'installazione è stato tagliato] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: I binari di questo port richiedono l'esecuzione con alti privilegi.#
Come puoi vedere, la sola differenza sta nella riga che dice da dove il sistema sta ottenendo il distfile del port.
Il sistema dei port usa fetch(1) per scaricare i file,
il quale rispetta varie variabili d'ambiente, incluse
FTP_PASSIVE_MODE
, FTP_PROXY
,
e FTP_PASSWORD
. Puoi aver bisogno di settarne
qualcuna se sei dietro a un firewall, o se usi un proxy FTP/HTTP.
Guarda fetch(3) per la lista completa.
Gli utenti che non possono essere sempre connessi ad Internet
possono usare l'opzione make
fetch
. Esegui tale comando in
cima alla directory (/usr/ports
) e i file
richiesti saranno scaricati. Questo comando funziona anche nelle
categorie di livello inferiore, per esempio:
/usr/ports/net
. Nota che se un port dipende
da una libreria o da altri port, quel comando non
preleverà anche i distfile di questi port. Sostituisci
fetch
con
fetch-recursive
se vuoi prelevare anche
tutte le dipendenze di un port.
Puoi compilare tutti i port di una categoria o perfino tutti
i port eseguendo make
in cima alla directory,
in modo simile a quanto fatto per il suddetto metodo make
fetch
. Comunque, questo è
rischioso poichè alcuni port non possono coesistere. Inoltre,
alcuni port potrebbero richiedere di installare due diversi file con
lo stesso nome.
In alcuni casi rari, gli utenti potrebbero voler acquisire i
tarball da un sito diverso dal MASTER_SITES
(la locazione di default dove i file sono scaricati). Puoi
sovrascrivere l'opzione MASTER_SITES
con il comando
seguente:
#
cd /usr/ports/directory
#
make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
In questo esempio abbiamo settato MASTER_SITES
a ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/
.
Alcuni port permettono (o perfino richiedono) l'impostazione di alcune opzioni di compilazione che abilitano/disabilitano parti dell'applicazione opzionali, settaggi di sicurezza, e altre personalizzazioni. Alcune applicazioni che mi vengono in mente sono www/mozilla, security/gpgme, e mail/sylpheed-claws. Quando sono disponibili simili opzioni viene visualizzato un messaggio.
Qualche volta è utile (o necessario) utilizzare
directory per i distfile e i port diverse da quelle di default. Le
variabili PORTSDIR
e PREFIX
possono sovrascrivere le directory di default. Per esempio:
#
make PORTSDIR=/usr/home/example/ports install
compilerà il port in
/usr/home/example/ports
e installerà ogni
cosa sotto /usr/local
.
#
make PREFIX=/usr/home/example/local install
compilerà in /usr/ports
ed
installerà in
/usr/home/example/local
.
E naturalmente,
#
make PORTSDIR=../ports PREFIX=../local install
è una combinazione dei due (è troppo lungo da scrivere per intero su questa pagina, ma dovrebbe darti lo stesso un'idea generale).
Alternativamente, queste variabili potrebbero essere settate nel tuo ambiente. Leggi la pagina man della tua shell per sapere come fare.
Alcuni port che usano imake
(una parte dell'X
Window System) non funzionano bene con
PREFIX
, e si ostinano ad installarsi sotto
/usr/X11R6
. In modo analogo, alcuni port di Perl
ignorano PREFIX
e si installano nell'albero del
Perl. Far rispettare a questi port PREFIX
è
spesso un lavoro difficile o persino impossibile.
Ora che sai come installare i port, probabilmente ti chiederai come
rimuoverli, caso mai ne installassi uno e successivamente ti accorgessi
che hai installato il port sbagliato. Rimuoveremo il port utilizzato
nel nostro esempio precedente (che era lsof
se non
sei stato attento). Come con l'installazione dei port, la prima cosa
che devi fare è andare nella directory del port,
/usr/ports/sysutils/lsof
. Dopo aver cambiato
directory, sei pronto per disinstallare lsof
.
Questo viene fatto con il comando
make deinstall
:
#
cd /usr/ports/sysutils/lsof
#
make deinstall
===> Deinstalling for lsof-4.57
È stato abbastanza facile. In questo modo hai rimosso
lsof
dal tuo sistema. Se volessi reinstallarlo, puoi
farlo lanciando make reinstall
dalla directory
/usr/ports/sysutils/lsof
.
Le sequenze make deinstall
e make
reinstall
non funzionano più una volta che hai dato
un make clean
. Se vuoi disinstallare un port dopo un
make clean
, usa pkg_delete(1) come
discusso nella sezione del Manuale
riguardante i Package.
Usando la collezione dei port con il passare del tempo puoi
facilmente esaurire lo spazio del tuo disco. Infatti compilando ed
installando software con i port, l'albero dei port tende ad aumentare in
dimensioni, quindi dovresti sempre ricordarti di ripulire le
directory temporanee work
usando
il comando make clean
. Questo
rimuoverà la directory work
dopo che un port è stato compilato ed installato. Inoltre puoi
rimuovere i file sorgenti della distribuzione dalla
directory distfiles
, e rimuovere
i port installati che non sono più utilizzati.
Alcuni utenti limitano le categorie dei port disponibili mettendo un
elemento nel file refuse
. In questo modo, quando
viene eseguita l'applicazione CVSup, questa non
scaricherà i file delle categorie specificate nel file
refuse
. Maggiori informazioni riguardo il file
refuse
possono essere trovate nella Sezione A.5.3.1, «Il File refuse
».
Dopo che hai aggiornato la tua collezione dei port, prima di
tentare di aggiornare un port, dovresti verificare il file
/usr/ports/UPDATING
. Questo file riporta alcuni
problemi che gli utenti potrebbero incontrare durante l'aggiornamento
di un port con le relative soluzioni.
Mantenere i tuoi port aggiornati può essere un lavoro noioso.
Per esempio, per aggiornare dovresti andare nella directory del port,
compilare il port, disinstallare il vecchio port, installare quello
nuovo, e quindi ripulire la directory di lavoro. Immagina di fare
tutto ciò per cinque port, noioso vero? Questo era uno dei
maggiori problemi per gli amministratori di sistema, e ora abbiamo
strumenti che fanno questo lavoro per noi. Per esempio l'utility
sysutils/portupgrade fa tutto
questo! Installalo come qualsiasi altro port, usando il comando
make install clean
.
Ora crea un database con il comando pkgdb -F
.
Verrà letta la lista dei port installati e verrà creato
un file database nella directory /var/db/pkg
.
D'ora in avanti, quando esegui portupgrade -a
, questo
leggerà il database e il file dei port
INDEX
. Infine,
portupgrade incomincerà a scaricare,
compilare, effettuare backup, installare, e ripulire i port che devono
essere aggiornati. portupgrade è
fornito di molte opzioni a seconda dei casi di utilizzo, tra i quali
uno è particolarmente importante.
Se vuoi aggiornare solo una determinata applicazione, e non il
database completo, usa portupgrade
pkgname
, con l'opzione
-r
se portupgrade dovrebbe
agire anche su tutti i package che dipendono dal dato package, o con
l'opzione -R
per agire su tutti i package richiesti
dal dato package.
Per usare i package invece dei port nell'installazione, usa l'opzione
-P
. Con questa opzione
portupgrade cerca nelle directory locali
elencate in PKG_PATH
, o, se non sono stati trovati
localmente, scarica i package da un sito. Se i package non sono stati
trovati localmente ne è stato possibile scaricarli in remoto,
portupgrade userà i port.
Per impedire l'uso dei port, usa l'opzione -PP
.
Per scaricare solo i distfile (o i package, se è stata specificata
l'opzione -P
) senza compilare o installare nulla, usa l'opzione
-F
. Per maggiori informazioni guarda la pagina man di
portupgrade(1).
È importante aggiornare in modo regolare il database dei
package usando il comando pkgdb -F
per rattoppare
eventuali incoerenze, specialmente quando
portupgrade te lo chiede. Non interrompere
portupgrade mentre sta aggiornando il
database dei package, poichè ciò comporterà
un database inconsistente.
Esistono altre utility che fanno simili lavori, controlla la
directory ports/sysutils
e guarda se ti viene
qualche idea.
Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Per domande su FreeBSD, leggi la
documentazione prima di contattare
<questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a
<doc@FreeBSD.org>.