[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ suivant ]
Quand dpkg
réinstalle un paquet, on peut faire que tel ancien
fichier ne soit pas remplacé et que le nouveau fichier correspondant soit mis
ailleurs.
Une utilisation locale de cette technique peut être de remplacer la version d'un fichier contenue dans un paquet ; un paquet peut aussi s'en servir pour remplacer tel fichier d'un autre paquet ou bien pour mettre à sa place un « wrapper ».
Avant de décider de l'utilisation d'une déviation, lire Versions alternatives d'une interface -
update-alternatives
(annexe tirée de l'ancien Packaging
Manual), Annexe F, pour savoir si on veut vraiment une déviation
plutôt que plusieurs versions différentes d'un même programme.
Il y a une liste des déviations qui est lue par dpkg
et mise à
jour par un programme spécial dpkg-divert
. Voir
dpkg-divert(8)
pour plus de renseignements sur ses arguments.
Quand un paquet souhaite remplacer un fichier par un autre, il doit appeler
dpkg-divert
dans son fichier « preinst » pour ajouter la
déviation et changer le nom du fichier existant. Par exemple, supposons qu'un
paquet smailwrapper
souhaite installer un « wrapper »
pour /usr/sbin/smail :
if [ install = "$1" ]; then dpkg-divert --package smailwrapper --add --rename \ --divert /usr/sbin/smail.real /usr/sbin/smail fi
Le test de $1 est nécessaire afin que le script n'essaye pas
d'ajouter encore la déviation quand smailwrapper
est mis à jour.
L'option --package smailwrapper assure que la copie du fichier
/usr/sbin/smail
contenue dans le paquet smailwrapper
évitera la déviation et s'installera comme la vraie version.
Le postrm fait l'inverse :
if [ remove = "$1" ]; then dpkg-divert --package smailwrapper --remove --rename \ --divert /usr/sbin/smail.real /usr/sbin/smail fi
Il ne faut pas essayer de remplacer un fichier vital pour la marche du système. Il y a en effet un moment, quand on utilise dpkg, après que le fichier a été dévié, mais avant que dpkg ait installé la nouvelle version, où le fichier n'existe pas.
[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ suivant ]
La Charte Debian
version 3.7.2.2