お仕事でSolaris10上でJavaとCを使った開発をすることになりました。Solaris10自体は、メディアキットを2005年の夏くらいに購入してまして、埃をかぶっていました。Javaはまああまり問題ない筈なんですが、Cの開発が大分雰囲気が違うようでした。せっかくx86用のメディアキットもあることですので、VMware5の中で飼ってみることにしました。 Cの開発は「Sun Studio 11」を使うことになる、とも聞いていましたので、そちらも併せてインストールしてみます。 - Solaris10 (2005年に購入したメディアキット使用) - VMware 5 - Sun Studio 11 #outline ---- * Solaris10のインストール 「はじめてのSolaris10」を参考にインストールを行いました。VMwareを使った方法も載っていましたが、どうも物理ディスクを用いて直接インストールを行う手法のようです。今回はVMwareの中で完結すればよいので、その辺りは無視しました。 http://www.amazon.co.jp/exec/obidos/ASIN/4777511553/503-4155079-1790347 VMwareで仮想マシンを新規作成するとき、OSとしてSolaris10がexperimentalとはいえリストにありましたので、それを選択して仮想マシンを作成しました。メモリは念のため512MBに増量しておきました。ディスクは20GBを確保しておきました。 他に、Xの設定やTipsなどで次のURLを参考にしました。 - http://www.02.246.ne.jp/~torutk/solaris/solaris10_x86.html 加えまして、Software Companion CD もインストールしておきました。 * パッチ適用について "Recommended Patch"(パッチクラスタ)をSunのサイトからDLしようとすると、有償契約しないとログインできない様でした。 Solaris10のパッチやソフトウェア構成管理について、こちらの理解が追いつかない状態でしたので、とりあえずRecommended Patchの入手は諦め、"Sun Update Connection"に挑戦しました。 smpatch update とするだけでよい、と書籍にはあったのですが・・・ネットワーク通信で1~2時間ほどとられた上に、大量にエラーメッセージが表示されてしまい、やる気を無くしてしまいました。 ちなみに、パッチ適用が不完全だったのが悪かったのかこの後リブートしたとき、コンソール画面が真っ暗な状態になってしまい非常に焦りました。再度リブートしたら直ったみたいです。 * 環境構築 ネットワークなどの環境構築については、Sunのマニュアルドキュメントや上記URL、あと次のURL等も参照してどうにかDHCPと固定IPを自在に設定できるようになりました。 - IPアドレス変更の罠(/etc/inet/hosts だけじゃなく、/etc/inet/ipnodes も変更が必要、ということ) -- http://spacesheriffsharivan.blog9.fc2.com/blog-entry-18.html#more - 環境構築部分とかも含めて、総合的にあちこちで参考: -- http://www.rinneza.com/junya/tech/solaris10_x86/ ユーザー環境構築については、Linuxから持ってきたドットファイル群を調整して悪戦苦闘しています。 どうでもいいですが、rootのホームディレクトリって/etc/passwd見る限り root:x:0:0:Super-User:/:/sbin/sh って"/"になってるんですが・・・これってSolaris系じゃ普通なんでしょうか。/の直下にrootユーザー用のドットファイルがあるというのは、ちょっと衝撃でした。まあ、"ls -a /"自体滅多に叩くコマンドじゃ無いんですが。 あと、起動時のXのログイン画面もうざいのでコンソールログインにおとしたいところだったんですが、パッチ適用時の真っ暗コンソール画面が非常に怖いので(放っておいたら勝手にXに移ってくれた為、事なきを得ていた)、やっぱりXは動かしっぱなしにしておきます。まあ、IPはDHCPじゃなくて固定にしましたから別にコンソールが真っ暗でもSSHログインで入れるので問題ないといえば無いんですが。 ** bashやパスの調整 順番は相前後してしまいますが、Sun Studio11をインストール後の調整で、一般ユーザーで以下のような設定に落ち着いています。 *** ~/.bashrc [ "$BASH" = "" ] && return # source system wide aliases if [ -f /etc/bashrc ]; then source /etc/bashrc fi case `tty` in 'not a tty') ;; *) stty erase '^H' ;; esac alias vi='vim' alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias ..='cd ..' alias ll='ls -l' alias la='ls -aF' alias ls='ls -F' *** ~/.bash_profile stty -istrip if [ -f ~/.bashrc ]; then source ~/.bashrc fi # User specific environment and startup programs ENV=$HOME/.bashrc USERNAME="" PATH=/opt/SUNWspro/bin:/usr/sfw/bin:/opt/sfw/bin:$PATH PAGER='less' export USERNAME ENV PATH export PAGER export PS1='[\u@\h \W]\$ ' export LESSCHARSET='utf-8' MANPATH=/usr/man:/usr/share/man:/usr/sfw/man MANPATH=$MANPATH:/opt/SUNWspro/man export MANPATH export EDITOR='/opt/sfw/bin/vim' export JAVA_HOME='/usr/java' - MANPATHで、/opt/SUNWspro/man (SunStudio11)を先頭に持ってきてしまうと、幾つかシステム上のmanよりも先に出てきてしまうらしくまずいことになりました。ですので、SunStudio11のmanは後ろに持ってきています。 - Javaは、インストールした時点でjava, javacなどがJDK1.5のものにリンクされていたようです。このまま、JAVA_HOMEを設定しておきます。 - PAGERをlessにしたところ、日本語のmanページで""の嵐に見舞われました。色々試行錯誤の末、文字コードを'utf-8'にしたら機嫌を直してくれました。 -- http://www.atmarkit.co.jp/flinux/rensai/linuxtips/547fedoramanp.html -- http://www.miraclelinux.com/technet/faq/data/00087.html -- http://pocketstudio.jp/linux/?FC4%2FFAQ%2Fman%20%A4%AC%CA%B8%BB%FA%B2%BD%A4%B1%A4%B7%A4%C6%A4%DE%A4%B9%A4%AC%A1%A9 - viについては、/opt/sfw/bin/vimの方が圧倒的に使いやすいので、そちらにしました。関連して、.bashrcの方で"vi"を"vim"のaliasにしておきました。 他にlinuxから持ってきた.lessは、こちらのlessとは互換性が無いようでしたのでリネームして無効化しておきました。 * Sun Studio11 をインストール。 とりあえず次のURLを参考にしました。Sunの本来のドキュメントを参考にするべきなのでしょうが・・・。 http://www.02.246.ne.jp/~torutk/solaris/sunstudio11.html 上記URLによると、パッチも出ているようです。 http://developers.sun.com/prodtech/cc/downloads/patches/ss11_patches.html 全然関係ありませんが、Sun Studio11では"dbx"というデバッグツールがついてくるみたいでした。gdbとどう違うのか、とか、実際にお仕事で便利に使えるかもなので挑戦してみたいです。 それはともかくとしてパッチを適用しようとしたら、エラーになってしまいました。 # cd /var/tmp/120759-06 # patchadd `pwd` ... Patch 120759-06 failed to install due to a failure produced by pkgadd. ... See /var/sadm/patch/120759-06/log for details ... # more /var/sadm/patch/120759-06/log pkgadd: ERROR: The package is currently installed on the system in the global zone. To install the new instance of this package in the global zone only, you must specify the -G option. To install the new instance of this package in all zones you must first remove the existing instance of this package from the global zone first (via pkgrm) and then install the new instance of this package in all zones. pkgadd: ERROR: package cannot be installed on this system/zone Solaris10では、一台のハードウェア上で複数のSolaris10をソフトウェア的に稼働できる「Solarisコンテナ」という機能があるようです。最初にハードウェアにインストールされたSolarisが「グローバルゾーン」となって、その上で複数のSolarisを動かすようです。 メッセージを見るに、どうやらグローバルゾーンに対してpatchaddするには"-G"オプションが要るようです。 というわけで、 # patchadd -G `pwd` したら上手く行きました。ちなみに、最後のpwdは現在位置をしていするのを省いたわけです。 # patchadd -G -d . でも同じようでした。 * その他 ** シャットダウンと再起動 "shutdown"コマンドを使用するのは同じですが、オプションが大分異なります。 # shutdown -y -g0 -i5 -y : ログイン中の他のユーザーの画面にシャットダウンのメッセージを表示しない -g0 : -gとして、shutdownコマンド発動までの秒数を指定する。ここでは0秒(即時) -i5 : -iとして、ランレベルを指定する。再起動するときはランレベル6を指定する。 &image(91) ** /usr/ucb /usr/ucb の下に、何かいろいろ詰まっていました。役に立つのであればPATHに加えておきたいところですが・・・ - http://cl.pocari.org/2003-01-08-2.html - http://www.unt.edu/UNT/departments/CC/Benchmarks/julaug95/solaris.htm - http://solaris.sunfish.suginami.tokyo.jp/SD/9806/ - http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/27585 - http://www.ctc-g.co.jp/security/0150-01.html 調べてみますと、University of California at Berkeley (だからucb)と関連するBSD互換ツールのようです。 ただし、便利だからとうかつにPATHに加えたりしますと、ccコマンドをはじめとしていろいろと躓きそうです。 "/usr/ucb をPATHに加えるのが間違い"という認識もあるようですので、これはスルーしておきます。