Случайно удален /usr/lib/*.so.*

9

Пока я устанавливал MRTG, я по ошибке удалил /usr/lib/*.so.*и/usr/lib/*.so

Теперь я не могу загрузить свою систему, она застревает на заставке, и когда я нажимаю кнопку PAGEDOWN, я вижу, что некоторые вещи не загружаются.

Тем не менее, DHCP и WebMin работают, и из Webmin я могу видеть системные журналы, которые говорят мне, что чашки не загружаются, потому что libpipeline.so.1отсутствует и некоторые другие.

Мой компьютер работает 11.04

Ahsan
источник
1
Крест опубликован на Unix и Linux
Марко Сеппи
используйте Спросите Ubuntu для конкретных вопросов Ubuntu. и не пересекайте почту. Если вы не уверены, что это специфично для Ubuntu, сначала спросите здесь, и мы перенесемся, если это специфично для Ubuntu.
2
также совет на будущее ... если вы знали, что сделали что-то плохое до перезагрузки ... не перезагружайтесь. оставьте систему включенной и начните ремонт немедленно. Я выздоровел /binи /etcтак в прошлом

Ответы:

5

Поскольку вы только удалили, /usr/lib/*но нет /lib/*, вы, вероятно, можете восстановить. Я думаю, что все программы, которые вам необходимы для восстановления вашей системы, используют только библиотеки /usr/lib.

Загрузите текстовое приглашение для входа. Если обычная загрузка не дает login:подсказки в текстовом режиме, загрузитесь только с минимальным количеством служб. Нажмите и удерживайте, Shiftкогда ваш компьютер начнет показывать подсказку Grub; вам нужно нажать клавишу после того, как BIOS инициализирует клавиатуру, но до загрузки Grub, которая на некоторых машинах оставляет только небольшое временное окно и может потребовать нескольких попыток. В приглашении Grub нажмите, Downчтобы выделить загрузочную запись однопользовательского режима и загрузите ее.

Когда у вас есть командная строка, запустите, apt-get --reinstall install PACKAGE1 PACKAGE2 …чтобы переустановить пакеты, в которых есть файлы /usr/lib. Вы можете запустить этот фрагмент оболочки, чтобы получить список имен пакетов для переустановки:

egrep -l '/usr/lib/[^/]*\.so\.' /var/lib/dpkg/info/a*.list |
sed -e 's!^/var/lib/dpkg/info/!!' -e 's!\.list$!!'

Некоторые сценарии установки пакетов могут требовать наличия библиотек из других пакетов, поэтому вам может потребоваться запустить переустановки в определенном порядке. Если вы обнаружите, что установочные скрипты пакета пытаются использовать определенную программу, вы можете узнать, с какими библиотеками нужна эта программа ldd. Например, это означает, что в python отсутствуют три библиотеки, которые нужно переустановить:

$ ldd /usr/bin/python | grep 'not found'
    libssl.so.0.9.8 => not found
    libcrypto.so.0.9.8 => not found
    libz.so.1 => not found

dpkg -S /usr/lib/libz.so.1показывает, что этот файл zlib1gи так далее.

Если вы обнаружите, что apt-getне можете загрузить пакеты, сначала загрузите несколько пакетов ключей с live CD. zlib1gи libssl0.9.8два пакета, которые вам, скорее всего, понадобятся на ранней стадии.

Жиль "ТАК - перестань быть злым"
источник
10

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

Я бы посоветовал вам сначала загрузиться в среду LiveCD, чтобы сначала получить резервные копии (скопировать их на внешний USB-диск или в другой раздел), а затем начать снова.

Оли
источник
2
Точно, если вы не переустановите все, вы можете ожидать, что через несколько месяцев появятся странные сбои, сбои и т . Д.
JanC
3

/usr/libоткровенно говоря, содержал общие библиотеки всего, кроме критически важного для запуска программного обеспечения (это то, что входит /lib/и вещи, которые вы не устанавливали через менеджер пакетов (обычно /usr/local/lib).

Короткая версия, вы только что подключили свою систему.

Теперь, если у вас все еще /var/cache/apt/archivesполно вещей, с небольшой рассудительной магией, вы можете спасти ситуацию.

Проверьте, содержит ли он архивы для следующих пакетов:

libxapian
libsigc++
apt
libcwidget
libsqlite
libboost-iostreams 

Эти пакеты содержат библиотеки, в /usr/libкоторых aptitudeтребуется работать. Если вы можете найти в них пакеты, /var/cache/apt/archivesвы можете переустановить их вручную dpkg -i <packagename, и после того, как все они будут установлены, aptitude сможет запускаться.

Затем, выполнив команду, aptitude reinstall ~iвы будете принудительно переустанавливать каждый пакет, который уже был установлен, что, как мы надеемся, должно восстановить вашу систему. Я не могу дать абсолютных гарантий, потому что нанесенный вами ущерб в данном случае действительно впечатляет ...

Shadur
источник
1

Я испытал бы желание загрузиться с live-CD Ubuntu 11.04 и попытаться скопировать недостающие файлы обратно.

Прежде чем что-либо делать, убедитесь, что у вас есть хорошие резервные копии любых пользовательских файлов данных. Если нет, я бы загрузил live-CD, смонтировал жесткий диск только для чтения и сделал резервные копии как можно скорее.

RedGrittyBrick
источник
0

Когда я делал что-то подобное, мне посчастливилось понять, прежде чем пытаться перезагрузить компьютер. На данный момент ваша система по-прежнему будет в основном работать. Мой подход состоял в том, чтобы создать виртуальную коробку с той же версией ОС и скопировать отсутствующие файлы из нее. если вы разрешите ssh доступ в гостевой виртуальной машине, вы можете использовать rsync из терминала в вашей основной системе, чтобы загружать только отсутствующие файлы и ссылки. В моем случае было недостаточно файлов, чтобы было проще / безопаснее копировать вручную с помощью scp, поэтому следующее не проверено (!)

sudo rsync -avu user@guestVB:/usr/lib /usr/lib

-a - режим архива (рекурсивный, копирует символические ссылки и атрибуты, включая метки времени, разрешения и т. д.)

-u пропускает, если конечная копия новее

-v многословен

Ким С.Дж.
источник