Firefoxの拡張機能をハックするにはatoolが便利
Firefoxの拡張機能(アドオン)は *.xpi と言う名前のzip形式で圧縮されたファイルになっている。で、その中にはたいてい *.jar という、これまたzip形式の圧縮ファイルが入っている。
というわけで拡張機能をハックするにはzipファイルを展開することが多くなる。でもUnix系OSではzip形式はあんまり使わないので、unzipコマンドとかよく分かんない。使いたくない。
そこで役に立つのがatoolというツールだ。こいつはいろんな圧縮ファイルの形式を自動判定して、一つのコマンドで扱えるようにしてくれる。使い方はこんな感じ。
基本的な使い方
atool -x
でファイルを展開できる。
% ls vimperator-2.0-fx.xpi % atool -x vimperator-2.0-fx.xpi # vimperatorのxpiファイルをatoolで ... vimperator-2.0-fx.xpi: extracted to `vimperator-2.0-fx' (multiple files in root) % ls # 展開できた vimperator-2.0-fx/ vimperator-2.0-fx.xpi
代わりに aunpack
という名前で起動しても同じように展開できる。
% ls vimperator.jar % aunpack vimperator.jar # jarファイルも同じコマンドで vimperator.jar: extracted to `vimperator' (multiple files in root) % ls # 展開できる vimperator/ vimperator.jar
aunpack
コマンドで tar.gz, tar.bz2, zip, deb その他よく使うものはたいてい展開できて、これがメインの使い方になる。使ってみると分かるが、圧縮形式を意識しなくてもいい楽さは異常。というか tar xzf
とかって、常識で考えてめんどくさいよね。
その他に出来ること
他にもこんなコマンドが使えるようになる。
atool -l
または als
圧縮ファイルの中に含まれているファイルを一覧表示する。
% als vimperator-2.0-fx.xpi Length Date Time Name -------- ---- ---- ---- 1452 03-29-09 07:48 AUTHORS 1365 03-29-09 07:48 License.txt 22217 03-29-09 07:48 NEWS 5970 03-29-09 07:48 TODO # 以下略 ...
atool -c
または acat
ファイルを展開して標準出力に出力する。
% acat vimperator-2.0-fx.xpi TODO Priority list: 1-9 as in Vim (9 = required for next release, 5 = would be nice, 1 = probably not) BUGS: - add window resize support to hints # 以下略 ...
もちろん圧縮ファイルの形式は意識しなくてもいい。便利。
過去のバグ
実は、こうやって快適に展開できるようになったのは version 0.36.0 になってからの話。それまでは圧縮形式の判定にバグがあって、xipとかはうまく展開できなかった(参考 atoolのリリースノート)。そのバグはもう修正されたので安心して使っていい。やったね。
最後に
というわけで、アドオンをハックする人もそうでない人も atoolを使ってみるといいよ。SourceForge.JP Magazine の解説記事も参考にして試してみよう。