Excluído / usr / bin / python * por engano, como posso recuperá-lo?

2

Por um deslize das chaves eu emiti o comando:

sudo rm /usr/bin/python*

e com isso os problemas começaram. O Python ainda inicia, mas quando eu agora quero fazer qualquer coisa com o dpkg eu recebo este erro (mensagem de erro inteira não incluída como é longa):

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)

Então basicamente papyon / pydebug ou dpkg parece estar causando um problema. Eu tentei coisas como

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

seguindo o mesmo problema mencionado em outro fórum: No Ubuntu: eu deletei /usr/bin/python2.7 - por favor ajude

mas sem sucesso. Parece que não importa o que eu faça com o dpkg, recebo o mesmo erro. Eu ingenuamente tentei isso:

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

mas isso não funcionou.

Qualquer ajuda aqui seria appriciated.

    
por Paul 16.11.2011 / 00:32

1 resposta

3

Esse é um deslize hilariante dos dedos; Sempre gosto de usar sudo echo /path/to/files/*glob* para ver quais arquivos especificamente estou prestes a excluir antes de alterar o echo para rm . Agora você aprendeu a lição também! Diversão.

Pregação à parte, isso não deve ser muito difícil de consertar, mas levará alguns "passes". deb packages são ar(1) packages e podem ser facilmente manipulados com 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

Tente isto:

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

Iterar para cada pacote que você precisa "consertar". A opção de linha de comando debsums(1) -c pode ser útil se você tiver debsums(1) instalado.

Note que o comando tar é um pouco "destrutivo" - ele sobrescreverá o que for necessário. Se você preferir ver o que tudo irá descompactar, pule a etapa cd / de antemão e tar(1) irá descompactar no diretório, dando a você a chance de ver o que é feito.

Uma vez que você tenha tudo descompactado que você precisa, eu tentaria arrancar dpkg(1) "feliz" novamente através de seus próprios mecanismos. (O control.tar.gz contém scripts de controle que são executados em upgrades, instalações, desinstalações, etc. Acabei de pular todos eles, pensando que uma vez que o Python tenha sido reinstalado, você pode use dkpg(1) para corrigir os problemas.)

Certamente temos pacotes diferentes instalados, mas isso pode ser útil para descobrir quais pacotes precisam ser corrigidos:

$ 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
$ 

E observe que você pode extrair pacotes diretamente dos arquivos sem usar apt-get(8) . Eles são apenas sites HTTP e link ou link facilitará a obtenção dos pacotes necessários com wget(1) ou curl(1) .

Atualizar

Ah, sim, observe que /usr/lib/python* é onde as bibliotecas e módulos do Python são mantidos. /usr/bin/python* é onde o interpretador Python é mantido. Sua tentativa de consertar as coisas com cp /usr/lib/python2.7 /usr/bin/python2.7 não ajudou. Também /usr/lib/python2.7 é um diretório , mas /usr/bin/python deve ser (e foi) um único arquivo executável. Sinta-se à vontade para rm -r /usr/bin/python2.7 /usr/bin/python .

    
por 16.11.2011 / 00:52

Tags