如何在基于 Alpine 的容器中安装 rar?

How do I install rar in a Alpine based container?

容器中的一个程序需要rar(除了unrar),我使用以下命令将其安装到/usr/bin

curl https://www.rarlab.com/rar/rarlinux-x64-6.0.b1.tar.gz | tar -xzvf - -C /tmp/
cp -rfp /tmp/rar/rar /usr/bin/rar

现在/usr/bin/rar存在并且有755权限,而/usr/bin$PATH,但是当我运行rar -v/usr/bin/rar ,它分别输出ash: rar: not foundash: /usr/bin/rar: not found

我在 /tmp/rar 中使用 makemake install 得到了相同的结果,然后将 rarunrar 复制到 /usr/local/bin,这也在 $PATH.

为什么会这样?

A​​lpine 是使用 musl-libc. Software compiled against the more common glibc 构建的,通常不会 运行 在此环境中,因为它找不到预期的动态加载器。

解决此问题的常见方法包括 (a) 自己编译代码或 (b) 安装在别处为 Alpine 构建的版本。我不相信这些中的任何一个都会成为 Rar 的一个选项。

你最好的选择就是用其他东西(真的,几乎任何东西)(debian、ubuntu、fedora、centos 等)替换 Alpine 作为你的基础映像。

(注意,如果你只是需要解压Rar文件,你可以直接在Alpine下apk install unrar)。