【问题标题】:Gitlab Runner: microdnf/yum command not found on different machineGitlab Runner:在不同的机器上找不到 microdnf/yum 命令
【发布时间】:2020-09-17 09:03:20
【问题描述】:

我有两台托管 gitlab-runner 的不同服务器机器。我使用一个作为开发版本,另一个作为生产版本。我在两台机器上都有相同的配置,所以 gitlab-runner 的最新版本和 Docker/docker-compose 的最新版本。

在我的 dockerfiles 中,我需要下载 net-tools 包才能使用 netstat 命令。 builder docker 是 OpenJDK 14 的官方镜像,它基于 RHEL。所以,为了安装一个新包,我只能使用 dnf/microdnf 或 yum。


好的,到目前为止,一切都应该简单明了。但是...当机器尝试运行命令时:

RUN microdnf install net-tools

在登台机器上:

/bin/sh: microdnf: 找不到命令

相反,在生产机器上:

作业成功。


好的,那么 yum 呢?让我们更改 Dockerfile 的 net-tools 安装

RUN yum install net-tools -y

流水线已启动,作业已安排并...暂存机器:

作业成功。

在生产机器上,如您所见:

/bin/sh: yum: 找不到命令


我觉得我有点被困住了,因为没有另一种安装包的方式(dnf 应该是另一种可能的方式,但它没有安装在两个 docker 映像上),我不想应用可以“测试”的解决方法通过 microdnf 或 yum 安装。

我希望我已尽可能清楚地说明问题。

【问题讨论】:

    标签: docker gitlab-ci-runner yum rhel dnf


    【解决方案1】:

    这不是一个合适的解决方案,但至少它有效。我的意思是,这只是一种解决方法,必须尽快更换。

    无论如何,在我安装 microdnf/yum 的 docker-files 中...我只是两者都做,而忽略了错误。在 Linux 中,您可以“覆盖”退出状态,将 ';exit(0)' 附加到您的命令。

    RUN yum install net-tools -y; exit 0
    RUN microdnf install net-tools -y; exit 0
    

    在两台机器上附加的只是通过 yum 和 microdnf 执行安装,当然,其中一台会成功执行操作;相反,另一个会以“窒息错误”终止。

    这种解决方法可以让您以非常粗略的方式克服这个问题,但至少......它有效。 “令人窒息的错误”将被忽略,操作不会崩溃。

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 2022-01-15
      • 2023-04-02
      • 2019-03-03
      相关资源
      最近更新 更多