次の構成のPCにインストールした。
CPU | Pentium III(Katmai) 500MHz | |
M/B | SOYO 6BA+ Intel 440BX Award PCI BIOS |
|
Memory | 640MB PC-100 | |
Video | Eontronics Picasso (Permedia 2) | |
LAN | Planex FW-110TX-PK (Realtek 8139) |
Solaris 9 Software 1 of 2のCD-RをCDドライブにセットしてマシンをブートする。
Solaris Device Configuration Assistant画面が表示される。[F2]キーを押して続行。
Bus Enumeration画面で警告発生
Warning: Resource Conflict both device are added NON-ACPI device:PNP0F03 Port: 60, 64; IRQ: 12 ACPI device: PNP0301 Port: 60, 64; IRQ: 1
BIOSでACPIをdisableする。Award BIOSの場合、POWER MANAGEMENT SETUPのACPI function項をEnabledからDisabledに変更
Identified Device画面で認識されたデバイス一覧が表示される。ISA: System keyboard (US-English)となっているので、[F4]キーを押して、[X] Set Keyboard Configurationとして[F2]キーを押す。[X] Japanese (106)として[F2]キーを押す。[X] with Windows keysとして[F2]キーを押す。[F3]キーでIdentified Device画面に戻り、[F2]キーを押す。
Boot Solaris画面で[X] CD ... として[F2]キーを押す。
Select type of installation: で1を入力(Solaris Interactive)。
Select a Language: で4を入力(Japanese)。
Select a Locale:で0を入力(Japanese EUC (ja))。
The Solaris Installation Program画面で[F2]キーを押す。
kdmconfig - Introduction画面で[F2]キーを押す。
kdmconfig - View and Edit Window System Configuration画面で、[X] Change Video Device/Monitorとして[F2]キーを押す。
Video Device Selection画面で、[X] XF86-GLINT
GLINT and Permedia based video cardとして[F2]キーを押す。
※ 3Dlabs Permedia 2の選択肢もあったが、こちらを設定した場合テスト画面が表示されずハング状態となってしまう。
Monitor Type Selection画面で、[X] MultiFrequency
85kHzとして[F2]キーを押す。
※使用しているモニターの水平周波数を超えない値を選ぶ
Screen Size Selection画面で、[X] 17-inch(43cm)として[F2]キーを押す。
Resolution/Colors Selection画面で、[X] 1024x768
- 256 colors @ 75Hzとして[F2]キーを押す。
※ インストール時は、1024x768以下、256色が無難。インストール後にkdmconfigコマンドで再設定可、コンソールログインでkdmconfigを実行する。
Visual Screen Resolution Selection画面で、[X] 1024 x 768として[F2]キーを押す。
kdmconfig - View and Edit Window System Configuration画面に戻っているので、[F2]キーを押す。
Window System Configuration Test画面で[F2]キーを押す。
グラフィックステスト画面が表示されるのでマウスでOKをクリックする。
Xが起動し、sysidtoolウィンドウが表示されるので、[F2]キーを押す。
ホスト名を入力して[F2]キーを押す。確認画面でも[F2]キーを押す。
時間帯の選択画面では、[X] アジアとして[F2]キーを押し、国と地域で[X] 日本として[F2]キーを押す。
日付と時刻は適切な値を設定して[F2]キーを押す。確認画面でも[F2]キーを押す。
Solaris対話式インストールで、初期オプションの[F4]キーを押す。続いて標準[F2]キーを押す。
地域の選択では、[/] アジアで[Enter]キーを押す。[X] 日本語EUC(ja)として[F2]キーを押す。
ソフトウェアの選択では、[X] Entire Distributionとして[F2]キーを押す。
ディスクの選択では、ディスクを選択して[F2]キーを押す。(c0d0)
ファイルシステムを自動配置しますか?では、[F4]キーを押して手動配置を選択する。
※ 自動配置では、/export/homeが別スライスとなるが、今回は、/とswapのみにしたいため
ファイルシステムとディスクの配置画面で、カスタマイズ[F4]キーを押す。
ディスクのカスタマイズ(c0d0)でswapに640MB、残りを全て/に割り振る。
Slice マウントポイント Size(MB) 0 / 12327 1 swap 640 2 overlap 12969 3 0 : :
インストール後にリブートしますか?では、[X] 手動リブートとして[F2]キーを押す。
このあとしばらくインストール作業が実施され、終わるとリブートする。リブート後はXウィンドウが起動し、Software 2 of 2をCDドライブに入れるよう指示されるので、入れて先に進む。2 of 2の次は、LanguageをCDに入れるよう指示されるので、入れて先に進む。これで一通りインストールが完了する。
ネットワークカードはインストール時には認識されていない。チップはRealtekの8139だ。RealtekのWebサイトからSolaris7/8用のドライバがダウンロードできる。これはSolaris9でも有効との情報がインターネット上のどこかに記載されていたので、これを使用する。2004/8/29時点では以下のようにリンクを辿る。downloads→RTL8139(A/B/C/D/8130)/810X series(Software) →Unix(Linux)→Solaris 7,8,9 and 10
このファイルをFDかCD-Rに入れてSolarisマシンに展開する。CD-Rの場合、Windows用のJuliet形式でも8+3文字形式でSolaris上からアクセスできるようだ。Installスクリプトを実行後、/etc/hostname.rtls0ファイルを新規作成しホスト名を記述する。touch /reconfigureを実行してからリブートすると、ifconfig -a でネットワークカードが認識されている。あとはネットワーク設定をすればよい。Solaris9標準インストールでunzipコマンドが使えるようになっている。
IPアドレスの設定は、/etc/hosts、/etc/netmasksに記述しておく。
DHCPクライアントとして設定する場合は、# touch /etc/dhcp.rtls0 として再起動する。ホスト名がunknownになってしまう有名な問題(仕様)があるので、割り付けられるIPアドレスを調べてから/etc/hostsにそのIPアドレスとホスト名を記述する。ブロードバンドルータ経由でインターネットに接続する環境ではDHCPの方が楽なので。
Software Companionは、CDにセットした後インストーラを実行する。Software Companionには、GNUのツール群等が収められている。
Solaris 9 x86推奨パッチクラスタ(9_x86_Recommended.zip)を展開し、./install_clusterを実行する。-nosaveオプションを指定すると旧いファイルの/var/sadmへのバックアップを抑制する。パッチは、シングルユーザモードで当てた方がよいので、init sでランレベルをシングルユーザに移行しておく。Return code 2でfailしているものは、適用済みパッチなので気にしない。
Solaris 9からHDDのDMA有効がデフォルトになった。
構成によっては1枚目のインストール後再起動時に立ち上がらなくなる問題が発生する。
→再起動直後に[Esc]でDevice Configuration
Assistantに入り、Boot Solaris→View/Edit
Property Settingsで"ata-dma-enabled"の値を0にする。
Solairs 9 9/04 ご使用にあたって >> インストールに関する注意事項とバグ情報にも記述があり、ソフトリブート時にハングするとあります。一度Power OffしてOnすると起動するので、/platform/i86pc/kernel/drv/ata.confに次の1行を追加します。
ata-revert-to-defaults=0;
Languagesまでインストールが終わったら、再起動後ログインしてコンソールからRealtekのドライバをインストール。sys-unconfigし再起動。
60日間評価版をインストールしてみる。
作業ディレクトリに上記tarファイルを展開する。
インストールには、以下の3つの方法がある。
ここでは2.コマンドラインでのインストールを実施する。
# ./installer -nodisplay
<継続するには Enter キーを押してください。>
{"!" 終了} で[Enter]キーを押す。バイナリコードライセンス契約書が表示されるので、文書の最後まで[Enter]を押して進む。「同意する」と漢字で入力する。
インストールするコンポーネントを選択する。デフォルトのままでよければ[6]を入力する。
この製品のインストール先 /opt でよければ[Enter]入力。
シリアル番号の入力では、2.60日間の試用シリアル番号 を選択する。
インストールの準備完了で、1.インストール開始を選択する。
インストール後、Sun Studio Compiler Collectionのパッチを確認します。Sun Studio Product SupportページからSun ONE Studio 8 Compiler Collectionを辿ると、以下のパッチが出ています(2004.8.30現在)
111713-08 112761-09 113825-02 115114-02 112756-09 113819-08 113986-10 112759-04 113821-01 114804-01
2004/8/16付のSolaris 9 x86 Recommended Patchesを適用した時点で、111713-08, 113986-10, 115114-02が適用済みだったので、残りをインストールする。パッチのインストールは以下のようにコマンドを実行する。
#patchadd -d ./111713-08
既にSun Studio 8を入れた後で、Studio 9が出ているのに気づいた。そこで、まずSun Studio 8のアンインストールを行い、続いてStudio 9に必要なパッチを入手してStudio 9をインストールする。
Sun Studio 9の入手(60日評価版)
Sun Studio 9のページから、右側メニューのTrial Downloadsを辿り、評価版をダウンロードする。
これらを作業用ディレクトリ上で展開する。
Sun Studio 8のアンインストール
以下のディレクトリへcdする。
# cd /var/sadm/prod/com.sun.sls8_compiler_collection_fcs # ls uninstall_Compilers.class uninstall_Solaris_patches.class uninstall_Documentation.class uninstall_Tools.class #
これらはアンインストール用プログラム(Javaバイトコード)となっているので、javaで実行する。
# java uninstall_Compileres # java uninstall_Documentation # java uninstall_Solaris_pathces # java uninstall_Tools
パッチのインストール
パッチは、Sunのサイト:Sun Studio - Patchesページより入手可能。
111713-08(09:2004/11/10) 113986-06(13:2004/10/21) 115114-01(02:2004/03/24) 111728-03(03:2004/05/08) 112786-23(34:2004/12/09)
これらは既に最新版が適用済みであった。
Studio 9のインストール
作業ディレクトリに展開されたinstallスクリプトをスーパーユーザで実行する。
# cd sunstudio9 # tar xf /tmp/studio9*.tar # ./installer
Sun[tm] Studio 9 インストールウィザードが起動するので、[次へ>]をクリックする。
バイナリコードライセンス契約書が表示されるので、◎同意する
として[次へ>]をクリックする
ロケールの選択では、英語、日本語、中国語にチェックされているので中国語のチェックを外して[次へ>]をクリックする
デフォルトインストールにチェックが入っているので、そのまま[次へ>]をクリックする
インストールディレクトリはデフォルトで/optになっているので、そのまま[次へ>]をクリックする
シリアル番号を入力では、[60日間の試用シリアル番号]をクリックし、生成された番号をメモして[次へ>]をクリックする。
インストールの準備完了画面で[インストール開始>]をクリックする。
インストール終了後、インストールの一覧が表示されるので[次へ>]をクリックする。
製品登録の案内が表示されるので[次へ>]をクリックする
インストールの後で・・・が表示されるので[終了]をクリックする。
インライン・アセンブラ
int add(int a1, a2); をインライン・アセンブリ記述する例。
まず、拡張子add.ilのファイルを用意する。
.inline add, 8 movl (%esp), %eax movl 4(%esp) %ecx addl %ecx, %eax .end
これを利用するCコードを記述する。
extern "C" { extern int add(int a1, int a2); } void someFunc() { int a1 = 123; int a2 = 456; int result = add(a1, a2); : }
一緒にコンパイルする。
$ CC -c some.cc add.il $ CC -o some some.o
インライン・アセンブラについては、man inline を参照。また、以下の記事も参考になる。
インライン・アセンブリ記述ルール
GNU関連のツールのバイナリが公開されている。INTEL/Solaris9用もあるので、GNUツール類はここから入手するのが簡単。/usr/local下に置く構成となっている。pkgaddコマンドでインストールする形式となっている。
$ su # pkgadd -d tar-1.14-sol9-intel-local
※GNU tarに関しては、/usr/sfw/binの中にgtarが入っていた。しかし、bz2形式には対応していないので、上記GNUtarをインストールする方が良い。
Solaris x86用のバイナリを入手する。
Solarisパッケージ形式とtar塊の2種類の形式で配布されている。今回はSolarisパッケージ形式をインストールする。
$ zcat jdk-1_5_0_01-solaris-i586.tar.Z | tar xf - $ ls COPYRIGHT README.html SUNWj5dev SUNWj5jmp SUNWj5rt LICENSE SUNWj5cfg SUNWj5dmo SUNWj5man $ su # pkgadd -d . SUNWj5rt SUNWj5dev SUNWj5cfg SUNWj5man SUNWj5dmo SUNWj5jmp : #
デフォルトでは、/export/homeの下にユーザのホームディレクトリを設けるようになっている。但し、オートマウント機能によって、/homeの直下に仮想的にホームディレクトリが見えるように運用することができる。この場合、/home直下に仮想的に置かれるディレクトリは、NFSでアクセスできる別マシンのものであってもよい。Solarisでは、ユーザのホームディレクトリはネットワーク上のどこか1箇所に存在し、どのSolarisマシンにログインしても/homeの下にユーザのホームディレクトリが見えるような構成を取っている。
オートマウント機能を利用する場合、/etc/auto_homeに以下の記述を追加する。
+auto_home * localhost:/export/home/&
ユーザの作成には、まずグループが作成されている必要がある。
$ su # groupadd delta # useradd -g delta -d /export/home/torutk -s /bin/bash -m torutk #
次に、/home直下にオートマウントする機能を利用する場合、ユーザのホームディレクトリを/home以下になるよう修正する。
# usermod -d /home/torutk torutk #
Solaris 9(4/04リリース)には、J2SE 1.4.2_04が標準搭載されている。Recommended patchを当てたら1.4.2_05になった。Solaris 9のリリース時期によってマイナーバージョンは違うものの、Javaは1.4系列が搭載されている。
antが/usr/sfw/binに入っているが、バージョンは1.4.1と古めである。要注意。
Software Companionには、GCC 2.95.3およびGCC 3.3.2が含まれている。GCC 3.3.2を使用する場合、/opt/sfw/bin より先に/opt/sfw/gcc-3/binにPATHを通す必要がある。
C言語、C++言語、FORTRAN、
Software Companionには、Python 2.2.3が含まれている。
Solaris 9には、Perl 5.6.1が標準搭載されている。
Software Companionには、Ruby 1.6.4が含まれている。
Software Companionには、Emacs 21.3.1およびXEmacs 21.4.14が含まれている。
ざっと使って2点問題があった。
1.ミニバッファにATOKの文字が常に表示され、本来表示される文字列が隠れる
回避方法1
LANG=C emacsと起動する。この場合、ATOKは使えない
回避方法2
Xリソースに、"*disableStatusArea: true"を設定する。
/usr/X/lib/X11/ja/app-defaults/Htt のリソース記述に追加する方法がある。
*disableStatusArea: true
などに置き換える。
2.Mark setのキーバインド(Ctrl+SPC)がATOKのオン/オフにオーバーライドされる
回避方法1
日本語入力は、X Window System(CDE)上であればATOKを使って対応できるようだ。しかしATOKはCtrl + SPCで切り替えられるので、Emacsのキーバインドと競合する。ATOKを使わないのであれば、LANG=C emacs& と起動することで回避可能。漢字入力は、SKKを使えばよいだろう。
回避方法2
/usr/X/lib/X11/ja/app-defaults/Htt のリソース記述を変更すると、Ctrl + SPCを別なキーに変更可能
*conversionOnKeys: Henkan_Mode <Ctrl>space <Ctrl>at
となっているのを
*conversionOnKeys: Henkan_Mode <Ctrl>backslash
などに置き換える。ただし、ATOKをONにした後、OFFにするにはCtrl-\では駄目で、Ctrl+SPCにしないといけない。こちらの設定変更方法は未判明。
漢字入力環境SKK
Software Companionには、gvim6.2が含まれている。
Sunがマルチメディア系処理のためのコアライブラリとして提供しているライブラリ。SPARCではVIS演算命令を使用する。
なお、GNOMEの性能向上にも寄与する。
Solaris x86ではOpenGLは搭載されていない。Mesaライブラリを入手することで、ソフトウェアエミュレーションのOpenGLを使用することが可能になる。Solaris x86用としては、SunPro Cコンパイラ用とGCC用のMakefileが用意されているので、ビルドは簡単。
ビルドメモ
$ tar xjf MesaLib-6.2.tar.bz2 $ cd Mesa-6.2 $ make solaris-x86 : $
これだと、libGL.a等のスタティックリンクライブラリしか生成されない。config/solaris-x86を修正する
! MKLIB_OPTIONS = -static - GL_LIB_NAME = libGL.a - GLU_LIB_NAME = libGLU.a - GLUT_LIB_NAME = libglut.a - GLW_LIB_NAME = libGLw.a - OSMESA_LIB_NAME = libOSMesa.a ------ ! MKLIB_OPTIONS = ! CXX=CC ! CXXFLAGS = -fast -KPIC -I/usr/openwin/include -DUSE_XSHM
glutは、MesaLibではなく、MesaDemosに含まれている。
なお、Solaris x86用にビルドされたバイナリを公開しているサイトがある。
性能を測る、日時を取得する、一定時間毎に処理を行いたい(周期処理)、などのプログラミング上のニーズがあります。
Pentium系CPUでは、CPUクロックごとに加算される64bitのタイムスタンプカウンタ(IA32_TIME_STAMP_COUNTER_MSR:通称TSC_MSR)があります。これをRDTSC
命令を使って読み出すことで、CPUクロックと同じ分解能を持つ精度のタイマが実現できます。
使用方法
アセンブリ言語でRDTSC命令を使いTSC_MSRの値を取得する処理を記述する。
.inline read_tsc, 0 cpuid rdtsc .end |
POSIX 1003.1
こちらは相対値ではなく、システム時刻を高精度で取得する機能である。精度はハードウェアによるが、最近の機種では1μ秒と思われる。
Solarisは、標準でCDE(Common Desktop Environment:共通デスクトップ環境)と呼ばれる、GUIツールキットにMotifを使用したXのデスクトップを採用している。しかし、もう1つのデスクトップとしてGNOMEを提供している。新規ユーザを作成後、初回にX上からログインする際に、CDEかGNOMEかどちらを使用するか選択する画面が表われる。また、Xログインダイアログの[オプション]→[セッション]でCDEかGNOME 2.0かを選択できる。
GNOME 2.0については、Solaris 9でも別途Sunから入手する必要があると思っていたが、標準で利用可能となっていた。Gladeなるインタフェースビルダーも装備されている。
ライブラリとしては、GKT+2.0、Pango 1.0.0、Bonobo 2.0、ORBit 2.0、Glib 2.0、といったちょっと前のGTK+バージョンである。
どこに書けばよいのか悩んだので調査
ログイン時にユーザの環境変数は、~/.bash_profile、デスクトップ環境固有のものは~/.dtprofileに記述すればよい。
SKKサーバの1つ。dbskkd-cdbホームページより入手する。
cdb-0.55を作業ディレクトリに展開し、ビルドする。続いてdbskkd-cdb-1.01を作業ディレクトリに展開する。
work$ tar xzf cdb-0.55.tar.gz work$ tar xzf dbskkd-cdb-1.01.tar.gz work$ cd cdb-0.55 cdb-0.55$ make : cdb-0.55$ cd ../dbskkd-cdb-1.01 dbskkd-cdb-1.01$ chmod +w makeskkcdb.sh dbskkd-cdb-1.01$ vi makeskkcdb.sh dbskkd-cdb-1.01$ vi skktocdbm.sh
makeskkcdb.shファイルに記述されているSKK辞書のパスおよびcdbmakeコマンドのパスを修正する。
#!/bin/sh #$Id: makeskkcdb.sh,v 1.1 1998/12/12 11:01:36 kenji Exp $ ./skktocdbm.sh < /opt/sfw/share/skk/SKK-JISYO.L | \ ../cdb-0.55/cdbmake SKK-JISYO.cdb SKK-JISYO.L.tmp
また、skktocdbm.shの中でawkを呼び出している部分を、gawkを呼ぶように修正する。
gawk ' /^[^;]/ {
dbskkd-cdb-1.01$ ./makeskkcdb.sh dbskkd-cdb-1.01$ su # mkdir /usr/local/share/skk # cp SKK-JISYO.L.cdb /usr/local/share/skk # exit dbskkd-cdb-1.01$ vi Makefile dbskkd-cdb-1.01$ gmake : dbskkd-cdb-1.01$ su # make install : # vi /etc/services # vi /etc/inetd.conf # ps -e |grep inetd 180 ? 0:00 inetd # kill -HUP 180 #
Makefileを修正する。LDFLAGSの設定から-lutilを除き、-lsocket -lnslを追加する。
LDFLAGS = ./libcdb.a -lsocket -lnsl
inetd 経由で起動するために、/etc/servicesに追加する
skkserv 1178/tcp # SKK Japanese input method
/etc/inetd.confに追加する
skkserv stream tcp nowait nobody /usr/local/libexec/dbskkd-cdb
X Window System上でのSKK日本語入力クライアント。
work$ tar xzf skkinput-2.06.4.tar.gz work$ cd skkinput-2.06.4 skkinput-2.06.4$ vi Imakefile
Imakefileを修正する。#define Default_FontSet のフォント設定を適切なものに修正する。
skkinput-2.06.4$ xmkmf -a : skkinput-2.06.4$
世の中的にはGNU tarが標準的に使われており、これでアーカイブされたものの中にはSolaris標準のtarでは正常に抽出できないものが結構存在するようだ。そこで、GNU tarを使うようにする。
Sun Studio 9を使用してBoost C++ライブラリをビルドする。
まず、Boost構築ツールjamをビルドする
work$ cd boost_1_31_0/tools/build/jam_src jam_src$ ./build.sh sunpro :
次に、Boostをビルドする
jam_src$ cd ../../.. boost_1_31_0$ export PYTHON_ROOT=/opt/sfw boost_1_31_0$ export PYTHON_VERSION=2.2 boost_1_31_0$ bjam -sTOOLS=sunpro
./bootstrap.sunpro/jam0 -f build.jam --toolset=sunpro --toolset-root=/opt/SUNWspro/ don't know how to make yyacc.c don't know how to make mkjambase.c :PATHに/usr/ccs/binを追加すればクリア
std::numeric_limits<unsigned long long>が多重に定義されています。http://lists.boost.org/MailArchives/boost-users/msg06700.php
boostのライブラリはヘッダーファイル提供が多いので、ビルドに失敗しても一部は利用可能。
Solaris 9には、標準でApache 1.3.29が搭載されている。
$ pkginfo | grep Apache system SUNWaclg Apache Common Logging system SUNWapchd Apache Web Server Documentation system SUNWapchr Apache Web Server (root) system SUNWapchu Apache Web Server (usr) $
まずこれらパッケージは削除します。SUNWapchrへの依存関係を持つ別パッケージSUNWipplr、SFWserwbがあるので、これらも削除する。(SUNWipplrは、"Internet Printing Protocol(IPP) ilstener"でApacheの設定ファイルのみ、SFWserwbは、"web interface for Ser SIP Express Router")
SUNWaclgについては、Sun ONE Application Serverなど大物が依存しているのでそのまま残す。
$ su # pkgrm SUNWapchd SUNWapchu SUNWipplr SFWserwb SUNWapchr : #
Sunfreewareサイトに、Apache 2.0.52のバイナリパッケージが置かれています。これを入れるのが楽ですが、configure設定が違う場合は自分でソースからビルドします。
以下がバイナリパッケージのconfigureオプションです。
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-ssl=shared --enable-ssl --with-ssl=/usr/local/ssl
work$ tar xvjf httpd-2.0.52.tar.bz2 : work$ cd httpd-2.0.52 httpd-2.0.52$
情報少なくて悩んだところ。まずはオプションの調査から。
オプション | 内容 | デフォルト | 指定例 |
---|---|---|---|
--prefix | インストール先ディレクトリ | /usr/local/apache2 | |
--enable-dav | WebDAV | shared | |
--enable-dav-fs | |||
--enable-mods-shared | all | ||
--enable-rewrite | shared | ||
--enable-so | DSO有効 | ||
--enable-speling | shared | ||
--enable-ssl | shared | ||
--with-apr | |||
--with-ssl | OpenSSLインストールディレクトリ | /usr/local/ssl | |
--with-z | zlibインストールディレクトリ |
httpd-2.0.52$ CC=cc ./configure --enable-so --enable-dav --enable-rewrite \ --enable-speling --enable-ssl --with-ssl=/usr/local/ssl : httpd-2.0.52$ make : コンパイルエラー発生
--enable-spellingを外すとエラーがなくなるようです。
httpd-2.0.52$ LD_LIBRARY_PATH=/usr/local/ssl/lib ./configure --enable-so \ --enable-dav --enable-rewrite --enable-speling --enable-ssl --with-ssl=/usr/local/ssl : httpd-2.0.52$ make
RFC 2291およびRFC 2518で定義された分散オーサリング・バージョン管理プロトコルを持つHTTP拡張です。Apacheのconfigure時に、--enable-davとします。
httpd-2.0.52$ CC=cc ./configure --prefix=/usr/local/apache --enable-mods-shared=all --enable-ssl=shared --enable-dav=shared --enable-rewrite --with-ssl=/usr/local/ssl : httpd-2.0.52$ make : httpd-2.0.52$ make install : httpd-2.0.52$
GCC 3.3でビルド
httpd-2.0.52$ ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-ssl=shared --enable-dav=shared --enable-rewrite --enable-spelling --with-ssl=/usr/local/ssl : httpd-2.0.52$ gmake : httpd-2.0.52$ gmake install : httpd-2.0.52$
DAVLockDB /usr/local/apache/logs/DAVLock Alias /dav "/export/home/webdav" <Location /dav> DAV on </Location>
/usr/local/apache/logsのディレクトリは、ユーザnobody、グループnobodyに変更しておきます。/export/home/webdavディレクトリを作成し、これもユーザnobody、グループnobodyに変更します。
LoadFile /usr/local/lib/libiconv.so LoadModule encoding_module modules/mod_encoding.so <IfModule mod_encoding.c> EncodingEngine on NormalizeUsername on SetServerEncoding UTF-8 DefaultClientEncoding JA-AUTO-SJIS-MS SJIS AddClientEncoding "cadaver/" EUC-JP <IfModule>
まず、iconv_hookライブラリをビルドします。続いて、mod_encodingをビルドします。WebDAV Resources JPサイトから以下のファイルを入手できます(2004年12月現在)
1.は、対象がApache 1.3となっているので分かりにくいですがApache 2でも必要です。まず1.を展開し、中に含まれるmod_encoding.cファイルを2.に差し替えます。
work$ tar xzf mod_encoding-20021209.tar.gz work$ cd mod_encoding-20021209 mod_encoding-20021209$ cp ../mod_encoding.c.apache2.20040616 mod_encoding.c mod_encoding-20021209$
iconv_hookのビルド
GCC以外のコンパイラではビルドができない模様。
mod_encoding-20021209$ cd lib lib$ CC=cc ./configure : checking for gcc... (cached) gcc checking whether the C compiler (gcc ) works... no configure: error: installation or configuration problem: C compiler cannot create executables. lib$
仕方が無いので、PATHをGCC-3用に変更してconfigureすることに。
mod_encoding-20021209$ cd lib lib$ ./configure lib$ gmake lib$ su # gmake install
mod_encodingのビルド
書籍「WebDAVシステム構築ガイド」を元に、Sun Cコンパイラ用に手順修正。
mod_encoding-20021209$ CC=cc ./configure \ --with-apxs=/usr/local/apache/bin/apxs : mod_encoding-20021209$ /usr/local/apache/bin/apxs -c mod_encoding.c mod_encoding-20021209$ cc -G -o mod_encoding.so -Kpic mod_encoding.c \ -I/usr/local/apache/include -I/usr/local/include \ -L/usr/local/lib -liconv_hook : mod_encoding-20021209$ su # cp mod_encoding.so /usr/local/apache/modules/ #
新生バージョン管理ツールのSubversionです。
Sunfreewareサイトからバイナリ・パッケージを入手することができます。(日本のミラーサイト[SunSITE]) ややバージョンが古いです。
ソースから構築するのは、必要なライブラリやツールが多々あって面倒です。
2004年12月16日現在
これらはいずれも、Sunfreewareサイトからバイナリパッケージとして入手できます。なお、Solaris Software Companio CDをインストールしていると、GCCについてはGCC 3.3が/opt/sfw/gcc-3以下に入っています。
subversionのコマンドは、/usr/local/binにあります。必要なライブラリは/usr/local/libおよb/opt/sfw/gcc-3/libにあります。これらを環境変数に設定します。
環境変数 | 必要なパス | ||
PATH | /usr/local/bin | ||
LD_LIBRARY_PATH | /usr/local/lib /opt/sfw/gcc-3/ |
subvresionのサーバー機能は、inetd経由で実行する方法、デーモンで実行する方法があります。
/etc/services、/etc/inetd.confにSubversionの設定を記述します。SVNサーバはデフォルトでは3690ポートを使用することが公的に割り当てられています。
svnserve 3690/tcp # Subversion server svnserve 3690/udp # Subversion server
# Subversion server svnserve stream tcp nowait svn /usr/local/bin/svnserve svnserve -i -r /export/home/svn/repositories
なお、上記記述はsvnserveをユーザsvnで実行させる設定です。
subversionのバイナリパッケージを入れる場合、GCC-3のライブラリも/usr/local/libにあることを前提としています。しかし、SunFreewareのGCC-3ライブラリは/opt/sfw/gcc-3/libにあるため、何らかの方法でGCC-3のライブラリのパスを指定する必要があります。Solarisだと、以下の方法が考えられます。
などが考えられます。バイナリパッケージの場合1は困難です。2.はinetd経由の場合どこに環境変数を設定するのか不明です。4.はあまりにダーティなやり方なので、3.がよさそうです。
/var/ld/ld.configファイルを初期ライブラリパス/usr/libで新規作成
# crle -c /var/ld/ld.config -l /usr/lib # crle Configuration file [version 4]: /var/ld/ld.config デフォルトライブラリパス (ELF): /usr/lib トラステッドディレクトリ (ELF): /usr/lib/secure (システムデフォルト) コマンド行: crle -c /var/ld/ld.config -l /usr/lib #
続いて、/usr/local/lib、/opt/sfw/gcc-3/lib をライブラリ検索パスに追加
# crle -u -l /usr/local/lib:/opt/sfw/gcc-3/lib # crle Configuration file [version 4]: /var/ld/ld.config デフォルトライブラリパス (ELF): /usr/lib:/usr/local/lib:/opt/sfw/gcc-3/l ib トラステッドディレクトリ (ELF): /usr/lib/secure (システムデフォルト) コマンド行: crle -c /var/ld/ld.config -l /usr/lib:/usr/local/lib:/opt/sfw/gcc-3/lib #
順番が逆転したかもしれませんが、リポジトリを作成します。上記サーバー設定で、svnserveは/export/home/svn/repositories をルートディレクトリして公開するようになります。そこで、各プロジェクトのトップディレクトリは、この/export/home/svn/repositories直下に作成します。
svn$ mkdir repositories svn$ cd repositories repositories$ svnadmin create helloagain repositories$ ls helloagain/ repositories$ cd helloagain helloagain$ ls README.txt dav/ format locks/ conf/ db/ hooks/ helloagain$
Subversionでは、アクセス制御についてはリポジトリ毎に作成されるconf/svnserve.confに記述します。
[general] anon-access = none auth-access = write password-db = /export/home/svn/conf/password匿名でのアクセスは不許可、認証されたアクセスは書き込み可能、ユーザー管理情報は別ファイル(password)に記載します。ファイルパスは絶対パスでも相対パスでも可。
[users] tom = cat jerry = ratsubversionのログイン名とパスワードを定義します。
匿名アクセスは不可、認証済みアクセスは読み書き可、認証用パスワードファイルは外部ファイル/export/home/svn/conf/passwordに記載。
Apache FoundationのJakartaプロジェクトで開発されているServlet/JSPサーバTomcatを設定する。Tomcat 5.5.xは、J2SE 5.0(通称Tiger)に対応したTomcatのバージョンであり、Servlet 2.4/JSP 2.0仕様に対応している。
Apache Jakartaプロジェクトのサイトから、Tomcat 5.5.xバイナリ版を入手する。2004年1月5日現在、安定版は5.5.4である。
/usr/local の直下に上記ファイルを解凍・展開する。
work$ cd /usr/local local$ su # tar xvzf ~/work/jakarta-tomcat-5.5.4.tar.gz : #
Administration Toolは別パッケージ化されているので、Tomcat 5.5.xバイナリ版の並びにあるパッケージを入手する。
/usr/localの直下にこのファイルを解凍・展開すれば、tomcat-5.5.4本体のディレクトリ構成の上に上書きインストールできる。AdministrationToolを使用するには、conf/tomcat-users.xmlに管理ユーザを設定しておく必要がある。
$CATALINA_HOME/conf/tomcat-users.xmlを編集
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager"/> <role rolename="admin"/> <role rolename="root"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="role1" password="tomcat" roles="role1"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="root" password="root" roles="root,admin,manager,tomcat"/> </tomcat-users>
JDKのパスを指定する環境変数JAVA_HOME、Tomcatのパスを指定する環境変数CATALINA_HOME、およびTomcatのJavaライブラリを指定する環境変数CLASSPATHを設定しておき、$CATALINA_HOME/bin/startup.shを実行する。
# bash $ export JAVA_HOME=/usr/jdk/jdk1.5.0_01 $ export CATALINA_HOME=/usr/local/jakarta-tomcat-5.5.4$ export CLASSPATH=.:$CATALINA_HOME/common/lib/servlet-api.jar:$CATALINA_HOME/common/lib/jsp-api.jar$ $CATALINA_HOME/bin/startup.sh Using CATALINA_BASE: /usr/local/jakarta-5.5.4 Using CATALINA_HOME: /usr/local/jakarta-5.5.4 Using CATALINA_TMPDIR: /usr/local/jakarta-5.5.4/temp Using JAVA_HOME: /usr/jdk/jdk1.5.0_01 $
エラーなく終了すれば、別マシンからポート8080をHTTPで叩き、動作確認する。
終了時は、$CATALINA_HOME/bin/shutdown.sh を実行する。
UNIX環境においてデーモン起動するためのコマンドjsvcがTomcatに添付されている。しかし、これはソースファイルとして添付しているので、自力でビルドする必要がある。
# cd $CATALINA_HOME/bin # tar xzf jsvc.tar.gz # cd jsvc-src # PATH=$PATH:/opt/sfw/gcc-3/bin:/opt/sfw/bin:/usr/ccs/bin:/usr/ucb # autoconf # chmod +x configure # ./configure : # gmake : # cp jsvc .. # cd $CATALINA_HOME # ./bin/jsvc -Djava.endorsed.dirs=./common/endorsed -cp ./bin/bootstrap.jar -outfile ./logs/catalina.out -errfile ./logs/catalina.err org.apache.catalina.startup.Bootstrap #
終了時は、直接プロセスIDを指定してkill を実行する。
# cat /var/run/jsvc.pid 1234 # kill 1234 #
init.d用の雛型ファイルが提供されているので適宜修正して然るべき場所へ置く。
$CATALINA_HOME/bin/jsvc-src/native/Tomcat5.shを修正
#!/bin/sh JAVA_HOME=/usr/jdk/jdk1.5.0_01 CATALINA_HOME=/usr/local/jakarta-tomcat-5.5.4 DAEMON_HOME=/usr/local/jakarta-tomcat-5.5.4 TOMCAT_USER=root TMP_DIR=/var/tmp CATALINA_OPTS= CLASSPATH=\ $JAVA_HOME/lib/tools.jar:\ $CATALINA_HOME/bin/commons-daemon.jar:\ $CATALINA_HOME/bin/bootstrap.jar case "$1" in start) $DAEMON_HOME/bin/jsvc \ -user $TOMCAT_USER \ -home $JAVA_HOME \ -Dcatalina.home=$CATALINA_HOME \ -Djava.io.tmpdir=$TMP_DIR \ -outfile $CATALINA_HOME/logs/catalina.out \ -errfile '&1' \ $CATALINA_OPTS \ -cp $CLASSPATH \ org.apache.catalina.startup.Bootstrap ;; stop) PID=`cat /var/run/jsvc.pid` kill $PID ;; *) echo "Usage tomcat.sh start/stop" exit 1;; esac
# cd /usr/local/jakarta-tomcat-5.5.4/bin/jsvc-src/native # cp Tomcat5.sh /etc/init.d # chmod u+x Tomcat5.sh # ln Tomcat5.sh /etc/rc3.d/S99tomcat # ln Tomcat5.sh /etc/rc0.d/K00tomcat
WebDAVの実装系の1つ。J2EE Webアプリケーションとしてパッケージされているため、Servlet/JSP環境上で動作する。
Apache Jakartaプロジェクトのサイトから、Slideバイナリ版を入手する。2005年1月5日現在、安定版は2.1である。
ワーク領域に展開し、jakarta-slide-server-bin-2.1/slide/webappディレクトリの中にあるslide.warとslide-doc.warファイルを、Tomcat5のwebappsディレクトリにコピーする。Tomcatを再起動する。
http://localhost:8080/slide/ とアクセスする。
リレーショナルデータベース管理システムの1つ。
Solaris 9 のCompanion CDには、mysql 4.0.15が含まれている。
$ pkginfo -l SFWmysql PKGINST: SFWmysql NAME: mysql - MySQL Database Management System CATEGORY: system ARCH: i386 VERSION: 4.0.15,REV=2004.07.08.10.24 BASEDIR: /opt VENDOR: http://www.mysql.com (以下略)
/opt/sfw/READMEs/README.SFWmysql を読んで設定を実施する。
# /opt/sfw/mysql/bin/mysql_install_db #
/opt/sfw/mysql/var にデータベースファイル等が生成される。別なディレクトリをデータベースファイル領域とする場合、オプションで指定できる模様。
# groupadd mysql # useradd -g mysql -d /export/home/mysql -s /bin/bash -m mysql # usermod -d /home/mysql mysql #
mysqlユーザで必要なディレクトリにアクセスできるようアクセス権を変更する
# chown -R root /opt/sfw/mysql # chown -R mysql /opt/sfw/mysql/var # chgrp -R mysql /opt/sfw/mysql # chmod -R g+w /opt/sfw/mysql #
# cp /opt/sfw/mysql/share/mysql/my_medium.cnf /opt/sfw/mysql/var/my.cnf #
実行
# su # /opt/sfw/mysql/bin/mysqld_safe --user=mysql #
停止
# /opt/sfw/mysql/bin/mysqladmin -u root shutdown #
$ /opt/sfw/mysql/bin/mysqladmin version /opt/sfw/mysql/bin/mysqladmin Ver 8.40 Distrib 4.0.15, for pc-solaris2.9 on i386 Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Server version 4.0.15-log Protocol version 10 Connection Localhost via UNIX socket UNIX socket /tmp/mysql.sock Uptime: 1 min 10 sec Threads: 1 Questions: 1 Slow queries: 0 Opens: 6 Flush tables: 1 Open tables: 0 Queries per second avg: 0.014 $
# cp /opt/sfw/mysql/share/mysql/mysql.server /etc/init.d/mysql.server # ln /etc/init.d/mysql.server /etc/rc3.d/S99mysql # ln /etc/init.d/mysql.server /etc/rc0.d/K00mysql # ln /etc/init.d/mysql.server /etc/rc1.d/K00mysql # ln /etc/init.d/mysql.server /etc/rc2.d/K00mysql # ln /etc/init.d/mysql.server /etc/rcS.d/K00mysql #
データベース起動後、rootで接続し、GRANTコマンドを使用する。
$ mysql -u root -p Enter password: : mysql>
MySQLのサイト(日本のミラーサイト)から、Solaris 9(x86, 32bit)バイナリをダウンロードする。バイナリには、Standard版/Max版/Debug版がある。Standard版とMax版の違いは、クラスター、Berkeley DBエンジン、その他テスト不十分な追加機能が入っているか否かである。通常はStandard版を選べばよい。
Solaris標準tarコマンドにはバグがあるため、GNUtarで展開する。以下/optの下に置く前提で進める。
展開した中にINSTALL-BINARYがあるのでインストール手順はこれを参照する。
# cd /opt # /usr/sfw/bin/gtar xzf /tmp/mysql-standard-4.1.8-pc-solaris2.9-i386.tar.gz
バグ管理システムの1つ。Javaで書かれたWebベースプログラム。Issueは、バグに限らず解決すべき課題を指す。
Scarabのサイトから最新版をダウンロードする。
$ cd work $ /usr/sfw/bin/gtar xzf scarab-1.0-b19.tar.gz
Tomcat 4.1.29が同梱されている。
JDKおよびAntが必要となる。
build/default.propertiesに初期設定が書かれている。このファイルは変更せずに、build/build.propertiesファイルを新規作成し、設定をオーバーライドする。
scrab.system.mail.host=???
MySQLにユーザーscarabを作成する
work$ mysql -u root -p mysql> GRANT ALL PRIVILEGES ON scarab.* TO scarab@localhost; Query OK, 0 rows affected(0.09 sec) mysql>
Scarabのビルドを実行する。
scarab-1.0-b19$ export JAVA_HOME=/usr/jdk/j2sdk1.4.2_05 scarab-1.0-b19$ export ANT_HOME=/usr/local/java/apache-ant-1.5.4 scarab-1.0-b19$ PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH scarab-1.0-b19$ PATH=$PATH:/opt/sfw/mysql/bin scarab-1.0-b19$ cd build build$ ant :
データベースの初期化を実行する。
build$ ant create-db :
target/scarab/WEB-INF/conf/CustomSettings.propertiesを編集する。
#system.mail.host=smtp.nildram.co.uk #system.mail.smtp.from=scarab@cacoethes.co.uk
実行用シェルに実行権限を付加する。
scarab-1.0-b19$ cd tomcat/bin bin$ chmod +x catalina.sh bin$ chmod +x startup.sh bin$
Scarab同梱のTomcatを実行する。
bin$ ./startup.sh Using CATALINA_BASE: /export/home/torutk/work/scarab-1.0-b19/tomcat Using CATALINA_HOME: /export/home/torutk/work/scarab-1.0-b19/tomcat Using CATALINA_TMPDIR: /export/home/torutk/work/scarab-1.0-b19/tomcat/temp Using JAVA_HOME: /usr/jdk/j2sdk1.4.2_05 bin$
ブラウザで、http://localhost:8080/scarab/にアクセスする。
デフォルト設定を変更していなければ、ユーザー名Administrator、パスワード1でアクセスできる。
tに指定する値 | 内容 |
generic | x86系CPUどれでも動作するコードを生成。 |
native | コンパイルを実行しているCPUを判別し、そのCPUに最適となるコードを生成 |
386 | 80386 CPUで最適となるコードを生成 |
486 | 80486 CPUで最適となるコードを生成 |
pentium | Pentium CPUで最適となるコードを生成 |
pentium_pro | Pentium Pro CPUで最適となるコードを生成 |
pentium3 | Pentium3 CPUで最適となるコードを生成 |
pentium4 | Pentium4 CPUで最適となるコードを生成 |