我很不幸地尝试手动从源代码 tarball 安装 Python 3.8.5,结果“哎呀”——我成功地覆盖了我现有的 Python 安装,令人惊讶的是——我的 Ubuntu 20.04LTS 安装也覆盖了。不是一点都不喜欢。
我正在运行 Xubuntu(Xfce4+Ubuntu),因此那些依赖 Python 3 库的程序或多或少都出现了问题,现在,很多依赖 Python 库的程序不再起作用。哎呀。
我一直在尝试查找所有可能的修复指南(通过 dpkg、apt、删除目录、清除、尝试重新安装,等等),并遵循 AskUbuntu 和 StackExchange 上发布的几乎所有可能的说明,但这些指南对我都没有用。
原因之一可以我在 Raspberry Pi 4B 上运行 Ubuntu 20.04LTS,因此尝试卸载 dpkg/apt 时出现 arm64 兼容性错误。许多 dpkg/apt 错误明确指出 arm64 没有可用的配置/安装选项。这可能需要开发人员研究一下。
好的一面是,我确实有一个完整的操作系统安装的磁盘映像 (.img)(经常备份,可以节省很多怒气!)我可以使用它来挂载和传输文件(或者,在最坏的情况下,完全覆盖当前安装) - 它包含发生此事故之前可运行的 Python 3.8.x 版本,但除此之外,我还将失去一周的工作成果。
我现在想,我将尝试从备份映像版本复制有效的 Python3 版本,并覆盖安装中现在已损坏的所有 Python3 相关文件(就 Python3 而言)。
我可以使用另一个端点来复制/rsyncing 文件,但我想确切地知道我应该从备份映像中复制和覆盖哪些文件?我应该直接前往吗?/usr/bin/python*
还有其他需要考虑的事情吗?或者这只是一个愚蠢的差事,我还不如用 1 周++ 的备份重写整个系统并处理它?
回想起来......(现在已经是 2020 年了!)--如果仅有的Python Foundation 的页面上已经有警告,不要安装比 Linux 发行版提供的版本更新的版本。哦,好吧,有时你必须通过艰难的方式学习。
在此先感谢您对这个问题提供的任何帮助。
编辑:我的问题被标记为“该问题已经得到解答。”——好吧,我按照指示做了删除 Python 3 后,Ubuntu 软件中心、终端和其他应用程序无法运行(我被指向的地方)事情只会变得越来越糟。
显然有人只说了“太长不看”而完全忽略了我只想通过直接从操作系统驱动器的有效备份克隆中覆盖安装来替换 Python 3.8.5 的要点,因为其他方法似乎都行不通。简单地覆盖并复制到与 Python 相关的文件,仅此而已。
按照上面链接中的说明操作后(主要是:通过 apt 卸载 python,重新启动,重新安装),我的所有 PPA 存储库列表都消失了,就像我之前更新的大多数软件包一样,最糟糕的是,apt 和 dpkg 现在只是抛出错误,因为它们正拼命尝试降级到以前版本的软件包(较新版本仅在附加 PPA 存储库中),并在此过程中导致整个操作系统的功能出现更多漏洞,因为 dpkg 和 apt 似乎无法再解决损坏软件包的问题。
即:sudo apt update
现在只会导致:
Hit:1 http://archive.canonical.com/ubuntu focal InRelease Hit:2 http://ports.ubuntu.com/ubuntu-ports focal InRelease Hit:3 http://ports.ubuntu.com/ubuntu-ports focal-updates InRelease Hit:4 http://ports.ubuntu.com/ubuntu-ports focal-backports InRelease Hit:5 http://ports.ubuntu.com/ubuntu-ports focal-security InRelease Hit:6 http://ports.ubuntu.com/ubuntu-ports focal-proposed InRelease Hit:7 https://apt.llvm.org/focal llvm-toolchain-focal-10 InRelease sh: 1: /usr/lib/cnf-update-db: not found Reading package lists... Done N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'http://apt.llvm.org/focal llvm-toolchain-focal-10 InRelease' doesn't support architecture 'arm64' E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi' E: Sub-process returned an error code
提醒自己,也许也提醒后代(如果有的话):“用火箭筒射击蚊子可能会产生不想要的结果。”——至于这个 Ubuntu 20.04LTS 安装,我想说现在它几乎是一团糟。是时候从备份映像中替换整个安装。吸取了多个教训,包括这里提出的解决方案并非都完全有用。祝你有个愉快的一天。