我想问Alpine是否可以安装Ubuntu或Debian软件包?我知道 Alpine 使用 musl 而 Debian 使用 glibc。不过我想知道是否有可能无需太多工作。我正在尝试将之前在 Ubuntu 上运行的服务器移植到 Alpine,但我意识到 Nginx sub_filter 在 Alpine 版本的 Nginx 上不可用,我需要该模块。
答案1
实际上,您可以.deb
使用以下命令在 Alpine 上安装轻量级软件包dpkg
。但是,您需要.deb
所有依赖包的文件,因此这只适用于非常简单的情况。
在 Alpine 上运行 Debian/Ubuntu 二进制文件的主要问题确实是 glibc 与 musl libc 不兼容。你可以从几个层面来解决这个问题:
为了获得较轻的 glibc 兼容性,请尝试安装
libc6-compat
。它是 musl 的一个薄包装,提供一些 glibc 接口和存根。然而,它不太可能适用于复杂的 glibc 应用程序。为了获得完整的 glibc 兼容性,您可以按照 @FederalReserve 的建议在 Alpine 容器上安装 glibc。这实际上是一个简单且常见的过程。参见示例:Dockerfile。 glibc 仅向 Alpine 镜像添加了一些额外的 MB,考虑到 Alpine 基础镜像本身大约有 5MB,这相对较多,但从绝对 MB 增加的角度来看,这绝对是可以容忍的。
尝试在 Alpine 上本地构建软件。在您的情况下,Nginx
sub_filter
已启用该模块。然而,对于 Nginx,我不确定需要多少工作量(取决于 Nginx 构建系统以及模块是否需要移植到 Alpine Linux),所以这只是一个建议。