Ubuntu pyxis容器中安装update-notifier-common失败如何解决
解决方案
你可以直接使用以下修复后的初始化脚本:
#!/usr/bin/env bash set -euxo pipefail # 更新源并安装基础工具 apt-get update apt-get install -y software-properties-common # 启用universe仓库,msttcorefonts包存放在该仓库中 add-apt-repository -y universe # 容器场景下直接关闭APT沙箱,无需额外创建_apt用户,无安全风险 echo 'APT::Sandbox::User "root";' > /etc/apt/apt.conf.d/99disable-sandbox # 预接受微软字体EULA协议 echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections echo ttf-mscorefonts-installer msttcorefonts/present-mscorefonts-eula note | debconf-set-selections # 安装系统依赖 apt-get update apt-get install -y python3-pip python3-tk nano msttcorefonts # 清理matplotlib字体缓存 rm -rf ~/.cache/matplotlib 2>/dev/null # 安装Python依赖包 pip3 install joblib matplotlib numpy pillow scikit-learn scipy tqdm
原脚本运行失败的核心原因有三个:
- Ubuntu基础容器默认没有
_apt系统用户,APT沙箱和update-notifier-common的后置配置脚本执行chown操作时找不到对应用户导致报错 - 手动创建
_apt用户时额外添加了sudo、root组权限,破坏了APT沙箱的权限切换逻辑,导致APT下载进程崩溃无法拉取软件包 - 官方
ubuntu:latest镜像默认未启用universe仓库,msttcorefonts包存放在该仓库中,未启用的情况下会提示找不到包
可选方案:不关闭APT沙箱
如果你不想关闭APT沙箱,可以将脚本中关闭沙箱的配置行替换为以下正确创建_apt系统用户的代码:
# 正确创建_apt系统用户和对应组 groupadd -r _apt useradd -r -g _apt -d /nonexistent -s /usr/sbin/nologin _apt
脚本修改完成后直接使用你原有命令运行即可。
内容的提问来源于stack exchange,提问作者Mate de Vita
相关产品推荐
相关产品推荐

