2005年12月18日

Solaris10 で smpatch update ができなくなった!

# smpatch update
システムに必要なパッチを評価しています...
Failure: Cannot connect to retrieve Database/current.zip: This system is current
ly unregistered and is unable to retrieve patches from the Sun Update Connection
. Please register your system using the Update Manager.
意訳:えーかげん Update Manager 使って Update Connection に登録しなよおまいさん。

かなーり前(およそ 3ヶ月前)からこんな状態になったまま放置しておりましたが、えーかげん気分がよろしくないわけで。
ぐるぐるとネットをさ迷った結果、どうやら Sun Update Connection とやらにツール経由でシステム登録しなければ smpatch を使ったアップデートができなくなるようです。

Solaris10 を入れてるマシン(Ultra5)はキーボードもディスプレイも接続せずに ssh でいぢくってる故に、 GUI を使用した Sun Update Manager による登録はしたくありませんでした。
CUI で登録するツールもありますが、いまいちまともに動かず。

結論から言うと、 GUI のツールを使う以外に簡単に Sun Update Connection に登録する手段はありません。


っつーわけで、こんな場合は以下のような感じで。
ちなみに前提として、 Sun Online に自分のアカウントが存在する必要があります。
ってか Solaris ダウンロードする際にアカウント登録必須だから、この時点でないなんてことは... 無くはないのか?
なんにせよ無料だから登録しておくといいYo!

  1. CUI でシステム登録しようと足掻く。
    まずは Sun Download の Product Downloads : Sun Update Connection, System Edition 1.0.1 をダウンロードしてインストールするですよ。
    # unzip updateConnection-sparc.zip
    # cd updateConnection
    # ./installUpdateConnection
    

    ほいで CUI 登録ツール用の定義ファイルを編集するですよ。
    # cp /usr/lib/breg/data/RegistrationProfile.properties /tmp
    # vim /tmp/RegistrationProfile.properties
    ----
    userName=<Sun Online Account に登録済のユーザー名>
    password=<そのパスワード>
    ----
    
    ファイル名はなんでもよいと思うです。

    いざ CUI の登録ツール sconadm で登録してみるですよ。
    # /usr/sbin/sconadm register -a -r /tmp/RegistrationProfile.properties
    Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/cns/basicreg/
    BasicRegCLI
    
    あみゃあぁぁっ! なんにゃあ! これなんにゃのにゃあ!

    # file /usr/sbin/sconadm
    /usr/sbin/sconadm:      実行可能 シェル スクリプト
    
    sconadm 自体はただの sh スクリプトで、その最後に
    exec java -classpath ${MAIN_JAR} com.sun.cns.basicreg.BasicRegCLI $SUBCOMMAND ${
    ARGUMENTS}
    
    な感じで java を起動しているです。
    ${MAIN_JAR} には頭の方で /usr/lib/breg/basicreg.jar がセットされており、 .jar は zip 形式なので unzip で展開できるです。
    展開したディレクトリの中にいかにもあやしい com/sun/cns/basicreg と続くディレクトリがあり、以下には
    # cd /tmp
    # cp /usr/lib/breg/basicreg.jar .
    # unzip basicreg.jar
    # cd basicreg/com/sun/cns/basicreg
    # pwd
    /tmp/basicreg/com/sun/cns/basicreg
    # ls
    BasicReg$1.class                   TestFrame$4.class
    BasicReg$LoadTask.class            TestFrame$5.class
    BasicReg.class                     TestFrame$6.class
    BasicRegFrame$1.class              TestFrame$LanguageListener.class
    BasicRegFrame.class                TestFrame.class
    Collector.class                    adapter/
    TestFrame$1.class                  advertisement/
    TestFrame$2.class                  qa/
    TestFrame$3.class                  util/
    
    ... えーっと ...
    BasicRegCLI なんてものは無いようですよ?
      ※ find . -name "*CLI*" も無駄っ
    それとも何かっ、 BasicReg.class だか BasicReg$1.class あたりを BasicRegCLI.class かなんかにコピって zip 圧縮して配置すればいけるのかっ?
    そこまでさすのかっ?

    Sun は CUI を迫害していると、その日、私は知りました。


  2. GUI で妥協す。
    えぇい背に腹は替えられぬ、せきゅりてぃのためじゃぁ、 GUI を持てぃ。
    Solaris10 のインストール時になんでもかんでも入れさせたので X Library ももろちん入ってるですよ。
    ディスプレイも繋がってないのにどう GUI するかっつーと... もぅお分かりですねっ!
    メインで使ってる FreeBSD 機の X Server に叩き付けるですよっ!
    # setenv DISPLAY <奴のホスト名か IP アドレス>:0
    # updatemanager
    Xlib: connection to "奴:0.0" refused by server
    Xlib: No protocol specified
    
    Can't connect to X11 window server using '奴:0' as the value of the DISPLAY vari
    able.
    
    うわ、やっべ、穴あけわすれてた。

    では改めて。

    1. X Server 側設定
      以下は X Server 側で設定するです。
      ipfw などでフィルタリングしてたら以下のようなルールを追加して開放してあげるですよ。
      たいがい専用のフィルタスクリプト使ってると思うのでそこらへんは適当に。
      ipfw add pass tcp from <X Client の IP アドレス> any to <X Server(自分)の IP アドレス> 6000 setup
      
      次に X Server のアクセス制御設定を追加するですよ。
      startx に TCP を listen するオプションを付けて起動し、 xhost で許可するです。
      > startx -listen_tcp
        ...
        X が起動したら何らかの Terminal を起動して、
      > xhost + <X Client のホスト名か IP アドレス>
      <指定した X Client> being added to access control list
      

    2. X Client 側で Update Manager の起動
      さくっと起動ですよ。
      # setenv DISPLAY <X Server のホスト名か IP アドレス>:0
      # updatemanager
      
      すると...

    3. Update Manager による Sun Update Connection へのシステム登録
      2005121301.png
      「ん、そんな、いきなり...」のように、まずこのウインドウが起動するです。次のウインドウに切り替わるまで待つです。
      Ultra5 だとかなり待つですよ

      2005121302.png
      「ひゃっ、ん...」とやさしく「登録してアップデートを管理」をボタンをクリックするですよ。

      2005121303.png
      「んぅふっ、は、はぁっ、はんっ... はぁっ、はむ、ん...」とじらしながら Sun Online アカウントの「ユーザー名」と「パスワード」を入力して「次へ」をクリックするですよ。
      まだアカウント登録していない場合でも「サンオンラインアカウントの作成」からアカウント登録ができるようですよ。

      2005121304.png
      「ふぅっ、あっ、はっ、はっ、あんっ、いっ、いっ...」という段階です。
      Sun サブスクリプションキーは Sun とソフトウェアサポート契約を結んだ際に発行されるキーで、セキュリティ以外のアップデートや Sun Update Connection でリモート管理する場合云々。
      サポート契約できない貧乏人なのでセキュリティアップデートだけするですよ。
      「Sun サブスクリプションキーを入力せずに続行するか、後で入力します。」をクリックするですよ。
      さらに利用規約もまともに読まずに「契約に同意する」をチェックして「次へ」ですよ。
      こーゆー人間が詐欺に引っ掛かるのですよ。規約はしっかり読むべきですよ。

      2005121305.png
      「あぁんっ! わたしっ、わたしぃっ、送信しちゃうぅぅっ!」な感じで「完了」をクリックですよ。
      「あぁん」の鼻から抜けるような感じと 2回目の「わたしぃっ」がポイント?

      2005121306.png
      「んんんっっ! はあぁぁぁっ!
        ...
        あふ... は... わたし、送信、し、しちゃった...」で「閉じる」ですよ。

      2005121307.png
      「いや... はぁっ... あはっ、もぅそんなに... 見ないで...」という風にシステムへのアップデート適用状況のチェックが始まるですよ。
      うちの Ultra5 ではぶち切れるほど時間がかかるのでゆっくりごはんでも食べるのですよ。

      2005121308.png
      「やぁぁんっ... なに...? こんな格好... 恥かしいよぅ...」と、チェックが終わるとこのようにアップデート可能な一覧が表示されるですよ。
      ここで必要なアップデートのチェックボックスにチェックを入れて、下にある「今すぐインストール」をクリックする、らしいですよ。
      でも今回は CUI でアップデートするためにシステム登録をしただけなので、はっきり言ってこんな画面は不要なのですよ。
      即、ウインドウを閉じるです。
      「えぇぇぇぇっ!? これで終りなのっ!? ちょっと待ってこの格好な


  3. ようやく CUI からアップデート。
    # smpatch update
    
    実行ですよ。

    システムに必要なパッチを評価しています...
    取得されたパッチリスト...
    パッチをダウンロード中 /var/sadm/spool...
    com.sun.patchpro.util.Percentage@1954f89
    121308-01 has been validated.
    com.sun.patchpro.util.Percentage@1d5b89c
    119254-10 has been validated.
    
    ... 途中省略 ...
    
    NOTICE: Patch 119689-06 cannot be installed until the next system shutdown.
    NOTICE: Patch 119546-04 cannot be installed until the next system shutdown.
    119117-09 適用されました。
    121095-01 適用されました。
    119115-13 適用されました。
    119059-09 適用されました。
    /var/sadm/spool/patchpro_dnld_2005.12.13@23:39:43:JST.txt 以下へ移動しました /va
    r/sadm/spool/patchproSequester/patchpro_dnld_2005.12.13@23:39:43:JST.txt
    
    インストールポリシーによって許可されていない
    パッチの ID がファイルに書き込まれました
            /var/sadm/spool/disallowed_patch_list
    
    One or more updates that you installed requires a system shutdown to activate it
    . To initiate the system shutdown, you must use one of the following commands:
    o Power down the system - init 0 or shutdown -i 0
    o Drop to the firmware prompt - init 5 or shutdown -i 5
    o Restart the system - init 6 or shutdown -i 6
    
    無事、アップデートできたです。
    再起動が必要なアップデートがあるので、ここで再起動するですよ。
    # shutdown -g0 -y -i6
    
    shutdown 実行直後に以下のメッセージが出力されるですよ。
    Installing update 118822-23 Succeeded
    Installing update 119689-06 Succeeded
    Installing update 119546-04 Succeeded
    
    インストールできなかったアップデートがインストールされているのですよ。
    再起動後に、
    # smpatch analyze
    
    して、必要なアップデートが出力されなければ万々歳、なのですよ。


