Habituellement, sur mon Ubuntu 16.04 LTS, je verrouille les versions de paquet avec la fonctionnalité APT-pin.
Par exemple, si je veux épingler meld
à la version 1.5.3-1ubuntu1, je crée le fichier pin suivant:
cat <<EOF | Sudo tee /etc/apt/preferences.d/pin-meld
Package: meld
Pin: version 1.5.3-1ubuntu1
Pin-Priority: 1337
EOF
Ce fichier applique les paramètres système: apt
, apt-get
, aptitude
et les outils graphiques tels que synaptic
et muon
le respectent.
Je connais un autre mécanisme - apt-mark
. Assumons. Mon point de départ - j'ai installé manuellement meld_1.5.3-1ubuntu1, sa broche est supprimée.
$ apt-mark showhold
$ apt-cache policy meld
meld:
Installed: 1.5.3-1ubuntu1
Candidate: 3.14.2-1
Version table:
3.14.2-1 500
500 http://archive.ubuntu.com/ubuntu xenial/universe AMD64 Packages
500 http://archive.ubuntu.com/ubuntu xenial/universe i386 Packages
*** 1.5.3-1ubuntu1 100
100 /var/lib/dpkg/status
Ensuite, je tiens la version installée.
$ Sudo apt-mark hold meld
meld set on hold.
$ dpkg -l | grep meld
hi meld 1.5.3-1ubuntu1 all graphical tool to diff and merge files
APT-mark indique qu'il est en attente. Mais apt-cache policy meld
n'a aucun changement
$ apt-cache policy meld
meld:
Installed: 1.5.3-1ubuntu1
Candidate: 3.14.2-1
Version table:
3.14.2-1 500
500 http://archive.ubuntu.com/ubuntu xenial/universe AMD64 Packages
500 http://archive.ubuntu.com/ubuntu xenial/universe i386 Packages
*** 1.5.3-1ubuntu1 100
100 /var/lib/dpkg/status
apt-get upgrade
indique que meld
est gardé:
$ Sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
meld
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Mais si je lance aptitude
en mode interactif, j'ai meld
dans paquets pouvant être mis à nivea:
Actions Undo Package Resolver Search Options Views Help
C-T: Menu ?: Help q: Quit u: Update g: Preview/Download/Install/Remove Pkgs
aptitude 0.7.4
--\ Upgradable Packages (1)
--\ gnome - The GNOME Desktop Environment (1)
--\ universe - Unsupported Free Software. (1)
ih meld 1.5.3-1ubuntu1 3.14.2-1
et si je sélectionne accidentellement Actions -> Annuler les actions en attente, la mise en attente sera supprimée.
Autant que je puisse comprendre synaptic
ignore les marques apt-mark
, sa fonctionnalité Version verrouillée fonctionne différemment.meld
est répertorié ici sous la forme Installé (mise à niveau). Le bouton Marquer toutes les mises à nivea ne le sélectionne pas automatiquement, mais le paquet peut être mis à jour accidentellement par Marquer pour la mise à nivea.
Muon fonctionne de la même manière avec les paquets détenus par apt-mark
. Mais ce qui est intéressant, son option Verrouiller à la version actuelle écrit un fichier pin dans /etc/apt/preferences.d/meld
.
Ai-je bien compris que APT-pin est plus fiable que apt-mark
?
Oui, le repérage est plus fiable que _apt-mark
_.
Ce que j'ai découvert
synaptic utilise son propre fichier d'identification (/ var/lib/synaptic/preferences) - voir bug 42178 sur le tableau de bord . Pour l’ensemble du système, il peut être utile de définir un lien symbolique entre _/etc
_ et Synaptic.
_Sudo ln -s /etc/apt/preferences.d/synaptic /var/lib/synaptic/preferences
_
il est donc déconseillé de verrouiller les versions dans Synaptic (ce fichier ne peut pas être lu par _apt-get
_ et aptitude
).
Muon utilise des fichiers PIN à l’échelle du système par application dans _/etc/apt/preferences.d
_.
aptitude
a deux bogues:
apt-mark
_ complètement (voir mon bogue 1747189 sur le tableau de bord ).apt-mark
_ sont perdues après un clic sur Actions -> Annuler les actions en attente (voir mon bogue 1747191 sur le tableau de bord =).mais en 18.04 LTS aptitude
ne pas avoir de tels bugs, c'est génial.
Ma conclusion est donc la suivante: _apt-mark
_ est utilisable uniquement si vous installez/supprimez/mettez à niveau un logiciel uniquement avec _apt-get
_, sinon vous devez utiliser pinning (c'est-à-dire _/etc/apt/preferences.d/
_), il est plus fiable et simple.
Remarque: pour éviter que la priorité des broches d’installation de paquetages ne soit soit négative :
P <0:
empêche l'installation de la version
par exemple _Pin-Priority: -10
_.