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
NateDSaint
źródło
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ć.

ELO
źródło
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

   

bili4mb
źródło