我正在尝试安装 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/?]
它基本上建议降级,但如果我将 libssl1.1 降级到 libssl1.0,这会对我的系统产生什么影响?
编辑:将 Ubuntu 18.04 升级到 20.04 后出现了这个问题。丹·斯卡利的解决方案有效,并且我还在启动板的评论中提供了另一个选项,其中针对我的具体情况进行了更详细的说明。
答案1
这是一个依赖问题
由于npm
依赖于 node-gyp,而 node-gyp 又依赖于 libnode-dev,而 libnode-dev 又依赖于 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
因此,作为解决方法,你可以选择丹·斯卡利的建议是从 g 降级到 f,如下所示
sudo apt install libssl1.1=1.1.1f-1ubuntu2
然后你就可以安装 npm
sudo apt install npm
我使用它没有任何问题。
答案2
看起来您是通过 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 扩展的错误处理导致 NULL 指针取消引用而崩溃。如果从对等方收到无效或无法识别的签名算法,则会发生崩溃。恶意对等方可能会利用这一点进行拒绝服务攻击。(CVE-2020-1967)[Benjamin Kaduk]*) 为 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 中默认启用。[Bernd Edlinger]
是否愿意接受 npm 的功能下降取决于你。