はじめに
これまで OpenBSD の release のみを使ってきましたが、最新の ports を試したいという理由から current を追っかけてみようかと考えました。ただ毎回ソースコードからシステム全体をコンパイルするのは手間も時間も掛かるのでまずは snapshots を導入してみます。
参照:Following -current and using snapshots
snapshots について
https://www.openbsd.org/faq/faq5.html によると、OpenBSD には3つのフレーバーがあって、-release が6か月毎に出される公式版、-stable が -release ブランチに errata パッチを加えた版、そして -current が6か月毎に次の -release としてタグ付けされる開発ブランチであるとのことです。
snapshots は -current のブランチをビルドしたものです。
ソースコードからシステム全体をコンパイルしたい場合でも最新の snapshots の導入から開始すべきとのことです。
snapshots の環境を作っておけば、ソースコードからシステム全体をビルドしたくなった場合でもすぐに取り掛かることができて便利だと考えました。
snapshots の導入手順
今回行った snapshots の導入手順を以下に説明します。
(1) ダウンロード
snapshots のインストールイメージをダウンロードします。今回は以下からダウンロードしました。
http://www.ftp.ne.jp/pub/OpenBSD/snapshots/amd64/install67.iso
(2) インストール
リリース版と同様にインストールを行います。
インストール手順の例はこちら:OpenBSD 6.5 のインストール
今回、ports に多くの容量が必要かなと考え、ディスクの割り当ては以下のようにしてみました。
/ 200M
/tmp 200M
/var 200M
/usr 2G
/usr/X11R6 500M
/usr/local 6G
/home 2G
/usr/src 2G
/usr/ports 2G
/usr/www 1G
/usr/xenocara 2G
/usr/obj 6G
インストール完了後、ログインすると以下のように -current
と表示されていることを確認できました。
OpenBSD 6.7-current (GENERIC) #327: Fri Jul 10 13:39:05 MDT 2020
(3) インストール後の設定
/etc/installurl
には国内のミラーサイトを設定しました。
https://ftp.riken.jp/pub/OpenBSD
pkg_add する時に snapshots から探してくれるように root の環境変数として .profile に PKG_PATH を設定しました。
export PKG_PATH=https://cloudflare.cdn.openbsd.org/pub/OpenBSD/snapshots/packages/amd64
以上で snapshots による current の環境ができました。
snapshots の定期的な更新
インストールした snapshots による -current 環境を最新に維持するためには、定期的に更新処理を行います。
root で sysupgrade -s
を実行して snapshots 環境を最新化することができます。
/home/_sysupgrade/
にファイルがダウンロードされた後、自動的にリブートされてダウンロードされた最新の snapshots がインストールされます。
以下は実行例です。
# sysupgrade -s
Fetching from https://ftp.riken.jp/pub/OpenBSD/snapshots/amd64/
SHA256.sig 100% |*************************************| 2144 00:00
Signature Verified
INSTALL.amd64 100% |************************************| 43523 00:00
base67.tgz 100% |*************************************| 279 MB 00:50
bsd 100% |*************************************| 20378 KB 00:12
bsd.mp 100% |*************************************| 20475 KB 00:18
bsd.rd 100% |*************************************| 10134 KB 00:06
comp67.tgz 100% |*************************************| 71259 KB 00:39
game67.tgz 100% |*************************************| 2745 KB 00:02
man67.tgz 100% |*************************************| 7474 KB 00:06
xbase67.tgz 100% |*************************************| 22913 KB 00:14
xfont67.tgz 100% |*************************************| 39342 KB 00:35
xserv67.tgz 100% |*************************************| 16767 KB 00:15
xshare67.tgz 100% |*************************************| 4499 KB 00:03
Verifying sets.
...
syspatch(8) は -release のためのものなので snapshots では使いません。
current のソースコードの入手
current の環境ができたので current のソースコードを入手します。
(1) ユーザーを wsrc グループへの追加
cvs などのコマンドを一般ユーザーで行えるよう、作業ユーザーを wsrc グループに追加します。root で実行します。
# user mod -G wsrc exampleuser
(2) ソースコードのディレクトリのグループを wsrc に変更
/usr/src と同様に ports のグループを wsrc に変更し、グループに w を付与します。root で実行します。
# cd /usr
# chgrp wsrc ports
# chmod 775 ports
(3) current のシステムのソースコード (/usr/src) の準備
いきなり cvs コマンドで取得するのではなく、ミラーサイトに置かれているソースコードをダウンロードし展開してから、cvs でアップデートをするという手順を行います。
今回は、現時点での最新となる 6.7 のソースコードを持ってきました。
日本のミラーサイトから src.tar.gz と sys.tar.gz を、作業ユーザーのホームディレクトリにダウンロードしました。
$ cd
$ curl http://www.ftp.ne.jp/pub/OpenBSD/6.7/src.tar.gz -O
$ curl http://www.ftp.ne.jp/pub/OpenBSD/6.7/sys.tar.gz -O
作業ユーザーでダウンロードしたファイルを /usr/src 配下に展開します。
$ cd /usr/src
$ tar xzf $HOME/src.tar.gz
$ tar xzf $HOME/sys.tar.gz
最後に作業ユーザーにより cvs でアップデートします。
$ cd /usr/src
$ cvs -qd anoncvs@anoncvs.jp.openbsd.org:/cvs update -Pd
以上で完了です。
以後は、作業ユーザーで最後に行った cvs update コマンドを実行することで最新のソースコードを得ることができます。
(4) current の ports のソースコード (/usr/ports) の準備
ports のソースコードも /usr/src と同様の手順になります。
snapshots のディレクトリからソースコードを取得します。
$ cd
$ curl http://www.ftp.ne.jp/pub/OpenBSD/snapshots/ports.tar.gz -O
作業ユーザーでダウンロードしたファイルを /usr/ports 配下に展開します。
$ cd /usr
$ tar xzf $HOME/ports.tar.gz
最後に作業ユーザーにより cvs でアップデートします。
$ cd /usr/ports
$ cvs -qd anoncvs@anoncvs.jp.openbsd.org:/cvs update -Pd
以上で完了です。
以後は、作業ユーザーで最後に行った cvs update コマンドを実行することで最新のソースコードを得ることができます。
まとめ
OpenBSD の snapshots を使って current を導入してみました。
またシステムや ports の current のソースコードを入手しました。
機会があればこの環境を使ったシステムのビルドや ports 利用についても書きたいと思います。
OpenBSD プロジェクトは寄付を募ってます。
メールアドレス指定で日本からでもPayPalでの寄付ができます。
詳しくはこちら: https://www.openbsd.org/donations.html