彷徨えるフジワラ

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

旧 Indiana の update

結局、非力なノートPC上の仮想環境では埒が明かないので、リリース IPS リポジトリ(http://pkg.opensolaris.org/release/)が更新されて set-publisher 等の手間が減ったのをこれ幸いと、メモリ割り当て等が幾分マシなデスクトップPC(Windows)上の仮想環境で旧 Indiana ⇒ OpenIndiana 移行を試してみたところ、スワップ不足で失敗という結果に .... orz

しょうがないので、swap 用の仮想ディスクを追加して再挑戦!と意気込んだ途端に、デスクトップPCがHDD不調でアレな状況に。起動したりしなかったり、起動してもやたらディスクI/Oがアレなので、もしやと思ってイベントモニタを確認してみたところ、ドライバからのエラー報告がてんこ盛りな状態。

元々リプレースを考えていて機材調達も進めていたので、それほど問題では無いのだが、即入れ替えとはいかない状態なので、これでは移行実験が出来ない。

これはもう、稼働中の旧 Indiana 自宅サーバで試せ!という神のご意思ではなかろうか?などと血迷ってみる。最悪でも boot environment 保存で復旧できるしね > Solaris 5.11

とりあえず初期状態を確認。

$ uname -a
SunOS witchhunt 5.11 snv_111b i86pc i386 i86pc

"pkg image-update" しようとしたら、「SUNWipkg を新しくしろ」とのことなので:

$ pkg info -l SUNWipkg
          Name: SUNWipkg
       Summary: Image Packaging System
      Category: System/Packaging
         State: Installed
     Publisher: opensolaris.org
       Version: 0.5.11
 Build Release: 5.11
        Branch: 0.111
Packaging Date: Fri Jun  4 17:31:15 2010
          Size: 2.69 MB
          FMRI: pkg:/SUNWipkg@0.5.11,5.11-0.111:20100604T173115Z

この状態から「pkg install SUNWipkg」を実行して:

$ pkg info -l SUNWipkg
          Name: SUNWipkg
       Summary: Image Packaging System
      Category: System/Packaging
         State: Installed
     Publisher: opensolaris.org
       Version: 0.5.11
 Build Release: 5.11
        Branch: 0.111
Packaging Date: Thu Aug  5 16:13:11 2010
          Size: 2.70 MB
          FMRI: pkg:/SUNWipkg@0.5.11,5.11-0.111:20100805T161311Z

という状態に更新。

ここまでの経緯は、OpenSolaris ユーザグループの ML に投げたものと同じなので、想定の範囲。

で、ここでおもむろに「pkg image-update」なのだが、ウンウンと唸った末に、今度はスタックダンプを吐いて内部エラーによる中断 .... orz

% pkg image-update
Creating Plan -Traceback (most recent call last):
  File "/usr/bin/pkg", line 2599, in ?
    __ret = main_func()
  File "/usr/bin/pkg", line 2540, in main_func
    return image_update(mydir, pargs)
  File "/usr/bin/pkg", line 543, in image_update
    update_index=update_index, be_name=be_name)
  File "/usr/lib/python2.4/vendor-packages/pkg/client/api.py", line 363, in plan_update_all
    noexecute, verbose=verbose)
  File "/usr/lib/python2.4/vendor-packages/pkg/client/image.py", line 2985, in make_install_plan
    ip.evaluate()
  File "/usr/lib/python2.4/vendor-packages/pkg/client/imageplan.py", line 456, in evaluate
    self.add_pkg_plan(f)
  File "/usr/lib/python2.4/vendor-packages/pkg/client/imageplan.py", line 376, in add_pkg_plan
    pp.evaluate(self.old_excludes, self.new_excludes)
  File "/usr/lib/python2.4/vendor-packages/pkg/client/pkgplan.py", line 144, in evaluate
    old_excludes, new_excludes)
  File "/usr/lib/python2.4/vendor-packages/pkg/manifest.py", line 844, in difference
    self_exclude=self_exclude)
  File "/usr/lib/python2.4/vendor-packages/pkg/manifest.py", line 126, in difference
    odict = dict(
  File "/usr/lib/python2.4/vendor-packages/pkg/manifest.py", line 831, in gen_actions
    self.__load()
  File "/usr/lib/python2.4/vendor-packages/pkg/manifest.py", line 611, in __load
    self.set_content(data, self.excludes)
  File "/usr/lib/python2.4/vendor-packages/pkg/manifest.py", line 331, in set_content
    for action in content:
  File "/usr/lib/python2.4/vendor-packages/pkg/manifest.py", line 298, in __content_to_actions
    yield actions.fromstr(l)
  File "/usr/lib/python2.4/vendor-packages/pkg/actions/__init__.py", line 159, in fromstr
    action = types[atype](data=data, **attr_dict)
  File "/usr/lib/python2.4/vendor-packages/pkg/actions/file.py", line 60, in __init__
    self.attrs["path"] = self.attrs["path"].lstrip(
AttributeError: 'list' object has no attribute 'lstrip'

pkg: This is an internal error.  Please let the developers know about this
problem by filing a bug at http://defect.opensolaris.org and including the
above traceback and this message.  The version of pkg(5) is '47dec3a3914c'.

これ、"path" 属性として文字列が格納される筈のところ、配列とかが格納されてたのでコケた、という雰囲気。

OpenSolaris の bugzilla で軽く検索をかけてみたところ、bug 17096 の類似障害っぽい感じがするのだが、なんか「path 属性は原則1つを想定」と言っているっぽくて、あまり緊急とは見なされていない感じなので、改めてバグ報告を起こすことに

ひょっとして、職場でデスクトップ環境として使用している OpenSolaris でも、同じ問題が発生するのかな?

何にしても、予想通りトラブルの引きが強いことよ > 自分