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)

так что в основном проблемы с папиной /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 ответ1

3

Это одно веселое скольжение пальцев; Мне всегда нравится использовать sudo echo /path/to/files/*glob* чтобы посмотреть, какие конкретно файлы я собираюсь удалить, прежде чем изменить echo на rm . Теперь ты тоже усвоил урок! Веселье.

Проповедуя в стороне, это не должно быть слишком трудно исправить, но это займет несколько "проходов". Пакеты 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 / step, и 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.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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .