Zła wersja libc6 w Debian Squeeze - czy mogę wrócić?


1

Próbując uruchomić niektóre klejnoty rubinowe, odkryłem, że muszę zainstalować pakiet dev ruby, który najwyraźniej wymagał dev libc6. Kiedy próbowałem go zainstalować (używając zatwierdzonego apt-source squeeze), odkryłem, że najnowszy libc6-dev nie jest zsynchronizowany z moją bieżącą wersją libc.
Okazuje się, że wersja libc6, której powinienem używać (zgodnie z apt) powinna mieć wersję libc6 2.11.3-2. Zamiast tego jestem na libc6 2.13-7. W pewnym momencie użytkownik musiał użyć źródłowego źródła, aby coś zrobić, i złapał nowego libc6.

Moje pytanie brzmi: jeśli chcę przywrócić zgodność z zatwierdzonymi wersjami mojego systemu operacyjnego, czy muszę odinstalować libc6 i wszystkie jego programy zależne, a następnie ponownie zainstalować je za pomocą apt-get, czy też istnieje lepszy sposób, aby to zrobić ?

Odkryłem również, że najnowsza wersja libc6-dev jest niezgodna z obecną wersją gcc, którą posiadam (4.4), więc kontynuowanie nie jest możliwe, chyba że ja też to zrobię.

EDYCJA: Rozwiązaniem, którego używaliśmy, było użycie aptitude do pobrania plików .deb, a następnie użycie dpkg do ich zainstalowania.

Na przykład przejdź do / var / cache / apt / archives (tylko, aby zachować je w tym samym miejscu, w którym umieści je apt-get)

wykonaj następujące czynności:

aptitude download libc6 -t squeeze
dpkg --force-depends -i <name of package>.deb

To rozwiązało ten problem, ale oczywiście spowodowało inny zestaw problemów zależności. Każdy z nich można rozwiązać w ten sam sposób.

aptitude download libc-bin -t squeeze
dpkg --force-depends -i <name of package>.deb

Właśnie próbował odinstalować glibc i nie został obsłużony z wdziękiem przez apt, musiał przywrócić z klonowania. Być może będę musiał poczekać, aż wheezy się ustabilizuje i wszystko odzyska na tym samym poziomie, lub potencjalnie po prostu przesłać kompilator na razie i mieć nadzieję na najlepsze.
NateDSaint

Tylko uwaga, w mojej wersji apt, -t stable nie miał żadnego efektu. Musisz zamiast tego zrobić „aptitude download lib6 / stable”.
Jeremy Salwen

Odpowiedzi:


2

Zgodnie z repozytorium pakietów Debiana Squeeze używa wersji 2.11.3-2 libc6, więc jeśli masz zainstalowaną nowszą wersję, prawdopodobnie śledzisz Wheezy, Sid, jakieś inne nieoficjalne repozytorium lub ręcznie zainstalowałeś libc6. Sprawdź swoje /etc/apt/sources.listi/etc/apt/sources.list.d/*

Tak czy inaczej, możesz zainstalować żądaną wersję za pomocą Menedżera pakietów Synaptic . Otwórz go, zlokalizuj pakiet, wybierz z menu Pakiet -> Wymuś wersję . Tam możesz wybierać spośród wersji dostępnych w skonfigurowanych źródłach.

Edytować:

APT ma do tego komendę konsoli, apt-get install <package>=<version>poza tym możesz także określić wydanie Debiana, którego chcesz używać (dotyczy automatycznego przypinania), pod warunkiem, że jest ono w twoich źródłach, z apt-get -t squeeze install <package>(lub stablezamiast squeeze) i możesz również =<version>tutaj użyć . Wykonaj wszystkie polecenia jako root. Po przywróceniu z eksperymentalnej do stabilnej w tym przypadku zależności mogą powodować bałagan, więc może być konieczne ręczne obniżenie pakietów, od których zależy także libc6, i być może także jego zależności.

Możesz także zrobić wszystko ręcznie bez sprawdzania zależności (niezalecane, jeśli nie masz pewności, co zrobić, jeśli coś się zepsuje), najpierw pobierając pakiet apt-get download libc6, a następnie przejdź do miejsca, w /var/cache/apt/archives/którym APT przechowuje pobrane pakiety i wydaje je dpkg --force-downgrade -i <full_package_name>.debjako root. Podczas wprowadzania nazwy pobranego pakietu wpisz, libc6a następnie użyj funkcji autouzupełniania TAB, aby to ułatwić.


Bieżący plik sources.list używa tylko zaakceptowanych wersji squeeze. Patrząc na poprzednie wersje pliku w rsync, wygląda na to, że użyto zupełnie innych źródeł eksperymentalnych. Czy mogę jednak użyć wersji synaptic do cofnięcia wersji? Wygląda na to, że mogę wymusić tylko nowe wersje.
NateDSaint

Powinieneś być w stanie cofnąć wersję, po prostu usuń niepotrzebne źródła z listy (zarówno sources.list, jak i pliki w sources.list.d /). I sprawdź, czy przypinanie działa, ponieważ może również powodować problemy z nadpisywaniem.
ELO,

Brzmi interesująco. To jest na serwerze, ale to VM, więc mam dostęp do konsoli. Miałem nadzieję, że apt-get miał coś takiego, ale wydaje się, że jedyną opcją jest usunięcie, a następnie instalacja, ale to zabija wszystko, czego używa libc6 i powoduje, że jestem w stanie niemożliwym do odzyskania. Dzięki za napiwek, wrócę, kiedy dam z siebie wszystko.
NateDSaint

1
Zobacz edycję oryginalnej odpowiedzi.
ELO,

Właśnie wsiadłem, spróbuję tego i skontaktuję się z tobą. Dzięki jeszcze raz!
NateDSaint

1

sortowanie sources.list -> pobieranie pakietu i robienie siły downgrade działało dla mnie! potem wszystko, co musiałem zrobić, to

apt-get -f install 

I &

apt-get autoremove

   

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.