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

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

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

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