You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RedHat UBI 8容器Snapd启动失败,如何无Snap安装Expect?

在RedHat UBI 8容器中无需Snap安装Expect的解决方案

嗨,我来帮你搞定这个问题!你遇到的报错是因为容器环境里默认不会用systemd作为PID 1来运行,所以systemctl命令根本没法正常工作,Snap依赖的snapd服务自然也启动不了。不过完全不用纠结Snap,咱们直接用EPEL源就能轻松安装Expect,步骤比你原来的简单多了。

优化后的Dockerfile

你原来的Dockerfile里已经加了EPEL源,其实只需要去掉所有和Snap相关的步骤,直接安装Expect就行,我帮你调整好了:

FROM registry.access.redhat.com/ubi8/ubi
RUN dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y && \
    dnf update -y && \
    dnf install -y wget expect && \
    # 如果你确实需要bash-completion,可以保留下面这两行,不需要的话直接删掉就行
    wget http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/bash-completion-2.7-5.el8.noarch.rpm && \
    dnf install -y bash-completion-2.7-5.el8.noarch.rpm && \
    # 清理dnf缓存,减小镜像体积(容器构建的最佳实践哦)
    dnf clean all && rm -rf /var/cache/dnf

几个关键说明

  • 你原本添加的EPEL源里已经有Expect包了,根本不需要额外装remi源(除非你还有其他软件依赖它),所以可以把remi-release的安装步骤删掉,让流程更简洁。
  • 最后加的dnf clean all && rm -rf /var/cache/dnf是为了清理安装时产生的缓存,能大幅减小最终镜像的大小,这是做容器镜像时的常用技巧。
  • 完全不用再碰snapd、squashfs-tools这些和Snap相关的依赖,彻底避开systemd的问题。

验证安装是否成功

构建好镜像后,进入容器执行expect -v,如果能看到Expect的版本信息,就说明安装成功啦!

内容的提问来源于stack exchange,提问作者mflame

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:47:42