如何在 debian 中升级 openssl 1.0.1

如何在 debian 中升级 openssl 1.0.1

TL;DR:我正在尝试安装需要 libssl 1.0.2 或更高版本的软件包,但无法:

# dpkg -i my_package_name_3.0.1.8_amd64.deb
Selecting previously unselected package my_package_name.
(Reading database ... 266120 files and directories currently installed.)
Preparing to unpack my_package_name_3.0.1.8_amd64.deb ...
Unpacking my_package_name (3.0.1.8) ...
dpkg: dependency problems prevent configuration of my_package_name:
 my_package_name depends on libssl1.0.0 (>= 1.0.2g); however:
  Version of libssl1.0.0:amd64 on system is 1.0.1t-1+deb8u9.

dpkg: error processing package my_package_name (--install):
 dependency problems - leaving unconfigured
Processing triggers for desktop-file-utils (0.23-1) ...
Processing triggers for mime-support (3.60) ...
Processing triggers for hicolor-icon-theme (0.15-1) ...
Errors were encountered while processing:
 my_package_name

我尝试过的长篇故事:

我有 debian jessie:

# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.11 (jessie)
Release:        8.11
Codename:       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'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                                  Version                         Architecture                    Description
+++-=====================================================-===============================-===============================-===============================================================================================================
ii  openssl                                               1.0.1t-1+deb8u9                 amd64                           Secure Sockets Layer toolkit - cryptographic utility

我需要将 libssl (我理解是 openssl 的一部分?)升级到 1.0.2 或更高版本。我运行了apt-get update && apt-get upgrade,仍然是 1.0.1。我也尝试过:

# apt-get install openssl=1.0.2
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Version '1.0.2' for 'openssl' was not found

仔细阅读后,我决定升级我的系统。我跑了apt-get dist-upgrade。然后我编辑 my来/etc/apt/source.list替换.重新跑了。现在看来一切都很好:jessiestretchapt-get update && apt-get upgrade && apt-get dist-upgrade

# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 9.5 (stretch)
Release:        9.5
Codename:       stretch

现在我有 openssl 1.1.0:

# dpkg -l 'openssl'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                                  Version                         Architecture                    Description
+++-=====================================================-===============================-===============================-===============================================================================================================
ii  openssl                                               1.1.0f-3+deb9u2                 amd64                           Secure Sockets Layer toolkit - cryptographic utility

但我仍然无法安装我的软件包,尽管我的系统现在似乎有 libssl 1.0.1、1.0.2 和 1.1.0:

# apt-cache policy libssl1.0.0
libssl1.0.0:
  Installed: 1.0.1t-1+deb8u9
  Candidate: 1.0.1t-1+deb8u9
  Version table:
 *** 1.0.1t-1+deb8u9 100
        100 /var/lib/dpkg/status
# apt-cache policy libssl1.0.2
libssl1.0.2:
  Installed: 1.0.2l-2+deb9u3
  Candidate: 1.0.2l-2+deb9u3
  Version table:
 *** 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:
  Installed: 1.1.0f-3+deb9u2
  Candidate: 1.1.0f-3+deb9u2
  Version table:
 *** 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 而没有其他。关于我还能做什么的任何提示?

更新:

我从 ubuntu 下载了 openssl_1.0.2g-1ubuntu4.13_amd64.deb 并尝试了以下操作:

# dpkg -i openssl_1.0.2g-1ubuntu4.13_amd64.deb 
dpkg: warning: downgrading openssl from 1.1.0f-3+deb9u2 to 1.0.2g-1ubuntu4.13
(Reading database ... 266120 files and directories currently installed.)
Preparing to unpack openssl_1.0.2g-1ubuntu4.13_amd64.deb ...
Unpacking openssl (1.0.2g-1ubuntu4.13) over (1.1.0f-3+deb9u2) ...
dpkg: dependency problems prevent configuration of openssl:
 openssl depends on libssl1.0.0 (>= 1.0.2g); however:
  Version of libssl1.0.0:amd64 on system is 1.0.1t-1+deb8u9.

dpkg: error processing package openssl (--install):
 dependency problems - leaving unconfigured
Processing triggers for man-db (2.7.6.1-2) ...
Errors were encountered while processing:
 openssl

好吧,这是官方的,这没有任何意义,我不知道该怎么办。它告诉我,我尝试安装的 openssl 1.0.2g 依赖于 1.0.2g,这就是为什么我无法安装它,因为我有 1.0.1?我现在很困惑......哈哈

更新2:

我删除了 libssl apt-get remove libssl1.0.0,下载并安装了 ubuntu 1.0.2g 软件包(i386 和 amd64,否则它会抱怨;我从 pgks.org 下载它们,找不到更“官方”的源:( ),我终于可以安装my_package_name但我确信我的系统现在一团糟,我会保留这个问题,直到有人提供一个简单直接的、不会扰乱系统的解决方案(如果可能的话)。根本...:/

答案1

您的错误消息包含以下内容 my_package_name depends on libssl1.0.0 (>= 1.0.2g); however: Version of libssl1.0.0:amd64 on system is 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,您的错误消息的同一部分就会有所不同。

答案2

TL,DR:您需要的 OpenSSL 软件包是 jessie-backports。然而,降级 Debian 是不支持的


观察这条线dpkg

my_package_name depends on libssl1.0.0 (>= 1.0.2g); however:

您尝试安装的软件包取决于确切名称为“ libssl1.0.0”的软件包,这就是安装libssl1.0.2没有帮助的原因。如果你没有升级到stretch,那么你可以libssl1.0.0从jessie-backports中提取v1.0.2l,它恰好与v1.0.2g二进制兼容并且> v1.0.2g,因为OpenSSL 版本控制方案

顺便说一下,你不能期望 jessie-backports 在拉伸上工作没有问题。


从您的第一次更新开始:

openssl depends on libssl1.0.0 (>= 1.0.2g); however:
 version of libssl1.0.0:amd64 on system is 1.0.1t-1+deb8u9.

请注意,openssl 和 libssl 是两个不同的软件包,您尝试安装的软件包取决于后者。您尝试安装的 Ubuntu openssl 软件包希望libssl1.0.0版本 >= 1.0.2g,但 1.0.1t < 1.0.2g。


最重要的是,Forticlient 并不是为在 Debian 上工作而设计的,所以让它工作起来会很困难。

答案3

对于这个特殊情况,我同意 dsstorefile1 的评论。

“你不能混合使用 Ubuntu 和 Debian 软件包。好吧,你可以,但最终你会得到一个损坏的操作系统,因为这两个软件包不兼容。”

对于常见用途,您可以使用 aptitude 而不是 apt-get,因为 aptitude 检查依赖性。

答案4

一个简单直接的非黑客解决方案,不会扰乱系统。如果可能的话...:/

命令至使用向后移植升级 openssl 是

sudo apt -t jessie-backports install openssl

相关内容