emerge жалуется на заблокированные пакеты: что мне делать?

4509
oligofren

У нас есть старый сервер разработки под управлением 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 *  
5
Будет ли Portage принимать только последнюю версию Python? то есть все ли эти зависимости для Python версии 2.x * и выше *? new123456 13 лет назад 0
Интересно, можно ли сначала «появиться portage», обновляя все остальное? Хотя прошло некоторое время с тех пор, как я использовал portage. Может быть, хороший вопрос, чтобы бросить на канал gentoo irc. James T Snell 13 лет назад 0
@phoenix: portage не может быть обновлен. это была проблема. oligofren 13 лет назад 0
@ new123456: Я не совсем уверен, что следую ... Вы видите список версий Python, верно? они все в серии 2.X, только разные. oligofren 13 лет назад 0
@oligofren Самая высокая версия Python - 2.6. Вы пытались ее получить? new123456 13 лет назад 0

2 ответа на вопрос

3
McClane

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

Сначала взгляните на /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 

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

Я забыл поблагодарить тебя, Макклэйн. Я всегда ненавижу, когда люди спрашивают, а не присуждают очки. К сожалению, у меня не было времени, чтобы проверить, смогу ли я заставить его работать, поэтому не награждаю вас ответом, но буду благодарен вам за создание такого исчерпывающего ответа. Спасибо! oligofren 13 лет назад 0
0
Sergei

If problem in python then try running python-updater Note that you can select current version of python by command eselect

Похожие вопросы