Бегун Gitlab: команда microdnf / yum не найдена на другом компьютере

#docker #gitlab-ci-runner #yum #rhel #dnf

#docker #gitlab-ci-runner #вкуснятина #rhel #dnf

Вопрос:

У меня есть два разных серверных компьютера с размещенным 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? Давайте изменим установку net-tools в Dockerfile

 RUN yum install net-tools -y
  

Конвейер запущен, задание запланировано и … промежуточная машина:

Задание выполнено успешно.

На рабочей машине, как вы можете понять:

/bin/sh: yum: команда не найдена


Я чувствую, что я немного в ловушке, потому что нет другого способа установить пакет (dnf должен быть другим возможным способом, но он не устанавливается на оба образа docker), и я не хочу применять обходной путь, который может «протестировать» установку через microdnf или yum.

Я надеюсь, что я максимально прояснил проблему.

Ответ №1:

Это неправильное решение, но, по крайней мере, оно работает. Я имею в виду, это просто обходной путь, который необходимо заменить как можно скорее.

Во всяком случае, в моих файлах docker, где я устанавливаю microdnf / yum… Я просто делаю оба, игнорируя ошибки. В Linux вы можете «переопределить» статус выхода, добавив ‘; exit (0)’ к вашей команде.

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

На обеих машинах добавление заключается в том, чтобы просто выполнить установки через yum и microdnf, и, конечно же, один из них успешно выполнит операцию; вместо этого другой завершится с «задушенной ошибкой».

Хороший

Плохая

Это обходное решение позволит вам преодолеть эту проблему действительно грубым способом, но, по крайней мере … это работает. «Задушенная ошибка» будет просто проигнорирована, и операция пройдет без сбоев.

Комментарии:

1. Вы когда-нибудь находили реальное решение? Я сталкиваюсь с той же проблемой с oraclelinux: 8-slim. Но у меня есть только microdnf, без yum.

2. На самом деле, я еще не сделал. Я покинул компанию, в которой я это делал …. материал, и у них все еще есть эта конфигурация. Я предлагаю вам попробовать разные менеджеры пакетов, чтобы найти правильный. У вас в кармане должны быть yum, dnf, microdnf и rpm. Я знаю, это то, что нарушает все лучшие практики, но … это работает.