Jak naprawić wstrzymane paczki?

21

Próba instalacji libssl-dev na Ubuntu 14.04.2

$ make
fatal error: openssl/sha.h: No such file or directory
compilation terminated.

$ sudo apt-get install libssl-dev
The following packages have unmet dependencies:
 libssl-dev : Depends: zlib1g-dev but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

$ sudo apt-get install zlib1g-dev
The following packages have unmet dependencies:
 zlib1g-dev : Depends: zlib1g (= 1:1.2.3.4.dfsg-3ubuntu4) but 1:1.2.8.dfsg-1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.

Jak mogę usunąć wstrzymany pakiet i zainstalować prawidłowy?

Sam Healey
źródło
Kiedy ostatni raz biegłeś sudo apt updatei / lub sudo apt upgrade?
DopeGhoti
Cześć, zrobiłem oba między każdym krokiem.
Sam Healey,

Odpowiedzi:

18

Najpierw spróbuj wpisać: sudo dpkg --configure -a

Pomoże to naprawić zepsute zależności. Jeśli to nie wystarczy, spróbuj: sudo apt-get install -f

Następnie wyczyść i zaktualizuj: sudo apt-get clean && sudo apt-get update

Następnie uaktualnij: sudo apt-get upgrade (powiedz „y” do aktualizacji)

Jeśli pojawi się komunikat informujący, że niektóre pakiety są „wstrzymywane”, wykonaj następujące czynności:

sudo apt-get dist-upgrade

Teraz wykonaj te dwa polecenia:

sudo apt-get purge zlib1g-dev
sudo apt-get autoremove

Następnie zobacz, co się stanie po wejściu: sudo apt-get install libssl-dev

Jeśli nadal nie działa, spróbuj tego:

sudo aptitude install libssl-dev zliblg-dev=1:1.2.8.dfsg-1ubuntu1

Jeśli nadal nie działa, otwórz Menedżera pakietów Synaptic (powinien być w programie uruchamiającym. Jeśli nie możesz go znaleźć, wejdź do Terminalu synaptic-pkexec).

Szukać zlib1g-dev. Jeśli pole obok zlib1g-dev nie jest zielone, kliknij je i wybierz „Oznacz do instalacji”. Jeśli widzisz więcej niż jedną wersję, wybierz 1:1.2.8.dfsg-1ubuntu1. Następnie wyszukaj libssl-dev. Jeśli pole obok libssl-dev nie jest zielone, kliknij je i wybierz „Oznacz do instalacji”.

Następnie wybierz „Zastosuj”.

łaskawy 1
źródło
Cześć, dziękuję za odpowiedź. Zrobiłem wszystko powyżej i otrzymałem ten sam błąd, co w moim oryginalnym poście. Po uruchomieniu aktualizacji otrzymałem następujący komunikat. Następujące pakiety zostały wycofane: linux-generic-lts-utopic linux-headers-generic-lts-utopic linux-image-generic-lts-utopic 0 zaktualizowanych, 0 nowo zainstalowanych, 0 do usunięcia i 3 niezaktualizowanych.
Sam Healey,
co daje apt-cache policy zlib1g-devigrep -P '^[ \t]*[^#[ \t]+' /etc/apt/sources.list /etc/apt/sources.list.d/*.list
@ Bahamut Czy na pewno masz na myśli „-P”? Dla mnie dostajęE: Command line option 'P' [from -P] is not known.
łaskawy 1
@SamHealey Trochę zmodyfikowałem swoją odpowiedź. Wypróbuj to, co tam sugeruję, i daj nam znać, jak to wygląda.
gracious1
1
@ Bahamut Dlaczego nie ma sudo z programem graficznym?
gracious1
2

Musisz wyszukać wszystkie pliki związane z pakietem i wyczyścić je, a następnie ponownie zainstalować.

sudo dpkg --list
sudo apt-get purge "file-name"

powtórz drugie polecenie dla każdego pliku, a następnie ponownie zainstaluj.

Alex
źródło
0
sudo aptitude install lib_name_depending

działało dla mnie, gdy chciałem zainstalować libcurl4-openssl-devna moim Ubuntu 14.04LTS.

Kilka zależnych bibliotek nie zostało zainstalowanych na moim komputerze, a dzięki narzędziu aptitude udaje mi się interaktywnie zainstalować / obniżyć wersję libs / pakietu, aby móc zainstalować libcurl4-openssl-dev.

Danijel Hodzic
źródło