pkgngをインターネット接続していないマシンでも使いたい。
そういう場合には、他のマシンでpkgを作って持っていくというのが一番簡単な方法。
自前のPKGSITEを作る方法もあるようだが、軽く調べたところ根こそぎすべてのpkgを作る方法のようだ。
それはきつい。
また、pkgを作ったうえで、自前のrepo.txzを作ってもいいけど、やっぱり手間。
やっぱり必要なものだけ作って持っていくのが良いと思う。
私がよくやるのは以下の方法。
- インターネット接続できるマシン上で、仮想マシンに構築する。
- 仮想マシンでターゲットとなるマシンと同じ環境を作る。
- 仮想マシンで使ったpkgを全部ターゲットマシンに持っていく。
pkgの持ち運びには、pkg createを使う。
pkg createの使い方。
pkg help createでだいたい分かるけれども;
-oオプションで作成場所を選べる。
-aオプションだとそのマシンにインストール済みのpkgを全部作る。
-nオプションを付けるとすでにあるものは作らない。
以下、コマンド例。
ああそうそう、pkg createはroot権限でやること。スーパーユーザでないとアクセスできないファイルもあるので。
# pkg create -o ./ bash
Creating package for bash-4.2.42
# pkg create -n -o ./ bash
bash-4.2.42 already packaged, skipping...
# pkg create -a -o ./pkg
Loading package list...
Creating package for GentiumBasic-110
Creating package for GeoIP-1.4.8_3
Creating package for ORBit2-2.14.19
そして出来上がったpkgをターゲットマシンに持っていく。
ターゲットマシンでpkgをインストールするには、pkg addを使う。pkg installではダメなことに注意。
pkg add
なんにも難しいことはない。
以下のようにすればOK。
pkg add ./xorg-7.5.2.txz
なお、pkg addで追加するpkgはローカルにある必要はなくて、ftp, http, https経由でアクセスできる場所にあればよい。
pkg help addで出てくるように、pkg add ftp://somewhere/some/dir/pkg-nameとかすればよい。
pkg createが遅え。
ところでpkg createは遅い。すごく遅い。
これはファイルをxzで圧縮しているから。
今回の用途では、スピードの方が大事なので、わざわざxzを使ってもらわなくてよい。
pkg createは-fオプションで圧縮方法を決定できる。
txz(デフォルト), tgz, tbzから選ぶ。
tgzとtxzだと、bash程度でもtgz: 1.5秒、txz: 5秒と、時間に結構な差がでる。
もちろんそのぶん、サイズもtgz: 1.5MB、txz: 900KBとxz形式の面目躍如。
# time pkg create -f tgz -o ./ bash
Creating package for bash-4.2.42
real 0m1.526s
user 0m1.415s
sys 0m0.098s
# time pkg create -o ./ bash
Creating package for bash-4.2.42
real 0m4.985s
user 0m1.070s
sys 0m3.861s
$ du -sh ./bash*
1.5M ./bash-4.2.42.tgz
896k ./bash-4.2.42.txz```