【解决办法】修正库文件指向,此方案适用于镜像已经构建完成,或在 Dockerfile 中执行 RUN 指令时进行修复。
一、确认系统标准库路径:在镜像内执行以下命令,确认系统正确版本的 liblzma.so.5 位置。
find /usr/lib -name "liblzma.so.5" 2>/dev/null
(通常路径为 /usr/lib/x86_64-linux-gnu/liblzma.so.5)
二、备份并替换冲突文件:将 /usr/local/lib/ 下的旧库文件备份,并创建一个指向系统标准库的符号链接。
# 1. 备份旧库文件(将其移出库搜索路径)
sudo mv /usr/local/lib/liblzma.so.5 /usr/local/lib/liblzma.so.5.bak
# 2. 创建指向系统标准库的软链接
sudo ln -s /usr/lib/x86_64-linux-gnu/liblzma.so.5 /usr/local/lib/liblzma.so.5
这个操作既解决了 dpkg-deb 的报错,也保留了原文件以备不时之需
三、在 Dockerfile 中的写法:如果希望在构建镜像时自动修复,可以在安装 akusbsd 包的 RUN 指令前加入以下命令:
RUN mv /usr/local/lib/liblzma.so.5 /usr/local/lib/liblzma.so.5.bak || true
&& ln -sf /usr/lib/x86_64-linux-gnu/liblzma.so.5 /usr/local/lib/liblzma.so.5