[SOLVED] Испортился portage 2.2 после последнего обновления

portage-2.2.0_alpha51 работал отлично, сегодня захотелось ему обновиться при emerge -uDavN world до 2.2.0_alpha52. После чего он перестал работать, ругаясь на питон, как я понял:

Traceback (most recent call last):
  File "/usr/bin/emerge", line 43, in <module>
    retval = emerge_main()
  File "/usr/lib64/portage/pym/_emerge/main.py", line 1939, in emerge_main
    myopts, myaction, myfiles, spinner)
  File "/usr/lib64/portage/pym/_emerge/actions.py", line 438, in action_build
    retval = mergetask.merge()
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1073, in merge
    rval = self._merge()
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1427, in _merge
    self._main_loop()
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1571, in _main_loop
    self._poll_loop()
  File "/usr/lib64/portage/pym/_emerge/PollScheduler.py", line 193, in _poll_loop
    handler(f, event)
  File "/usr/lib64/portage/pym/_emerge/SpawnProcess.py", line 240, in _dummy_handler
    self._unregister_if_appropriate(event)
  File "/usr/lib64/portage/pym/_emerge/AbstractPollTask.py", line 61, in _unregister_if_appropriate
    self.wait()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 46, in wait
    self._wait_hook()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 128, in _wait_hook
    self._exit_listener_stack.pop()(self)
  File "/usr/lib64/portage/pym/_emerge/EbuildPhase.py", line 238, in _ebuild_exit
    self.wait()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 46, in wait
    self._wait_hook()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 128, in _wait_hook
    self._exit_listener_stack.pop()(self)
  File "/usr/lib64/portage/pym/_emerge/EbuildBuild.py", line 195, in _pre_clean_exit
    self._fetch_exit(fetcher)
  File "/usr/lib64/portage/pym/_emerge/EbuildBuild.py", line 247, in _fetch_exit
    self._start_task(build, self._build_exit)
  File "/usr/lib64/portage/pym/_emerge/CompositeTask.py", line 146, in _start_task
    task.start()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 24, in start
    self._start()
  File "/usr/lib64/portage/pym/_emerge/EbuildExecuter.py", line 55, in _start
    self.scheduler.scheduleSetup(setup_phase)
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 573, in _schedule_setup
    self._schedule()
  File "/usr/lib64/portage/pym/_emerge/PollScheduler.py", line 104, in _schedule
    return self._schedule_tasks()
  File "/usr/lib64/portage/pym/_emerge/Scheduler.py", line 1609, in _schedule_tasks
    if q.schedule():
  File "/usr/lib64/portage/pym/_emerge/SequentialTaskQueue.py", line 55, in schedule
    task.start()
  File "/usr/lib64/portage/pym/_emerge/AsynchronousTask.py", line 24, in start
    self._start()
  File "/usr/lib64/portage/pym/_emerge/EbuildPhase.py", line 77, in _start
    maint_str = metadata_xml.format_maintainer_string()
  File "/usr/lib64/portage/pym/portage/xml/metadata.py", line 355, in format_maintainer_string
    for maintainer in self.maintainers():
  File "/usr/lib64/portage/pym/portage/xml/metadata.py", line 305, in maintainers
    for node in self._xml_tree.findall('maintainer'))
  File "/usr/lib64/python3.1/xml/etree/ElementTree.py", line 639, in findall
    assert self._root is not None
AssertionError

Последние месяцы собирал с флагом python3, хотя в системе главный по eselect-у 2.71, однако всё работадо нормально. python-updater пробовал - говорит всё в порядке. Откатиться не могу, т.к. для этого нужен работающий portage.
Что делать? Помогите, пожалуйста!

/

В /etc/make.conf:
FEATURES="... buildsyspkg ..."
?

:wq
--
Live free or die

Странно, не смотря на

Странно, не смотря на установленный

FEATURES="... buildsyspkg ..."

пакета не оказалось, хотя portage собирался раз 5.
Нашел решение проблемы здесь: Bug 381657

Отсюда » Цитата: Restoring

Отсюда »

Цитата:
Restoring the binary packages on the broken system

There are a couple of methods that can be used to restore binary packages to a broken system.
Chroot/Emerge Method

This first approach can be used for lightly damaged systems that still have a functional Portage and to which you can still chroot and perform all basic Linux commands. To use this method, you would mount your broken system to /mnt/broken using steps similar to the way we set up /mnt/rescue, above.

Before or after chrooting, copy the binary packages created in the step above in the exact same location on your broken system (e.g. in /usr/portage/packages/sys-devel in the case of sys-devel/gcc).

Once chrooted inside your system, you will be able to merge your packages using emerge as follows:

# emerge -k  sys-devel/gcc

Tbz2 Extract Method

This alternate method for installing binary packages is simpler and does not require the use of the chroot command. To prepare for using this approach, you just need to mount all key filesystems to /mnt/broken as follows -- and bind mounts are not necessary:

# install -d /mnt/broken
# mount /dev/sdaX /mnt/broken
# mount /dev/sdaY /mnt/broken/usr

Then, use the following commands to extract the .tbz2 archive to your broken filesystem that you mounted at /mnt/broken:

# tar xjpvf gcc-4.4.5.tbz2 -C /mnt/broken

You will see a note about the trailing garbage at the end of the file being ignored. This is normal -- tar is ignoring the Portage .tbz2 metadata that is tacked on to the end of the file.

At this point, you can set up bind mounts (see /mnt/rescue example earlier in this document for those steps), chroot inside /mnt/broken, and perform a few tests to determine if your issue has been resolved.

Я Gentoo & Funtoo

Только что также

Только что также попал:
eselect'ом через show посмотри на python, надо выбрать третий, а дальше portage заработает. Предполагаю, что если его собрать с USE="-python3 python2", то можно обратно включить второй, но ещё не делал.

О, спасибо, попробую такой

О, спасибо, попробую такой вариант.
А я пока выкрутился по-другому: предыдущие советы напомнили мне о возможности поставить бинарник. Поскольку моя Гентушка происходит из Калькулейта, егойный оверлей у меня подключён на всякий случай, как минимум, там темки оформления консоли и Груба хороши. А Калькулейт поддерживает бинарный репозиторий, причём они рвутся вперёд, словно Арч, и portage 2.2 там есть. Дальше дело техники: в /var/lib/layman/calculate нашёл адрес этого репозитория, добавил его в make.conf:

PORTAGE_BINHOST="http://mirror.cnet.kz/calculate/CLD/grp/x86_64"

затем

sudo emerge -aKGv portage

Он заработал, я в keywords временно запретил обновления больше альфы-51 и спокойно пересобрал как было. Всё работает. Спасибо всем советчикам и команде Калькулейт!

PS: а не стрёмно делать третий питон основным, вроде читал (http://www.gentoo.ru/node/20951), система дестабилизируется сильно, а у меня за исключением десятка пакетов "~" и единственного hardmasked портежа, всё stable. Или уже устарела эта информация?

Danhuu написал(а): а не

Danhuu написал(а):
а не стрёмно делать третий питон основным, вроде читал (http://www.gentoo.ru/node/20951), система дестабилизируется сильно

Основным, только на время восстановления работоспособности portage не стрёмно, потом всё можно обратно переключить.
P.S.: хотя я решил на нём остаться...

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".