X

Oracle Solaris, Oarcle ハードウェア製品に関する情報

  • Sun
    October 26, 2006

Solaris パッケージを作ろう!

Guest Author
オープンソースのソフトウェアを Solaris にインストールする際、コンパイル
済みパッケージが見つからないと、"./congifure;make;make install" という
呪文を使いますよね。

この呪文で入れたソフトってバージョンアップや削除が面倒ではないですか?



それではいっその事、Solaris パッケージまで作ってしまいましょう。



パッケージ形式にしてインストールすると、いらなくなったら pkgrm で簡単
に削除できますし、他のマシンにインストールする際も pkgadd だけで済みます。

また、/var/sadm/install/contents ファイルにどのパッケージがどんなファイル
をどこに入れたか記録されますので、ファイルを探すのにも便利です。



それでは早速パッケージの作成をしてみましょう。


用意する物:

- "./configure;make" まで終わったファイル群

- pkginfo ファイル(自分で書きます)

- depend ファイル(自分で書きます)

- copyright ファイル(自分で書きます)

- prototype ファイル(コマンドで作ります)


手順:

1. 以下の内容を記述した pkginfo という名前のファイルを作成

※ (<=== 以降は説明のためファイルには記載しないで下さい)

※ これが、パッケージの説明になります。


 PKG=MYw3m                  <=== パッケージの名前
NAME=w3m - cli web browser <=== パッケージに収められるソフトの名前
ARCH=i386 <=== パッケージに収められるバイナリの形式 (sparc or i386 or all)
CATEGORY=application <=== application or system
VERSION=0.5.1 <=== バージョン番号
VENDOR=http://w3m.sourceforge.net/index.ja.html <=== ソフトの作成元
HOTLINE=on your risk <=== このパッケージをサポートする人
EMAIL=on your risk <=== サポートする人の E-Mail アドレス
DESC= <=== 解説



2. 以下の内容を記述した depend ファイルを作成

※ このパッケージをインストールする為に必要となるパッケージ情報を書きます。


 P      MYgc  GC - need for w3m



3. copyright ファイルはフリーフォーマットで書きましょう。



4. prototype ファイルの作成

prototype は、どのファイルをどこにどういった所有者でどんなパーミッション
を持たせてインストールするかを記述したファイルです。

この作成の為に、一旦 "make install" をしますが、何をインストールしたかを
確認出来るように timestamp ファイルを作成することがポイントです。

timestamp ファイルを作成するとそのファイル以降にコピーされたファイルを
find コマンドで抜き出す事が出来ます。

prototype 作成の手順は以下の通り。


 # touch /tmp/timestamp
# make install
# cd /tmp/w3m-pkg
# ls
copyright depend pkginfo
# echo "i pkginfo" > prototype
# echo "i depend" >> prototype
# echo "i copyright" >> prototype
# find /opt/mysoft -newer /tmp/timestamp | pkgproto >> prototype
# more prototype
i pkginfo
i depend
i copyright
d none /opt/mysoft 0755 root root
d none /opt/mysoft/bin 0755 root root
f none /opt/mysoft/bin/w3m 0755 root root
f none /opt/mysoft/bin/w3mman 0755 root root
d none /opt/mysoft/libexec 0755 root root
d none /opt/mysoft/libexec/w3m 0755 root root
d none /opt/mysoft/libexec/w3m/cgi-bin 0755 root root
f none /opt/mysoft/libexec/w3m/cgi-bin/w3mbookmark 0755 root root
f none /opt/mysoft/libexec/w3m/cgi-bin/w3mhelperpanel 0755 root root
f none /opt/mysoft/libexec/w3m/cgi-bin/dirlist.cgi 0755 root root
f none /opt/mysoft/libexec/w3m/cgi-bin/w3mhelp.cgi 0755 root root
f none /opt/mysoft/libexec/w3m/cgi-bin/w3mmail.cgi 0755 root root
f none /opt/mysoft/libexec/w3m/cgi-bin/multipart.cgi 0755 root root
f none /opt/mysoft/libexec/w3m/cgi-bin/w3mman2html.cgi 0755 root root
f none /opt/mysoft/libexec/w3m/w3mimgdisplay 0755 root root
f none /opt/mysoft/libexec/w3m/inflate 0755 root root
f none /opt/mysoft/libexec/w3m/xface2xpm 0755 root root
d none /opt/mysoft/share 0755 root root
d none /opt/mysoft/share/w3m 0755 root root
f none /opt/mysoft/share/w3m/w3mhelp.html 0644 root root
f none /opt/mysoft/share/w3m/w3mhelp-funcdesc.en.pl 0644 root root
f none /opt/mysoft/share/w3m/w3mhelp-funcdesc.ja.pl 0644 root root
f none /opt/mysoft/share/w3m/w3mhelp-funcname.pl 0644 root root
d none /opt/mysoft/man 0755 root root
d none /opt/mysoft/man/man1 0755 root root
f none /opt/mysoft/man/man1/w3m.1 0644 root root
f none /opt/mysoft/man/man1/w3mman.1 0644 root root
d none /opt/mysoft/man/ja 0755 root root
d none /opt/mysoft/man/ja/man1 0755 root root
f none /opt/mysoft/man/ja/man1/w3m.1 0644 root root
# ls
copyright depend pkginfo prototype



