Il y a trois étapes dans la mise ? jour du famp: Les deux premières étapes seront cronées, alors que la dernière se fera manuellement afin de pouvoir intervenir en cas de bug.
Ensuite nous verrons comment installer une application via portinstall

mises ? jour système

freebsd-update

freebsd-update est l'utilitaire système permettant de gérer les mises ? jour du système : 

[root]# cd /usr/ports/security/freebsd-update
[root]# make install && make clean

n'oubliez pas de copier /usr/local/etc/freebsd-update.conf.sample en /usr/local/etc/freebsd-update.conf.

[root]# cp /usr/local/etc/freebsd-update.conf.sample /usr/local/etc/freebsd-update.conf

freebsd-update, est autonome, c'est ? dire qu'il suffit de le lancer pour savoir s'il y a ou non des mises ? jour système disponibles. La commande suivante permet d'afficher les mises ? jour systèmes ? faire.

freebsd-update fetch

N.B. si aucune mise ? jour système n'a encore été mise ? disposition, le répertoire correspondant ? la version de FreeBSD n'est paut être pas encore créée sur
http://update.daemonology.net/ ce qui renverra un message d'erreur.

La commande suivante permet d'effectuer les mises ? jour listées précédemment

freebsd-update install

mises ? jour des ports

cvsup

L'utilitaire permettant la mise ? jour de l'arborescence des ports est cvsup. Le présent CookBook a pris le partie de ne pas installer d'interface graphique, donc c'est cvsup-without-gui qui sera installé (au lieu de cvsup dans un environnement avec interface graphique)

cd /usr/ports/net/cvsup-without-gui/
make install && make clean

cvsup prend en paramètre un fichier de configuration lui indiquant notamment le serveur de référence pour aller chercher les dernières mises ? jour des ports FreeBSD. Un fichier d'exemple de configuration pour cvsup a été créée pendant l'installation

cp /usr/share/examples/cvsup/ports-supfile /usr/local/etc/cvsup.conf

le fichier suivant suffit 

*default host=cvsup.fr.freebsd.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_6
*default delete use-rel-suffix
*default compress
src-all

Comme les applications installées via les ports, sont toutes stockées dans /usr/local par défaut, centraliser leur fichier de conf dans /usr/local/etc me paraît plutot une bonne idée.

fastest_cvsup

permet de trouver les serveurs CVSup les plus rapide

cd /usr/ports/sysutils/fastest_cvsup/
make install && make clean

portsnap

permet une mise ? jour plus rapide et plus sécurisé de l'arborescence des ports que cvsup. De plus il est plus performant pour la géénration de l'INDEX que cvsup.
A partir de la version 6 de freebsd portsnap fais parti des commandes de bases, il n'y a donc plus ? l'installer.
il faut alors éditer le fichier de configuration de portsnap

vi /etc/portsnap.conf

voici le fichier de conf que j'utilise (j'essaie de grouper au maximun dans la partition /usr, vu mes choix d'installation)

WORKDIR=/usr/portsnap
PORTSDIR=/usr/ports
SERVERNAME=portsnap.FreeBSD.org
KEYPRINT=9b5feee6d69f170e3dd0a2c8e469ddbd64f13f978f2f3aede40c98633216c330

Sous réserve que /usr/portsnap existe avec les bons droits d'écriture.
avant d'utiliser portsnap il faut taper la commande

portsnap fetch
portsnap extract

script de mise ? jour des ports

#!/usr/local/bin/bash

# Sur une base écrite par Laruiss
# Modification de R1-Bzh
# erwane@phea.fr
# Ce script est ? mettre en crontab SANS '> /dev/null'.
# Le résultat vous sera renvoyé par mail
#
# Requirements
# - cvsup (or cvsup-without-gui)
# - portsnap
# - fastest_cvsup

# Configuration
# cvsup
CVSUP=/usr/local/bin/cvsup
CVSUP_TAGS="-g -L 1 /usr/local/etc/cvsup.conf"
# Utilisation de fastest_cvsup pour trouver le serveur cvsup le plus  "rapide"
# Si vous ne souhaitez pas utiliser fastest_cvsup il suffit de  commenter cette
ligne
FASTEST_CVSUP="-h `/usr/local/bin/fastest_cvsup -c fr -Q`"
# Portsnap
PORTSNAP=/usr/sbin/portsnap
PORTSNAP_TAGS="-f /etc/portsnap.conf"

# Update world sources

echo -en "        update world tree\n"
echo -en "       -------------------\n"
$CVSUP $CVSUP_TAGS $FASTEST_CVSUP

echo -en "\n        update ports tree\n"
echo -en "       -------------------\n"
$PORTSNAP $PORTSNAP_TAGS cron
$PORTSNAP $PORTSNAP_TAGS update
/usr/local/sbin/portsdb -u

