Linux

Исправление: Не удалось открыть файл /var/lib/dpkg/status

Вы можете получить неприятную ошибку “не удалось открыть файл /var/lib/dpkg/status” или что-то подобное, если вы’ковырялись в каталоге /var/lib/dpkg/ и очищали его от имени пользователя root. Большинство файлов, расположенных в /var, согласно стандарту иерархии файловой системы Linux, являются временными и изменяются в процессе работы. Однако это не означает, что их нужно очищать так же, как кэш веб-браузера.

Поскольку у большинства пользователей Linux нет необходимости копаться в этом, хорошая новость заключается в том, что вы, вероятно, не столкнетесь с этой проблемой почти никогда. Те, кто работает с дистрибутивами, не использующими apt-get, такими как Fedora или Arch, также никогда не получат эту ошибку, поскольку она полностью специфична для этого пакетного менеджера. Тем не менее, если вы с ней столкнулись, читайте дальше.

Метод 1: Исправление случайной ошибки «Не удалось открыть файл /var/lib/dpkg/status

Если эта ошибка возникла неожиданно, то введите ls /var/lib/dpkg/status в командной строке и посмотрите на вывод.

Вы также можете воспользоваться графическим файловым менеджером, чтобы перейти к ним через браузер и посмотреть.

Убедитесь, что в результатах вы видите файл состояния. Обычно вы просто получите строку с текстом /var/lib/dpkg/status и ничего больше после нее, прежде чем она вернет вас прямо в приглашение. Если это так, то у вас там есть файл, и все должно быть в порядке. Закройте все программы, в которых вы работали после сохранения, а затем перезагрузитесь.

Как только вы вернетесь к работе, введите sudo apt-get update после чего sudo apt-get upgrade в терминале и следуйте подсказкам. Вероятно, у вас попросят пароль администратора, но после обновления все будет в порядке. Следите за появлением странных ошибок.

Если файла там не было, то вам придется принять некоторые решения.

Метод 2: Пересоздание /var/lib/dpkg/status

Некоторые пользователи делают резервную копию всех важных данных перед переустановкой Linux. Вы можете сделать это, но, возможно, есть способ спасти ситуацию сначала. Существует резервная копия /var/lib/dpkg/status, которая создается автоматически, и, надеюсь, прошло не слишком много времени с тех пор, как вы получили ошибку, из-за которой она была рассинхронизирована.

Попробуйте запустить sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status в терминале. Если это не приведет к ошибке, то вы можете проверить, устранил ли это проблему. Это восстановит последнюю резервную копию файла состояния, но, к сожалению, если она была слишком устаревшей, вы можете оказаться в горячей воде. Тем не менее, вы можете перезапустить систему, а затем запустить sudo apt-get update а затем sudo apt-get upgrade чтобы посмотреть, какие ошибки зависимостей в итоге появятся. В лучшем случае, у вас не будет никаких проблем, и вы просто сможете продолжить работу с системой, как обычно.

Вы также можете попробовать восстановить список состояний. Введите sudo touch /var/lib/dpkg/status создайте пустой файл от имени пользователя root, а затем попробуйте sudo apt-get install long-list из терминала. Есть несколько скриптов, которые делают это автоматически, но это по сути то же самое и без опасности запуска потенциально устаревшего скрипта на вашей машине. Учтите, что для этого вам нужно будет вспомнить, что у вас есть в системе, и программа предложит вам вспомнить.

Вы также можете попробовать ls /var/backups/dpkg.статус* и посмотрите, какие из них вы можете использовать для этого.

Взгляните на список, который появляется при запуске этой программы. Если вы видите не запечатанный файл, попробуйте sudo cp /var/backups/dpkg.status.0 /var/lib/dpkg/status и посмотрите, исправит ли это ситуацию. Вы всегда можете скопировать один из них и выполнить команду gunzip для его распаковки. Однако имейте в виду, что чем дальше в прошлое, тем выше риск обновления устаревшего файла, что приведет к поломке зависимостей

Добавить комментарий