5. pkgmk コマンドでパッケージを作成


 # pkgmk -r / -a `uname -p`
## prototype ファイルから pkgmap を作成中です。
## pkginfo ファイルを処理中です。
警告: のディレクトリ項目がありません。
警告: パラメータ の値は "turion6420061025170455" に設定されます。
警告: パラメータ の値は "none" に設定されます。
## pkgmap の 30 個の項目をボリューム単位で分割しようとしています。
第 1 部-- 2826 ブロック, 28 エントリ
## 1 部をパッケージ処理中です。
/var/spool/pkg/MYw3m/pkgmap
/var/spool/pkg/MYw3m/pkginfo
/var/spool/pkg/MYw3m/root/opt/mysoft/bin/w3m
/var/spool/pkg/MYw3m/root/opt/mysoft/bin/w3mman
/var/spool/pkg/MYw3m/root/opt/mysoft/libexec/w3m/cgi-bin/dirlist.cgi
/var/spool/pkg/MYw3m/root/opt/mysoft/libexec/w3m/cgi-bin/multipart.cgi
/var/spool/pkg/MYw3m/root/opt/mysoft/libexec/w3m/cgi-bin/w3mbookmark
/var/spool/pkg/MYw3m/root/opt/mysoft/libexec/w3m/cgi-bin/w3mhelp.cgi
/var/spool/pkg/MYw3m/root/opt/mysoft/libexec/w3m/cgi-bin/w3mhelperpanel
/var/spool/pkg/MYw3m/root/opt/mysoft/libexec/w3m/cgi-bin/w3mmail.cgi
/var/spool/pkg/MYw3m/root/opt/mysoft/libexec/w3m/cgi-bin/w3mman2html.cgi
/var/spool/pkg/MYw3m/root/opt/mysoft/libexec/w3m/inflate
/var/spool/pkg/MYw3m/root/opt/mysoft/libexec/w3m/w3mimgdisplay
/var/spool/pkg/MYw3m/root/opt/mysoft/libexec/w3m/xface2xpm
/var/spool/pkg/MYw3m/root/opt/mysoft/man/ja/man1/w3m.1
/var/spool/pkg/MYw3m/root/opt/mysoft/man/man1/w3m.1
/var/spool/pkg/MYw3m/root/opt/mysoft/man/man1/w3mman.1
/var/spool/pkg/MYw3m/root/opt/mysoft/share/w3m/w3mhelp-funcdesc.en.pl
/var/spool/pkg/MYw3m/root/opt/mysoft/share/w3m/w3mhelp-funcdesc.ja.pl
/var/spool/pkg/MYw3m/root/opt/mysoft/share/w3m/w3mhelp-funcname.pl
/var/spool/pkg/MYw3m/root/opt/mysoft/share/w3m/w3mhelp.html
/var/spool/pkg/MYw3m/install/copyright
/var/spool/pkg/MYw3m/install/depend
## 制御スクリプトの妥当性検査中です。
## パッケージ処理は完了しました。



これで、/var/spool/pkg に、MYw3m というパッケージを作成出来ました。

このまま、以下のコマンドでインストールすると、"make install" でコピー
されたファイルが全て上書きされますので、pkgrm コマンドだけで、すべて
のファイルを削除できます。



尚、/var/spool/pkg/MYw3m は、パッケージディレクトリ形式ですが、以下の
コマンドで、1 つのパッケージファイルにする事が出来ます。

お好きな形式をご利用下さい。


 # pkgtrans -s /var/spool/pkg /tmp/MYw3m.pkg MYw3m



意外に簡単にパッケージが作成できますので皆さんも是非試してみて下さい。


欄外:

prototype は、実は手書きでも問題ありません。

pkginfo, depend, copyright, prototype ファイルと、prototype ファイル
に記載されたファイル群が実際に存在すればパッケージは作成出来ます。

なので、ソフトウェアに限らず、OS インストール後に必ず作るファイル群
をまとめてパッケージにするのも面白いかもしれません。

Join the discussion

Comments ( 1 )
  • thaniwa Thursday, October 26, 2006
    よかったら、どぞ。(・∀・` )っ
    http://blogs.sun.com/thaniwa/page/SolarisJa
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.