事象 : yumをアップデートしようとしたら失敗した
- 環境 : Cloud9(EC2 instance / Amazon Linux 2)
$ sudo yum -y update
File "/bin/yum", line 30
except KeyboardInterrupt, e:
^
原因 : Pythonを2.7から3.7へバージョンしたから
- バージョンアップ時にalternativesを使用してバージョンアップを図った
- なのでpythonへのリンクが無理やり「2.7」から「3.7」へ付け替えられた
もともとはpython2.7へのシンボリックリンクでしたが、3.5をインストールした際に勝手に付け替えてしまったために2系で記述されたpythonスクリプトが3.5の構文に合致しなくなってしまいました。
pythonバージョンアップによる/bin/yumのsyntaxエラー [except KeyboardInterrupt, e:] – yoseatsu.me
$ ls -la /usr/bin/ | grep python
lrwxrwxrwx 1 root root 24 Dec 7 05:07 python -> /etc/alternatives/python
lrwxrwxrwx 1 root root 9 Nov 6 19:45 python2 -> python2.7
-rwxr-xr-x 1 root root 7048 Aug 27 21:23 python2.7
-rwxr-xr-x 1 root root 1846 Aug 27 21:23 python2.7-config
lrwxrwxrwx 1 root root 16 Nov 6 19:45 python2-config -> python2.7-config
lrwxrwxrwx 1 root root 9 Nov 6 19:57 python3 -> python3.7
-rwxr-xr-x 2 root root 7048 Aug 27 22:02 python3.7
lrwxrwxrwx 1 root root 17 Nov 6 19:57 python3.7-config -> python3.7m-config
-rwxr-xr-x 2 root root 7048 Aug 27 22:02 python3.7m
-rwxr-xr-x 1 root root 173 Aug 27 22:02 python3.7m-config
-rwxr-xr-x 1 root root 3210 Aug 27 21:16 python3.7m-x86_64-config
lrwxrwxrwx 1 root root 16 Nov 6 19:57 python3-config -> python3.7-config
lrwxrwxrwx 1 root root 14 Nov 6 19:45 python-config -> python2-config
対応 : リンクを張りなおす
参考 : yumが壊れたので修理する - Ken01のブログ
「リンクを張りなおす」「スクリプトを修理する」から選ぶようですが
「スクリプトを修理する」は大変そうだし、他でまた問題が出ても嫌だし
ということで「リンクを張りなおす」をする
# alternativesにPython2.7を登録して
$ sudo alternatives --install /usr/bin/python python /usr/bin/python2.7 2
# alternativesでPythonを2.7に変更してpythonのリンクを張りなおす
$ sudo update-alternatives --config python
There are 2 programs which provide 'python'.
Selection Command
-----------------------------------------------
+ 1 /usr/bin/python3
* 2 /usr/bin/python2.7
Enter to keep the current selection[+], or type selection number: 2
# yumが動くようになった!
$ sudo yum -y update
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.7 kB 00:00:00
amzn2extra-docker | 3.0 kB 00:00:00
...
Complete!
$