Salut
Je me suis aperçu que les binaires disponibles pour FreeBSD-stable évoluent assez vite et, s'il existe des outils pour gérer l'évolution des ports, je ne crois pas qu'il en existe pour gérer celle des binaires (j'ai regardé portupgrade -P ou -PP mais cela ne me convient pas). Or j'ai bien l'intention d'utiliser les binaires sous FreeBSD-stable et de les mettre à jour régulièrement sans passer des heures à chercher (car je ne compile des ports que si c'est absolument obligatoire).
J'ai donc écrit un premier script. Celui-ci se base sur le fichier INDEX des binaires disponibles sur les ftp... puis il compare les paquets installés (pour moi presque tous des binaires donc) à cette liste.
- soit il trouve la même chose, et il ne dit rien
- soit il trouve une différence (normalement un upgrade) et propose le changement
- soit il ne trouve rien du tout et il le dit
Dans ce dernier cas il peut y avoir diverses possibilité qui ne sont pas traitées par le script (à l'administrateur de savoir):
- le paquet vient des ports et n'a jamais existé en binaire
- le paquet a existé en binaire mais ce n'est plus le cas
- le paquet a changé de "version majeur" (j'entends par là "xine-0" pour "xine-0.99.4_8" par exemple)...
Code:#!/bin/sh
# pkg_index
FTP="ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable"
MAINDIR=~/.pkg_index
OLDPKG=""
PKGNAME=""
NEWPKG=""
ANSWER=""
if [ ! -d $MAINDIR ] ; then
mkdir $MAINDIR
fi
cd $MAINDIR
if [ ! -f INDEX ] ; then
fetch $FTP/INDEX
else
echo -n "Fetch new INDEX file (Y/n) "
read ANSWER
if [ "$ANSWER" != "n" ] && [ "$ANSWER" != "N" ] ; then
mv INDEX INDEX.old
fetch $FTP/INDEX
fi
fi
for OLDPKG in `ls -1 /var/db/pkg/` ; do
if ! grep -q $OLDPKG INDEX ; then
PKGNAME=`echo $OLDPKG | cut -d"." -f1`
if NEWPKG=`cut -d"|" -f1 < INDEX | grep -e ^$PKGNAME` ; then
echo "Old: $OLDPKG . . . . New: $NEWPKG"
echo -n "Change this package (Y/n) "
read ANSWER
if [ "$ANSWER" != "n" ] && [ "$ANSWER" != "N" ] ; then
pkg_delete -f $OLDPKG
pkg_add -r $FTP/All/$NEWPKG.tbz
fi
else
echo "Old: $OLDPKG . . . . $PKGNAME.* not found"
fi
fi
done
En pratique cela donne par exemple:
Code:Fetch new INDEX file (Y/n) n
Old: lame-3.97_1 . . . . lame-3.* not found
Old: vlc-0.8.5_8 . . . . New: vlc-0.8.5_10
Change this package (Y/n) n
...
Ici lame vient des ports et vlc n'a pas assez changé pour que je le réinstalle... Sinon j'ai "mis à jour" mes binaires ainsi (en répondant Y bien sûr pour ceux qui avaient le plus changé, pas comme ci-dessus) et cela semble fonctionner. Mais pour combien de temps...
Voilà certains d'entre vous combinent-ils aussi "stable" et "binaires" ? Ont-ils des conseils à me donner pour la mise à jour de ces binaires ? Ou de façon plus pessimiste combien de jours donnez-vous à l'utilisation de ce bricolage avant que tout ne s'écroule ?
Merci d'avoir lu toute cette prose, Marc