サマリ
pkg -jを使うと、ホストからjail内のpkgを操作できる。
しかし、あらかじめjail内にpkgのインストールが必要。
pkg -j
pkgのmanを見ると以下の記載が。
-j <jail name or id>
pkg will execute in the given <jail name or id>, where name
matches ``jls name'' and id matches ``jls jid''. See jail(8) and
jls(8).
つまり、-jに続けてjail名あるいはjail idを指定すれば、ホストから当該jail内のpkgを操作できる、ということである。
これはさっそく試さねばなるまい。
qjailを使ってexmaple02というjailを作った。
$ sudo qjail create -n em0 -4 192.168.100.241 example02
Successfully created example02
[vanilla@yaryka ~]$ sudo qjail start example02
Jail successfully started example02
[vanilla@yaryka ~]$ sudo qjail list
STA JID NIC IP Jailname
--- ---- --- --------------- --------------------------------------------------
DR 1 em0 192.168.100.240 example01
DR 2 em0 192.168.100.241 example02
さっそく試してみるが…?
$ sudo pkg -j example02 info
$ sudo pkg -j example02 update
Updating repository catalogue
$ sudo pkg -j example02 install bash
Updating repository catalogue
$
まったく反応がない。
いろいろ試した結果、jailにはpkgがあらかじめインストールされていなければならないのであった。
jailでpkgのインストール
仕方なくjailのコンソールに接続し、pkgをインストール。
現時点ではpkgの公式リポジトリがないので、こちらの通りに進める。
$ sudo qjail console example02
FreeBSD 10.0-BETA1 (GENERIC) #0 r256420: Sun Oct 13 01:43:07 UTC 2013
Welcome to your FreeBSD jail.
example02 /root >sh
# PACKAGESITE="http://96.47.72.120/pkg-test-freebsd:10:x86:64/latest" pkg
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg please wait
Installing pkg-1.1.4_6... done
If you are upgrading from the old package format, first run:
(略)
もう一度ホストからpkgを実行。
今度は問題なく進んだ。
$ sudo pkg -j example02 update
Updating repository catalogue
digests.txz 100% 955KB 191.0KB/s 214.8KB/s 00:05
packagesite.txz 100% 5209KB 226.5KB/s 28.6KB/s 00:23
Incremental update completed, 0 packages processed:
0 packages updated, 0 removed and 21607 added.
$
jailの外からpkg -jでpkg操作
ではjailの外からインストールを。
$ sudo pkg -j example02 install bash
Updating repository catalogue
The following 2 packages will be installed:
Installing gettext: 0.18.3
Installing bash: 4.2.45
The installation will require 14 MB more space
3 MB to be downloaded
Proceed with installing packages [y/N]: y
gettext-0.18.3.txz 100% 2086KB 231.8KB/s 85.9KB/s 00:09
bash-4.2.45.txz 100% 890KB 222.6KB/s 410.2KB/s 00:04
Checking integrity... done
[1/2] Installing gettext-0.18.3... done
[2/2] Installing bash-4.2.45... done
$
-jオプションを付けるだけで、まったく同じように使える。
infoで一覧も得られるし、auditでセキュリティチェックもできる。upgradeもできそうだ。
$ sudo pkg -j example02 audit -F
auditfile.tbz 100% 90KB 90.3KB/s 90.3KB/s 00:00
0 problem(s) in your installed packages found.
$ sudo pkg -j example02 info
Password:
bash-4.2.45 The GNU Project's Bourne Again SHell
gettext-0.18.3 GNU gettext package
pkg-1.1.4_6 New generation package manager
$ sudo pkg -j example02 upgrade
Updating repository catalogue
Nothing to do
$
こいつは便利でございますな。