我最近需要一个项目的 Python3 更新版本,所以我从源代码构建它;我相信我把事情搞得一团糟。所有基于 apt 的操作现在都以错误结束:
(Reading database ... 320897 files and directories currently installed.)
Removing nvidia-prime (0.6.2) ...
Traceback (most recent call last):
File "/usr/bin/lsb_release", line 28, in <module>
import lsb_release
ImportError: No module named 'lsb_release'
dpkg: error processing package nvidia-prime (--remove):
subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
nvidia-prime
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)
我相信 nvidia 错误与其说是问题,不如说是一种症状。这是在我尝试添加源时发现的,并遇到了:
sudo: add-apt-repository: command not found
Run Code Online (Sandbox Code Playgroud)
我很乐意将此框升级到 14.10,但所有基于升级的命令都返回相同的 lsb_release 消息。关于恢复我的包管理能力有什么建议吗?
编辑:使用 python 路径信息更新
lars@whorus:~/Downloads/Python-3.4.2$ ls -l /usr/bin/python*
lrwxrwxrwx 1 root root 9 Dec 18 10:36 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root 9 Apr 18 2014 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 3349512 Mar 22 2014 /usr/bin/python2.7
lrwxrwxrwx 1 root root 9 Mar 23 2014 /usr/bin/python3 -> python3.4
-rwxr-xr-x 2 root root 4061272 Apr 11 2014 /usr/bin/python3.4
-rwxr-xr-x 2 root root 4061272 Apr 11 2014 /usr/bin/python3.4m
lrwxrwxrwx 1 root root 10 Mar 23 2014 /usr/bin/python3m -> python3.4m
Run Code Online (Sandbox Code Playgroud)
Ubuntu 14.04 也lsb_release.py为 Python 2.7 安装了该文件,并且lsb_release似乎也可以在 python2.7 下运行。您可以通过执行以下操作来尝试此操作:
python2.7 /usr/bin/lsb_release
Run Code Online (Sandbox Code Playgroud)
如果可行,请备份文件/usr/bin/lsb_release并将第一行更改为:
#! /usr/bin/python2.7
Run Code Online (Sandbox Code Playgroud)
(你可以试验这些-Es选项,我会先把它们排除在外)。
apt-get再次运行后,重新安装 python3 及其依赖项。您可以通过使用apt-cache depends python3和使用apt-rdepends或reverse-depends(两者都必须安装)递归获取依赖项来确定直接依赖项。