Date: 2010/02/25 | | Tags: Solaris, OpenSolaris, Howto, 利用法
少なくても現時点では、IPSによって「きちんとした依存関係を持つ状態」でないと、アップデートできない状態のようです。
たとえば、私が先日作ったApache 2.2.13などは、SUNWapch22の上書きインストールであるため、このままでは綺麗な形でこれがアンインストールできません。その結果、新しいバージョンの2.2.14へのインストールも失敗し、結果的には「Zoneのアップデートの失敗」ということになっているようです。
このワークアラウンドは、あらかじめZONE内で私が作っていたapch2213pをアンインストールしておき、SUNWapch22をpkg fixしておけばうまくいくのですが、このようにZONEよって動きが異なる有様で。
少なくても私の手持ちのZoneのうち2割ぐらい、アップデートができないものがあったりします。
パッケージ作成用のワーク用Zoneなんかは、localhostからのpkgをいれたり、重なってるjuicerからのパッケージをいれたり、もはやスパゲティ状態です。もうこういうのは壊滅的にアップデート出来ない状態でして・・・。
困るのはだからといって、zoneのアップデート置いてけぼりが出来ないことです。今までは2009.06のOSの上に2008.11のzoneをattachできたのですが、今回は出来ないと。困ったちゃんです。
逆にあまりコンプレックスじゃない状態のzoneは素直にするっと上がるのですが、試行錯誤をしちゃったり、旧SVR4パッケージをいれちゃったりすると、やっぱりおかしくなるんですよねぇ・・・ほんとに、まいったものです。
せめて古いzoneのattach時にzone無いのzfsコマンドがcore吐いて落ちたりいなけりゃいいわけですが・・・。
これは開発版なので、地雷は踏んで当たり前なのですが。この類のバグフィックスってそう簡単にできるとは思えないので、releaseがどうなるか、警戒が必要でしょう。逆に言うと、ますますSVR4を下手に入れるのは危険度が高く・・・。IPSのパッケージはソフトベンダは必ず勉強しなくてはならないようになるでしょう(と、これは何かの前振りに続く・・・・ :) )。
ということで、本日のワークアラウンド。ZONEをdetach && attach -uせずにアップデートする方法です。
pfexec pkg -R `zonecfg -z ゾーン名 info zonepath|awk '{print $2}'`/root image-update -v
pkg -z ゾーン名とかありゃーいいのに(笑)とか思ったわけですが、これでうまくいくとは限らないので、かならずあらかじめsnapshotを取っておいて!!ください。それですむのはzfs万歳なわけですけどね(笑
まぁ、ネットで普段こういうことを調べてる人には、特別、どうこうという話じゃないのでしょうけれども、MySQL、PostgreSQL、Firebirdのデータバックアップ〜レプリケーションまでの話がサックリとまとめてあります。
簡単に言うと、Dual Activeのマスターマスター型のクラスタをするのは、非常にOpenSourceだけだと難しいわけですが、「まぁそこまでやらなくても、消えちゃわないなら良いよ!」っていうのならば、バックアップやレプリケーション周りの記事がまとまっていることもあって、有用なことだとおもいます。
私としては、ZFSのSnapshoptとPostgreSQLのPITRの組み合わせ技が書かれてないのはちょっと残念でしたが・・・・(そんな、変態なことしねーよ :p )