Как починить поврежденные пакеты?

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 (он должен быть в вашем Launcher. Если вы не можете его найти, введите в Терминал synaptic-pkexec).

Ищите zlib1g-dev. Если поле рядом с zlib1g-dev не зеленого цвета, нажмите на него и выберите «Отметить для установки». Если вы видите более одной версии, выберите 1:1.2.8.dfsg-1ubuntu1. Тогда ищи libssl-dev. Если поле рядом с libssl-dev не зеленое, нажмите на него и выберите «Отметить для установки».

Затем выберите «Применить».

gracious1
источник
Привет, спасибо за ответ. Я сделал все выше и получил ту же ошибку, что и в моем исходном посте. Когда я запустил обновление, я получил следующее сообщение. Следующие пакеты были сохранены: 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.
gracious1
@ SamHealey Я немного изменил свой ответ. Попробуйте то, что я предлагаю там, и дайте нам знать, как это происходит.
gracious1
1
@Bahamut Почему нет sudo с графической программой?
gracious1
2

Вы должны найти все файлы, связанные с вашим пакетом и очистить их, а затем переустановить.

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

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

Alex
источник
0
sudo aptitude install lib_name_depending

работал для меня, когда я хотел установить libcurl4-openssl-dev на мою Ubuntu 14.04LTS.

Несколько зависимых библиотек не были установлены на моем компьютере, и с помощью инструмента aptitude мне удается интерактивно установить / понизить версию необходимых библиотек / пакетов, чтобы можно было установить libcurl4-openssl-dev.

Даниэль Ходжич
источник