Принудительное восстановление dpkg

Принудительное восстановление dpkg

Я совершил ужасную ошибку и удалил две папки из /usr/libкаталога на моем Debian. Я удалил python2.7/иpkgconfig/

Что я безуспешно пытался исправить:

  • sudo dpkg -i python2* ->"не удалось найти платформенно-независимые библиотеки"-->"/usr/lib/pyton2.7/py_compile.py такого файла нет"

  • даже удалив его (python; для будущей переустановки) через sudo dpkg -i python2.7-minimal--> не могу удалить, потому чтоpython2.7-minimal зависит от python2.7-minimal (>=... .deb) и python2.7 зависит от python2.7-minimal (>=..._rc2.deb)

Поэтому я не могу переустановить его или восстановить пакеты, пока они не «настроены» dpkg, как apt-get install pythonговорится, но также не могу удалить их для чистой переустановки, поскольку они зависят от другой версии в dpkg, и я не знаю, как решить эту проблему.

Так как же мне полностью удалить пакеты со всеми зависимостями через dpkg или apt, чтобы решить описанную выше ситуацию?

решение1

Если aptborked, иногда можно исправить все вручную с помощью dpkgи полного пути к локальному кэшированному пакету. Вот как:

  1. cdгде aptхранятся посылки, а именно/var/cache/apt/архивы/
  2. dpkgзатем (по мере необходимости) переключатель для установки, удаления, очистки или чего-либо еще, затемимя файлапакета в текущем каталоге. Таким образом, чтобы установить одну из нескольких версий'фубар'которые были недавно успешно установлены, введите dpkg -i foobar<TAB>и клавиша '' заполнит оставшиеся поля с помощью bashавтодополнения или покажет доступные версии.
  3. Если dpkgговорит, что вам нужно'физбан', (или нужно избавиться от'физбан'), выполните шаг №2, с'физбан'. Затем попробуйте шаг №2 с'фубар'снова.
  4. Повторяйте пункты 2 и 3, пока система не придет в желаемое состояние.

Это предполагает, что необходимые архивы пакетов все еще кэшируются локально. Иногда пакеты нужно искать в сети. В этом случае номер версии необходимого пакета может быть нескольконеопределенный-- в таких случаях /var/log/dpkg.logесть ответ, просто grepили sedчерез него для имени пакета, и он покажет версии, dpkgс которыми он работал до сих пор.

Связанный контент