Mat*_*ams 7 node.js alpine-linux
我正在尝试在 Alpine 上安装旧版本的 Node.js (4.4.4)。这是我的命令:
apk update
apk add nodejs-lts=4.4.4-r0
Run Code Online (Sandbox Code Playgroud)
执行时,出现错误(以 root 身份运行,因为我使用的是 Alpine:3.4 Docker 映像):
/ # apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
v3.4.6-64-gd029d25 [http://dl-cdn.alpinelinux.org/alpine/v3.4/main]
v3.4.6-33-g38ef2d2 [http://dl-cdn.alpinelinux.org/alpine/v3.4/community]
OK: 5977 distinct packages available
/ # apk add nodejs-lts=4.4.4-r0
ERROR: unsatisfiable constraints:
nodejs-lts-4.6.0-r0:
breaks: world[nodejs-lts=4.4.4-r0]
Run Code Online (Sandbox Code Playgroud)
如何在 中安装特定的旧版本软件包apk?
小智 10
那是正确的。不幸的是,4.4.4 不可用。
除非控制您自己的包镜像和包构建,否则您应该避免明确包版本,而是允许包系统为正在使用的 Alpine 版本处理它。
对于 Alpine 3.4,只有 4.6.0 可用。在线搜索 Alpine 3.4 x86_64 软件包以获取 nodejs-lts
如果您如此倾向,这里是为了构建特定版本的选择而更改包的源代码。
Alpine 有一个 wiki 页面:Creating an Alpine package。
请注意,不推荐使用“nodejs-lts”包名称。
provide="nodejs-lts=$pkgver" # 向后兼容
替换 =“nodejs-current nodejs-lts” # nodejs-lts 向后兼容
不幸的是,当有新版本可用时,Alpine-Linux 包管理会丢弃旧包。这使得在 docker 中使用 Alpine Linux 变得很困难,因为您需要一个具有精确版本的可重现图像。
有关整个纲要,请参阅本文。提供的两种解决方案:创建您自己的镜像并托管您希望继续访问的特定版本的软件包(可能不值得付出努力)或使用不同的基础映像,例如软件包管理系统不会丢失的 Ubuntu旧版本的包(正如任何现代包管理系统的直观预期)。
而且,我想您可以更新您的 docker 文件以使用这些软件包的最新可用版本。但是,再次遇到同样的情况只是时间问题。如果您正在为生产系统构建,它就是不可扩展的。
| 归档时间: |
|
| 查看次数: |
29174 次 |
| 最近记录: |