Pythonシンボリックリンクの混乱

Pythonシンボリックリンクの混乱

Ubuntu 16.04を使う

python3Python 3.6をコマンドのデフォルト値に設定してみてください。私は答えのようなものを見つけ、注意深く読むことなく次の行をすばやくコピーして貼り付けました。

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1
update-alternatives: using /usr/bin/python3.6 to provide /usr/bin/python (python) in auto mode
$ sudo update-alternatives  --set python /usr/bin/python3.6

結果は次のとおりです。

$ python3
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
$ python
Python 3.6.8 (default, Dec 24 2018, 19:24:27)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.python

私の友人は次のように復元しようとしました。

$ sudo update-alternatives --install /usr/bin/python3.6 python /usr/bin/python 1
update-alternatives: renaming python link from /usr/bin/python to /usr/bin/python3.6

結果は次のとおりです。

$ python
zsh: command not found: python

Python 3.6に関連付けられているすべてのエントリは、次の例のように「シンボリックリンクレベルが多すぎます」というエラーを表示します。

$ sudo update-alternatives --config python
update-alternatives: warning: alternative /usr/bin/python (part of link group python) doesn't exist; removing from list of alternatives
update-alternatives: error: cannot stat file '/usr/bin/python3.6': Too many levels of symbolic links

最大の問題は、私の友人のように端末を閉じても端末アプリケーションが機能しないことです。今、彼はUbuntuを再インストールする必要があります。私はまだ端末を閉じておらず、すべてがうまく動作することを除いて、同じ状況にあります。

シンボリックリンクを元に戻す方法は?

答え1

Pythonパッケージはジョブ設定を復元するために代替エントリを使用しません。

sudo update-alternatives --remove-all python
cd /usr/bin
sudo ln -sf python2.7 python
sudo ln -sf python3.5 python3

python3.6バイナリが上書きされたように見えるため、Python 3.6パッケージを再インストールする必要があるかもしれません。

答え2

切断されたリンクを切断することから始めてください。

unlink /usr/bin/python2.7

次に sudo update-alternatives を使用して設定します。

sudo update-alternatives --config python

その後、目的のコマンドを再実行します。

関連情報