emerge se plaint de paquets bloqués: que dois-je faire?

5

Nous avons un ancien serveur de développement exécutant Gentoo au travail. Je voudrais mettre à jour ce système, mais je continue à avoir des problèmes avec le système de conditionnement. Pour moi, il semble qu'il existe des dépendances sur plusieurs versions de divers packages, et je ne vois pas comment le réparer.

Le plus gros problème concerne probablement Python et Portage. J'ai besoin d'un nouveau portage, mais il semble y avoir des dépendances cycliques.

J'ai essayé diverses solutions, mais je ne suis pas tout à fait sûr de partir d'ici. Des indices qui pourraient m'amener plus loin dans la réparation?

Plus d'informations

Ce qui suit est le (bit pertinent) de la sortie de l'exécution emerge --update --newuse --deep @world

(lots of normal output ....)
[ebuild     U ] app-misc/mc-4.7.0.3 [4.6.1-r4] USE="edit%* -slang*" 
....
[blocks B     ] >=dev-lang/python-2.6.6 (">=dev-lang/python-2.6.6" is blocking sys-apps/portage-2.1.6.7)
[blocks B     ] <sys-apps/portage-2.1.7.16 ("<sys-apps/portage-2.1.7.16" is blocking app-shells/bash-4.1_p9)
[blocks B     ] <sys-apps/portage-2.1.9 ("<sys-apps/portage-2.1.9" is blocking dev-lang/python-2.7.1-r1)

 * Error: The above package list contains packages which cannot be
 * installed at the same time on the same system.

  (dev-lang/python-2.7.1-r1, ebuild scheduled for merge) pulled in by
    =dev-lang/python-2* required by (dev-vcs/mercurial-1.7, ebuild scheduled for merge)
    =dev-lang/python-2*[threads] required by (dev-vcs/mercurial-1.7, ebuild scheduled for merge)
    =dev-lang/python-2* required by (dev-libs/glib-2.28.6, ebuild scheduled for merge)
    (and 1 more)

  (app-shells/bash-4.1_p9, ebuild scheduled for merge) pulled in by
    >=app-shells/bash-3.2_p17 required by (sys-apps/portage-2.1.9.42, ebuild scheduled for merge)
    app-shells/bash required by (sys-block/di-4.18, ebuild scheduled for merge)
    app-shells/bash required by (app-admin/perl-cleaner-2.7, ebuild scheduled for merge)
    (and 2 more)

  (dev-lang/python-3.1.3-r1, ebuild scheduled for merge) pulled in by
    dev-lang/python required by (app-admin/python-updater-0.9, ebuild scheduled for merge)
    >=dev-lang/python-3 required by (sys-apps/portage-2.1.9.42, ebuild scheduled for merge)
    =dev-lang/python-3.1* required by (dev-java/java-config-2.1.11-r3, ebuild scheduled for merge)

Ceci est le bit pertinent de la sortie lors de l'exécution de emerge --pretend --depclean

Calculating dependencies... done!
 * Dependencies could not be completely resolved due to
 * the following required packages not being installed:
 * 
 *   >=dev-lang/python-2.4 pulled in by:
 *     sys-apps/portage-2.1.6.7
 * 
 *   dev-lang/python pulled in by:
 *     dev-java/java-config-2.1.7
 * 
 *   dev-lang/python pulled in by:
 *     dev-libs/libxml2-2.6.31
 * 
 *   <dev-lang/python-2.6.6 pulled in by:
 *     sys-apps/portage-2.1.6.7
 * 
 *   >=dev-lang/python-2.2 pulled in by:
 *     dev-libs/beecrypt-4.1.2-r1
 * 
 *   virtual/python pulled in by:
 *     dev-python/pycrypto-2.0.1-r6
 * 
 *   >=dev-lang/python-2.3 pulled in by:
 *     dev-vcs/mercurial-1.0.2
 * 
 *   >=dev-java/java-config-2.1.9-r1 pulled in by:
 *     dev-libs/beecrypt-4.1.2-r1
 * 
 *   virtual/python pulled in by:
 *     dev-lang/swig-1.3.34
 * 
 *   dev-lang/python pulled in by:
 *     net-fs/samba-3.0.28a-r1
 * 
 *   >=dev-lang/python-2.2 pulled in by:
 *     app-arch/rpm-4.4.6-r6
 * 
 *   >=virtual/python-2.2.1 pulled in by:
 *     sys-libs/libcap-1.10-r11
 * 
 *   dev-lang/python pulled in by:
 *     sys-libs/cracklib-2.8.9-r1
 * 
