Вопрос или проблема
Кратко:
Я пытаюсь установить пакет, который требует libssl 1.0.2 или выше, но не могу:
# dpkg -i my_package_name_3.0.1.8_amd64.deb
Выбор ранее не выбранного пакета my_package_name.
(Чтение базы данных ... 266120 файлов и директорий в настоящее время установлено.)
Подготовка к распаковке my_package_name_3.0.1.8_amd64.deb ...
Распаковка my_package_name (3.0.1.8) ...
dpkg: проблемы с зависимостями мешают настройке my_package_name:
my_package_name зависит от libssl1.0.0 (>= 1.0.2g); однако:
Версия libssl1.0.0:amd64 на системе - 1.0.1t-1+deb8u9.
dpkg: ошибка при обработке пакета my_package_name (--install):
проблемы с зависимостями - оставлено неконфигурированным
Обрабатываются триггеры для desktop-file-utils (0.23-1) ...
Обрабатываются триггеры для mime-support (3.60) ...
Обрабатываются триггеры для hicolor-icon-theme (0.15-1) ...
Ошибки возникли во время обработки:
my_package_name
Долгая история того, что я пробовал:
У меня был debian jessie:
# lsb_release -a
Нет доступных модулей LSB.
Идентификатор дистрибьютора: Debian
Описание: Debian GNU/Linux 8.11 (jessie)
Версия: 8.11
Кодовое имя: jessie
# uname -a
Linux 10.mylocalhostname.com 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU/Linux
И мой openssl – 1.0.1
# dpkg -l 'openssl'
Желаемое=Неизвестно/Установить/Удалить/Очистить/Сохранить
| Статус=Не/Уст/Конф-файлы/Распаковано/наполовину-сконфигурировано/наполовину-установлено/триггер-ожидание/триггер-ожидание
|/ Ошибка?=(нет)/Требуется повторная установка (Статус, Ошибка: заглавные буквы = плохо)
||/ Имя Версия Архитектура Описание
+++-=====================================================-===============================-===============================-===============================================================================================================
ii openssl 1.0.1t-1+deb8u9 amd64 Набор утилит Secure Sockets Layer - криптографическая утилита
Мне нужно обновить libssl (который, как я понимаю, является частью openssl?) до 1.0.2 или выше. Я выполнил команду apt-get update && apt-get upgrade
и все еще остаюсь на 1.0.1. Я также пробовал:
# apt-get install openssl=1.0.2
Чтение списков пакетов... Готово
Формирование дерева зависимостей
Чтение информации о состоянии... Готово
E: Версия '1.0.2' для 'openssl' не найдена
После прочтения информации я решил обновить свою систему. Я запустил apt-get dist-upgrade
. Затем я отредактировал свой /etc/apt/source.list
, чтобы заменить jessie
на stretch
. Снова запустил apt-get update && apt-get upgrade && apt-get dist-upgrade
. Похоже, что теперь все в порядке:
# lsb_release -a
Нет доступных модулей LSB.
Идентификатор дистрибьютора: Debian
Описание: Debian GNU/Linux 9.5 (stretch)
Версия: 9.5
Кодовое имя: stretch
И теперь у меня openssl 1.1.0:
# dpkg -l 'openssl'
Желаемое=Неизвестно/Установить/Удалить/Очистить/Сохранить
| Статус=Не/Уст/Конф-файлы/Распаковано/наполовину-сконфигурировано/наполовину-установлено/триггер-ожидание/триггер-ожидание
|/ Ошибка?=(нет)/Требуется повторная установка (Статус, Ошибка: заглавные буквы = плохо)
||/ Имя Версия Архитектура Описание
+++-=====================================================-===============================-===============================-===============================================================================================================
ii openssl 1.1.0f-3+deb9u2 amd64 Набор утилит Secure Sockets Layer - криптографическая утилита
Но я все равно не могу установить свой пакет, несмотря на то, что, похоже, в моей системе теперь есть libssl 1.0.1, 1.0.2 и 1.1.0:
# apt-cache policy libssl1.0.0
libssl1.0.0:
Установленный: 1.0.1t-1+deb8u9
Кандидат: 1.0.1t-1+deb8u9
Таблица версий:
*** 1.0.1t-1+deb8u9 100
100 /var/lib/dpkg/status
# apt-cache policy libssl1.0.2
libssl1.0.2:
Установленный: 1.0.2l-2+deb9u3
Кандидат: 1.0.2l-2+deb9u3
Таблица версий:
*** 1.0.2l-2+deb9u3 500
500 http://mirror.it.ubc.ca/debian stretch/main amd64 Packages
500 http://security.debian.org stretch/updates/main amd64 Packages
500 http://http.debian.net/debian stretch/main amd64 Packages
100 /var/lib/dpkg/status
# apt-cache policy libssl1.1
libssl1.1:
Установленный: 1.1.0f-3+deb9u2
Кандидат: 1.1.0f-3+deb9u2
Таблица версий:
*** 1.1.0f-3+deb9u2 500
500 http://mirror.it.ubc.ca/debian stretch/main amd64 Packages
500 http://security.debian.org stretch/updates/main amd64 Packages
500 http://http.debian.net/debian stretch/main amd64 Packages
100 /var/lib/dpkg/status
А когда я пытаюсь установить свой пакет, я получаю такую же ошибку, как и раньше, как будто dpkg видит только 1.0.1 и ничего больше. Есть какие-нибудь подсказки о том, что еще я могу сделать?
ОБНОВЛЕНИЕ:
Я скачал openssl_1.0.2g-1ubuntu4.13_amd64.deb из ubuntu и попробовал это:
# dpkg -i openssl_1.0.2g-1ubuntu4.13_amd64.deb
dpkg: предупреждение: понижение версии openssl с 1.1.0f-3+deb9u2 до 1.0.2g-1ubuntu4.13
(Чтение базы данных ... 266120 файлов и директорий в настоящее время установлено.)
Подготовка к распаковке openssl_1.0.2g-1ubuntu4.13_amd64.deb ...
Распаковка openssl (1.0.2g-1ubuntu4.13) поверх (1.1.0f-3+deb9u2) ...
dpkg: проблемы с зависимостями мешают настройке openssl:
openssl зависит от libssl1.0.0 (>= 1.0.2g); однако:
Версия libssl1.0.0:amd64 на системе - 1.0.1t-1+deb8u9.
dpkg: ошибка при обработке пакета openssl (--install):
проблемы с зависимостями - оставлено неконфигурированным
Обрабатываются триггеры для man-db (2.7.6.1-2) ...
Ошибки возникли во время обработки:
openssl
Итак, хорошо, это официально, это не имеет смысла, и я не знаю, что делать. Мне говорят, что openssl 1.0.2g, который я пытаюсь установить, зависит от 1.0.2g, и именно поэтому я не могу его установить, поскольку у меня 1.0.1? Я в полном замешательстве… lol
ОБНОВЛЕНИЕ 2:
Я удалил libssl apt-get remove libssl1.0.0
, скачал и установил пакеты ubuntu 1.0.2g (и для i386, и для amd64, иначе возникнет ошибка; я скачал их с pgks.org, не смог найти более “официальный” источник 🙁 ) и наконец смог установить my_package_name
. Но я уверен, что моя система сейчас вся испорчена, я проверю. Я оставлю этот вопрос открытым, пока кто-то не предоставит простое, прямолинейное, не хакированное решение, которое не испортит систему. Если это вообще возможно… :/
Ваше сообщение об ошибке включает следующее
my_package_name зависит от libssl1.0.0 (>= 1.0.2g); однако:
Версия libssl1.0.0:amd64 на системе - 1.0.1t-1+deb8u9.
Важная часть сообщения – это 1.0.2g и то, что он находит 1.0.1t. Вам нужна именно версия 1.0.2g, так как это версия, от которой зависит ваш пакет. Похоже, что пакет не допускает более высоких версий, таких как 1.0.2l, и более низких версий, таких как 1.0.2d.
Также обратите внимание, что ваш менеджер пакетов может позволять несколько параллельных установок в разные базовые директории. Вам может понадобиться попробовать удалить версии, которые не требуются для этого пакета (замечание: вам нужно будет убедиться, что другие пакеты не зависят от этих версий, прежде чем их удалять)
Попробуйте apt-get install openssl=1.0.2g
Я бы поспорил, что эта же часть вашего сообщения об ошибке отличается сейчас, когда ОС была обновлена до Stretch.
Кратко: пакет OpenSSL, который вам нужен, находится в jessie-backports. Однако понижение версии Debian не поддерживается.
Обратите внимание на эту строку из dpkg
:
my_package_name зависит от libssl1.0.0 (>= 1.0.2g); однако:
Пакет, который вы пытаетесь установить, зависит от пакета с точным названием “libssl1.0.0
“, поэтому установка libssl1.0.2
не поможет. Если бы вы не обновлялись до stretch, то могли бы взять libssl1.0.0
версии 1.0.2l из jessie-backports, что является двоично совместимым и является > v1.0.2g из-за схемы версионирования OpenSSL.
Кстати, вы не можете ожидать, что jessie-backports будет работать на stretch без проблем.
Из вашего первого обновления:
openssl зависит от libssl1.0.0 (>= 1.0.2g); однако:
версия libssl1.0.0:amd64 на системе - 1.0.1t-1+deb8u9.
Обратите внимание, что openssl и libssl – это два разных пакета, и пакет, который вы пытаетесь установить, зависит от последнего. Пакет openssl из Ubuntu, который вы пробовали установить, требует, чтобы версия libssl1.0.0
была >= 1.0.2g, но 1.0.1t < 1.0.2g.
Суть в том, что Forticlient не предназначен для работы на Debian, поэтому заставить его работать будет сложно.
В этом особом случае я согласен с комментарием, сделанным dsstorefile1.
“Вы не можете смешивать пакеты Ubuntu и Debian. Ну, вы можете, но в конечном итоге у вас получится сломанная ОС, поскольку пакеты из двух несовместимы.”
И для общего использования вы можете использовать aptitude вместо apt-get, поскольку aptitude проверяет зависимости.
простое, прямолинейное, не хакированное решение, которое не испортит систему. Если это вообще возможно… :/
Команда для использования backports для обновления openssl:
sudo apt -t jessie-backports install openssl
Ответ или решение
Обновление OpenSSL до версии 1.0.2 или выше в Debian может быть сложной задачей, особенно если ваша система изначально основана на более старой версии, как Debian Jessie. В данной статье мы рассмотрим пошаговый процесс обновления OpenSSL и решения возникших зависимостей.
Шаг 1: Определение текущей версии
Сначала убедитесь, что у вас установлена последняя версия пакетов в вашей системе:
sudo apt-get update
sudo apt-get upgrade
Затем проверьте текущую версию OpenSSL:
dpkg -l 'openssl'
Если вы видите, что версия OpenSSL составляет 1.0.1, как в вашем случае (1.0.1t-1+deb8u9), вам необходимо обновить её.
Шаг 2: Изменение источников APT
Поскольку на момент выхода Debian Jessie последней доступной версией OpenSSL была 1.0.1, вам необходимо будет использовать backports для установки более новой версии OpenSSL.
Для этого откройте файл /etc/apt/sources.list
и добавьте следующую строку, чтобы включить backports:
deb http://deb.debian.org/debian jessie-backports main
После чего выполните обновление списка пакетов:
sudo apt-get update
Шаг 3: Установка OpenSSL из backports
Теперь вы можете установить OpenSSL версии 1.0.2 или выше:
sudo apt -t jessie-backports install openssl
Эта команда приоритетно устанавливает пакеты из репозитория backports.
Шаг 4: Проверка зависимостей
После установки проверьте версии зависимостей, таких как libssl1.0.0
. Убедитесь, что на вашей системе установлена версия, соответствующая требованиям вашего пакета:
apt-cache policy libssl1.0.0
Если версия libssl1.0.0
по-прежнему не соответствует или старая версия (1.0.1t), вам необходимо обновить и её, следуя направлению выше.
Шаг 5: Обновление системы
Если другие пакеты требуют более новую версию libssl
, вы можете обновить систему до Debian Stretch. Это потребует изменений в вашем sources.list
, как уже упоминалось:
- Замените
jessie
наstretch
в файле/etc/apt/sources.list
. -
Выполните:
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
Шаг 6: Установка пакета
Теперь, когда у вас установлены необходимые версии OpenSSL и libssl
, вы можете попробовать снова установить ваш пакет:
sudo dpkg -i my_package_name_3.0.1.8_amd64.deb
Рекомендации
- Избегайте установки пакетов Ubuntu, так как они могут быть несовместимы с Debian и вызвать дополнительные проблемы с зависимостями.
- Используйте
aptitude
вместоapt-get
, так как он более эффективно управляет зависимостями.
Следуя данным шагам, вы должны успешно обновить OpenSSL до необходимой версии, не нарушая работу своей системы.