FlockをUSBメモリに入れて使う方法は以前にも紹介したが、今回はFlockをOSごとUSBメモリにいれてしまう方法。WindowsやMacのポータブル版のFlockの導入と比べてちょっと難易度が高いので、これは一般向けの方法ではではないことをあらかじめ断わっておく。こういう方法もあるよということで。
PuppyはPuppyパッケージマネージャによって追加のプログラムを管理している。このプログラムはスタートメニューのセットアップサブメニューの中にある。Puppyのパッケージは独自のPETパッケージを使う。PETパッケージをPuppyパッケージマネージャやブラウザでダウンロードして、プログラムを組み込んでいくのがPuppyの一般的なアプリケーションの追加方法。FlockのPETモジュールがないかと探してみたが残念なことに存在しないようだ。
PETパッケージを使わなくてもプログラムは追加していける。Flockサイトで公開しているLinux用のファイルも特定のLinux用のパッケージではなく、ただのアーカイブで、それを展開して利用するようになっている。今回も最初その方法でやってみた。とても簡単に実行できた。
でも、PETパッケージの作り方に興味があったので、これを自分でPETパッケージにしてみた。PETパッケージにすると管理が楽になるのであるにこしたことはない。PETパッケージは構造が単純で、ファイルをいくつか用意し圧縮するだけで作ることができる。
FlockはFirefox3をベースにしているので、Firefox3のPETを参考にして作ってみた。なお、Firefox3のPETパッケージはまだ正式版は出ていない。PuppyLinux.caのbugsにfirefox-3.0.10.petが置いてある。インストールするとすぐに分かるが、これには依存関係に問題がある。つまりこれをベースにしているFlock2.5でも同じ依存問題が出る。ただ指摘されたライブラリがなくてもとりあえず動いている。少なくともライブラリがないことで、「通常のブラウザの確認」が表示されない。この確認が無くても特別不便には思えないけど。
それではPETファイルの作り方を次に示す。dir2petという対話形式のツールもあるけれど、今回は動作を理解するためにスクリプトを書いてみた。
まず、rootフォルダに作業フォルダを作る。このフォルダ名がパッケージ名になる。ここでは「flock2.5.en-US.i686」としておく。
つぎに、Linux版のFlockアーカイブをFlockサイトからダウンロードしてくる。Linuxでトップページを開けばすぐにダウンロードできる。現在のファイル名は、flock-2.5.en-US.linux-i686.tar.bz2。これを作業フォルダに保存する。展開はしてなくていい。
今度は、デスクトップファイルを作る。以下の内容のファイルを作り、「flock.desktop」という名前で作業フォルダに保存する。
[Desktop Entry]
Encoding=UTF-8
Name=FlockソーシャルWebブラウザ
Icon=/usr/lib/flock/icons/mozicon16.xpm
Comment=FlockソーシャルWebブラウザ
Exec=/usr/lib/flock/flock-browser
Terminal=false
Type=Application
Categories=X-Internet
GenericName=FlockソーシャルWebブラウザ
そして、次の内容のスクリプトファイルを作業フォルダに保存し、実行許可を与え、実行する。しばらく待つとPETファイルができる。#!/bin/bash
desktopfile=flock.desktop
target=flock*.tar.bz2
instdir=usr/lib
specs="PETMENUDESCR='ソーシャルウェブブラウザ'\nPETOFFICIALDEPS=''\nPETREGISTER='yes'"
root=`pwd`
name=${root##*/}
list=(`ls $target`)
if [ ${#list[*]} = 1 ]; then
#ディレクトリの構築
mkdir -p $name
mkdir -p $name/usr
mkdir -p $name/usr/lib
mkdir -p $name/usr/share
mkdir -p $name/usr/share/applications
cd $name
#デスクトップファイルのコピー
if [ -e ../$desktopfile ]; then
cp ../$desktopfile usr/share/applications/
fi
#specsファイルの作成
echo -e $specs>$name.pet.specs
#アーカイブの展開
cd $instdir
tar jxvf $root/${list[0]}
#PETの作成
cd $root
tar -c -f $name.tar $name/
gzip $name.tar
tgz2pet $name.tar.gz
fi
できたPETファイルをクリックして実行すると、インストールの動作が始まる。先ほど指摘したようにFirefox3と同じように最後に依存関係のエラーがでるけど。インストールが終わったらPuppyを再起動して反映させる。Puppyのデスクトップにはブラウザボタンが出ている。日本語版ではこれはSeaMonkeyが実行するようになっている。これをクリックしてFlockが起動するように変更するには、このアイコンを右クリックでメニューを出して次のようにGeanyで編集する。
#!/bin/sh
exec flock-browser "$@"
アイコンをデスクトップに置くには、画面左側から出てくるウィンドウからドラッグすればいいのだけれど、/usr/share/applications/flock.desktopをデスクトップにドラッグしてきてもいい。どちらにしてもアイコンが16x16サイズでは様にならないので、アイコンの上で右クリックしてメニューを出し、ファイルサブメニューからアイコンを設定を選び、画像を/usr/lib/flock/icons/mozicon128.pngにする。名前もFlockにしておく。Windowsで使っていたprofileを「Ubuntu の Flock に Windows のプロファイルをコピーする」で紹介した次の方法で移行する。個人設定が保存されるフォルダ.flockは通常はファイルブラウザで見えないが、目のアイコンをクリックすると他の不可視ファイルとともに表示される。
これで一応使える。日本語言語パックももちろん使える。
以上の方法で、FlockのPETパッケージが出来上がった。でも、先ほどから言っているように依存関係に問題がある。
ネットを調べてみると、puppyではdebianのパッケージから足りないものを持ってくるという作り方がよく行われているらしいので、それにならってみた。足りないライブラリを調べて、それをdebianのdeb形式のパッケージをもってくる。それを入れてまだ足りないものがあれば、それをまた探して入れる。これを繰り返してみた。
次のライブラリが必要だと分かった。
http://packages.debian.org/lenny/libacl1
http://packages.debian.org/lenny/libattr1
http://packages.debian.org/lenny/libavahi-client3
http://packages.debian.org/lenny/libavahi-common3
http://packages.debian.org/lenny/libavahi-glib1
http://packages.debian.org/lenny/libbonobo2-0
http://packages.debian.org/lenny/libdbus-1-3
http://packages.debian.org/lenny/libdbus-glib-1-2
http://packages.debian.org/lenny/libesd-alsa0
http://packages.debian.org/lenny/libfam0
http://packages.debian.org/lenny/libgconf2-4
http://packages.debian.org/lenny/libgcrypt11
http://packages.debian.org/lenny/libgnome2-0
http://packages.debian.org/lenny/libgnomevfs2-0
http://packages.debian.org/lenny/libgnutls26
http://packages.debian.org/lenny/libgpg-error0
http://packages.debian.org/lenny/libhal-storage1
http://packages.debian.org/lenny/libhal1
http://packages.debian.org/lenny/libldap-2.4-2
http://packages.debian.org/lenny/liborbit2
http://packages.debian.org/lenny/libselinux1
http://packages.debian.org/lenny/libtasn1-3
それと、flockのアーカイブ内に入っているので問題はないはずなのに、libjemalloc.so、libnssutil3.so、libxul.soの三つのファイルが依存関係のエラーとして出てしまう。
これらの足りないライブラリもPETパッケージにしておくとインストールが楽になるので作ってみた。
まず、パッケージ名を決めてその名前の作業フォルダを作る。今回は「lib-flock2.5.i686」とした。このフォルダに上記の22個のdebファイルと、公式サイトからダウンロードしてきたflock2.5かそうでなければfirefox3のアーカイブを入れる。これは三つのライブラリをとるためのもの。すべてを入れたあと作業フォルダで次のスクリプトを実行する。すると、作業フォルダにPETファイルが出来上がる。
#!/bin/bash
specs="PETMENUDESCR='flock2.5向け補充ライブラリ集'\nPETOFFICIALDEPS=''\nPETREGISTER='yes'"
root=`pwd`
name=${root##*/}
mkdir -p $name
cd $name
#deb
for i in `ls ../*.deb `;
do
undeb $i
done
echo -e $specs>$name.pet.specs
cd ..
#tar
flock=flock-*.linux-i686.tar.bz2
list=(`ls $flock`)
target="none"
if [ ${#list[*]} = 1 ]; then
target=${list[0]}
dir=flock
else
firefox=firefox-*.tar.bz2
list=(`ls $firefox`)
if [ ${#list[*]} = 1 ]; then
target=${list[0]}
dir=firefox
fi
fi
if [ $target != "none" ]; then
mkdir -p $name/usr
mkdir -p $name/usr/lib
for i in libjemalloc.so libnssutil3.so libxul.so
do
tar jxvf $target $dir/$i
cp $dir/$i $name/usr/lib/
done
fi
#pet
tar -c -f $name.tar $name/
gzip $name.tar
tgz2pet $name.tar.gz
順番はどちらでも問題ないけれど、このPETパッケージを上で作ったFlockのPETパッケージよりも先にインストールしておくと、エラーを見ずに気分良くFlockを始められる。