Alpine Linux 如何在x86_64架构上安装 x86 软件包



我正在尝试在官方 alpine docker 映像上安装 32 位软件包,但每当我这样做时apk add libcurl例如,它会安装 64 位版本的 libcurl,而我想安装 32 位软件包。有什么想法如何在Alpine Linux 3.7上做同样的事情吗?

实际上,只有一个文件定义了哪些包从高山存储库中获取。/etc/apk/arch

# cat /etc/apk/arch 
x86_64

它的值显示了我们应该从高山存储库中获取哪些软件包:

# cat /etc/apk/repositories 
http://dl-cdn.alpinelinux.org/alpine/v3.7/main
http://dl-cdn.alpinelinux.org/alpine/v3.7/community

所以,我们可以在这里做一个把戏。我们可以"切换"alpine 以从存储库中获取 x86 软件包:

/ # echo "x86" > /etc/apk/arch
/ # apk add --no-cache libcurl
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86/APKINDEX.tar.gz
(1/12) Replacing musl (1.1.18-r2 -> 1.1.18-r2)
(2/12) Replacing busybox (1.27.2-r8 -> 1.27.2-r8)
Executing busybox-1.27.2-r8.post-upgrade
(3/12) Replacing alpine-baselayout (3.0.5-r2 -> 3.0.5-r2)
Executing alpine-baselayout-3.0.5-r2.pre-upgrade
Executing alpine-baselayout-3.0.5-r2.post-upgrade
(4/12) Replacing libressl2.6-libcrypto (2.6.3-r0 -> 2.6.3-r0)
(5/12) Replacing libressl2.6-libssl (2.6.3-r0 -> 2.6.3-r0)
(6/12) Replacing zlib (1.2.11-r1 -> 1.2.11-r1)
(7/12) Replacing apk-tools (2.8.2-r0 -> 2.8.2-r0)
(8/12) Replacing scanelf (1.2.2-r1 -> 1.2.2-r1)
(9/12) Replacing musl-utils (1.1.18-r2 -> 1.1.18-r2)
(10/12) Installing ca-certificates (20171114-r0)
(11/12) Installing libssh2 (1.8.0-r2)
(12/12) Installing libcurl (7.57.0-r0)
Executing busybox-1.27.2-r8.trigger
Executing ca-certificates-20171114-r0.trigger
OK: 5 MiB in 14 packages

既然你使用的是 Docker,为什么不使用 32 位 alpine 镜像呢?

$ docker run --rm -it i386/alpine
/ # apk add --no-cache libcurl
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86/APKINDEX.tar.gz
...

更多信息:amd64 以外的架构?

最新更新