Usunąłem krytyczny link symboliczny - libc.so.6
. Mam plik, na który powinien wskazywać, ale podstawowe polecenia, takie jak ln
lub wget
nie będą już działać z powodu braku łącza. Jednak działają echo
inne wbudowane Bash.
Szukam sposobu na odtworzenie tego dowiązania symbolicznego.
linux
centos6
symbolic-link
Sebas
źródło
źródło
echo
.cat
jest wyłączone ... właściwie wszystko było.cat
jest to program zewnętrzny. Bash Builtin Komendy instrukcja zawiera szczegółowe informacje na temat tego, co może być niedostępna.Odpowiedzi:
możesz użyć ldconfig, odtwarza symboliczne łącze:
właśnie to przetestowałem, jak widzisz.
źródło
/lib/libc-2.12.so
w powyższym przykładzie na/lib/foobar
. Cholera, nic więcejmv
. Aleldconfig -l /lib/foobar
jest nawet wystarczająco inteligentny, aby/lib/libc.so.6
wskazać plik o niewłaściwej nazwie . (Argumenty są wymagane, domyślnieldconfig
ignorowane są nazwy plików, które nie zaczynają się od „lib” i zawierają „.so”.). W tym momencie możeszmv
to cofnąć (lubcp -p
jeśli jesteś paranoikiem / sprytny), a następnie uruchomldconfig
ponownie, aby wyczyścić .CentOS 6 zazwyczaj zawiera
busybox
statycznie połączony zestaw narzędzi uniksowych/sbin
. Możesz uruchomić go w następujący sposób:źródło
Ustaw LD_PRELOAD, aby wstępnie załadować odpowiednią bibliotekę. Wypróbowałem to z libpthread i wydaje się, że działa:
źródło
sln
służy dokładnie temu celowi: naprawić dowiązania symboliczne, gdy nie możesz użyć zwykłego ln, ponieważ złamałeś niezbędne dowiązanie symboliczne. Cytując jego stronę podręcznika:źródło
Możesz ustawić
LD_LIBRARY_PATH
zmienną tak, aby zawierała katalog, w którym rzeczywistelibc.so.6
jest:Wykonaj również,
ldconfig
aby odtworzyć łącza. To powinno sprawić, że polecenia będą działać, abyś mógł następnie użyćln
poleceń do naprawy systemu.Innym sposobem byłoby uruchomienie za pomocą LiveCD i połączenie pliku.
źródło
Użyj scp lub sftp, aby skopiować statycznie połączoną wersję ln. Upewnij się, że jest wykonywalny. Następnie użyj go, aby naprawić plik.
źródło