「Solaris10 smpatch」の検索ワードでいらっしゃる方がおられるようで、わたしと同じように CUI で頑張っていた方なのかな、と存じます。
まったく CUI では解決できませんでした。軟弱者ですいません。
Open Source Magazine 来月号(2006/2)の「のに子のチャレンジざわ〜るど」で Update Manager に関する記事があるようなので、より詳細な内容はそちらを読むとよいかも。


... しっかし GUI 子ちゃんはあのあとどうなんのかなぁ...


参考リンク:
Sun Update Manager 1.0 管理ガイド
  • 第 2 章 Sun Update Connection ソフトウェアのインストール
  • 第 3 章 - Sun Update Manager によるシステムの登録

    Posted by mass at 2005年12月18日 00:10 [UNIX] | TrackBack
  • Comments

    同じ症状ではまりました。(BasicRegCLI がなひ)
    私の場合は

    # smpatch remove -i 119108-06

    して、もう一回

    # smpatch update

    したら、BasicRegCLI が現れやがります。
    どうして一発目に当てたときにできなかったのか、までは追いかけてません。。
    そのあとは sconadm で CLI でけますた。
    ご参考までに。

    Posted by: 通りすがり at 2005年12月19日 20:12

    情報ありがとうございます!
    119108 ってことは x86 をお使いですね。 sparc 版は 119107 のようです。

    一度 patch の remove が必要でしたか...
    もしかして 11910[78]-06 ってひっそりと更新されてたとか?

    時間があったら qemu で動かして試してみようかな... 絶対忘れるだろうな(笑
    しっかし、 Solaris の壁は高いですなぁ...

    Posted by: mass at 2005年12月19日 22:23

    ですね。でも、sparcでも検証済みです。
    x86 でテストして、sparc で同じようにやりました。
    (マシンが SunFire240のため GUI はNGで、がんばらざるを得なかったというオチです)

    これからの情報更新も楽しみにしております(笑)

    Posted by: 通りすがり at 2005年12月20日 10:16
    Post a comment









    Remember personal info?