emerge жалуется на заблокированные пакеты: что мне делать?
У нас есть старый сервер разработки под управлением 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 ответа
Я столкнулся с той же проблемой всего несколько дней назад. У меня нет точного способа, как это сделать, но вот общий способ:
Сначала взгляните на /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 для последних версий, поэтому давайте сосредоточимся на этом.
Покажи свой portage dir:
emerge --sync
или же:
emerge-webrsync
Установите действительный профиль
eselect profile list eselect profile set <x>
Обновите python / portage шаг за шагом.
Посмотрите на вашу текущую установленную версию Portage. Обновите portage до следующей версии выше текущей (даже если она замаскирована ~x86), затем сделайте то же самое для python. После обновления Python обязательно запустите
python-updater
,Делайте это шаг за шагом, пока Python / Portage не будут обновлены. (Вы можете пропустить некоторые незначительные обновления версий. Вы сами увидите, какие версии приводят к ошибкам компиляции, а какие - нет.)
Как только они заработают, попробуйте установить другие пакеты, которые могут помочь вам в вашей задаче.
app-portage/ufed app-portage/autounmask app-portage/gentoolkit
Как только Python / portage обновится, вы сможете восстановить файл старого мира и обновить систему.
emerge -pvauDN world
Вам может понадобиться позвонить:
emerge ... emerge --depclean revdep-rebuild
несколько раз в процессе сборки.
Если проблема в питоне, то попробуйте запустить python-updater
Обратите внимание, что вы можете выбрать текущую версию python командой eselect