Uszkodzone zależności w Ubuntu 10.04 przez pakiety z 10.10

Witam.

Mam wrażenie, że coś nieźle skopałem z zależnościami. Opisze co zrobiłem, może ktoś będzie wiedział, jak to cofnąć. Chciałem zainstalować program Tmux 1.3 (w repozytoriach Ubu Lucid jest 1.1), więc ściągnąłem paczkę deb. Okazało się, że wymaga nowszego libncurses5, więc je też ściągnąłem. Pojawił się konflikt z libncurses5-dev, więc też ściągnąłem nowsze. Tutaj zaczęły się schody. libncurses5-dev nie chciał się wgrać, bo miałem za stare libncurses5, a nie mogłem wgrać nowszego, bo stare libncurses5-dev by z nim nie współpracowało. Błędne koło. Niewiele myśląc, wykonałem dpkg --install libncurses5 libncurses5-dev, chciałem zobaczyć czy to coś da. Wgrał się tylko libncurses5, za to przy próbie ponownego wgranie libncurses5-dev system zasugerował mi apt-get install -f, by naprawić błędy. Usunęło to najwyraźniej nie w pełni zainstalowane libncurses5-dev. Wydaje mi się, że wgrałem jeszcze raz libncurses5 (na wszelki wypadek), ale tego nie jestem pewny. Tmux zainstalował się bez problemu. Teoretycznie wszystko działa, ale zostałem bez libncurses5-dev, które jest mi potrzebne. Przy próbie wgrania nowego, okazuje się, że nie mam libncurses5 w potrzebnej wersji (chociaż mam dokładnie takie). Gdy próbuję usunąć libncurses5 (by wgrać z powrotem starą wersję), apt-get chce mi usuwać pół systemu.

Nie obchodzi mnie już nowy Tmux, chcę tylko, żeby system wrócił do normy. Rozważam dodanie repozytoriów Mavericka (czego chciałem uniknąć, bo nie chcę na razie upgrade’ować systemu) i pokombinowanie z nimi, ale nie chcę popsuć nic bardziej, niż jest teraz popsute.

Mam nadzieję, że ktoś wie co z tym zrobić. Ratunku!

Pokaż symulację wywalania libncurses5, wykonaj polecenie symulujące (bez sudo):

apt-get -s remove libncurses5

Spróbuj jeszcze w trybie symulacji wywalić jeden pakiet i instalować nowy w taki sposób (też bez sudo):

apt-get -s remove libncurses5 libncurses5-dev+

Tam na końcu ma być plus. I wklej tutaj co się dzieje, to jest tylko symulacja, nic w ten sposób nie usuniesz.

Pozdrawiam!

apt-get -s remove libncurses5 - nie mieściło się w mailu, więc wrzuciłem na Pastebin.

apt-get -s remove libncurses5 libncurses5-dev+:

UWAGA: To jest tylko symulacja!

      apt-get wymaga normalnie praw administracyjnych dla działania.

      Aktualnie blokowanie jest wyłączone, więc nie należy polegać

      na związku z rzeczywistą sytuacją!

Czytanie list pakietów...

Budowanie drzewa zależności...

Odczyt informacji o stanie...

Nie udało się zainstalować niektórych pakietów. Może to oznaczać,

że zażądano niemożliwej sytuacji lub używasz dystrybucji niestabilnej,

w której niektóre pakiety nie zostały jeszcze utworzone lub przeniesione

z katalogu Incoming ("Przychodzące").

Następujące informacje mogą pomóc rozwiązać sytuację:


Następujące pakiety mają niespełnione zależności:

  libncurses5-dev: Wymaga: libncurses5 (= 5.7+20090803-2ubuntu3) ale nie zostanie zainstalowany

E: Pakiety są uszkodzone

Co takiego robi ten plus?

A odwrotnie? Bo z tego co widzę to u mnie zainstalowane jest libncurses5, a nie wersja deweloperska. Spróbuj jeszcze:

apt-get -s remove libncurses5-dev libncurses5+

Co do pierwszego, to rzeczywiście chce wywalić połowę systemu. Ubuntu akurat jest mocno zintegrowane, bo system powinien być jednolity stąd te problemy z zależnościami.

Pozdrawiam!

UWAGA: To jest tylko symulacja!

      apt-get wymaga normalnie praw administracyjnych dla działania.

      Aktualnie blokowanie jest wyłączone, więc nie należy polegać

      na związku z rzeczywistą sytuacją!

Czytanie list pakietów...

Budowanie drzewa zależności...

Odczyt informacji o stanie...

Pakiet libncurses5-dev nie jest zainstalowany, więc nie zostanie usunięty.

