rikuya-h
2025年2月25日 15時25分
armadillo-G4にてプロジェクトを作成しmkswuにてsbom生成がしたいのですが以下エラーにより
生成できません。
# 実行ログ
atmark@atde9:~/hoge-hoge-proto/Armadillo_G4$ mkswu huga.desc Enter pass phrase for /home/atmark/mkswu/swupdate.key: INFO:root:Building SBOM... Traceback (most recent call last): File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "/usr/lib/python3.9/runpy.py", line 87, in _run_code exec(code, run_globals) File "/usr/lib/python3/dist-packages/make-sbom/__main__.py", line 4, in <module> main() File "/usr/lib/python3/dist-packages/make-sbom/make_sbom.py", line 128, in main output_sbom(document, args.output, filename, validate=args.validate) File "/usr/lib/python3/dist-packages/make-sbom/make_sbom.py", line 74, in output_sbom write_file(document, out_file, validate=validate) File "/usr/lib/python3/dist-packages/spdx_tools/spdx/writer/write_anything.py", line 16, in write_file json_writer.write_document_to_file(document, file_name, validate) File "/usr/lib/python3/dist-packages/spdx_tools/spdx/writer/json/json_writer.py", line 38, in write_document_to_file write_document_to_stream(document, out, validate, converter, drop_duplicates) File "/usr/lib/python3/dist-packages/spdx_tools/spdx/writer/json/json_writer.py", line 25, in write_document_to_stream document = validate_and_deduplicate(document, validate, drop_duplicates) File "/usr/lib/python3/dist-packages/spdx_tools/spdx/writer/write_utils.py", line 17, in validate_and_deduplicate raise ValueError(f"Document is not valid. The following errors were detected: {validation_messages}") ValueError: Document is not valid. The following errors were detected: [ValidationMessage(validation_message="every spdx_id must be unique within the document, but found the following duplicates: ['SPDXRef-DocumentRoot-Directory--home-atmark-hoge-hoge-proto-Armadillo-G4-alert', 'SPDXRef-DocumentRoot-Directory--home-atmark-hoge-hoge-proto-Armadillo-G4-app', 'SPDXRef-DocumentRoot-Directory--home-atmark-hoge-hoge-proto-Armadillo-G4-loki', 'SPDXRef-DocumentRoot-Directory--home-atmark-hoge-hoge-proto-Armadillo-G4-prom', 'SPDXRef-DocumentRoot-Directory--home-atmark-hoge-hoge-proto-Armadillo-G4-promtail', 'SPDXRef-Package-apk-alpine-baselayout-21e54be9d7ca763c', 'SPDXRef-Package-apk-alpine-baselayout-data-9ff96f942d2401f2', 'SPDXRef-Package-apk-alpine-keys-0e5100e3d266a135', 'SPDXRef-Package-apk-apk-tools-78c55d64ab350462', 'SPDXRef-Package-apk-busybox-1bb81cc0e13f362d', 'SPDXRef-Package-apk-busybox-binsh-30b5e2f594950cb2', 'SPDXRef-Package-apk-ca-certificates-bundle-4db628a5f734287c', 'SPDXRef-Package-apk-ca-certificates-cd51c1f9eed42514', 'SPDXRef-Package-apk-musl-03e521237cbed45a', 'SPDXRef-Package-apk-musl-utils-c84ae08b59df5c6e', 'SPDXRef-Package-apk-scanelf-54f3623fdd8fb8d4', 'SPDXRef-Package-apk-ssl-client-692d7c5cf4a3b25a', 'SPDXRef-Package-apk-zlib-d8258d3d7c48cfbf', 'SPDXRef-Package-binary-busybox-734e08374d08ee01']", context=ValidationContext(spdx_id='SPDXRef-DOCUMENT', parent_id=None, element_type=<SpdxElementType.DOCUMENT: 7>, full_element=None))] SBOM ファイル を作成できませんでした。 huga.swu を作成しました。
# huga.desc
swdesc_option component=extra_os.huga swdesc_option version=54 swdesc_option BUILD_SBOM=auto swdesc_option sbom_config_yaml=huga.sbom_config.yaml ~以下略~
# huga.sbom_config.yaml
# For details on the SBOM description rules, please refer to the following URL: # https://spdx.github.io/spdx-spec/v2.2.2/ Document: documentNamespace: https://localhost/huga.swu creators: - Organization: HOGE Package: mainPackage: version: 1 creators: - Organization: HOGE copyrightText: Copyright 2024 HOGE huga: version: latest
エラー原因をご教示頂けると助かります。
よろしくお願いします。
コメント
rikuya-h
> お世話になっております。山崎です。
> いただいたファイルの情報を含んだファイルを作成し、コマンドを実行してみたのですが、こちらの環境ではエラーを再現できませんでした。
> そのため、huga.desc にある ~以下略~ の内容に原因があるのではと思われます。
> こちら、エラーが再現できるようなファイルを添付いただけますと助かります。
> また、動作環境について確認したいので、以下の2つのコマンドの実行結果を貼っていだけますと幸いです。
>
> apt list --installed | grep python3-make-sbom > mkswu --version >
>
> 以上、どうぞよろしくお願いいたします。
huga.descについて
swdesc_option component=extra_os.obpod swdesc_option version=54 swdesc_option BUILD_SBOM=auto swdesc_option sbom_config_yaml=obpod.sbom_config.yaml swdesc_files --dest /etc/atmark/containers/ conf/grafana.conf swdesc_files --dest /etc/atmark/containers/ conf/prometheus.conf swdesc_files --dest /etc/atmark/containers/ conf/loki.conf swdesc_files --dest /etc/atmark/containers/ conf/node.conf swdesc_files --dest /etc/atmark/containers/ conf/promtail.conf swdesc_files --dest /etc/atmark/containers/ conf/alertmanager.conf swdesc_files --dest /etc/atmark/containers/ conf/obpod.conf swdesc_files --dest /etc/atmark/containers/ conf/obpod.yaml swdesc_files --extra-os ./prom swdesc_files --dest "/var/app/rollback/volumes/prom" "./prom" swdesc_command --extra-os 'chmod 777 /var/app/rollback/volumes/prom' swdesc_files --extra-os ./alert swdesc_files --dest "/var/app/rollback/volumes/alert" "./alert" swdesc_files --extra-os ./promtail swdesc_files --dest "/var/app/rollback/volumes/promtail" "./promtail" swdesc_files --extra-os ./grafana swdesc_files --dest "/var/app/rollback/volumes/grafana" "./grafana/datasources/default.yml" swdesc_files --extra-os ./loki swdesc_files --dest "/var/app/rollback/volumes/loki" "./loki" swdesc_files --extra-os ./app swdesc_command "rm -rf /var/app/rollback/volumes/python" swdesc_files --dest "/var/app/rollback/volumes/python" "./app" swdesc_files --dest /etc/atmark/containers/ conf/app.conf swdesc_command --extra-os 'chmod +x /var/app/rollback/volumes/python/src/test.sh' swdesc_embed_container "grafana.tar" swdesc_embed_container "loki.tar" swdesc_embed_container "promtail.tar" swdesc_embed_container "prometheus.tar" swdesc_embed_container "node-exporter.tar" swdesc_embed_container "alertmanager.tar" swdesc_embed_container "python.tar"
動作環境確認コマンドについて
atmark@atde9:~/DXE-MPF-proto/Armadillo_G4$ apt list --installed | grep python3-make-sbom WARNING: apt does not have a stable CLI interface. Use with caution in scripts. python3-make-sbom/now 1.0.0-1+atmark1 all [インストール済み、1.0.1-1+atmark1 にアップグレード可] atmark@atde9:~/DXE-MPF-proto/Armadillo_G4$ mkswu --version mkswu バージョン 6.4 atmark@atde9:~/DXE-MPF-proto/Armadillo_G4$
以上になります。
よろしくお願いします。
rikuya-h
at_reika.yamazaki
お世話になっております。山崎です。
desc ファイルの内容についてご連絡ありがとうございます。
いくつかファイルを配置しているのでこちらの処理がうまくいっていない可能性があります。
その前に、ご使用の mkswu、python3-make-sbom パッケージが最新ではないようです。
本日時点での最新のパッケージは mkswu 7.2、python3-make-sbom 1.0.1 になります。
こちらお手数をおかけして申し訳ありませんが、以下のコマンドを実行して最新のパッケージにアップデート後、再度エラーが表示されるかどうか、ご確認いただけますでしょうか。
念のため、バージョンが最新になっているかについてもご確認いただけますと幸いです。
sudo apt update sudo apt install mkswu python3-make-sbom apt list --installed | grep python3-make-sbom mkswu --version
以上、どうぞよろしくお願いいたします。
rikuya-h
> お世話になっております。山崎です。
> desc ファイルの内容についてご連絡ありがとうございます。
> いくつかファイルを配置しているのでこちらの処理がうまくいっていない可能性があります。
>
> その前に、ご使用の mkswu、python3-make-sbom パッケージが最新ではないようです。
> 本日時点での最新のパッケージは mkswu 7.2、python3-make-sbom 1.0.1 になります。
> こちらお手数をおかけして申し訳ありませんが、以下のコマンドを実行して最新のパッケージにアップデート後、再度エラーが表示されるかどうか、ご確認いただけますでしょうか。
> 念のため、バージョンが最新になっているかについてもご確認いただけますと幸いです。
>
> sudo apt update > sudo apt install mkswu python3-make-sbom > apt list --installed | grep python3-make-sbom > mkswu --version >
>
> 以上、どうぞよろしくお願いいたします。
パッケージアップデート後
atmark@atde9:~/DXE-MPF-proto/Armadillo_G4$ apt list --installed | grep python3-make-sbom WARNING: apt does not have a stable CLI interface. Use with caution in scripts. python3-make-sbom/bullseye,bullseye,bullseye,now 1.0.1-1+atmark1 all [インストール済み、自動] atmark@atde9:~/DXE-MPF-proto/Armadillo_G4$ mkswu --version mkswu バージョン 7.2
mkswuコマンド実行時に継続して同エラーが表示されます。
at_reika.yamazaki
お世話になっております。山崎です。
パッケージのアップデートありがとうございます。
こちらでも確認したところ、以下の箇所でエラーすることがわかりました。
swdesc_files --extra-os ./prom swdesc_files --dest "/var/app/rollback/volumes/prom" "./prom"
SBOM 作成エラーの原因は、同じ prom ディレクトリを二回スキャンしてしまったためです。
上記のコードについて質問なのですが、こちらは 1行目で prom ディレクトリのファイルをルートから配置し、2行目で prom ディレクトリのファイルを /var/app/rollback/volumes/prom に配置する動作となっております。
こちらは意図した処理でしょうか?相違ある場合はお知らせください。
また、以下のように、配置したファイルをコピーすることで上記コードと同様の処理が可能ですので、こちらで試していただけますと助かります。
swdesc_files --dest "/var/app/rollback/volumes/prom" "./prom" swdesc_command "cp /var/app/rollback/volumes/prom/* /"
他の「swdesc_files --extra-os xxx」の行についても同じように置き換えてください。
以上、どうぞよろしくお願いいたします。
rikuya-h
> お世話になっております。山崎です。
> パッケージのアップデートありがとうございます。
> こちらでも確認したところ、以下の箇所でエラーすることがわかりました。
>
> swdesc_files --extra-os ./prom > swdesc_files --dest "/var/app/rollback/volumes/prom" "./prom" >
> SBOM 作成エラーの原因は、同じ prom ディレクトリを二回スキャンしてしまったためです。
> 上記のコードについて質問なのですが、こちらは 1行目で prom ディレクトリのファイルをルートから配置し、2行目で prom ディレクトリのファイルを /var/app/rollback/volumes/prom に配置する動作となっております。
> こちらは意図した処理でしょうか?相違ある場合はお知らせください。
>
> また、以下のように、配置したファイルをコピーすることで上記コードと同様の処理が可能ですので、こちらで試していただけますと助かります。
>
> swdesc_files --dest "/var/app/rollback/volumes/prom" "./prom" > swdesc_command "cp /var/app/rollback/volumes/prom/* /" >
> 他の「swdesc_files --extra-os xxx」の行についても同じように置き換えてください。
>
> 以上、どうぞよろしくお願いいたします。
>
以下の様に.descファイルを変更しましたが...
swdesc_option component=extra_os.obpod swdesc_option version=54 swdesc_option BUILD_SBOM=auto swdesc_option sbom_config_yaml=obpod.sbom_config.yaml swdesc_files --dest /etc/atmark/containers/ conf/grafana.conf swdesc_files --dest /etc/atmark/containers/ conf/prometheus.conf swdesc_files --dest /etc/atmark/containers/ conf/loki.conf swdesc_files --dest /etc/atmark/containers/ conf/node.conf swdesc_files --dest /etc/atmark/containers/ conf/promtail.conf swdesc_files --dest /etc/atmark/containers/ conf/alertmanager.conf swdesc_files --dest /etc/atmark/containers/ conf/obpod.conf swdesc_files --dest /etc/atmark/containers/ conf/obpod.yaml swdesc_files --dest "/var/app/rollback/volumes/prom" "./prom" swdesc_command "cp /var/app/rollback/volumes/prom/* /" swdesc_command --extra-os 'chmod 777 /var/app/rollback/volumes/prom' swdesc_files --dest "/var/app/rollback/volumes/alert" "./alert" swdesc_command "cp /var/app/rollback/volumes/alert/* /" swdesc_files --dest "/var/app/rollback/volumes/promtail" "./promtail" swdesc_command "cp /var/app/rollback/volumes/promtail/* /" swdesc_files --dest "/var/app/rollback/volumes/grafana" "./grafana/datasources/default.yml" swdesc_command "cp /var/app/rollback/volumes/grafana/* /" swdesc_files --dest "/var/app/rollback/volumes/loki" "./loki" swdesc_command "cp /var/app/rollback/volumes/loki/* /" swdesc_command "rm -rf /var/app/rollback/volumes/python" swdesc_files --dest "/var/app/rollback/volumes/python" "./app" swdesc_command "cp /var/app/rollback/volumes/python/* /" swdesc_files --dest /etc/atmark/containers/ conf/app.conf swdesc_command --extra-os 'chmod +x /var/app/rollback/volumes/python/src/test.sh' swdesc_embed_container "grafana.tar" swdesc_embed_container "loki.tar" swdesc_embed_container "promtail.tar" swdesc_embed_container "prometheus.tar" swdesc_embed_container "node-exporter.tar" swdesc_embed_container "alertmanager.tar" swdesc_embed_container "python.tar"
エラーは変わらず...
swdesc_option component=extra_os.obpod swdesc_option version=54 # sbom生成でエラーとなるため要調査 swdesc_option BUILD_SBOM=auto swdesc_option sbom_config_yaml=obpod.sbom_config.yaml swdesc_files --dest /etc/atmark/containers/ conf/grafana.conf swdesc_files --dest /etc/atmark/containers/ conf/prometheus.conf swdesc_files --dest /etc/atmark/containers/ conf/loki.conf swdesc_files --dest /etc/atmark/containers/ conf/node.conf swdesc_files --dest /etc/atmark/containers/ conf/promtail.conf swdesc_files --dest /etc/atmark/containers/ conf/alertmanager.conf swdesc_files --dest /etc/atmark/containers/ conf/obpod.conf swdesc_files --dest /etc/atmark/containers/ conf/obpod.yaml swdesc_files --dest "/var/app/rollback/volumes/prom" "./prom" swdesc_command "cp /var/app/rollback/volumes/prom/* /" swdesc_command --extra-os 'chmod 777 /var/app/rollback/volumes/prom' swdesc_files --dest "/var/app/rollback/volumes/alert" "./alert" swdesc_command "cp /var/app/rollback/volumes/alert/* /" swdesc_files --dest "/var/app/rollback/volumes/promtail" "./promtail" swdesc_command "cp /var/app/rollback/volumes/promtail/* /" swdesc_files --dest "/var/app/rollback/volumes/grafana" "./grafana/datasources/default.yml" swdesc_command "cp /var/app/rollback/volumes/grafana/* /" swdesc_files --dest "/var/app/rollback/volumes/loki" "./loki" swdesc_command "cp /var/app/rollback/volumes/loki/* /" swdesc_command "rm -rf /var/app/rollback/volumes/python" swdesc_files --dest "/var/app/rollback/volumes/python" "./app" swdesc_command "cp /var/app/rollback/volumes/python/* /" swdesc_files --dest /etc/atmark/containers/ conf/app.conf swdesc_command --extra-os 'chmod +x /var/app/rollback/volumes/python/src/test.sh' swdesc_embed_container "grafana.tar" swdesc_embed_container "loki.tar" swdesc_embed_container "promtail.tar" swdesc_embed_container "prometheus.tar" swdesc_embed_container "node-exporter.tar" swdesc_embed_container "alertmanager.tar" swdesc_embed_container "python.tar"
rikuya-h
at_reika.yamazaki
お世話になっております。山崎です。
変わらずエラーするということですね。了解です。
こちらではエラーが再現できないため、エラー原因が変わった可能性があります。
お手数ですが、原因を絞り込むため desc ファイルを以下のように変更して実行していただけますでしょうか。
1. 「swdesc_files --dest "/var/app/rollback/volumes/prom" "./prom"」 以降の行をコメントアウト
2. 1 で起きない場合は、「swdesc_embed_container ~」 の行のコメントアウトを解除
3. 2 で起きない場合は、空行毎にコメントアウトを解除
desc ファイルをどの場合にしたときにエラーが起きたかお知らせくださると助かります。
以上、どうぞよろしくお願いいたします。
rikuya-h
> お世話になっております。山崎です。
> 変わらずエラーするということですね。了解です。
> こちらではエラーが再現できないため、エラー原因が変わった可能性があります。
> お手数ですが、原因を絞り込むため desc ファイルを以下のように変更して実行していただけますでしょうか。
>
> 1. 「swdesc_files --dest "/var/app/rollback/volumes/prom" "./prom"」 以降の行をコメントアウト
> 2. 1 で起きない場合は、「swdesc_embed_container ~」 の行のコメントアウトを解除
> 3. 2 で起きない場合は、空行毎にコメントアウトを解除
>
> desc ファイルをどの場合にしたときにエラーが起きたかお知らせくださると助かります。
> 以上、どうぞよろしくお願いいたします。
desc ファイルにて原因を切り分けしてみた所、「swdesc_embed_container ~」 の行が複数ある場合にエラーが表示されるようです。
一行だけでmkswuコマンドを実行するとエラー表示は無く成功します。
各行の「swdesc_embed_container ~」 を一つずつ実行させる場合にもエラーが表示されませんでしたので、
何かしら特定の「swdesc_embed_container ~」 行が悪さしている様には見えません。
at_reika.yamazaki
お世話になっております。山崎です。
原因切り分けありがとうございます。
「swdesc_embed_container ~」が一行だとエラーが表示されないということで了解です。
エラーの原因についてなのですが、貼っていただいた desc ファイルでは、コンテナイメージを7つ含めていると思います。
こちら、もとにしたコンテナイメージが同じだったりはしないでしょうか?
含まれるパッケージ等に同じものが存在し、SPDX ID が重複してしまったため、SBOM として成立しないとエラーが出ているものと思われます。
こちらを解決するには desc ファイルを分割して、swu イメージ毎にコンテナイメージ(もしくはコンテナアプリケーション)を管理していただくのが良さそうに思います。
お手数をおかけして大変申し訳ありませんが、ご検討いただけますと幸いです。
以上、どうぞよろしくお願いいたします。
rikuya-h
> エラーの原因についてなのですが、貼っていただいた desc ファイルでは、コンテナイメージを7つ含めていると思います。
> こちら、もとにしたコンテナイメージが同じだったりはしないでしょうか?
それぞれ別イメージになります。
> 含まれるパッケージ等に同じものが存在し、SPDX ID が重複してしまったため、SBOM として成立しないとエラーが出ているものと思われます。
> こちらを解決するには desc ファイルを分割して、swu イメージ毎にコンテナイメージ(もしくはコンテナアプリケーション)を管理していただくのが良さそうに思います。
複数コンテナイメージを1swuに纏められないとの事であれば、そちらの対応も検討します。
at_reika.yamazaki
お世話になっております。山崎です。
>複数コンテナイメージを1swuに纏められないとの事であれば、そちらの対応も検討します。
ご検討ありがとうございます。
またコンテナイメージについて補足します。
エラー内容をみるに、もとにしたコンテナイメージは alpine ではないかと推察します。
以下はエラーから取得した、重複してしまっているパッケージです。
・'SPDXRef-Package-apk-alpine-baselayout-21e54be9d7ca763c'
・'SPDXRef-Package-apk-alpine-baselayout-data-9ff96f942d2401f2'
・'SPDXRef-Package-apk-alpine-keys-0e5100e3d266a135'
・'SPDXRef-Package-apk-apk-tools-78c55d64ab350462'
・'SPDXRef-Package-apk-busybox-1bb81cc0e13f362d'
・'SPDXRef-Package-apk-busybox-binsh-30b5e2f594950cb2'
・'SPDXRef-Package-apk-ca-certificates-bundle-4db628a5f734287c'
・'SPDXRef-Package-apk-ca-certificates-cd51c1f9eed42514'
・'SPDXRef-Package-apk-musl-03e521237cbed45a'
・'SPDXRef-Package-apk-musl-utils-c84ae08b59df5c6e'
・'SPDXRef-Package-apk-scanelf-54f3623fdd8fb8d4'
・'SPDXRef-Package-apk-ssl-client-692d7c5cf4a3b25a'
・'SPDXRef-Package-apk-zlib-d8258d3d7c48cfbf'
・'SPDXRef-Package-binary-busybox-734e08374d08ee01'
そのため、パッケージの重複が起こり SBOM として成立しなくなっています。
alpine/debian のような OS の違いであれば上記のエラーは起こりにくいと思いますが、同じ OS のコンテナイメージであれば難しいと思います。
以上、補足になります。どうぞよろしくお願いいたします。
at_reika.yamazaki
2025年2月25日 18時48分
お世話になっております。山崎です。
いただいたファイルの情報を含んだファイルを作成し、コマンドを実行してみたのですが、こちらの環境ではエラーを再現できませんでした。
そのため、huga.desc にある ~以下略~ の内容に原因があるのではと思われます。
こちら、エラーが再現できるようなファイルを添付いただけますと助かります。
また、動作環境について確認したいので、以下の2つのコマンドの実行結果を貼っていだけますと幸いです。
以上、どうぞよろしくお願いいたします。