Warum beanstandet Portage das Fehlen eines Python-Moduls "portage"?

791
Blacklight Shining

Ich versuche gerade ein Gentoo Prefix einzurichten. Ich schnappte mir das Bootstrap-Skript und startete es, und es wurde in der dritten Phase fertiggestellt und die Kernel-Header installiert, bevor Portage kaputt ging. Es sieht so aus, als würde das Skript versuchen, weitere Pakete zu installieren, aber jeder Versuch, aufzurufen, führt emergenur zu einem ImportError:

Traceback (most recent call last): File "$EPREFIX/usr/bin/emerge", line 41, in <module> import portage ImportError: No module named 'portage' 

Seltsamerweise gibt es tatsächlich ein Verzeichnis $EPREFIX/usr/lib/python2.7/site-packages/portagemit __init__.pymindestens ein paar Dutzend Modulen. Und das Aufrufen des Präfixes python2direkt mit -c 'import portage'works funktioniert einwandfrei (wenn Sie versuchen, dies mit Python des Host-Systems zu tun ImportError). Soweit ich das beurteilen kann, sollten die Dinge den vorangestellten Python verwenden; Die vorangestellten bins stehen vor $PATH. Vielleicht wird etwas in den Interna des Skripts versehentlich zurückgesetzt oder ignoriert $PATH?

0

2 Antworten auf die Frage

0
Blacklight Shining

Double-check your python! It might not be the version you expect. On my system, python was symlinked to python3.5, even though sys-apps/portage (which provides the portage Python package) didn't yet have a target for Python 3.5. Argh!

At this point, you won't be able to rebuild portage with different targets (because emerge is broken), so check all of the installed Python versions (or dig around in $EPREFIX/usr/lib/python*/site-packages) until you find one with a portage package. If you have a working eselect (I did), you can use it (see eselect python help); else, you can probably get away with just manually changing the symlink. Portage worked fine for me after this.


As for the Prefix bootstrap…it seems that if you just run the script interactively again, it'll start allll over again, right from the beginning. I didn't want to start over, so I switched to the “manual” bootstrapping process and picked up at stage three, where the script had failed. I'm really not sure why this method is recommended against, given that the bootstrapping script does all the work, just like in the recommended method.

-1
spegry

Ich traf auf dasselbe Problem während der Kreuzkompilierung eines Arm-basierten Systems - armv7a-hardfloat-linux-gnueabi. Das Problem begann, nachdem ich portage eix und portage-utiles aktualisiert hatte. Beim nächsten Mal chrooting und env-update oder tauchen Sie den Prozess mit der genauen Nachricht auf.

Ich dachte, es muss sich auf die Ausführung des Python-Skripts beziehen und entstand aus der Host-Umgebung heraus Python-Exec - emerge ging gut, löste jedoch das Problem nicht. Ich schaute mich in den lib-Verzeichnissen um und stellte fest, dass ich aufgrund der Umgebung von crosse-dev eine lib64 in / usr und dort eine Portage-Direktive bekam. Ich habe sie mit / usr / lib zusammengeführt und aus / usr / lib -> / usr / lib64 einen Asymlink erstellt. das gleiche unter /. das beschriebene Problem ist für mich weg.

Ich weiß nicht, ob dies auch für Ihren Fall gilt, aber es könnte Ihnen einen neuen Hinweis geben, in welche Richtung gesucht werden soll;)

Prost !

Korrektur, ein Verzeichnis /usr/lib/python2.7 und /usr/lib/python3.4 unter / usr / lib / 64 ... spegry vor 8 Jahren 0
Ich weiß nicht, warum das downvoted ist, aber ich hatte ein ähnliches Problem bei der Einrichtung einer crossdev-gestützten Musl-Toolchain. hanetzer vor 6 Jahren 0