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.

Zanna
la source

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 )
Mahesh
la source
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.

Danorton
la source
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.

Apurba
la source
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.

rɑːdʒɑ
la source
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

La flamme éternelle
la source
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.

Gudvinr
la source
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