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
*
私はほんの数日前に同じ問題に直面しました。正確な方法はありませんが、一般的な方法は次のとおりです。
まず、/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ディレクトリを出現させます:
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で問題が発生した場合は、python-updater
を実行してみてください。コマンドeselect
で現在のバージョンのpythonを選択できることに注意してください。