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

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

我按下按键,发出了命令:

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

但那没有用。

任何帮助都将不胜感激。

答案1

这是一个有趣的失误;我总是喜欢用来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)帮助。-cdebsums(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.org或者http://packages.ubuntu.comwget(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

相关内容