误删除了/ usr / bin / python *,如何恢复它?


2

通过按键,我发出了命令:

sudo rm /usr/bin/python*

于是问题开始了。Python仍然可以启动,但是当我现在想对dpkg做任何事情时,我会收到此错误消息(因为很长,所以不包括整个错误消息):

AttributeError: 'module' object has no attribute 'pydebug'
dpkg: error while cleaning up:
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 /var/cache/apt/archives/python-papyon_0.5.5-1ubuntu3.1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

因此基本上,papyon / pydebug或dpkg似乎引起了问题。我已经尝试过类似的东西

sudo apt-get -f install
sudo apt-get --fix-missing install

以下在另一个论坛中提到的相同问题:在Ubuntu上:我删除了/usr/bin/python2.7-请帮助

但无济于事。看来无论我对dpkg做什么,都会收到相同的错误。我天真地试图做到这一点:

sudo cp /usr/lib/python2.7 /usr/bin/python2.7
sudo ln -s /usr/bin/python2.7 /usr/bin/python

但这没有用。

在这里的任何帮助将不胜枚举。


笑倒霉....

您是否尝试过卸载Python然后重新安装它?
NullUser

在我们讲话时将其删除。由于我仅使用3G连接,因此需要一些时间才能看到安装结果。干杯。

不,不可能:Processing was halted because there were too many errors. E: Sub-process /usr/bin/dpkg returned an error code (1)

Answers:


3

那只是手指间的欢笑。我总是喜欢用sudo echo /path/to/files/*glob*看什么文件明确我要删除我之前改echorm。现在您也已经学到了这一课!乐趣。

顺便说一句,解决这个问题并不难,但是需要一些“通过”。deb软件包是ar(1)软件包,可以通过以下操作轻松地进行操作ar(1)

$ ar xv /var/cache/apt/archives/python-papyon_0.5.5-1ubuntu1.3_all.deb
x - debian-binary
x - control.tar.gz
x - data.tar.gz

尝试这个:

mkdir /tmp/fixing_python
cd /tmp/fixing_python
ar xv /var/cache/apt/archives/<package_for_overwriting>
cd /
tar zxvf /tmp/fixing_python/data.tar.gz

迭代每个包需要“修复”。debsums(1)-c命令行选项可能会有所帮助(如果已debsums(1)安装)。

请注意,该tar命令有点“破坏性”-它会覆盖所需的内容。如果您希望查看所有内容将要解压缩的内容,请cd /事先跳过此步骤,然后tar(1)将其解压缩到目录中,从而使您有机会查看完成的操作。

一旦您解压缩了所需的一切,我将努力dpkg(1)通过其自身的机制使自己再次“快乐”。(control.tar.gz包含在升级,安装,卸载等上执行的控制脚本。我只是跳过了所有这些脚本,以为一旦重新安装Python,便可以使用dkpg(1)自身来解决问题。)

我们肯定安装了不同的软件包,但这可能对您找出需要修复的软件包有帮助:

$ dpkg -S /usr/bin/python*
python-minimal: /usr/bin/python
python2.6-minimal: /usr/bin/python2.6
python2.7-minimal: /usr/bin/python2.7
python3-minimal: /usr/bin/python3
python3.2-minimal: /usr/bin/python3.2
python3.2-minimal: /usr/bin/python3.2mu
$ 

请注意,您可以直接从存档中拉出软件包,而无需使用apt-get(8)。它们只是HTTP网站,而http://packages.debian.orghttp://packages.ubuntu.com将使您可以轻松地使用wget(1)或来获取所需的软件包curl(1)

更新

哦,是的,请注意,这/usr/lib/python*是保存Python库和模块的地方。/usr/bin/python*是Python解释器的存放地。您尝试修复的问题cp /usr/lib/python2.7 /usr/bin/python2.7没有帮助。也是/usr/lib/python2.7一个目录,但/usr/bin/python应该(曾经是)一个可执行文件。随便吧rm -r /usr/bin/python2.7 /usr/bin/python


1
顺便说一下,rm具有-i/ --interactive选项,您也可以使用它。
ulidtko 2011年

1
是的,但是rm -i经过四到五个文件后会变旧。
sarnold

该方法效果很好,并修复了我的dkpg问题。谢谢!我还删除了旧的修复程序(谨慎地btw :))现在出现了python包的问题: >>> numpy Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'numpy' is not defined 我猜PATH变量有问题或什么原因,因为dpkg告诉我已安装了numpy。您知道如何再次在/ usr / bin中安装python以及使软件包正常工作吗?
保罗

如果有帮助: >>> print sys.path ['', '/usr/local/lib/python27.zip', '/usr/local/lib/python2.7', '/usr/local/lib/python2.7/plat-linux3', '/usr/local/lib/python2.7/lib-tk', '/usr/local/lib/python2.7/lib-old', '/usr/local/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages']
Paul

@Paul:您只是numpy在提示符下输入?还是import numpy在提示时?numpy导入软件包之前,不能使用Plain 。
sarnold
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.