Comment déclasser un paquet via apt-get?


309

Comment puis-je rétrograder un paquet vers une version antérieure via apt-get?

D'autres outils sont également acceptables mais apt-getsont préférés.

Réponses:


307

Si vous avez le numéro de version, ou la version cible, apt-getprend en charge le choix d’une version ou d’une version cible particulière. Plus de détails peuvent être trouvés sur la page de manuel d'apt-get . Vous pouvez également y accéder depuis le terminal en tapantman apt-get

sudo apt-get install <package-name>=<package-version-number> OU

sudo apt-get -t=<target release> install <package-name>

est la commande à exécuter. Ceci peut être utilisé pour rétrograder un paquet en une version spécifique.

Il a été utilement signalé dans les commentaires que

  • apt-cache showpkg <package-name>répertorie toutes les versions disponibles. (h / t Sparhawk )
  • apt-mark hold <package-name> "détient" le paquet dans la version actuelle, empêchant ainsi les mises à jour automatiques. (h / t Luís de Sousa )

58
Utilisez également apt-cache showpkg <package-name>pour répertorier les versions disponibles.
Sparhawk

16
Et ensuite, vous voudrez peut-être aussi exécuter: apt-mark hold <package-name>afin d’éviter les mises à jour automatiques.
Luís de Sousa

4
J'ai trouvé que aptitudedéclasser les dépendances mieux que apt-get.
Krispy

5
apt-cache policy <package-name>montre seulement les versions installées et disponibles
Michael Lawton

18
Et si showpkgne montre pas la version qui vous intéresse?
Demongolem

104

UTILISATION

apt-get install «pkg»=«version»

OU

sudo aptitude install «pkg»=«version»

«pkg» est le nom du paquet et «version» le numéro de version.


3
quand je tape apt-get install pkg=versionapt-get, l'offre supprime près de la moitié des paquets installés, ce qui n'est bien sûr pas ce que je veux faire
Dfr

Comme indiqué dans la réponse (par ailleurs identique) avec plus de votes, il semble que ce soit l’un des cas clés dans lequel le travail aptitudeest bien meilleur que apt-get. Dans mon cas, apt-getla demande de rétrogradation a été catégoriquement refusée, alors aptitudeque d'autres pkgs dépendaient de la version la plus récente (et devaient donc être rétrogradés en même temps).
sxc731

28

Si vous avez mis à niveau un logiciel à l'aide de ppa, vous pouvez le rétrograder à l'aide de ppa-purge. Vous devez d'abord installer en ppa-purgeutilisant ce code:

sudo apt-get install ppa-purge

Ensuite, vous pouvez supprimer le ppa en utilisant la commande

sudo ppa-purge ppa: nom d'utilisateur / ppa-name

cela rétrogradera automatiquement le logiciel à sa version originale fournie avec Ubuntu.


1
Cette solution est tout simplement incomparable au cas où le paquet aurait des dépendances qui devraient également être rétrogradées. Merci!
et

1
Oui, c'est la solution qui m'a le mieux fonctionné pour rétrograder KDE / Plasma sur kubuntu-ppa / backports - une chose que j'ai remarquée est que le fichier .list du PPA ne doit pas avoir le commentaire débité, donc ppa-purge peut référencer tous les fichiers. qui doivent être enlevés pour la purge. Il m'a fallu une minute pour comprendre pourquoi cela ne fonctionnait pas au début. J'espère que cela aide les autres!
AveryFreeman

10

Pour rétrograder, vous devez exécuter une commande telle que

 sudo apt-get install pkg_name=version

dans votre terminal.

À la place de versionmettre la version précédente que vous souhaitez rétrograder.


Cela ne fonctionne pas du moins pour linux-generic, qui dépend également des paquets qui devraient être rétrogradés. Je reçois paste.ubuntu.com/p/NWSmf2ZwTy
mymedia

9

À mon avis, vous devez d’abord désinstaller ou purger le paquet, par exemple:

sudo apt-get remove <package>

ou

sudo apt-get purge <package>

Ensuite, vous pouvez télécharger la version que vous souhaitez installer et la conserver dans un dossier, par exemple abc.debdans Téléchargements. Ouvrez un terminal, accédez au dossier à l'aide de la cdcommande et installez la version précédente à l'aide de dpkg:

sudo dpkg -i abc.deb

Sinon, il existe un petit utilitaire appelé ppa-purgesi vous voulez déclasser les packages mis à jour via des PPA.

Voir cette discussion: http://www.webupd8.org/2009/12/remove-ppa-repositories-via-command.html


3
supprimer un paquet peut en supprimer de nombreux, ce qui rend le système inutilisable. ppapurge semble intéressant cependant.
tapez

12
Pouvez-vous expliquer pourquoi, selon vous, nous devons d’abord désinstaller les packages (étape distincte) avant d’installer leurs versions antérieures?
Eliah Kagan


1
@temoto ce lien sert à la rétrogradation des versions unstable-> testing-> stablene pas rétrograder des packages individuels.
Braiam

0

Cette question est ancienne mais Google m'a conduit ici et je n'ai pas trouvé de solution simple qui ne nécessite pas de version manuelle lors de la mise à niveau de paquets vers une version plus ancienne.

Alors peut-être que quelqu'un qui a aussi besoin de ça trouvera utile ma solution aussi.

Il existe un outil appelé apt-show-versionsqui montre les versions installées.

Vous pouvez facilement rétrograder tous les paquets requis en ajustant regex avec précision, mais voici:

$ sudo apt-get install $(apt-show-versions | grep -P 'newer than version in archive' | awk -F: '{print $1"/jessie"}')

Au lieu de jessievous pouvez utiliser buster/ xenial/ etc selon vos besoins.


Ou rétrograder automatiquement installé version mise à jour: sudo apt-get install -V $(apt-show-versions | grep -F 'newer than version in archive' | awk -F: '{print $1"/'$(lsb_release -cs)'"}'). Je préfère utiliser -Fpour grepici.
Jarno

Vous devez d' sudo apt-show-versions -iabord exécuter si le cache du paquet est obsolète.
Jarno
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.