构建Nvidia基础镜像容器执行apt-get update时出现libapt-private错误
报错原因
你执行的全量拷贝/usr/lib/x86_64-linux-gnu目录操作,将nvidia/opengl镜像中版本不兼容的libapt-private.so.0.0文件覆盖了基础cuda镜像中原有的对应文件,APT组件版本不匹配导致apt-get调用时找不到对应符号,触发报错。
解决方案
方案1:调整COPY指令范围,仅拷贝所需的OpenGL相关库,避免误覆盖APT依赖
替换原有全量拷贝的COPY命令,仅复制GL相关的库文件即可:COPY --from=nvidia/opengl:1.0-glvnd-runtime-ubuntu18.04 \ /usr/lib/x86_64-linux-gnu/libGL* \ /usr/lib/x86_64-linux-gnu/libEGL* \ /usr/lib/x86_64-linux-gnu/libOpenGL* \ /usr/lib/x86_64-linux-gnu/libGLX* \ /usr/lib/x86_64-linux-gnu/调整后再执行
RUN apt-get update即可正常运行。方案2:直接使用集成CUDA+OpenGL的官方镜像
无需手动跨镜像拷贝库文件,选择nvidia官方已适配好的带glvnd的CUDA镜像作为基础镜像,从根源避免版本冲突问题。方案3:拷贝库后先修复APT组件
若必须全量拷贝lib目录,在COPY指令后、apt操作前新增重装APT组件的指令,修复版本不兼容问题:COPY --from=nvidia/opengl:1.0-glvnd-runtime-ubuntu18.04 \ /usr/lib/x86_64-linux-gnu \ /usr/lib/x86_64-linux-gnu # 修复APT依赖冲突 RUN apt install --reinstall -o Dpkg::Options::="--force-overwrite" -y apt libapt-pkg5.0 RUN apt-get update
内容的提问来源于stack exchange,提问作者avinash bhat
相关产品推荐
相关产品推荐

