Solaris パッケージを作ろう! : やっぱり Sun がスキ! やっぱり Sun がスキ!

やっぱり Sun がスキ!

http://blogs.sun.com/yappri/date/20061026 2006年 10月 26日 木曜日

Solaris パッケージを作ろう!

オープンソースのソフトウェアを 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 インストール後に必ず作るファイル群 をまとめてパッケージにするのも面白いかもしれません。

投稿されたコメント:

よかったら、どぞ。(・∀・` )っ http://blogs.sun.com/thaniwa/page/SolarisJa

Posted by thaniwa on 10月月 26日, 2006年 at 07:04 午後 JST #

コメント
  • HTML文法 不許可