5

У нас есть старый сервер разработки под управлением Gentoo на работе. Я хотел бы обновить эту систему, но продолжаю сталкиваться с проблемами с системой упаковки. Мне кажется, что есть зависимости от нескольких версий различных пакетов, и я не вижу, как это исправить.

Самая большая проблема, вероятно, связана с Python и Portage. Мне нужна новая версия Portage, но, похоже, существуют циклические зависимости.

Я пробовал различные решения, но не совсем уверен, что идти отсюда. Какие-нибудь подсказки, которые могут помочь мне исправить это?

Дальнейшая информация

Ниже приведен (соответствующий бит) результат работы 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)

Это соответствующий бит вывода при запуске 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
 * 

2 ответа2

3

Я столкнулся с той же проблемой всего несколько дней назад. У меня нет точного способа сделать это, но вот общий способ:

Сначала взгляните на /var/lib/portage/world . Сделайте резервную копию и разархивируйте пакеты до тех, которые нужны вашей системе для загрузки. Вот некоторые материалы, которые помогут вам начать работу:

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

Все остальное будет обновлено позже.

Самая важная часть заключается в получении portage и python для последних версий, поэтому давайте сосредоточимся на этом.

  1. Покажи свой portage dir:

    emerge --sync
    

    или же:

    emerge-webrsync
    
  2. Установите действительный профиль

    eselect profile list
    eselect profile set <x>
    
  3. Обновите python / portage шаг за шагом.

    Посмотрите на вашу текущую установленную версию Portage. Обновите portage до следующей версии выше текущей (даже если она замаскирована на ~ x86), затем сделайте то же самое для python. После обновления Python обязательно запустите python-updater .

    Делайте это шаг за шагом, пока Python / Portage не будут обновлены. (Вы можете пропустить некоторые незначительные обновления версии. Вы сами увидите, какие версии приводят к ошибкам компиляции, а какие - нет.)

  4. Как только они заработают, попробуйте установить другие пакеты, которые могут помочь вам в вашей задаче.

    app-portage/ufed
    app-portage/autounmask
    app-portage/gentoolkit
    
  5. Как только Python / portage обновится, вы сможете восстановить файл старого мира и обновить систему.

    emerge -pvauDN world
    

    Вам может понадобиться позвонить:

    emerge ...
    emerge --depclean
    revdep-rebuild
    

    несколько раз в процессе сборки.

0

Если проблема в Python, попробуйте запустить python-updater Обратите внимание, что вы можете выбрать текущую версию Python с помощью команды eselect

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .