Почему `exec init `работает в podman, а не в билде с теми же параметрами?

Я нашел причину, по которой это не работает, а также решение. Как прокомментировал @eike в моем OP, проблема заключалась в том, что возврат каретки \r из DOS перезаписывал вывод. Для меня более проблематично то, что \r по какой-то причине был добавлен к моей переменной.

Удаление \r вручную не представлялось возможным, поскольку этот файл регулярно обновляется.

Немного поискав, я обнаружил, что это решает мою проблему и правильно распечатывает строку:

#!/bin/bash
version=$(sed 's/\r$//' test.txt | sed -ne "s/\\Version *: *\([0-9a-zA-Z\.\-]+\)*/\1/p")
printf 'detected version %s for test.txt\n' "$version"

Здесь он сначала удаляет \r из текста и передает его в часть регулярного выражения. и я получаю ожидаемый результат:

detected version 0.6 for test.txt

Я уверен, что есть способ сделать это из регулярного выражения, чтобы игнорировать \r, но это, по крайней мере, сделало работу!

2
18.11.2020, 22:14
1 ответ

Podman run настраивает правильную среду для запуска системы init (systemd ). В Билде нет. Цель состоит НЕ в том, чтобы запуск Podman и запуск Buildah были одинаковыми.

buildah run эквивалентен команде RUN в Continerfile (Dockerfile ). Поскольку я никогда не видел, чтобы кто-нибудь создавал Containerfile, например

FROM centos:7
RUN /bin/init

Мы это не рассматривали и вряд ли поддержим.

2
18.03.2021, 22:48

Теги

Похожие вопросы