Я только что убил свою систему 19.04.
Я работал под управлением sudo apt-get upgrade
и хотел установить пакет atop
для мониторинга без прерывания процесса обновления.
Поэтому я решил загрузить пакет и распаковать его в файловую систему с помощью dpkg -x
с помощью приведенных ниже команд ( не пробуйте их в реальной системе 19.xx !):
apt download atop
sudo dpkg -x atop_..._amd64.deb /
и тогда я не могу использовать все команды, включая sudo
и apt
.
Это была виртуальная машина, поэтому у меня есть снимок. Сообщено об ошибке 1843476 в LaunchPad о 19.04 и 19.10.
Но что не так с моим методом?
Я использовал его раньше в Ubuntu 16.04 LTS и 18.04 LTS без проблем.
Конечно, после запуска dpkg -x
я использовал sudo apt install
для обычной установки пакета, чтобы он был указан в /var/lib/dpkg/status
.
В недавно установленной системе /lib
символьная ссылка на /usr/lib
:
$ ls -l /lib lrwxrwxrwx 1 root root 7 Apr 30 02:24 /lib -> usr/lib
Но dpkg -x
перезаписал /lib
символьная ссылка с новым содержанием.
В уничтоженной системе это теперь содержит только одну папку (от atop
содержание пакета):
/lib/systemd/system-sleep/atop-pm /lib/systemd/system/atop.service /lib/systemd/system/atopacct.service
Таким образом, система не может найти библиотеки.
Я решил эту проблему путем начальной загрузки LiveCD, монтирования проблематичной системы и воссоздания символьной ссылки:
cd /media/user/problematic-disk/
sudo mv lib/* usr/lib
sudo rmdir lib
sudo ln -s usr/lib lib
и наконец переустановите пакет с sudo apt install --reinstall atop
.
Примечания:
1. LTS Ubuntu 16.04 и 18.04 LTS не затронуты из-за того, что у них нет символьных ссылок на /
уровень (кроме ядра и initrd).
2. dpkg -x
метод должен использоваться очень тщательно (в качестве последнего шанса починить вещи) и не использоваться вообще на 19,04 и более новые версии из-за многих символьных ссылок на верхнем уровне (bin -> usr/bin
, lib -> usr/lib
, lib32 -> usr/lib32
, lib64 -> usr/lib64
, libx32 -> usr/libx32
, sbin -> usr/sbin
).