🚀

jail に Python パッケージをインストールする

2023/06/30に公開

この記事では、jail にパッケージをインストールしていきます。
前回[1] は、VITOTHON[2][3] を使用して jail を簡単に構築する環境を用意しました。
前回作成した test.py を使用して jail を用意します。

[root@vitothon /jails/bin]# python3 test.py 
I'll do your job
ipfw: getsockopt(IP_FW_XADD): Protocol not available
Setup node server01 done!
epair0a is connected to server01
epair0a of server01 has 192.168.100.1/255.255.255.0
epair0b has 192.168.100.254/255.255.255.0
epair0a up
epair0b up
add net default: gateway 192.168.100.254
assign 192.168.100.254 as gateway of server01
[root@vitothon /jails/bin]# jls
   JID  IP Address      Hostname                      Path
     1                  server01                      /jails/server01
  

pkg コマンドの -j オプションを使ってパッケージをインストールしようとしましたが、権限の問題なのかエラーになってしまいました。jail 内のディレクトリの権限を変更してもとくに変化はありませんでした。

(追記)jail 内で chmod 755 /var/db/pkg で解決しました。

[root@vitothon /jails]# pkg -j server01 info
pkg: . permissions (0777) too lax
# chmod 755 /var/db/pkg
# ls -l /var/db/
...
drwxr-xr-x  2 root      wheel           2 Jun 19 20:54 pkg

作戦変更

ホスト側でパッケージファイルを準備し、pkg addjail に展開します。
まずは、パッケージを準備します。

[root@vitothon /jails/bin]# pkg fetch -d python3
# fetch したパッケージ一覧
	gettext-runtime: 0.21.1 (166 KiB: 0.88% of the 18 MiB to download)
	indexinfo: 0.3.1 (6 KiB: 0.03% of the 18 MiB to download)
	libffi: 3.4.4 (42 KiB: 0.22% of the 18 MiB to download)
	mpdecimal: 2.5.1 (320 KiB: 1.70% of the 18 MiB to download)
	python3: 3_3 (1 KiB: 0.01% of the 18 MiB to download)
	python39: 3.9.17 (18 MiB: 95.21% of the 18 MiB to download)
	readline: 8.2.1 (367 KiB: 1.95% of the 18 MiB to download)
[root@vitothon /jails/bin]# ls /var/cache/pkg/
gettext-runtime-0.21.1.pkg		mpdecimal-2.5.1~29d761ff7b.pkg
gettext-runtime-0.21.1~c68f88fc98.pkg	python3-3_3.pkg
indexinfo-0.3.1.pkg			python3-3_3~32b78d90b4.pkg
indexinfo-0.3.1~14568ad638.pkg		python39-3.9.17.pkg
libffi-3.4.4.pkg			python39-3.9.17~954c311fdb.pkg
libffi-3.4.4~d1ee59bff4.pkg		readline-8.2.1.pkg
mpdecimal-2.5.1.pkg			readline-8.2.1~74bc963561.pkg

fetch したファイルを jail のフォルダにコピーします。

[root@vitothon /jails/bin]# mkdir ../server01/pkg
[root@vitothon /jails/bin]# cd /var/cache/pkg/
[root@vitothon /var/cache/pkg]# cp gettext-runtime-0.21.1.pkg /jails/server01/pkg/
[root@vitothon /var/cache/pkg]# cp indexinfo-0.3.1.pkg /jails/server01/pkg/
[root@vitothon /var/cache/pkg]# cp libffi-3.4.4.pkg /jails/server01/pkg/
[root@vitothon /var/cache/pkg]# cp mpdecimal-2.5.1.pkg /jails/server01/pkg/
[root@vitothon /var/cache/pkg]# cp python3-3_3.pkg /jails/server01/pkg/
[root@vitothon /var/cache/pkg]# cp python39-3.9.17.pkg /jails/server01/pkg/
[root@vitothon /var/cache/pkg]# cp readline-8.2.1.pkg /jails/server01/pkg/

jail を起動して、pkg add していきます。

[root@vitothon /jails/bin]# python3 test.py 
[root@vitothon /jails/bin]# pkg -j server01 add /pkg/gettext-runtime-0.21.1.pkg
[root@vitothon /jails/bin]# pkg -j server01 add /pkg/libffi-3.4.4.pkg
[root@vitothon /jails/bin]# pkg -j server01 add /pkg/mpdecimal-2.5.1.pkg
[root@vitothon /jails/bin]# pkg -j server01 add /pkg/readline-8.2.1.pkg
[root@vitothon /jails/bin]# pkg -j server01 add /pkg/python3-3_3.pkg
[root@vitothon /jails/bin]# pkg -j server01 add /pkg/python39-3.9.17.pkg
[server01] Installing python39-3.9.17...
the most recent version of python39-3.9.17 is already installed
# python39 は必要ないみたいでした。

それでは、jail に Python がインストールされたか確認します。

[root@vitothon /jails/bin]# jexec server01 /bin/sh
# python3
Python 3.9.17 (main, Jun 22 2023, 01:11:04) 
[Clang 13.0.0 (git@github.com:llvm/llvm-project.git llvmorg-13.0.0-0-gd7b669b3a on freebsd13
Type "help", "copyright", "credits" or "license" for more information.
>>> 
# インタプリタが表示されたので、問題なくインストールできました。

参考文献

脚注
  1. https://zenn.dev/fikastudio/articles/528ace5ca4a2ad ↩︎

  2. http://www.fikastudio.net/VITOTHON.ova ↩︎

  3. https://github.com/FikaStudio-code/VITOTHON ↩︎

Discussion