RedHat UBI 8 安装期望包
RedHat UBI 8 install expect package
我有 expect
脚本,我需要 运行 在 RedHat UBI 8 容器下。我正在尝试通过 snap 包管理器安装 expect,但我在启动 snapd 时遇到问题。
发出 systemctl enable --now snapd.socket
后我得到:
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
可以 expect
安装到 RedHat UBI 8 而无需 snap 吗?
到目前为止我的 Dockerfile:
FROM registry.access.redhat.com/ubi8/ubi
RUN dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y && \
dnf install http://rpms.remirepo.net/enterprise/remi-release-8.rpm -y && \
dnf update -y && \
dnf install -y wget && \
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/squashfs-tools-4.0-5.el6.x86_64.rpm && \
dnf install squashfs-tools-4.0-5.el6.x86_64.rpm -y && \
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 install snapd -y && \
systemctl enable --now snapd.socket && \
ln -s /var/lib/snapd/snap /snap && \
snap install expect
expect
软件包是基础 rhel 8 存储库的一部分。如果您的主机有有效的 RHEL 订阅,您的容器应该可以访问所有 RHEL 8 存储库,这意味着您可以简单地在容器内安装 expect
:
dnf -y install expect
如果您没有有效的订阅,也许只是使用基于 CentOS 的映像?
最简单的解决方案是 (a) 使用没有许可障碍的基本映像,或者 (b) 为您正在使用的软件购买许可证。如果您的客户不愿意做这两件事中的任何一件,您确实有一些选择:
您可以使 CentOS 存储库在 ubi 下可用。创建指向 CentOS 8 存储库的存储库配置:
[centos8-base]
name = CentOS 8 Base OS
baseurl = http://mirror.centos.org/centos/8/BaseOS/x86_64/os/
gpgcheck = 0
enabled = 0
并使用它来安装 expect:
FROM registry.access.redhat.com/ubi8/ubi
COPY centos8.repo /etc/yum.repos.d/centos8.repo
RUN dnf -y --enablerepo=centos8-base install expect
2021 年 8 月 18 日更新
之前的答案是正确的,但是 dnf
现在已经挂到 microdnf
所以命令变成:
FROM registry.access.redhat.com/ubi8/ubi
COPY centos8.repo /etc/yum.repos.d/centos8.repo
RUN microdnf -y --enablerepo=centos8-base install expect
我有 expect
脚本,我需要 运行 在 RedHat UBI 8 容器下。我正在尝试通过 snap 包管理器安装 expect,但我在启动 snapd 时遇到问题。
发出 systemctl enable --now snapd.socket
后我得到:
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
可以 expect
安装到 RedHat UBI 8 而无需 snap 吗?
到目前为止我的 Dockerfile:
FROM registry.access.redhat.com/ubi8/ubi
RUN dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y && \
dnf install http://rpms.remirepo.net/enterprise/remi-release-8.rpm -y && \
dnf update -y && \
dnf install -y wget && \
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/squashfs-tools-4.0-5.el6.x86_64.rpm && \
dnf install squashfs-tools-4.0-5.el6.x86_64.rpm -y && \
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 install snapd -y && \
systemctl enable --now snapd.socket && \
ln -s /var/lib/snapd/snap /snap && \
snap install expect
expect
软件包是基础 rhel 8 存储库的一部分。如果您的主机有有效的 RHEL 订阅,您的容器应该可以访问所有 RHEL 8 存储库,这意味着您可以简单地在容器内安装 expect
:
dnf -y install expect
如果您没有有效的订阅,也许只是使用基于 CentOS 的映像?
最简单的解决方案是 (a) 使用没有许可障碍的基本映像,或者 (b) 为您正在使用的软件购买许可证。如果您的客户不愿意做这两件事中的任何一件,您确实有一些选择:
您可以使 CentOS 存储库在 ubi 下可用。创建指向 CentOS 8 存储库的存储库配置:
[centos8-base]
name = CentOS 8 Base OS
baseurl = http://mirror.centos.org/centos/8/BaseOS/x86_64/os/
gpgcheck = 0
enabled = 0
并使用它来安装 expect:
FROM registry.access.redhat.com/ubi8/ubi
COPY centos8.repo /etc/yum.repos.d/centos8.repo
RUN dnf -y --enablerepo=centos8-base install expect
2021 年 8 月 18 日更新
之前的答案是正确的,但是 dnf
现在已经挂到 microdnf
所以命令变成:
FROM registry.access.redhat.com/ubi8/ubi
COPY centos8.repo /etc/yum.repos.d/centos8.repo
RUN microdnf -y --enablerepo=centos8-base install expect