3.44. Come aggiorno i ports/packages installati?

Non è affatto utile mantenere vecchie versioni di programmi, in quanto solitamente le nuove contengono molti bugfixes. Per aggiornare i pacchetti installati, bisogna prima di tutto eseguire l'update dell'albero dei ports come spiegato in "Come posso aggiornare il sistema?" (Sezione 3.6). Fatto ciò si aprono due strade: possiamo utilizzare le utilità incluse nel sistema, oppure installare sysutils/portupgrade. Scelta una di queste due vie, bisogna capire quali pacchetti sono da aggiornare. Nel sistema base è compreso il programma pkg_version(1) mentre la suite portupgrade comprende anche un comando portversion. Per conoscere quali pacchetti aggiornare si usa

# pkg_version |grep \
   
oppure
# portversion -l "<"
   
Ora che sappiamo quali pacchetti aggiornare, vediamo come procedere all'aggiornamento in entrambi i modi, con portupgrade e con le utilità del sistema base.

3.44.1. Aggiornare i ports con portupgrade

Per aggiornare un singolo pacchetto con portupgrade, è sufficiente un

# portupgrade wmnd
     
Il port in questione verrà scaricato, compilato, ed installato. In caso di errore in una qualsiasi di queste fasi, portupgrade ripristinerà la versione precedente di cui aveva fatto un backup. È possibile istruire portupgrade ad usate i packages specificando le opzioni -PP o -P. La differenza tra le due è che -PP utilizza solo i packages, mentre -P ricorre ai packages solo se è possibile, ossia solo se il package viene trovato in locale o sul repository remoto.

portupgrade basa il suo funzionamento sul database dei package /var/db/pkg, e per evitare inconsistenze nel database stesso, è utile sistemarlo prima di utilizzare portupgrade. Quest'operazione si esegue nel seguente modo:

# pkgdb -F
     
Può risultare utile per il buon funzionamento di portupgrade anche mantenere aggiornato il database dei ports con
# portsdb -uU
     
Questo comando creerà il file /usr/ports/INDEX.db, utilizzato da alcuni programmi forniti con portupgrade.

Si può ordinare a portupgrade di passare uno o più argomenti a make(1), se stiamo utilizzando i ports, tramite l'opzione -m, come in

# portupgrade mplayer* -m WITH_GUI=yes 
     
Molte altre opzioni, come -a per aggiornare tutti i pacchetti e -r per aggiornare i pacchetti che dipendono da quello specificato, sono disponibile nella man page di portupgrade.

3.44.2. Aggiornare i ports con le utility pkg_*

Il secondo modo per aggiornare i pacchetti è molto facile: si rimuove il pacchetto in questione e tutti i pacchetti da cui questo dipende e che da questo dipende e lo si reinstalla. Può non sembrare una cosa sensata, eppure non ci si può fidare completamente di portupgrade, in quanto, seppur la situazione sia molto migliorata rispetto al passato, si verificano ancora alcuni casi di errore da parte di questa applicazione.