惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
博客园_首页
博客园 - 【当耐特】
V
Visual Studio Blog
博客园 - 叶小钗
月光博客
月光博客
美团技术团队
J
Java Code Geeks
小众软件
小众软件
Y
Y Combinator Blog
博客园 - Franky
Martin Fowler
Martin Fowler
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
云风的 BLOG
云风的 BLOG

竹林里有冰的博客

Nuxt SSG 博客的尾斜杠到底怎么加? | 竹林里有冰的博客 小米 Xiaomi Book Pro 14 (Ultra X7) Linux 兼容性实测 | 竹林里有冰的博客 国内(大陆)版小米 FCM 熄屏断连:Rootless 环境下的尝试与可能的解决方案 | 竹林里有冰的博客 我没法访问 dl.google.com —— 记一次 TUN 下的网络 debug | 竹林里有冰的博客 Vercel 的缓存控制,你注意过吗? | 竹林里有冰的博客 小记 —— Caddy 在 Layer 4 上的流量代理实践 | 竹林里有冰的博客 你的域名后缀拖慢你的网站速度了嘛?——再谈 DNS 冷启动 | 竹林里有冰的博客 DNS 冷启动:小型站点的“西西弗斯之石” | 竹林里有冰的博客 HTTP/2 Server Push 已事实性“死亡”,我很怀念它 | 竹林里有冰的博客 Nuxt Content v3 中数组字段的筛选困境与性能优化 | 竹林里有冰的博客 后 OCSP 时代,浏览器如何应对证书吊销新挑战 | 竹林里有冰的博客 初试 Github Action Self-hosted Runner,想说爱你不容易 | 竹林里有冰的博客 DNS 解析延迟毁了我的图床优化 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(下):告别 DOM 操作,拥抱 AST 与函数式渲染 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(上):从暴力刷新、分块更新到 Morphdom 的华丽变身 | 竹林里有冰的博客 node-sass 迁移至 dart-sass 踩坑实录 | 竹林里有冰的博客 前端中的量子力学——一打开 F12 就消失的 Bug | 竹林里有冰的博客 2025 年,如何为 web 页面上展示的视频选择合适的压缩算法? | 竹林里有冰的博客 el-image 和 el-table 怎么就打架了?Stacking Context 是什么? | 竹林里有冰的博客 2025年,前端如何使用 JS 将文本复制到剪切板? | 竹林里有冰的博客 ssh 拯救世界——通过 ssh 隧道在内网服务器执行 APT 更新 | 竹林里有冰的博客 Cudy TR3000 吃鹅(daed)记 | 竹林里有冰的博客 使用 Cloudflare Workers 监控 Fedora Copr 构建状态 | 竹林里有冰的博客 基于 Cloudflare Workers 实现的在线服务状态检测告警系统 | 竹林里有冰的博客 构建部署在 Cloudflare Workers 上的 TG Bot | 竹林里有冰的博客 2024年,Firefox 是唯一还在坚持执行在线的 SSL 证书吊销状态检查的主流浏览器 | 竹林里有冰的博客 小爱课程表适配不完全指北——以 ZJUT 本科正方教务系统为例 | 竹林里有冰的博客 将博客从 waline v2 更新到 waline v3 | 竹林里有冰的博客 给家里云装上 Fedora 41 KDE 后,我是如何配置的 | 竹林里有冰的博客 为 Hexo 添加 follow 认证 | 竹林里有冰的博客
nodejs16:是我配不上 openssl 3 咯? | 竹林里有冰的博客
竹林里有冰 · 2022-08-04 · via 竹林里有冰的博客

长毛象的截图.png长毛象的截图.png

今年上半年升级 Fedora 36 的时候遇到了这个问题。

那会儿很无奈,一直在等 nodejs16 合并提供 --openssl-legacy-provider那个 PR。nodejs16 是一个 lts 版本,照道理来说,既然要提供 Long-term Support,而 openssl 1 作为它的依赖之一,生命周期结束又在 nodejs16 之前,那是不是应该给 nodejs16 backport 在 nodejs17 上实现的 --openssl-legacy-provider 参数选项呢?否则绝大多数发行版都会在 openssl 1 的生命周期结束之前切换到 openssl 3,那 nodejs16 不就没法用了嘛。

然而,nodejs 在他们的官网上发布的一篇博客刷新了我的世界观,而此前的那个 PR 甚至一度被关停。(此处有寒晶雪提供的中文翻译

博客称他们将会把 nodejs16 的生命周期结束时间提前以防止 openssl 1 生命周期在 nodejs16 生命周期结束之前结束(这种做法甚至还有先例)

很无奈,那会儿有两个 npm 管理的软件没法在 Fedora 36 上编译出来,就一直搁置了下去。


不过好在,事情还是有转机的。(要不然就这档子鸡毛蒜皮的小事我也不会专门去写篇博客出来)

前几天我给 atpoossfl 仓库打了 rpm 版本的 nvm 以后,意外地发现 nvm 所提供的 nodejs 会自带 openssl。

此为 nvm 安装的 nodejs14 目录此为 nvm 安装的 nodejs14 目录

所以我们只需要使用 nvm 安装的 nodejs16 即可解决 Fedora36 以后没有 openssl 1 的问题。

使用 Fedora 的用户需要注意,Fedora 官方源中的yarnpkg在打包时遇到了错误,他们将 /usr/lib/node_modules/yarn/bin/yarn.js 的 shebang 给改成了 #!/usr/bin/node,应当改回 #!/usr/bin/env node才能让 yarn 正常使用上 nvm 提供的 nodejs;或者干脆添加 dl.yarnpkg.com 提供的 yarn 软件包。在写 specfile 的 BuildRequires 时,可以直接写成 /usr/bin/yarn 来避免频繁在 yarnyarnpkg 这两个包名间改动。


更好的消息是,nodejs 已经在 v16.17.0-proposalv16.x-staging 分支收下了这个为 nodejs16 提供 --openssl-legacy-providercommit。相信在不久的将来,这个 commit 将会进入主线,并在 v16.17 版本的 nodejs16 上发挥它的作用。

commitcommit