Comment interdire l'installation d'un package spécifique?

27

Puis-je configurer Ubuntu pour ne jamais installer un package spécifique même s'il est requis par un autre package que j'installe?

Ivan
la source
Vous ne pouvez pas installer un package sans ses dépendances, sauf si vous souhaitez casser votre système.
enzotib
2
@enzotib, tout d'abord vous vous trompez: les dépendances des packages peuvent être redondantes. il existe de nombreux exemples, ou vous pouvez avoir installé un équivalent d'un package requis d'une autre manière (par exemple, j'ai openjdk-6 installé car il est requis par toutes les applications java dans le référentiel, mais je n'utilise jamais réellement openjdk-6, je configurer tout pour utiliser openjdk-7 ou Oracle JDK 7 à la place). Et la deuxième chose - je n'ai pas dit que je veux que le paquet dépendant soit installé - cela peut simplement générer une erreur dans ce cas, je veux juste m'assurer qu'un paquet particulier n'est jamais installé de toute façon.
Ivan
Il y a une question similaire .
Nimmermehr

Réponses:

28

Comme dans Debian, nous pouvons également utiliser l' épinglage d' apt pour le contrôle de version et d'installation dans Ubuntu .

Pour bloquer l'installation d'un paquet donné, nous pouvons mettre les lignes suivantes dans /etc/apt/preferences

Package: <nameofpackage>
Pin: origin ""
Pin-Priority: -1

En donnant une priorité négative à cette broche, nous bloquerons l'installation d' <nameofpackage>une origine non spécifiée, à savoir notre référentiel local. Bien sûr, nous pouvons utiliser apt-pinning pour épingler une certaine version de package ou une origine spécifique.

Avant de continuer, il est fortement recommandé de lire la documentation donnée ci-dessus et la page de manuel d' apt_preferences car les erreurs dans ces fichiers ne sont pas vérifiées par apt et si elles se produisent, cela peut casser la gestion de votre paquet.

Pour une alternative et pour empêcher la mise à jour d'un package donné, voir:

Takkat
la source
Savez-vous si cela pourrait fonctionner dans Ubuntu 12.04? Une autre question est de signaler que cela ne fonctionne peut-être pas.
Lucio
1
@Lucio: bien sûr - cela fonctionne toujours; vient de le tester pour fonctionner aussi en 12.10.
Takkat
3
Dans la Package:ligne, vous pouvez répertorier plusieurs packages séparés par des espaces, comme ceci: Package: metacity metacity-common libmetacity-private0a. (On dirait que des modèles comme Package: metacity * sont également possibles)
Volker Siegel
5
Dans Ubuntu 16.04 Pin: origin ""n'a pas fonctionné pour moi, mais l'a Pin: release *fait.
barbaz
3

Dans Debian, vous pouvez bloquer un paquet, et ce paquet ne sera plus mis à niveau

# echo name_of_package hold | dpkg --set-selections

mais je ne suis pas sûr que tu puisses interdire

maniat1k
la source
Je viens de l'essayer sur Ubuntu 15.10 (rusé) et cela n'a pas bloqué le paquet; vient de me donner un avertissementpackage not in database
Brent Baccala
2

J'ai un paquet qui continue de se faufiler et de casser le git

sudo apt-mark hold libgnutls-deb0-28

devrait empêcher l'installation de ce package

Alexx Roche
la source