Я удалил несколько файлов /var/lib/dpkg/
, а именно:
/var/lib/dpkg/status
/var/lib/dpkg/available
/var/lib/dpkg/info/*
Я понимаю, что Debian использует эти файлы для хранения информации об установленных пакетах. Теперь, когда я это делаю apt-get update
, я получаю следующую ошибку:
Reading package lists... Error!
E: Could not open file /var/lib/dpkg/status - open
(2: No such file or directory)
E: The package lists or status file could not be parsed or opened.
Как я понимаю FHS , файлы, расположенные в /var
, не должны быть критичными для системы. Скорее это должны быть временные файлы, журналы, кэши и тому подобное.
Есть ли способ восстановить удаленные файлы?
apt
package-management
directory-structure
dpkg
Мартин Вегтер
источник
источник
/var/lib/dpkg/info
, тоже очень важен. Вы неправильно поняли FHS, и AFAIK единственными путями восстановления являются (а) восстановление из резервной копии или (б) переустановка.Ответы:
Если вы посмотрите на назначение / var как указано в стандарте иерархии файловой системы , оно говорит:
Обратите внимание, что «временные и временные» файлы являются лишь одной из вещей, которые он содержит. Он также содержит «каталоги и файлы спула» и «административные данные и данные журналов». Вы удалили критические «административные данные».
Далее объясняется, почему
/var
существует:Это ключевой момент
/var
: данные в нем изменяются, в отличие от/usr
(который изменяется только при добавлении / удалении / обновлении программного обеспечения).Дальнейшие разделы объясняют различные подкаталоги
/var
; например,/var/lib
(где файлы, которые вы удалили, использовали для хранения) содержит «информацию о состоянии, относящуюся к приложению или системе», определяемую как «данные, которые программы изменяют во время работы, и которые относятся к одному конкретному хосту».Вы действительно не должны удалять файлы, не зная, для чего предназначен конкретный файл. С файлами , удаляемых, если у вас нет резервной копии этих файлов, я думаю , единственное , что осталось сделать , это сделать резервную копию
/home
, и/etc
т.д. , и переустановке. Пока вы не сделаете это, вы не сможете использоватьdpkg
(и APT, и т. Д.). Помимо этого, система должна продолжать функционировать.источник
apt-get update
буду перестраивать имеющиеся, я верю. Информация / материал поступает из каждого установленного пакета, но она также отражает историю, по крайней мере, для старых файлов conf ... но вы, вероятно, можете избежать копирования с той же самой машины пакетов)/var/lib
Информация о состоянии. Постоянные данные, изменяемые программами по мере их запуска, например, базы данных, метаданные системы упаковки и т. Д.»Вы не можете «воссоздать»
/var/lib/dpkg/status
в смысле простого запуска команды, и файл волшебным образом появляется. Нет. Вам нужно использовать резервную копию файла и учиться никогда не ходить, удаляя вещи из/var/lib
каталога:Это даст вам статус пакета накануне. Начни молиться, чтобы это не сломало что-то еще.
источник
/var/backups
, там есть несколько копий./var/backups/dpkg.status.0
?Файлы, расположенные в
/var
, очень критичны к системе. Например,/var/mail
или/var/spool/mail
содержит электронную почту пользователей; Вы не можете удалить это больше, чем зажечь огонь в почтовом ящике вашего соседа. Это только файлы в определенных подкаталогах,/var
которые содержат файлы, которые являются более или менее временными: файлы журналов/var/log
, кэши, которые обычно могут быть воссозданы/var/cache
, временные файлы (которые вы не должны удалять, когда они используются!) В/var/tmp
.Данные
/var/lib
могут быть весьма важными. Например, MySQL обычно настроен для хранения своих баз данных/var/lib/mysql
по умолчанию: если вы удалите это, вы уничтожите свои базы данных. Dpkg также размещает свои собственные базы данных/var/lib
;/var/lib/dpkg/status
является одним./var/lib/dpkg/status
содержит информацию об установленных пакетах. Если вы удалили это, вы должны восстановить его из резервной копии. Если ваша резервная копия не полностью обновлена, проверьте журналы недавних манипуляций с пакетами в/var/log/apt
и/var/log/dpkg.log
. Вам нужно будет создать этот файл до того, какdpkg
будет работать./var/lib/dpkg/available
построен из данных, загруженных из Интернета.apt-get update
должен восстановить его./var/lib/dpkg/info
содержит файлы, которые поставляются с пакетами Debian. Вы можете восстановить эти файлы, просто переустановив пакеты. Конечно, вам понадобится список установленных пакетов для этого. Если вы восстановили/var/lib/dpkg/status
, вы можете извлечь список пакетов оттуда.Если вы проиграли
/var/lib/dpkg/status
, вы можете восстановить его, создав пустой файл и запустив егоapt-get install --reinstall
в списке пакетов. Одно из мест, где также сохраняется список пакетов/var/lib/apt/extended_states
, по крайней мере, если вы когда-либо использовали APT только для установки пакетов (в отличие отdpkg
непосредственного использования) - используйте этот файл вместо/var/lib/dpkg/status
int в приведенной выше команде. Если вы тоже это удалили, вы можете перестроить примерный список пакетов с помощью$(cd /usr/share/doc && ls)
, потому что большинство пакетов создают запись в/usr/share/doc
. Вероятно, есть несколько исключений.Не просите никакой помощи по управлению пакетами в этой системе. Восстановление после удаления критичных для системы файлов не является точной наукой. Если вы не можете восстановить данные из резервных копий, вам следует как можно скорее установить новую чистую систему.
источник
/var/lib/dpkg/available
Может быть воссоздано из метких данных. Я нашел самый простой способ сделать это, используяdselect
и выбирая обновление. Я ожидаю, что это будет работать, только если вы выбрали способ обновления. Похоже,dselect
делает:Обратите внимание, что все могло измениться с момента появления Debian sarge.
Есть трюки для воссоздания,
/var/lib/dpkg/status
основанные на том факте, что каждый пакет требуется для добавления каталога в/usr/share/doc
каталог. Смотрите сообщение на http://linuxmafia.com/faq/Debian/package-database-rebuild.html . Представлен скрипт, который использует отфильтрованный список / usr / share / doc для создания списка установленных пакетов, а затем переустанавливает их все.источник
Ну, я полагаю, вы могли бы воссоздать файл пустым, а затем выполнить длинный список установки apt-get, предполагая, что вы знаете, что устанавливали в первый раз.
У меня есть древний скрипт, который делает это в основном из самого маленького набора пакетов, которые могут запускать apt-get. При его использовании я заканчивал тем, что сообщал о десятках необъявленных зависимостей.
Если вы не знаете всего, что вы установили, переустановите систему.
источник
В Linux Mint 17 я столкнулся с похожей проблемой звучания. Я был увлечен удалением файлов и оказался там, где «Администрирование -> Менеджер обновлений» просто не выглядел счастливым .......
Решение, которое работало для меня, состояло в том, чтобы создать каталог с именем "dpkg" согласно сообщению об ошибке, и в нем создать пустой файл с именем "status".
Затем я запустил диспетчер обновлений.
Это сработало для меня :-)
источник
Если у вас есть другие учетные записи, отличные от 'roo't, вы можете попробовать apt-get dist-upgrade с одной из них. Apt загрузит архивы, но остановится при их установке из-за некоторых отсутствующих каталогов в / var /. Каталоги будут показаны. создайте их и снова запустите apt-get dist-upgrade. В случае, если их создание не удастся из альтернативной учетной записи, войдите в систему и создайте каталоги, затем снова запустите apt. Вам будет предложено указать конфигурацию logrotate и несколько других конфигураций, просто введите Y n продолжить до конца, а затем перезагрузите компьютер после завершения apt dist-upgrade. теперь все должно вернуться к нормальной жизни.
источник
Извините за задержку. Briam, заново создайте каталоги и файлы вручную, а затем обновите репозитории (
mkdir
иtouch
, как того требует отображаемая ошибка), и используйтеdpkg --configure -a
.Ваша система будет работать нормально, но важно переустановить ее, чтобы убедиться, что она не повреждена; предыдущий только выиграть время, чтобы запланировать переустановку ... и позаботиться об удалении
/var/lib/*
файлов.источник
Если вы купили raspberry pi 3 и столкнулись с проблемой и получили сообщение об ошибке «не удалось открыть файл / var / lib / dpkg / status проанализирован или открыт», это обходной путь, который мне помог:
Как воссоздать файл "/ var / lib / dpkg / status"? Просто потому, что это не бесполезный файл, это очень важный файл, в котором хранится некоторая информация об установленных пакетах в вашей raspbian ОС, так что вот как я был воссоздан :
Выполните wget в вашей системе Raspbian:
Предоставьте некоторые разрешения:
Проанализируйте папку документации в вашей системе и заново создайте файл состояния:
После этого загрузите файл и внимательно прочитайте. Выполните шаги, описанные в файле:
источник
recover1.sh
уничтожит ваш ток/var/lib/dpkg/status
без тестирования, если он уже в порядке. Затем он выполнит смешанный пакет трюков, чтобы попытаться восстановить несколько рабочую версию. Никогда не запускайте вышеуказанный скрипт, если вы полностью не пропустите файл / var / lib / dpkg / status. В противном случаеstrings /var/lib/dpkg/status
может быть лучший способ начать восстановление поврежденного файла.