(verified 2010 May. / EOS 4.3.0 / DCS-7120T-4S 03.01)
SWIX フォーマット
SWIX (Software image extension) フォーマットは Extension のためのフォーマットである。具体的には一つあるいはそれ以上の RPM ファイルと、一つの manifest.txt ファイルを ZIP フォーマットでまとめたもの。
分解:manifest.txt ファイル
Extention ドキュメントで例に用いた hello.swix ファイルを unzip コマンドで分解すると、以下のように manifest.txt ファイルと RPM ファイルを取り出せる。
$ ls
hello.swix
$ unzip hello.swix
Archive: hello.swix
extracting: manifest.txt
extracting: hello-1.0-0.noarch.rpm
$ ls
hello-1.0-0.noarch.rpm hello.swix manifest.txt
$ ls -l
total 12
-rwxrwx--- 1 admin eosadmin 2821 May 13 18:16 hello-1.0-0.noarch.rpm
-rwxr-x--- 1 admin eosadmin 3246 May 14 11:28 hello.swix
-rwxrwx--- 1 admin eosadmin 115 May 13 18:17 manifest.txt
$
manifest.txt の内容を以下に示す。
$ cat manifest.txt
format: 1
primaryRpm: hello-1.0-0.noarch.rpm
hello-1.0-0.noarch.rpm-sha1: 9d801cb69a6d8189cc5fecdfce72402bdb63f8f3
$
各項目の意味について示す。
- format 番号: 1 固定。(他に何があるかは不明)
- primaryRpm: RPM ファイルが複数含まれていた場合に主たる RPM を指す。RPM が一つだけだった場合も省略せず上の例のように書く。show extensions detail コマンドで表示する情報はここで指定した RPM から得る。
- SHA1 ハッシュ:SHA-1 による各 RPM のハッシュコード。複数の RPM が含まれている場合は複数行並ぶ。
ただし上記の説明は EOS の挙動およびコード断片からの推測であり、間違っている可能性がある点に注意されたし。(誤りがあれば一報ください)
作成
RPM ファイルから SWIX フォーマットのパッケージを作る swix コマンドが EOS には用意されている。ただし bash から起動する。
[admin@localhost ~]$ swix create hello.swi hello-1.0-0.noarch.rpm
adding: manifest.txt (stored 0%)
adding: hello-1.0-0.noarch.rpm (stored 0%)
[admin@localhost ~]$ ls -l hello.swi
-rw-r--r-- 1 admin eosadmin 3246 May 14 11:44 hello.swi
[admin@localhost ~]$ ls -l hello-1.0-0.noarch.rpm
-rwxrwx--- 1 admin eosadmin 2821 May 13 18:16 hello-1.0-0.noarch.rpm
[admin@localhost ~]$
なお swix コマンドにはこれ以外の機能は無いようである。
[admin@localhost ~]$ swix
Unknown command. Try 'swix help' for info.
[admin@localhost ~]$ swix help
create Create a swix file with the given name
[admin@localhost ~]$
なお swix コマンドは Python スクリプトであり、site-script 以下にある Swix ライブラリのラッパーである。詳細はこれらのコードを追うのが良い。
また、もちろん SWIXファイルの構造は非常に単純であるため、swix コマンドを用いずに手作業で manifest.txt ファイルを書き、zip コマンドなどを使って SWIX 形式にパッケージすることも可能である。