Armadilloフォーラム

swuファイルサイズについて

yasuda0108

2022年11月21日 10時01分

mkswuについて、組み込み元tarのファイルサイズがほぼ同様でも、生成されるswuサイズの大きさが異なる場合、どの様な要因が考えられるでしょうか。

以下ファイルサイズ詳細です。
A.tar 1.88GB
A.swu 390MB

B.tar 1.89GB
B.swu 1.89GB

※A→Bでは、内部APPのソースコード一部修正程度です。

コメント

at_dominique.m…

2022年11月21日 10時51分

yasuda0108 さん

お世話になっています、
マルティネです。

> mkswuについて、組み込み元tarのファイルサイズがほぼ同様でも、生成されるswuサイズの大きさが異なる場合、どの様な要因が考えられるでしょうか。
>
> 以下ファイルサイズ詳細です。
> A.tar 1.88GB
> A.swu 390MB
>
> B.tar 1.89GB
> B.swu 1.89GB
>
> ※A→Bでは、内部APPのソースコード一部修正程度です。

mkswu を実行する際は(ファイルがすでに圧縮されてない限り) zstd でその内容を圧縮します。
圧縮されないパターンはいくつかありますが、素の tar でしたら圧縮されるはずです。

お手数ですが、もう少しの情報を提供いただけますか?
- mkswu のバージョン:「dpkg -l mkswu」
- desc ファイルの内容(最低の場合は、環境変数、swdesc_option と B.tar に関する swdesc_xxx の行をお願いします。ファイルやcomponent名は変更してもいいですが、ファイルの extension (.tar などの最後の部分)を残してください。)
- mkswu コマンドに複数の desc ファイルを指定した場合は、他の desc ファイルもお願いします。
- なかったと思いますが、mkswu を実行した際にエラーがあればそのエラーも教えてください。

公開したくない内容があればメールで連絡しますので言ってください。

解決になるか分かりませんが、swu の一時的なファイルを保存する隠しディレクトリを削除すれば解決されるかもしれません。
B.swu の場合は .B というディレクトリになりますので、「rm -r .B」で削除できると思います。
一度削除しても、同じ現象なんですか?

よろしくお願いします。

> mkswu を実行する際は(ファイルがすでに圧縮されてない限り) zstd でその内容を圧縮します。
> 圧縮されないパターンはいくつかありますが、素の tar でしたら圧縮されるはずです。

ありがとうございます。

> お手数ですが、もう少しの情報を提供いただけますか?
> - mkswu のバージョン:「dpkg -l mkswu」
> - desc ファイルの内容(最低の場合は、環境変数、swdesc_option と B.tar に関する swdesc_xxx の行をお願いします。ファイルやcomponent名は変更してもいいですが、ファイルの extension (.tar などの最後の部分)を残してください。)
> - mkswu コマンドに複数の desc ファイルを指定した場合は、他の desc ファイルもお願いします。
> - なかったと思いますが、mkswu を実行した際にエラーがあればそのエラーも教えてください。
>
> 公開したくない内容があればメールで連絡しますので言ってください。
メールにて連絡させて頂きたいのです。メールアドレスをお教え頂けますでしょうか。

> 解決になるか分かりませんが、swu の一時的なファイルを保存する隠しディレクトリを削除すれば解決されるかもしれません。
> B.swu の場合は .B というディレクトリになりますので、「rm -r .B」で削除できると思います。
> 一度削除しても、同じ現象なんですか?
>
> よろしくお願いします。
ありがとうございます。こちらの方法では解決されませんでした。

at_dominique.m…

2022年11月21日 16時10分

yasuda0108さん、

> > 公開したくない内容があればメールで連絡しますので言ってください。
> メールにて連絡させて頂きたいのです。メールアドレスをお教え頂けますでしょうか。

了解しました、ただいま連絡させていただきました。
(アットマークテクノ社員にしか見えない)フォーラムに登録されてるメールアドレスに連絡しました。

> > 解決になるか分かりませんが、swu の一時的なファイルを保存する隠しディレクトリを削除すれば解決されるかもしれません。
> > B.swu の場合は .B というディレクトリになりますので、「rm -r .B」で削除できると思います。
> > 一度削除しても、同じ現象なんですか?
>
> ありがとうございます。こちらの方法では解決されませんでした。

ご確認ありがとうございました。
追加情報をメールでお願い致します。

よろしくお願いします。

at_dominique.m…

2022年11月21日 18時06分

yasuda0108さん、

メールの返事ありがとうございました。
そちらにも返事しましたが、フォーラムを読んでる方のためにこちらにも返事をさせていただきます。

最適化としてファイルが小さい(<128 byte)に圧縮しませんが、
mkswu 4.6 のまったく関係ないところでコンテナのアーカイブを symlink 経由でアクセスするようになって、
そのサイズのチェックは間違ってリンクのサイズを見ていました…

今月末に修正されたバージョンを修正しますが、簡単なのでそちらで行っていただければと思います。

ATDE で直接に /usr/bin/mkswu を編集します:
$ sudo vi /usr/bin/mkswu

322行目に以下の行があるはずです:

    # do not compress files < 128 bytes
    if [ "$(stat -c "%s" "$file_src")" -lt 128 ]; then
            compress=""

この stat コマンドに -L オプションを追加します:

    if [ "$(stat -L -c "%s" "$file_src")" -lt 128 ]; then

以上で、mkswu で再び swu を作成すれば圧縮されると思います。

アップデートをインストールしたらこの編集が自動的になくなって、更新版がインストールされます。

この度はご迷惑をおかけしました、連絡いただいてとても助かりました。
swdesc_tar でちゃんと圧縮するテストがありましたが、コンテナ関連のファイルでも同じチェックを追加しました。

よろしくお願いします。