Debian Jessie installe trop de backports

9

J'ai Debian Jessie et j'ai ajouté des rétroportages (selon ces instructions ):

echo "deb http://http.debian.net/debian jessie-backports main contrib non-free" | sudo tee /etc/apt/sources.list.d/backports.list

(J'ai fait cela pour obtenir un noyau plus récent, comme j'en avais besoin, pour du matériel dans mon ordinateur portable.)

Les instructions indiquent que rien ne devrait se produire, à moins que je ne demande explicitement un package rétroporté. par exemple apt-get -t jessie-backports install "package".

Cependant, il me semble maintenant avoir une charge entière de mon système à partir de backports, et un paquet a été désinstallé, car cela dépend d'une version exacte, de quelque chose qui a été mis à jour vers les back-ports.

Donc ma question:

  • Comment puis-je l'arrêter pour que plus aucun backport ne soit installé?
  • Comment supprimer les rétroportages existants?

Remarque: cela obtient une liste des packages installés qui proviennent de backports (et dans un format qui peut être transmis à apt-get install, pour une raison quelconque, la mise sudo apt-get installen place de l'écho à la fin du pipeline ne fonctionne pas):

cat /var/log/dpkg.log.1 |grep -v linux | grep -v xserver | grep -v firmware | grep "status installed" | grep bpo | cut -d" " -f 5 | cut -d: -f 1 | xargs -i{} -n1 bash -c "dpkg-query -s {} >/dev/null && echo {}" | sed -r -e "s~.*~\0/jessie~" | xargs echo

Mise en garde:

Certains packages sont automatiquement installés, donc si vous les réinstallez tous, ces packages installés automatiquement seront marqués comme installés manuellement. Donc pas retiré lorsqu'il n'est pas nécessaire.

Quelqu'un a des idées sur la façon de résoudre ce problème?

ctrl-alt-delor
la source

Réponses:

10
  1. Essayez d'ajouter ce qui suit à l'un /etc/apt/apt.confou à un fichier sous /etc/apt/apt.conf.d:

    APT::Default-Release "jessie";

  2. Pour supprimer les rétroportages existants, vous devrez obtenir une liste de ceux qui ont été installés et de la version qu'ils ont remplacée. Heureusement, ces informations peuvent être extraites très facilement de/var/log/dpkg.log

par exemple grep ' upgrade ' /var/log/dpkg.log, vous donnera de nombreuses lignes comme les suivantes:

2016-02-15 11:06:32 upgrade python-numpy:amd64 1:1.11.0~b2-1 1:1.11.0~b3-1

Cela dit qu'à 11 h 06 le 15 février, j'ai mis à niveau python-numpy de la version 1: 1.11.0 ~ b2-1 à la version 1: 1.11.0 ~ b3-1

Si je voulais rétrograder vers la version précédente, je lancerais:

apt-get install python-numpy=1:1.11.0~b2-1

REMARQUE: dans ce cas particulier, cela ne fonctionnera probablement pas car j'exécute debian sidaka unstabledonc l'ancienne version n'est probablement plus disponible dans le dépôt deb. Si vous exécutez jessieet réinstallez une version jessie d'un package en tant que rétrogradation vers la version jessie-backports, cela fonctionnera comme prévu.

De même, si un package a été supprimé, vous pouvez le trouver ainsi que sa version exacte en saisissant removein /var/log/dpkg.log.


La rétrogradation en masse de nombreux packages peut être largement automatisée à l'aide d'outils standard tels que awket grep. Par exemple, si vous savez que les mises à niveau de jessie-backports que vous avez installées ont toutes été effectuées un jour particulier (par exemple, 2016-02-15), vous pouvez rétrograder vers les versions précédentes avec quelque chose comme:

 apt-get -d -u install $(awk '/2016-02-15 ..:..:.. upgrade / {print $4 "=" $5}'
    /var/log/dpkg.log)

(saut de ligne et indentation ajoutés pour éviter la barre de défilement horizontale)

REMARQUE l'utilisation de l' option -d( --download-only). Réexécutez la commande et supprimez cette option après avoir vérifié que le apt-get installfera ce que vous voulez, et UNIQUEMENT ce que vous voulez.

Je recommanderais également d'exécuter uniquement la awkpartie de cette commande seule pour que vous puissiez voir une liste exacte des packages et des versions qui seront réinstallés.

cas
la source
1
par «largement automatisé», je veux dire que même s'il fonctionnera principalement sans problème, il ne fonctionnera pas / ne fonctionnera pas toujours parfaitement (en fonction des packages exacts impliqués et de leurs lignes dépend / recommande / conflits / etc). Il peut y avoir un ou deux packages que vous devez installer ou désinstaller manuellement avec apt-getou dpkg. Tant que vous ne paniquez pas, il n'y a rien à craindre. La plupart des problèmes avec les systèmes d'emballage sont causés par la panique et la réaction des gens sans y penser ... prenez-le lentement et réfléchissez avant d'agir.
cas
Ne devrait-il pas épingler les nouveaux packages du noyau aux backports @cas?
Rui F Ribeiro
Cela ne ferait pas de mal, mais ce n'est pas nécessaire, et l'épinglage est un peu plus compliqué et difficile à bien faire que de simplement configurer Apt :: Default-Release. apt-getne rétrogradera pas un paquet déjà installé à moins que vous ne le lui disiez explicitement. Et @richard a dit qu'il voulait installer les jessiepackages par défaut, sauf indication explicite jessie-backports- je suppose que le souhait s'applique également aux packages du noyau.
cas
il a dit qu'il avait inclus des backports pour avoir un nouveau noyau, probablement comme moi, pour avoir le noyau 4 dans jessie.
Rui F Ribeiro
1
Je suppose que les gens qui utilisent stable+ se stable-backportssoucient probablement beaucoup plus de l'épinglage que moi et ont fait l'effort d'en savoir plus. J'ai tendance à exécuter unstableet à garder mes systèmes synchronisés avec le dernier Sid assez régulièrement (avec des extras occasionnels experimental), donc j'ai peu besoin d'épingler. La seule fois où je l'ai beaucoup utilisé, c'était il y a des années lors de la transition vers gnome3, quand je ne voulais pas que mes paquets gnome2 soient remplacés - je me souviens que maintenir la liste constamment changeante de paquets à épingler était un PITA. Depuis, je suis passé à xfce et à gnome purgé.
cas
1

Il semble que vous n'ayez pas correctement configuré /etc/apt/preferences. Ce qui suit empêchera l'installation de quoi que ce soit à partir de jessie-backports, attendez-vous à ce qu'il lui indique d'installer (comme le noyau rétroporté). Vous aurez toujours des problèmes si les packages spécifiés nécessitent d'autres packages de rétroportages qui ne sont pas répertoriés.

Package: *
Pin: release n=jessie-backports
Pin-Priority: -1

Package: *
Pin: release n=jessie
Pin-Priority: 1000

# this will allow you to not have to use '-t jessie-backports install'
Package: linux-doc linux-headers-amd64 linux-image-amd64 linux-source
Pin: release n=jessie-backports
Pin-Priority: 1000

Si vous souhaitez obtenir une liste des packages rétroportés installés, vous pouvez utiliser le script suivant (ou des parties de celui-ci):

chmod a+x name_of_script ./name_of_script > name_of_output_file

#!/bin/bash
RELEASES="jessie-backports"

echo  "Searching for installed packages from" >&2
echo $RELEASES | sed s/^/" * "/ | sed s/\|/"\n * "/g >&2

for package in $(dpkg -l | grep -i ^ii | awk '{print $2}')
do
check=$( apt-cache policy $package 2>&1 | grep -i -A 1 "[*]" | egrep $RELEASES )
if [ "$check" == "" ] ; then
 echo -ne "." >&2
else
 echo -ne "#" >&2
 echo
 apt-cache policy $package
fi
done
echo >&2
echo

Si vous souhaitez rétrograder les packages répertoriés par le script ci-dessus, ajoutez ce qui suit à /etc/apt/preferences:

Package: package1 package2 package3
Pin: release n=jessie
Pin-Priority: 1000

Exécutez ensuite:

sudo apt-get upgrade
NeoH4x0r
la source
1

Vérifiez votre configuration d'épinglage pour apt dans / etc / apt / preferences et /etc/apt/preferences.d/

Est-il possible que vous ayez ajouté une configuration d'épinglage personnalisée et que vous l'ayez oublié? C'est la seule façon dont je peux penser qui ferait que apt préfère les rétroportages comme cela semble vous le faire. Sinon, il s'agit simplement de tirer des dépendances - dont les packages que vous avez spécifiés ont besoin.

Les backports officiels sont déjà plus bas (100) que jessie dans le fichier Release des packages backportés du repo backports. Vous ne devriez pas avoir à faire de configuration apt pour que apt préfère jessie à jessie-backports.

figtrap
la source