
Gentooシステムのすべてのパッケージに1つのPython3バージョンを使用したいです。それで、インストールされたバージョンを調べてみると、3.6、3.7、3.8の3つのバージョンがインストールされていることがわかりました。すべてのパッケージを3.8に変換し、古いバージョンを削除したいです。
私の計画:
- Python 3.6と3.7をマージ解除します。
USE
Pythonを使用してパッケージのフラグをpython3_8 -python3_7 -python3_6
。emerge --update --newuse
Python 3.8を使用するには、これらのパッケージを再構築してください。
したがって、Python 3.6をアンインストールした後:
emerge --ask -C dev-lang/python:3.6
この行を追加しました
virtual/python-ipaddress python3_8 -python3_7 -python3_6
そして/etc/portage/package.use
走る
emerge --ask --update --newuse --deep virtual/python-ipaddress
私は得る
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild NS ] dev-lang/python-3.6.11-r2 [2.7.18-r1, 3.7.8-r2, 3.8.4-r1] USE="(threads%*)"
Would you like to merge these packages? [Yes/No]
私はこの動作を理解していません:Emergencyを使用する必要があると述べていpython-3.6
ます。この変数にPython仕様が含まれていないのはなぜですか?この変数よりも優先順位が高く、それを上書きする他のプロファイルはありますか?読んだ内容を理解する限り/etc/portage/package.use
3.8
USE
/etc/portage/package.use
USE
文書、このようなことは起きてはいけません。
答え1
しかし、PythonはGentooの一般的なパッケージではありません。 (主になぜなら運ぶそれ自体はPythonに依存します。 ) => 他の変数を設定することも重要です。そして一貫性がなければなりません。 USE フラグの基本概念は、ユーザー設定を設定するために予約されていることです。最悪の場合、デフォルト設定により特定のパッケージが正しく動作しない場合がありますが、いかなる方法でもシステム全体が破損することはありません。
Pythonのバージョンは次のようになります。いいえユーザー設定。いいえ!ユーザーは目を覚まして決定することはできません:私はPython XYZだけが欲しい!ええと…はい…ユーザーは慈悲深く…できます。
あなたの目標を達成するために(私が知っている限り)私は絶対に続かないでしょう(危険*)あなたが従う方法。
詳細な手順を踏みたいです。ここで段落バージョンアップ。
ところで:参考にしてください電子選択もの。
興味のためにそういうわけではなく…結局…一体なぜそれを望むのでしょうか?
Tux ~ $ equery size python-2.7.18-r1
dev-lang/python-2.7.18-r1
Total files : 4177
Total size : 63.28 MiB
Tux ~ $ equery size python-3.7.8-r2
dev-lang/python-3.7.8-r2
Total files : 6616
Total size : 98.74 MiB
合計200MB未満のデータを復元すると、他の面白いことが壊れる可能性がありますか?
気づく! :あなたは絶対できません。変化、使用フラグを調整して、ある言語バージョンから別の言語バージョンにプログラムを移植します。プログラムがまだ互換性がない場合は、すべてを壊す他のライブラリにリンクするだけです。
高いリスク(*):インストールされているパッケージがそのパッケージに厳密に依存していないことを確認する前に、パッケージのマージを試してはいけません。 Python 2からPython 3に移植されていないプログラムを言うことです。 (私は個人的に私のシステムにpython-2.7.18-r1が存在するという肯定的な証拠を得ました)
そうではありません。 3.6と3.7を正常に削除すると、glib(2.62.6)、Wireshark、gitよりもほぼ確実に中断されます。私が知っている限り、最新の安定版はまだ3.8と互換性がありません。
このセクションで回復する可能性がまったくなく、Portage自体を損傷した可能性があります。バックアップのおかげで...ほぼ確実に...作成を避けました...
答え2
以前の回答ですでに指摘したように、パッケージを削除してから不要になるように構成を変更することは安全ではありません。安全な方法はその逆です。設定を変更すると(USEフラグの調整、バージョンのブロック解除)、システム自体がパッケージを必要としないことを認識し(この場合は複数のパッケージを再インストールする必要があります)、システムはパッケージ自体を削除します。emerge --depclean
。
元の質問では、Pythonが強制的に削除されたため、--tree
Emergency updateコマンドにオプションを追加するだけです。次に、インストールするパッケージだけでなく、パッケージをツリーにインポートする項目もリストします。
python:3.6
.
答え3
Pythonをアップグレードするときに実行した手順は次のとおりです。Gentoo Wiki):
で使用したいPythonのバージョン(および/など)に、およびを追加または
/etc/portage/make.conf
更新します。 Gentoo Wikiでは、次のことを行うことをお勧めします。これはグローバルな変更なので、両方とも機能する必要があります。PYTHON_TARGETS
PYTHON_SINGLE_TARGET
PYTHON_TARGETS="python3_9 python3_8"
PYTHON_SINGLE_TARGET="python3_9"
package.use
emerge -puvDN --with-bdeps=y @world
変更に満足できないパッケージがないことを確認するには、実行してください。USE
個々のパッケージのPythonフラグを追加または更新します。
emerge -C
あなた以外では使用しないことをお勧めします完全にこのパッケージを使用するパッケージがないことを確認してください!特にPythonの場合、emerge
まったく機能しないようにすることもできます。