Я совершил ужасную ошибку и удалил две папки из /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
Если apt
borked, иногда можно исправить все вручную с помощью dpkg
и полного пути к локальному кэшированному пакету. Вот как:
cd
гдеapt
хранятся посылки, а именно/var/cache/apt/архивы/dpkg
затем (по мере необходимости) переключатель для установки, удаления, очистки или чего-либо еще, затемимя файлапакета в текущем каталоге. Таким образом, чтобы установить одну из нескольких версий'фубар'которые были недавно успешно установлены, введитеdpkg -i foobar<TAB>
и клавиша '' заполнит оставшиеся поля с помощьюbash
автодополнения или покажет доступные версии.- Если
dpkg
говорит, что вам нужно'физбан', (или нужно избавиться от'физбан'), выполните шаг №2, с'физбан'. Затем попробуйте шаг №2 с'фубар'снова. - Повторяйте пункты 2 и 3, пока система не придет в желаемое состояние.
Это предполагает, что необходимые архивы пакетов все еще кэшируются локально. Иногда пакеты нужно искать в сети. В этом случае номер версии необходимого пакета может быть нескольконеопределенный-- в таких случаях /var/log/dpkg.log
есть ответ, просто grep
или sed
через него для имени пакета, и он покажет версии, dpkg
с которыми он работал до сих пор.