IPS Repositories をローカルに立てる

OpenIndiana/OpenSolaris に限らず、パッケージはOSがネットワークから落としてインストールするというのが最近のお決まりになっています。

まぁDebian使ってた時は気にしていませんでしたが、Solaris + zone を使うのようになって、ちょっと微妙〜
zoneを4つ立てると、4OS分のイメージをネットワーク越しに取ってくるのでちょっとNW帯域やら時間の無駄を感じます。
/var/pkg 以下をコピーしたりするとよさそうですが、ちょっと不明。

wiki.indianaにMirrorの構築がさっと書いてあったので、ささっとローカルにIPSを立ててみました。(昔から Sun のドキュメントにありましたけど)

Setting up a mirror

とりあえず、oi_147_spin1.tar.bz2 を落として展開します。
なお、9/18の時点で oi_147_spin2.tar.bz2 があるのでそっちがよいかも。
最終的に rsync するので結果は同じでしょうけど。


# zfs create -p -o atime=off -o compression=off rpool/export/pkg/dev
# cd /export/pkg/dev/
# wget http://dlc.openindiana.org/repos/oi_147_spin1.tar.bz2
--2010-09-23 15:51:33-- http://dlc.openindiana.org/repos/oi_147_spin1.tar.bz2
dlc.openindiana.org (dlc.openindiana.org) をDNSに問いあわせています... 118.159.231.141
dlc.openindiana.org (dlc.openindiana.org)|118.159.231.141|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 2002357175 (1.9G) [application/x-bzip2]
`oi_147_spin1.tar.bz2' に保存中

4% [=> ] 83,159,842 233K/s 残り72m 51s
# gtar -jxf oi_147_spin1.tar.bz2
# mv oi_147_spin1/* ./
# rmdir oi_147_spin1/
# rsync -a pkg-origin.openindiana.org::pkgdepot-dev /export/pkg/dev/

次に pkg/server のスタート。
デフォルト 10002ポートでlistenします。


$ pfexec svccfg -s pkg/server
svc:/application/pkg/server> list
:properties
default
svc:/application/pkg/server> add dev
svc:/application/pkg/server> list
:properties
default
dev
svc:/application/pkg/server> select dev
svc:/application/pkg/server:dev>
svc:/application/pkg/server:dev> addpg pkg application
svc:/application/pkg/server:dev> setprop pkg/inst_root = astring: "/export/pkg/dev/"
svc:/application/pkg/server:dev> setprop pkg/port = count: 10002
svc:/application/pkg/server:dev>
svc:/application/pkg/server:dev> exit
$ svcs pkg/server
STATE STIME FMRI
disabled 9月_23 svc:/application/pkg/server:default
- - svc:/application/pkg/server:dev
$
$ pfexec svcadm refresh pkg/server:dev
$ svcadm enable pkg/server:dev
$ svcs pkg/server
STATE STIME FMRI
disabled 9月_23 svc:/application/pkg/server:default
online 1:10:13 svc:/application/pkg/server:dev
$

後は、http://[IPアドレス]:10002/ にアクセスして見慣れた package repository が見えれば完了。

Apache + mod_proxy で表示させたければ、wikiに設定も書いてるようです。
(試してません)