Armadilloフォーラム

mkswuでinitial_setup.swuを生成する際、--config-dirを指定すると実行ディレクトリに依存して/etc/swupdate.pemに公開鍵が追記されない

tmygt

2024年4月3日 12時03分

mkswuを使ってinitial_setup.swuを生成しようとしています。

下記の様にmkswu用のconfigディレクトリを作成しています。また、秘密鍵はhttps://github.com/martinetd/G4_container_updater を参考に環境変数で管理しています。

app/builder/
└── mkswu
    ├── initial_setup.desc
    ├── mkswu.conf
    └── swupdate.pem

デフォルトの ~/mkswu ではない場所にconfを置いているので、 --config-dirを付けてmkswuを実行しています。SWUファイルは生成されるのですが、mkswuコマンドを実行するディレクトリによっては Armadilloの/etc/swupdate.pemに公開鍵が追記されません。
ただし、カレントディレクトリを app/builder/mkswuに変更するとうまくいきます。

複数パターン試した結果を下記に示します。

|カレントディレクトリ|実行コマンド|/etc/swupdate.pem|
|---|---|---|
|app|mkswu --config-dir builder/mkswu -o init.swu builder/mkswu/initial_setup.desc|追記されない|
|app|mkswu --config-dir builder/mkswu builder/mkswu/initial_setup.desc|追記されない|
|app/builder/mkswu|mkswu --config-dir ./ ./initial_setup.desc|追記される|
|app/builder/mkswu|mkswu --config-dir ./ initial_setup.desc|追記される|

appディレクトリで実行した場合でも /etc/swupdate.pem に公開鍵が追記されるようにしたいです。mkswu.confに何か記述が必要でしょうか? あるいはmkswuのバグでしょうか?

お手数をおかけしますが、ご確認お願い致します。

コメント

at_dominique.m…

2024年4月3日 13時34分

tmygtさん

> appディレクトリで実行した場合でも /etc/swupdate.pem に公開鍵が追記されるようにしたいです。mkswu.confに何か記述が必要でしょうか? あるいはmkswuのバグでしょうか?

申し訳ございません、mkswu のバグです。連絡感謝します。

こちらでも再現できました:

# チェックできる文字列
mkswu$ head -n 3 test/dir/swupdate.pem  | tail -n 1
MIIBmTCCAUCgAwIBAgIUGojDtw94b1uYRXSZqPhFUlC0MTgwCgYIKoZIzj0EAwIw
# バグの場合に追加される箇所に入ってない
mkswu$ mkswu --config-dir test/dir test/dir/initial_setup.desc 
Successfully generated test/dir/initial_setup.swu
mkswu$ cpio --quiet -i --to-stdout zst.scripts_pre.sh < test/dir/initial_setup.swu  | zstd -d | grep MIIBmTCCAUCgAwIBAgIUGojDtw94b1uYRXSZqPhFUlC0MTgwCgYIKoZIzj0EAwIw
# 正常の場合はちゃんとある
mkswu$ cd test/dir
mkswu/test/dir$ mkswu --config-dir ./ initial_setup.desc 
Successfully generated initial_setup.swu
mkswu/test/dir$ cpio --quiet -i --to-stdout zst.scripts_pre.sh < initial_setup.swu  | zstd -d | grep MIIBmTCCAUCgAwIBAgIUGojDtw94b1uYRXSZqPhFUlC0MTgwCgYIKoZIzj0EAwIw
grep: (standard input): binary file matches

mkswu のデフォルトコンフィグでは公開鍵が $CONFIG_DIR/swupdate.pem として設定されていて、かつ desc ファイルを処理する際にその desc ファイルのディレクトリに移動するようになっていますので、CONFIG_FILE が絶対パスじゃないと公開鍵が組み込まれなかったですね。。。

すぐに対応しますが、ひとまずコンフィグディレクトリを --config-dir $PWD/builder/mkswu として設定していただければ組み込まれますのでそれでいかがでしょうか。

(対応は、--config-dir で指定した値を絶対パスに直す処理と、公開鍵を組み込もうとしてぞんざいしない場合のエラーも追加しようと考えています)

お手数をおかけしました。
よろしくお願いします。

マルティネさん

回答ありがとうございます。バグとのこと承知いたしました。

> すぐに対応しますが、ひとまずコンフィグディレクトリを --config-dir $PWD/builder/mkswu として設定していただければ組み込まれますのでそれでいかがでしょうか。

このワークアラウンドで想定通りの挙動のSWUが生成できました。

以上、ご対応ありがとうございました。