libncurses5 jest już w najnowszej wersji.

0 aktualizowanych, 0 nowo instalowanych, 0 usuwanych i 0 nieaktualizowanych.

Skoro jest w najnowszej wersji to pokaż jeszcze wynik polecenia

dpkg -l | grep libncurses5

I przy okazji co próbuje zrobić

sudo apt-get -f install

Pozdrawiam!

dpkg -l | grep libncurses5

ii libncurses5 5.7+20100626-0ubuntu1 shared libraries for terminal handling

Drugie polecenie nic nie robi, więc nie ma sensu wklejać wyjścia - nic ciekawego. Ciekawe czy pomogłoby zaktualizowanie systemu do Mavericka, gdy już wyjdzie stabilny. W końcu, te paczki są wyjęte z jego repozytoriów. Chyba, że dałoby się dodać te repozytoria bez aktualizacji systemu (i żeby sam się nie próbował potem aktualizować), ale tak dobrze chyba nie ma.

Może jeszcze spróbować zrobić tak, pobierz ten pakiet http://packages.ubuntu.com/lucid/libncurses5 i wypakuj go w taki sposób:

sudo dpkg -x /var/cache/apt/archives/libncurses5_5.7+20090803-2ubuntu3_i386.deb /

I sprawdź czy dalej są problemy z zaleznościami i sprwdź wersję wg dpkg -l.

Pozdrawiam!

Tę ścieżkę mam zmienić na ścieżkę do pobranego pliku, tak? Wiem, że trochę głupie pytanie, ale nie chcę nic popsuć jeszcze bardziej.

Jeśli jednak nie, to takiego pliku nie ma.

Mój błąd, bo miałem na początku na myśli pobieranie przez apt-get ale pomyślałem, że może odmówić posłuszeństwa :slight_smile: Tak, ścieżkę masz zmienić na taką gdzie pobrałeś paczkę.

Pozdrawiam!

Chyba nie pomogło. Dalej nie mogę wgrać ani z repo, ani ręcznie. Boję się, że skończy się reinstalacją. Doceniłem właśnie emerge’a z Gentoo. Wywaliłbym 2-3 pakiety, zamaskowałbym nowe wersje i wgrał na nowo. Muszę się chyba pospieszyć z przeprowadzką na Gentoo… Pomijam fakt, że tam jest wersja 1.3 w repo i nie ma takich cyrków.

Oczywiście, jeśli masz jakiś jeszcze pomysł, to chętnie wypróbuję.

Ale po wypakowaniu tego pakietu do / dalej jest problem z zależnościami? Spróbuj jeszcze zainstalować ten pakiet przy pomocy dpkg. Jeszcze można by spróbować przyszpilić pakiet niższej wersji to może odpuści.

Pozdrawiam!

Zainstalowałem przy pomocy dpkg i udało się. Wywaliłem tmux 1.3 i zainstalowałem tmux 1.1 i libncurses5-dev. Programy wykorzystujące ncurses się kompilują czyli chyba działa. Tmux 1.3 jednak nie jest mi AŻ TAK potrzebny. Zwłaszcza, że znalazłem w nim kilka błędów, które nie występują w 1.1 (1.2 też je zawiera, bo na Gentoo próbowałem, może w 1.4 będzie lepiej).

Dzięki za uratowanie systemu!

Mógłbyś mi jeszcze napisać co robi ‘+’ w apt-get? W manpage’u nic nie ma (przynajmniej kiedy szukam plusa), a nie zaszkodzi wiedzieć.

Nie ma sprawy :slight_smile:

Przy poleceniu apt-get remove plus oznacza, że dany pakiet ma być zainstalowany, tzn. usuwasz jakiś pakiet i chcesz od razu zainstalować inny, dla przykładu, chcesz usunąć pakiet_a i zainstalować pakiet_b, więc zamiast się rozdrabniać na dwa polecenia

sudo apt-get remove pakiet_a

sudo apt-get install pakiet_b

wykorzystujesz do tego jedno polecenie

sudo apt-get remove pakiet_a pakiet_b+

w tym wypadku pakiet_a będzie usunięty, a plus oznacza, że pakiet_b ma zostać zainstalowany. Odwrotnie jest w przypadku apt-get install, jak chcesz zainstalować pakiet_a i usunąć pakiet_b, to po jego nazwie stawiasz minus i wygląda to tak:

sudo apt-get install pakiet_a pakiet_b-

Co oznacza, że pakiet_a zostanie zainstalowany, a pakiet_b usunięty. Z tego co widzę, to w podręczniku Apt-Get nie zostało to opisane ale można to znaleźć w podręczniku Aptitude :slight_smile:

Pozdrawiam!