Armadilloフォーラム

ABOSDEでtelegrafがインストールされたSWUを作成しようとするが失敗する

takeshita_kyouhei

2024年2月28日 14時37分

ABOSDEでtelegrafがインストールされたSWUを作成しようとした際に失敗してしまいます

InfluxData公式サイトに記載されたapt-getを用いたインストール手順を思考していますが失敗します
https://docs.influxdata.com/telegraf/v1/install/

ABOSDEでDocjerFileを開き、以下のように変更を行った上で「開発用SWUを作成する」を実行しました

ARG ARCH
FROM docker.io/${ARCH}/debian:bullseye-slim
LABEL version="2.0.0"

>ARG PRODUCT
>COPY resources [r]esources_${PRODUCT} /
>COPY hosts /etc/hosts
>COPY certificate.pem /etc/ssl/certs/
>COPY key.pem /etc/ssl/certs/
>
>ARG PACKAGES
>RUN apt-get update && apt-get upgrade -y \
> && apt-get install -y ${PACKAGES} \
> && curl -s https://repos.influxdata.com/influxdata-archive_compat.key > influxdata-archive_compat.key \
> && echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null \
> && echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list \
> && apt-get update && sudo apt-get install telegraf \
> && apt-get clean
>
>RUN useradd -m -u 1000 atmark

その際に、以下のようなエラーが出力されます
>/bin/sh: 1: curl: not found
>Error: error building at STEP "RUN apt-get update && apt-get upgrade -y && apt-get install -y ${PACKAGES} && curl -s https://repos.influxdata.com/influxdata-archive_compat.key > influxdata-archive_compat.key && echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null && echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list && apt-get update && sudo apt-get install telegraf && apt-get clean": error while running >runtime: exit status 127
>イメージをビルドできませんでした。
>
> * The terminal process "/usr/bin/bash '-c', './scripts/generate_swu.sh development'" terminated with exit code: 1.
> * Terminal will be reused by tasks, press any key to close it.

原因について何かわかりますでしょうか?

コメント

at_satoshi.ohta

2024年2月28日 14時54分

太田です。

エラーメッセージに、

  >/bin/sh: 1: curl: not found

と表示がありますので、プロジェクトディレクリの container/packages.txt に curl を追記して再度実行してみてください。

よろしくお願いいたします。

takeshita_kyouhei

2024年2月28日 16時51分

> 太田です。
>
> エラーメッセージに、
>

>   >/bin/sh: 1: curl: not found
> 

>
> と表示がありますので、プロジェクトディレクリの container/packages.txt に curl を追記して再度実行してみてください。
>
> よろしくお願いいたします。
早速の返信、ありがとうございます

python3
python3-requests
curl
influxdb

packege.txtについて上記のようにして再度SWUを作成しましたが、今度は「sudo」が存在しないというエラーが表示されました

/bin/sh: 1: /bin/sh: 1: sudo: not found

そのため、DockerFileに記載していた当該箇所を変更しました

sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
↓
su tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null

しかし、この状態でもエラーが発生

/bin/sh: 1: gpg: not found

次は「gpg」をpackege.txtに追記してビルドを行いました
このとき、エラーが発生

influxdata-archive_compat.key: OK
su: user tee does not exist or the user entry does not contain all the required fields
gpg: [stdout]: write error: Broken pipe
gpg: filter_flush failed on close: Broken pipe

上記はどのように解決すればよいでしょうか?

at_satoshi.ohta

2024年2月28日 18時45分

太田です。

最後に提示していただいたエラーメッセージに

su: user tee does not exist or the user entry does not contain all the required fields

とあります。su コマンドが tee コマンドを user として認識しているためエラーになっているように見えます。

Dockerfile に追記した RUN で実行するコマンドに含まれる sudo および su を全て消した上で再実行してみていただけますか?

よろしくお願いいたします。

takeshita_kyouhei

2024年3月4日 22時54分

> 太田です。
>
> 最後に提示していただいたエラーメッセージに
>

> su: user tee does not exist or the user entry does not contain all the required fields
> 

> とあります。su コマンドが tee コマンドを user として認識しているためエラーになっているように見えます。
>
> Dockerfile に追記した RUN で実行するコマンドに含まれる sudo および su を全て消した上で再実行してみていただけますか?
>
> よろしくお願いいたします。
>
>
上記対応で問題なくSWUを作成できるようになりました

SWU作成時に、suコマンドなど特権モードに変更するコマンドは不要と考えてよいでしょうか?

at_satoshi.ohta

2024年3月5日 10時39分

太田です。

はい。Dockerfile の RUNコマンド内で su コマンドや root コマンドは不要です。

よろしくお願いいたします。

takeshita_kyouhei

2024年3月6日 17時00分

> 太田です。
>
> はい。Dockerfile の RUNコマンド内で su コマンドや root コマンドは不要です。
>
> よろしくお願いいたします。
上記情報ありがとうございます
次回以降、同様の手順でパッケージインストールが必要な際には参考にさせていただきます