[Nottingham] Gentoo fun! And a Geek Rant! emerge fails with python errors

Martin martin at ml1.co.uk
Wed Jun 17 23:44:26 UTC 2009


OK... So I innocently and naively tried updating the kernel on my 
experimental Epia C3 Gentoo diskless system, and...

"emerge" then fails with python errors about various things not being 
found! All along the lines of:

File "/usr/lib64/portage/pym/_emerge/__init__.py",
AttributeError: 'xxxx' object has no attribute 'yyyy'

and repeated a few times.


<Mini-rant>

A Google search on the errors then finds some Geek's blog that then says 
that the errors are not emerge but are to do with python... and says 
nothing more! So... What's the big secret?! How do you fix 'em!???...

</Mini-rant>


So, for any others out there, the fix is nicely described on:

http://forums.gentoo.org/viewtopic-t-772622.html

http://www.gentoo.org/proj/en/portage/doc/manually-fixing-portage.xml



For my example, the first things to try didn't work:

emerge portage

python-updater


Don't be fooled into trying "emerge --clean" or "emerge clean". Get the 
portage system working properly first!


Also,

emerge --fetchonly sys-apps/portage

didn't work either.


Thence, the fix was:

wget -P /usr/portage/distfiles 
http://distfiles.gentoo.org/distfiles/portage-2.1.6.tar.bz2

cd /root
mkdir portage-recover
cd portage-recover
tar xfj /usr/portage/distfiles/portage-2.1.6.tar.bz2
cd /root/portage-recover/portage-2.1.6
cp -R pym bin /usr/lib/portage/
rm -f /usr/lib/portage/bin/sed

Then check that /etc/make.globals is still ok:

less /etc/make.globals

Then:

emerge --metadata
emerge sys-apps/portage


And if you get a command not found error message when you try to run 
emerge, you may have to recreate the symlink:

# ln -s ../lib/portage/bin/emerge /usr/bin/emerge


Then, for good measure, all to be followed up with:

emerge --sync

emerge --pretend --update system
emerge --update system

emerge --pretend --update world
emerge --update world


Small tip for finding the replacement cfg files, place:

alias findcfg='find /etc -iname ._cfg????_*'

in .bashrc so that you can then just use "findcfg"

and then:

diff /etc/._cfgxxxx /etc/yyyy

and if that looks ok without clobbering any of your customisations, then:

mv /etc/._cfgxxxx /etc/yyyy



Good luck!

Cheers,
Martin


ps: Still well impressed with Gentoo. I'm also enjoying the clean 
simplicity of the command-line and the utter silence of cool 
disklessness! (OK, so I could add a desktop but then again, why spoil 
the minimalism for a device that isn't going to have a monitor attached 
in any case :-) )

-- 
----------------
Martin Lomas
martin at ml1.co.uk
----------------



More information about the Nottingham mailing list