Як виправити зламані пакети?


21

Спроба встановити libssl-dev на 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.

Як я можу видалити утримуваний пакет і встановити правильний?


Коли ви востаннє бігали sudo apt updateта / або sudo apt upgrade?
DopeGhoti

Привіт, я робив обидва між кожними кроками.
Сем Хілі

Відповіді:


18

Спочатку спробуйте ввести це: sudo dpkg --configure -a

Це пройде довгий шлях до виправлення зламаних залежностей. Якщо цього недостатньо, спробуйте: sudo apt-get install -f

Потім очистіть і оновіть: sudo apt-get clean && sudo apt-get update

Потім оновіть: sudo apt-get upgrade (скажіть "у" для оновлення)

Якщо ви отримаєте повідомлення про те, що деякі пакунки "стримані", зробіть це:

sudo apt-get dist-upgrade

Тепер виконайте ці дві команди:

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

Потім подивіться, що станеться під час введення: sudo apt-get install libssl-dev

Якщо вона все ще не працює, спробуйте це:

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

Якщо вона все ще не працює, відкрийте Synaptic Package Manager (він повинен бути у вашому запуску. Якщо ви не можете його знайти, тоді ввійдіть до Терміналу synaptic-pkexec).

Шукати zlib1g-dev. Якщо поле поруч із zlib1g-dev не зелене, натисніть на нього та виберіть "Позначити для встановлення". Якщо ви бачите більше однієї версії, виберіть 1:1.2.8.dfsg-1ubuntu1. Тоді шукайте libssl-dev. Якщо поле поруч з libssl-dev не зелене, натисніть на нього та виберіть "Позначити для встановлення".

Потім виберіть "Застосувати".


Привіт, дякую за відповідь. Я все зробив вище і отримав ту саму помилку, що і в моєму початковому дописі. Коли я запустив оновлення, отримав таке повідомлення. Наступні пакети збережено: linux-generic-lts-utopic linux-headers-generic-lts-utopic linux-image-generic-lts-utopic 0 оновлено, 0 знову встановлено, 0 для видалення та 3 не оновлено.
Сем Хілі

що дає apt-cache policy zlib1g-devіgrep -P '^[ \t]*[^#[ \t]+' /etc/apt/sources.list /etc/apt/sources.list.d/*.list

@Bahamut Ви впевнені, що маєте на увазі "-P"? Для мене я отримуюE: Command line option 'P' [from -P] is not known.
милостивий1

@SamHealey Я дещо змінив свою відповідь. Спробуйте те, що я пропоную там, і повідомте нам, як це відбувається.
благодатний1

1
@Bahamut Чому немає судо з графічною програмою?
gracious1

2

Ви повинні шукати всі файли, пов’язані з вашим пакетом, і очистити їх, а потім перевстановити.

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

повторіть другу команду з кожним файлом, а потім просто перевстановіть.


0
sudo aptitude install lib_name_depending

працював на мене, коли хотів встановити libcurl4-openssl-dev на свій Ubuntu 14.04LTS.

На моїй машині не було встановлено декілька залежних контурів, і за допомогою інструменту здібності мені вдається інтерактивно встановити / применшити необхідні libs / пакет, щоб мати можливість встановити libcurl4-openssl-dev.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.