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
*
la source
Réponses:
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: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.
Émergez votre répertoire de portage:
ou:
Définir un profil valide
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.)
Dès qu'ils fonctionnent, essayez de faire apparaître d'autres packages, car ils pourraient vous aider dans votre tâche.
Une fois que python / portage est à jour, vous pouvez restaurer votre ancien fichier world et mettre à jour votre système.
Vous pourriez avoir besoin d'appeler:
plusieurs fois au cours du processus de construction.
la source
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
la source