oligofren
la source
Portage acceptera-t-il uniquement la dernière version de Python? c'est-à-dire que toutes ces dépendances sont pour Python version 2.x et supérieure ?
new123456
Je me demande si vous pouvez "émerger du portage" en premier, en mettant à jour tout le reste? Cela fait longtemps que j'ai utilisé le portage. Peut-être une bonne question à jeter sur un canal gentoo irc.
James T Snell
@phoenix: le portage ne peut pas être amélioré. c'était le problème.
oligofren
@ new123456: Je ne suis pas tout à fait sûr de suivre ... vous voyez la liste des versions de python non? ils sont tous dans la série 2.X, seulement différents.
oligofren
@oligofren La version la plus récente de Python semble être la 2.6 - avez-vous essayé de l'obtenir?
new123456

Réponses:

3

J'ai fait face au même problème il y a quelques jours. Je n'ai pas le moyen exact de le faire, mais voici la manière générique:

D'abord jeter un oeil à /var/lib/portage/world. Effectuez une sauvegarde et décompressez les packages selon les besoins de votre système. Voici du contenu pour vous aider:

app-admin/syslog-ng
net-firewall/iptables
net-misc/dhcpcd
sys-apps/pciutils
sys-apps/slocate
sys-apps/usbutils
sys-boot/grub
sys-kernel/gentoo-sources
sys-power/acpid
sys-process/vixie-cron
virtual/inetd

Tout le reste sera mis à jour plus tard.

La partie la plus critique est de mettre portage et python dans les versions récentes, alors concentrons-nous là-dessus.

  1. Émergez votre répertoire de portage:

    emerge --sync
    

    ou:

    emerge-webrsync
    
  2. Définir un profil valide

    eselect profile list
    eselect profile set <x>
    
  3. Mettez à niveau python / portage étape par étape.

    Consultez votre version actuelle de Portage installée. Mettez à niveau portage vers la prochaine version plus élevée que votre version actuelle (même si elle est masquée par ~ x86), faites de même pour python. Après une mise à niveau en python, assurez-vous de l'exécuter python-updater.

    Faites ceci étape par étape jusqu'à ce que python / portage soit à jour. (Vous pouvez ignorer certaines des mises à niveau de version mineures. Vous verrez par vous-même quelles versions entraînent des erreurs de compilation et lesquelles.)

  4. Dès qu'ils fonctionnent, essayez de faire apparaître d'autres packages, car ils pourraient vous aider dans votre tâche.

    app-portage/ufed
    app-portage/autounmask
    app-portage/gentoolkit
    
  5. Une fois que python / portage est à jour, vous pouvez restaurer votre ancien fichier world et mettre à jour votre système.

    emerge -pvauDN world
    

    Vous pourriez avoir besoin d'appeler:

    emerge ...
    emerge --depclean
    revdep-rebuild
    

    plusieurs fois au cours du processus de construction.

McClane
la source
J'ai oublié de te remercier, mcclane. Je déteste toujours quand les gens demandent et n'attribuent pas de points. Malheureusement, je n’ai pas eu le temps de vérifier si je pouvais le faire fonctionner, donc je ne vous attribuerai pas la réponse, mais je vous inviterai à bien vouloir créer un répondeur aussi complet. Merci!
oligofren
0

Si vous rencontrez des problèmes avec Python, essayez de lancer la commande python-updater Notez que vous pouvez sélectionner la version actuelle de Python à l'aide de la commandeeselect

Sergei
la source