我无法从 18.04 升级到 Ubuntu 20.04。当我运行 时sudo update-manager -d
,它显示错误。我在 Ubuntu 升级中断后看到此错误。
sh@sh-Lff:~$ update-manager -d
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/UpdateManager/backend/InstallBackendAptdaemon.py", line 239, in _on_finished
trans_failed=trans_failed)
File "/usr/lib/python3/dist-packages/UpdateManager/backend/__init__.py", line 319, in _action_done
self.window_main.duplicate_packages = self.get_deb2snap_dups()
File "/usr/lib/python3/dist-packages/UpdateManager/backend/__init__.py", line 125, in get_deb2snap_dups
if (deb in cache and cache[deb].is_installed):
File "/usr/lib/python3/dist-packages/apt/cache.py", line 350, in __contains__
return self.__is_real_pkg(self._cache[key])
TypeError: Expected a string or a pair of strings
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/UpdateManager/backend/InstallBackendAptdaemon.py", line 246, in _on_finished
error_string=error_string, error_desc=error_desc)
File "/usr/lib/python3/dist-packages/UpdateManager/backend/__init__.py", line 319, in _action_done
self.window_main.duplicate_packages = self.get_deb2snap_dups()
File "/usr/lib/python3/dist-packages/UpdateManager/backend/__init__.py", line 125, in get_deb2snap_dups
if (deb in cache and cache[deb].is_installed):
File "/usr/lib/python3/dist-packages/apt/cache.py", line 350, in __contains__
return self.__is_real_pkg(self._cache[key])
TypeError: Expected a string or a pair of strings
遵循的步骤:
sudo apt-get update
sudo apt-get upgrade
sudo update-manager -d
运行命令后,我的更新进度很好,但电池没电了,系统关机了,我再次执行上述步骤并开始看到问题
我使用以下命令更新了默认版本:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 20
更新后,当我使用 检查 Python 版本时python --version
,我看到了Python 2.7.17
。
答案1
我遇到了这个问题并将分享我如何解决这个问题。
问题源于某些 ubuntu 软件包阻止了 20.04 的完整 ubuntu 软件包更新。因此,当我运行:
sudo apt list --upgradable
它显示了一个很大的软件包列表,特别是 python3 软件包列表,尽管我刚刚升级(因此没有什么是“更”可升级的)。
其中一个是 2to3 包,所以我尝试运行
sudo apt install 2to3
其中提到了一些阻止安装的软件包。对我来说,这很麻烦mutter
— python-gi
— 我sudo apt remove
完成了这些,并立即更新了一堆软件包。
然后我就跑了
sudo apt upgrade
并且它升级了一堆“被阻止”的软件包。然后,我运行它sudo update-manager
,它能够从之前死机的地方重新开始运行——它最终报告了阻止升级的软件包(对我来说postgresql-10-postgis-2 .4
),所以我sudo apt remove
就这么做了。
然后,运行sudo update-manager
使我能够继续前进,并且我能够完成运行“部分升级”。python--version 终于报告了。
这可能不是关于如何修复它或您自己修复它的简明说明,但希望它会有所帮助。