端的にいうと、Python2を消したことで、aptがまともに使えなくなった。
正直いってPython2なんか前時代の遺物だと思っており使わないだろと思って消したあと、そのことも忘れたころに例えば$ sudo apt upgrade
とかを実行したくなったとしよう。
そうするとこういうエラーが出るのである。
/var/lib/dpkg/info/apport.prerm: 14: /var/lib/dpkg/info/apport.prerm: pyclean: not found
dpkg: warning: subprocess old pre-removal script returned error exit status 127
dpkg: trying script from the new package instead ...
/var/lib/dpkg/tmp.ci/prerm: 14: /var/lib/dpkg/tmp.ci/prerm: pyclean: not found
dpkg: error processing archive /var/cache/apt/archives/apport_2.14.1-0ubuntu3.29_all.deb (--unpack):
subprocess new pre-removal script returned error exit status 127
/var/lib/dpkg/info/apport.postinst: 13: /var/lib/dpkg/info/apport.postinst: pycompile: not found
dpkg: error while cleaning up:
subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
/var/cache/apt/archives/apport_2.14.1-0ubuntu3.29_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
apportなるライブラリをインストールするにあたって何らかの必要なライブラリが不足しているように見える。pyclean: not found
とか pycompile: not found
とかがあるのだから。
ところが$ which pyclean
とかやってみれば
/usr/bin/pyclean
とライブラリが存在することを示しているのである。
それで何の気なしに中身を覗いてみると
$ head $(which pyclean) -n 1
#! /usr/bin/python2
とか書いてあるではないか。Python2がないのでここでコケていたわけである。
そういうわけでPython2を入れ直すために$ sudo apt install python2.7
とやると同じようなエラーが出るが、おそらくエラーで異常終了する前にPython2のインストール自体には成功するはずである(自分は成功した)。
あとはシンボリックリンクを貼ってやればOKである。
$ sudo ln -s /usr/bin/python2.7 /usr/bin/python2
むやみにライブラリを消すのはやめましょう。
【Ubuntu18.04】Python2は消すな(dpkg/apport, pycompile: not found )