如何在基于 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 found
和ash: /usr/bin/rar: not found
。
我在 /tmp/rar
中使用 make
和 make install
得到了相同的结果,然后将 rar
和 unrar
复制到 /usr/local/bin
,这也在 $PATH
.
为什么会这样?
Alpine 是使用 musl-libc. Software compiled against the more common glibc 构建的,通常不会 运行 在此环境中,因为它找不到预期的动态加载器。
解决此问题的常见方法包括 (a) 自己编译代码或 (b) 安装在别处为 Alpine 构建的版本。我不相信这些中的任何一个都会成为 Rar 的一个选项。
你最好的选择就是用其他东西(真的,几乎任何东西)(debian、ubuntu、fedora、centos 等)替换 Alpine 作为你的基础映像。
(注意,如果你只是需要解压Rar文件,你可以直接在Alpine下apk install unrar
)。
容器中的一个程序需要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 found
和ash: /usr/bin/rar: not found
。
我在 /tmp/rar
中使用 make
和 make install
得到了相同的结果,然后将 rar
和 unrar
复制到 /usr/local/bin
,这也在 $PATH
.
为什么会这样?
Alpine 是使用 musl-libc. Software compiled against the more common glibc 构建的,通常不会 运行 在此环境中,因为它找不到预期的动态加载器。
解决此问题的常见方法包括 (a) 自己编译代码或 (b) 安装在别处为 Alpine 构建的版本。我不相信这些中的任何一个都会成为 Rar 的一个选项。
你最好的选择就是用其他东西(真的,几乎任何东西)(debian、ubuntu、fedora、centos 等)替换 Alpine 作为你的基础映像。
(注意,如果你只是需要解压Rar文件,你可以直接在Alpine下apk install unrar
)。