Bloquer la désinstallation d'un package dans APT

8

Bref, je veux pouvoir paramétrer le package abcpour que:

  1. apt-get remove abc devrait échouer.
  2. apt-get purge abc devrait échouer.
  3. apt-get upgrade abc devrait marcher.

Si les dépendances du package changent et que cela abcdoit être désinstallé pendant un dist-upgradeje suis heureux d'être obligé de faire quelque chose et puis de dist-upgradenouveau.

Effacé
la source
J'ai créé un métapaquet essentiel qui dépend abc, mais il a été supprimé de toute façon ... Je pense que vous devez recompiler le abcparamètre Essential: yeset Priority: requireddansdebian/control
Teresa e Junior
@TeresaeJunior Strange, un package essentiel defselon abcaurait dû fonctionner. A été defsupprimé? Est-ce que ça aide si vous faites def Priority: required?
Gilles 'SO- arrête d'être méchant'
@Gilles Exactement, je mets à la fois Essential: yeset Priority: requiredet il a été enlevé sans avertissement. J'ai créé ce petit script pour faire le paquet, si vous voulez y jeter un œil: paste.org/44184
Teresa e Junior
Je vois que cela a Essential: yesété ignoré, donc ce equivsn'est pas suffisant pour cela ... Peut-être que si le paquet est créé avec debuild, je vais essayer.
Teresa e Junior

Réponses:

5

Pas vraiment quoi que ce soit pour «épingler» un paquet pour pouvoir empêcher sa suppression, mais pour permettre la mise à niveau.

Vous pouvez marteler un pic dans un package, ne peut pas être supprimé, purgé, mis à niveau, léché, quoi que ce soit ...

Mais c'est un peu plus compliqué que la plupart des choses.

Par exemple, nous souhaitons épingler firefox: (vous utiliseriez le nom complet correct du paquet, bien sûr)

echo firefox hold | dpkg --set-selections

ce qui rendrait alors ' firefox ' immortel. MAIS , il ne peut pas non plus être mis à niveau dans cet état.

Pour supprimer l'état de maintien est un peu plus facile, mais c'est une sorte de geste de balayage:

dpkg --clear-selections

supprime le statut HOLD de TOUT! Donc, si vous vouliez conserver quelques paquets, vous feriez mieux de garder une liste pour réappliquer plus tard

C'est en fait assez agréable et facile à réaliser en utilisant aptitude ou synaptics , car ils ont des options de menu pour tenir / retirer un paquet, en prenant soin de toute la comptabilité en arrière-plan pour vous. Je recommanderais d'utiliser l'un de ceux-ci (ou l'un des nombreux autres gestionnaires de packages que vous pourriez rencontrer)

Avec Aptitude, l'utilisation de la ligne de commande est également possible:

aptitude hold <package>
aptitude unhold <package>

N'oubliez pas cependant que vous devrez « détacher » quelque chose si vous souhaitez le mettre à niveau. Bien que si vous utilisez le côté GUI d'Aptitude, il devrait vous dire si quelque chose qui est détenu est évolutif

lornix
la source
1
apt-getse fera un plaisir de désinstaller un paquet en attente.
bahamat