彷徨えるフジワラ

年がら年中さまよってます

OpenIndiana への移行手順

【注意】 134"b" からの移行の場合、追加的な留意事項有り
OpenSolaris ハッカソンでは、もっぱら Mercurial 関連作業をやってはいたのだが、一応裏では、持ち込んだノートPCの VirtualBox 環境に入れてある OpenSolaris(snv_134) の、OpenIndiana 移行などという、Solaris っぽいことを。

ディストリビューションとしての OpenSolaris (= open じゃない indiana) が、既に活動を停止している状況なので、OpenSolaris で稼動している自宅サーバの移行演習も兼ねていたりする。

一度 ZFS の楽チン具合を知ってしまうと、Linux とか BSD 系への移行は、考える気もしないんだよなぁ。まぁ、歳を取ったから面倒臭さが先に立つだけかもしれないけれど …… orz

さて、肝心な移行の話。

snv_134 への更新が済んでいる場合は、"Upgrading from OpenSolaris" にある、以下の手順を実施すれば良い筈。

$ pfexec pkg set-publisher --non-sticky opensolaris.org
$ pfexec pkg set-publisher -P -O http://pkg.openindiana.org/dev openindiana.org
$ pfexec pkg image-update -v --be-name openindiana

※ 再起動後に以下の publisher 設定を実施

$ pfexec pkg unset-publisher opensolaris.org

しかし、実際には:

Maintained incorporations: None

Package version changes:

No updates available for this image.

というようなエラー表示で pkg image-update の時点で処理が中断されてしまった …… orz
結局、image-update 実行までは漕ぎ着けたものの、OpenSolaris ハッカソンの時間枠中にはパッケージ転送が完了せず、問題解決の手順確立も出来なかったので、image-update 作業はひとまず中断することに。

その後のあれやこれやの試行錯誤の結果:

  1. http://pkg.opensolaris.org/dev/ が現状 IPS として機能していない (つい最近の話?) ことから、preferred のままで "pkg set-publisher --non-sticky" を実施しても、non-sticky 設定が反映されない
  2. opensolaris.org 固有パッケージが邪魔をして、OpenIndiana のパッケージに置き換わらない

ということが判明。VirtualBox のスナップショット機能で、移行作業前の状態を保存しておいて、本当に良かった。何度やり直した事か……

前者に関しては、non-sticky 設定と pkg.openindiana.org の publisher 登録の順序を、以下の様に入れ替えれば解決:

$ pfexec pkg set-publisher -P -O http://pkg.openindiana.org/dev openindiana.org
$ pfexec pkg set-publisher --non-sticky opensolaris.org

いっそ事前に:

$ pkg set-publisher -O http://pkg.openindiana.org/legacy opensolaris.org

という設定で、openindiana.org 側の暫定イメージを見せても良いけど、どうせ image-update 後の再起動時には publisher 登録を削除してしまうのだから、そこまでする必要は無いかも。

preferred と non-sticky が以下のように設定されていれば、とりあえずは大丈夫な筈。

$ pkg publisher
PUBLISHER                    TYPE   STATUS  URI
openindiana.org (preferred)  origin online  http://pkg.openindiana.org/dev/
opensolaris.org (non-sticky) origin online  http://pkg.opensolaris.org/dev/
$

後者に関しては、事前に以下のパッケージを uninstall しておけば良さそう。

  • entire パッケージ
  • pkg list | grep "/opensolaris" で表示されるパッケージ

同じ問題を回避した人のコメントでは:

が対象パッケージになっているけれど、僕の場合は以下のような感じ:

まぁ、この辺は環境依存な話。

これらのパッケージの uninstall をしない状態だと、publisher 設定がちゃんとできていても、"pkg image-update -nv" で dry run させた場合に、更新対象パッケージが殆ど表示されないので、準備が不完全である事がわかる。

事前準備が済んで、実際に image-upddate が実施された場合、回線速度等にも依存するのだろうけど、パッケージの取得/更新処理に、概ね3時間弱ぐらいは見ておいたほうがよさそう。

僕が試した環境では、VirtualBox ホスト側 Windows のタスクマネージャ表示が 100Mbps 強でリンクアップ (802.11nWi-Fi 接続) しているのの、転送中の帯域使用率は10%も行かない程度なので、多分 openindiana.org 側の経路がネックになっているっぽい。

# 一応、外との接続は光回線で、そこそこの転送性能が出ることを確認済み

image-update 完了後に再起動すると …… おぉ! GRUB 画面の背景に OpenIndiana のロゴが! "uname -a" でもビルド情報が oi_151 に!