# Outdated ports
#

echo -en "\n        outdated ports\n"
echo -en "       ----------------\n"
/usr/sbin/pkg_version -vL =

mise ? jour des applications installées

portupgrade

Maintenant que l'arborescence des ports est ? jour, on peut installer n'importe quelle application en étant sûr qu'on a bien ? faire ? la version courante ;-)

Si vous avez bien compris le rôle de cvsup, maintenir votre FAMP ? jour doit vous paraître encore un peu compliqué, en effet cela implique d'être au courant de chaque nouvelle version pour chaque application installé ...
FreeBSD propose un outil système convivial permettant d'éviter cette veille.
portupgrade est l'utilistaire système permettant de maintenir ? jour les applications déj? installées 

[root]# cd /usr/ports/sysutils/portupgrade
[root]# make install && make clean

Portupgrade compare les versions des logiciels installés par rapport aux versions disponibles après un CVSup. 
La commande suivante met ? jour la base de données des ports

portsdb -Uu

Si vous avez un jour un problème avec cette commande essayez

[root]# pkgdb -fu

Si le porblème persiste essayez

[root]# cd /usr/ports && make fetchindex

La commande suivante liste toutes les applications installée nécessitant une mise ? jour

pkg_version -vL =

La commande suivante vérifie la consistance de la base de données des ports(elle est recommandée avant la commande suivante)

[root]# pkgdb -F

La commande suivante permet d'effectuer les mises ? jour listées précédemment

[root]# portupgrade -ar

script de mise ? jour des ports (sans portsnap)

 

Le script suivant  permet d'afficher la liste des applis ? mettre ? jour après un cvsup. Il faut avoir bash pour le lancer.

#!/usr/local/bin/bash
# Sur une base écrite par Laruiss
# Modification de R1-Bzh
# Ce script est ? mettre en crontab SANS '> /dev/null'.
# Le résultat vous sera renvoyé par mail
#
# Configuration
#
cvs="/usr/local/bin/cvsup -g -L 0" # Logiciel pour mettre \xe0 jour l'arbre
cvsup_conf="/etc/cvsup.conf"    # Fichier de configuration pour cvs
#
# Mise ? jour de l'arbre des ports
#
echo -en "        cvsup des ports :\n"
echo -en "       ~~~~~~~~~~~~~~~~~~~\n"
$cvs $cvsup_conf
#
# Update de l'INDEX et INDEX.db
#
echo -en "\n\n      MAJ de la bd des ports :"
echo -en "\n     ~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
/usr/local/sbin/portsdb -Uu
#
# Mise ? jour de la db des packages
#
echo -en "\n\n      MAJ de la bd des packages :"
echo -en "\n     ~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
/usr/local/sbin/pkgdb -u
#
# Liste des ports \xe0 mettre \xe0 jour
#

echo -en "\n\nListe des ports \xe0 mettre \xe0 jour :\n"
echo -en "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
/usr/sbin/pkg_version -vL =

echo -en "\n\nFin\n~~~\n\n"

En ajoutant la ligne suivante ? la crontab de root ( crontab -e )

0 0 7 * * /usr/local/bin/bash /root/UpdPorts.bash

Un mail hebdomadaire vous informera sur les applis ? mettre ? jour sur votre famp

Installation d'une application via portinstall

Avant d'installer une appli sur votre FAMP il est conseillé de mettre ? jour l'arborescence des ports.
wget est un petit outil trés pratique qui permet le téléchargement de tout type de ressources via le protocole http ou ftp. Le fait qu'il gère le parcours recursif de répertoires le rend indispensable.
Pour localiser le répertoire d'installation de wget dans le système de port on peut passer la commande suivante

[root]# find /usr/ports/ -name "*wget*" -print

Cette commande effectue une recherche récursive dans /usr/ports/ de tous fichiers ou répertoires ayant le motif wget dans leur nom et les affiche. Cette commande nous permet de savoir que le réperoire de wget se trouve dans /usr/ports/ftp/wget. Pour l'installer les deux lignes deux commandes suffisent ? déclencher le téléchargement des sources et la compilation

[root]# cd /usr/ports/ftp/wget
[root]# make install && make clean

En fait certaines applications nécessitent des librairies ou d'autres applications pour fonctionner. FreeBSD gère heureusement les dépendances lors de l'installation d'une appli, et lors des mises ? jour
Si vous n'avez pas changer votre shell, ce qui est le cas si vous avez suivi les instructions de cette page ? la lettre, vous devez taper rehash après chaque installation d'une nouvelle appli, afin qu'elle soit prise en compte dans le path.
En cas d'index endommagé  : update des ports : rebuild pkgdb ... [sur FreeBSD debutant]