Fedora22で突然dnfが使えなくなって解決した話
dnf updateするかーとおもっていつものように
sudo dnf update
とすると
Traceback (most recent call last): File "/bin/dnf", line 36, in <module> main.user_main(sys.argv[1:], exit_code=True) File "/usr/lib/python2.7/site-packages/dnf/cli/main.py", line 198, in user_main errcode = main(args) File "/usr/lib/python2.7/site-packages/dnf/cli/main.py", line 84, in main return _main(base, args) File "/usr/lib/python2.7/site-packages/dnf/cli/main.py", line 117, in _main cli.configure(map(ucd, args)) File "/usr/lib/python2.7/site-packages/dnf/cli/cli.py", line 1006, in configure self.base.plugins.run_init(self.base, self) File "/usr/lib/python2.7/site-packages/dnf/plugin.py", line 104, in run_init plugin = p_cls(base, cli) File "/usr/lib/python2.7/site-packages/dnf-plugins/system_upgrade.py", line 359, in __init__ super(SystemUpgradePlugin, self).__init__(base, cli) TypeError: must be type, not None
とエラー。
調べてみると https://github.com/rpm-software-management/dnf-plugin-system-upgrade/commit/4bbbf1ec0c3f387249d30dd103ff4d002c17f574 に行き着いた。 Python2のユニコード周りのバグらしい...
Unfortunately, Fedora 21 and Fedora 22 don't have that
ほんとに不運だ...
ちゃんと修正されたソースコードはあるのでそれをDLして現状のものを置き換える(念の為バックアップもとっておく)
# cd /usr/lib/python2.7/site-packages/dnf-plugins/ # cp system_upgrade.py{,.bak} # wget https://raw.githubusercontent.com/rpm-software-management/dnf-plugin-system-upgrade/4bbbf1ec0c3f387249d30dd103ff4d002c17f574/system_upgrade.py
これで解決した。