Ubuntu 20.04 我应该将 libssl1.1 降级到 libssl1.0 来安装 npm 吗?

Ale*_*lex 2 lts package-management nodejs npm 20.04

我正在尝试安装 npm,我找到了这个解决方案。我跑aptitude install npm了,建议的解决方案是

The following packages have unmet dependencies:
 libssl-dev : Depends: libssl1.1 (= 1.1.1f-1ubuntu2) 
but 1.1.1g-1+ubuntu18.04.1+deb.sury.org+1 is installed

     Keep the following packages at their current version:
1)     libnode-dev [Not Installed]                        
2)     libssl-dev [Not Installed]                         
3)     node-gyp [Not Installed]                           
4)     npm [Not Installed]                                



Accept this solution? [Y/n/q/?] 
Run Code Online (Sandbox Code Playgroud)

基本上是建议降级,但是如果我将 libssl1.1 降级到 libssl1.0 会对我的系统产生什么影响?

编辑:将 Ubuntu 18.04 升级到 20.04 后导致此问题。Dan Scally的解决方案有效,我还在启动板的评论中提供了另一个选项,其中针对我的特定情况更详细一些。

Dan*_*lly 6

看起来您已经通过 PPA 而不是通常的 Ubuntu 源安装了 libssl。如果你这样做apt search --names-only libssl应该确认。建议是从 g 降级到 f,而不是从 1.1 降级到 1.0:此处列出这些版本之间的更改,在我看来,这些更改相当小:

1.1.1f 和 1.1.1g 之间的变化 [2020 年 4 月 21 日]

*) 修复了 SSL_check_chain()
服务器或客户端应用程序中的分段错误,在TLS 1.3 握手期间或之后调用 SSL_check_chain() 函数可能会由于对“signature_algorithms_cert”TLS 扩展的错误处理而导致空指针取消引用而崩溃。如果从对等方接收到无效或无法识别的签名算法,则会发生崩溃。这可能会在拒绝服务攻击中被恶意对等方利用。(CVE-2020-1967) [本杰明卡杜克]

*) 为 no-asm 配置添加了 AES consttime 代码,在为 no-asm
构建 openssl 时添加了对 AES 的可选常量时间支持。启用方式: ./config no-asm -DOPENSSL_AES_CONST_TIME 禁用方式: ./config no-asm -DOPENSSL_NO_AES_CONST_TIME 此时默认禁用此功能。它将在 3.0 中默认启用。[伯恩德·埃德林格]

您是否愿意接受 npm 性能下降取决于您。


小智 5

这是一个依赖问题

由于npm依赖于依赖于 libnode-dev 的 node-gyp 依赖于 libssl-dev 而这里是问题,libssl-dev取决于libssl1.1 versoin 1.1.1f-1ubuntu2你有一个更新的版本libssl1.1 version 1.1.1g-1+ubuntu18.04.1+deb.sury.org+1

因此,作为解决方法,您可以按照Dan Scally的建议从 g 降级到 f,如下所示

 sudo apt install libssl1.1=1.1.1f-1ubuntu2
Run Code Online (Sandbox Code Playgroud)

然后你应该可以安装 npm

 sudo apt install npm
Run Code Online (Sandbox Code Playgroud)

它与我一起工作没有问题。