Debianでシステム全体で `python`を` python3`のエイリアスにする方法

Sep 17 2020

Debianテストシステムの最新のアップデートでPythonバージョン2が削除され、Python3のみがインストールされていpython3ます。python。という名前のコマンドはもうありません。これにより、Python 3と互換性のあるスクリプトなど、いくつかのスクリプトが失敗します。

のpythonエイリアスとしてグローバルに構成する適切な方法を知りたいと思いますpython3。

汚い解決策の1つは、のようなことを手動で行うことですがsudo ln -s /usr/bin/python{3,}、これは将来のAPT更新に対して(または後でPython 2を再インストールする場合)堅牢ではない可能性があるのではないかと心配しています。別のオプションはエイリアスを設定することですが、それは私のユーザーに対してのみ機能し、システム全体に対しては機能しません。

また、Ubuntuにはpython-is-python3これを正確に実行するパッケージがありますが、Debianにはそのようなパッケージはありません。

回答

3 StephenKitt Sep 17 2020 at 19:59

それ/usr以外はすべて/usr/localパッケージからのものであるというルールを守りたい場合は、実際にpython-is-python3パッケージをダウンロードしてインストールします。/usr/bin/pythonシンボリックリンクと必要なドキュメントのみが出荷され、パッケージの関係によって将来問題が発生する可能性はほとんどありません。

エイリアスはスクリプトのシバンには役立ちません。Pythonパッケージが代替を使用しないことを考えると、独自の代替(update-alternativesなど)を作成することは堅牢なソリューションではありません。

スクリプトでを使用/usr/bin/env pythonしている場合は、/usr/local/bin代わりに手動でリンクを追加できます。

あなたが何をすることに決めたかに関係なく、今後、DebianのPython依存パッケージは明示的にpython2またはpython3それらのシバンで使用する必要があるので、公式リポジトリからのパッケージによって引き起こされる問題に遭遇することはありません(Debian 11以降、を除くそれらはまだクリーンアップされていない古いPythonパッケージをまだ持っているので、今のところ不安定で実験的です)。

2 a3nm Nov 02 2020 at 22:17

Debianは現在python-is-python3自体を出荷しているようです(この記事の執筆時点ではsidとテスト中)ので、質問の前提はもはや成り立たず、次のことができますsudo apt update && sudo apt install python-is-python3。