Сломал большинство компьютерных функций Linux с плохой символической ссылкой

487
LonelyWebCrawler

Я использую 64-битный Crunchbang, который основан на Debian.

Я пытался исправить определенную проблему с libc6 и наивно последовал совету ответа askUbuntu ( ссылка ), который заставил меня выполнить следующую команду:

sudo ln -sf /lib32/libc.so.6 /lib/x86_64-linux-gnu/libc.so.6 

Теперь я не могу запустить одну команду терминала или программу с графическим интерфейсом. На терминале я получаю множество ошибок. Вот ls, например:

ls: ошибка при загрузке общих библиотек: libs.so.6: неправильный класс ELF: ELFCLASS32

sed: ошибка при загрузке общих библиотек: libs.so.6: неправильный класс ELF: ELFCLASS32

/ usr / bin / env: ошибка при загрузке общих библиотек: libs.so.6: неправильный класс ELF: ELFCLASS32

дата: ошибка при загрузке общих библиотек: libs.so.6: неправильный класс ELF: ELFCLASS32

sed: ошибка при загрузке общих библиотек: libs.so.6: неправильный класс ELF: ELFCLASS32

Программы с графическим интерфейсом просто не запускаются или выдают странные сообщения об ошибках.

Короче говоря, я не могу удалить символическую ссылку, которая привела к этой катастрофе. Что я могу сделать, чтобы мой компьютер снова заработал?

0
Можно ли загрузить Linux live CD, смонтировать жесткий диск и исправить его оттуда? Я этого не делал, поэтому не уверен, какие разрешения у вас могут отсутствовать. baochan 9 лет назад 0
Спасибо, если я не найду более простого решения, я мог бы попробовать это. Я тоже не знаю о разрешениях. LonelyWebCrawler 9 лет назад 0
@erlkoenig Я не думаю, что у вас есть большой выбор, если у вас не установлен busybox ... и даже тогда он все еще может ссылаться на libc Lawrence 9 лет назад 0

2 ответа на вопрос

0
cybernard

Папка / lib32 может содержать только 32-битные библиотеки. Вы создали ссылку на libc.so.6 в / lib32, которая указывает на 64-битную версию того же файла. Получите 32-битную версию libc.so.6 и поместите ее в папку / lib32.

Это неправильный путь. ОП создал ссылку из 32-битной в 64-битную локацию. Lawrence 9 лет назад 0
Я так и думал, но конечно не могу получить 32-битную версию в текущем состоянии. LonelyWebCrawler 9 лет назад 0
Вы можете загрузить его на другой компьютер и поместить на карту памяти? Смонтируйте карту памяти на вашем Linux и скопируйте файл на место. cybernard 9 лет назад 0
Я задал новый вопрос, и я был бы признателен за вашу помощь: http://superuser.com/q/788304 LonelyWebCrawler 9 лет назад 0
0
Jason C

Так как вы испортили свой libc, и, как правило, от него зависит любая полезная утилита, ваш единственный реальный удобный вариант - загрузить Live CD / USB и починить его, или вставить жесткий диск в чужой компьютер (не загружаться это) и исправить это оттуда.

Чтобы исправить это, отмените то, что вы сделали.

Тем не менее, ваш неудачный выбор -fопции lnи предполагаемый сбой резервного копирования любого исходного файла означает, что если он /lib/x86_64-linux-gnu/libc.so.6существовал до того, как вы выполнили эту команду, он был перезаписан. В этом случае вам лучше всего получить копию из другого места, возможно, совместимую версию, а затем выполнить принудительную переустановку libc, как только вы снова включите компьютер, чтобы убедиться, что все нужные версии нужных файлов находятся в правильные места.

Если у вас не было этого файла для начала, тогда не беспокойтесь.

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

Я загрузил живой USB и удалил плохую символическую ссылку, но теперь мой компьютер не загружается - как вы уже догадались, исходный файл libc.so.6 был удален и необходим для init. Где мне взять `libc.so.6` для его замены? У Google много результатов. LonelyWebCrawler 9 лет назад 0
Я сделал это отдельным вопросом: http://superuser.com/q/788304 LonelyWebCrawler 9 лет назад 0

Похожие вопросы