2004-12-30

まとめをかねてもう一度

ふふふ、実はPowerBookの跡継ぎを入手したのだ。今度は15インチの1.5GHz。G5までは我慢できなんだ。
で、こいつのPantherにこれまでやった内容を再度行うことにした。localへの移行とかでいろいろごちゃごちゃしたし、ちょうどいいかなぁ、とね。やった通りのメモを置いておく。

で、もちろんこの辺を入れるためにはXcodeがちゃんと入っていないとまずいんやけど、ここで躓いていたのでめも。
なぜかソフトウェアリストアではXcodeがちゃんと入らず、前代のために購入したPantherについてきたインストーラで入れても何やらgccで実行ファイルを作れないと言ってconfigureで落ちてしまう。
結局ADCから送られて来ていた1.1のインストーラでインストールしたときにうまく行ったのだが、何が悪かったのかは不明。
多分、単にXcodeは1.1じゃないといけないのか、リストア実行中にソフトウェアアップデートが動いていたりしたのがまずかったのか、あるいはリストアのxcodeが壊れていたのか、そんな所かな。Xcodeのインストールと更新はちゃんとしておいた方が無難です。てか、普通インストーラとアップデートを同時に動かしたりしませんから。切腹。

閑話休題。まずportsから。
cd /usr/local
cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od login
cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od co -P darwinports
mv -Rf darwinports/dports ./dports
cd darwinports/base/
./configure --prefix=/usr/local
make
make install

ports.confとかは/usr/local/etcに置かれる。ports.confとsouces.confを確認。多分sources.confはdportsフォルダを指すように修正する必要があるはず。
あと、/etc/profileを修正して、/usr/local/binやら/usr/local/sbinなんかにパスを通しておく。で、この先の作業のために
export $PATH=$PATH:/usr/local/bin:/usr/local/sbin
としておく。

次はapache2を入れる。
cd /usr/local/dports/www/apache2
ports install
cd /usr/local/apache2/conf/
cp httpd.conf.sample httpd.conf


PHP5も。
cd /usr/local/dports/www/php5
ports install +apache2

Apache2の設定をおこなう。次の2行を/usr/local/apache2/conf/httpd.confの適当な場所に追加
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php


さらにsubversion。
cd /usr/local/dports/devel/subversion
port install subversion +mod_dav_svn

リポジトリを作成する。今回は/usr/localが別パーティションなんで/usr/local以下にsvnrootを作る。
cd /usr/local
mkdir svnroot
cd svnroot
mkdir test
svnadmin create --fs-type fsfs test

あと、パスワードファイルも作る。
htpasswd -c passwd [ユーザ名]
パスワードを2回聞くので、適宜設定。さらに設定するユーザ分、-cを外して繰り返す。
で、apacheにも設定。httpd.confに
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

というのをLoadModuleの最後に、
# Location for subversion
<Location /svn>
DAV svn
SVNParentPath /usr/local/svnroot
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /usr/local/svnroot/passwd

<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>

という記述をLocationの記述のところにそれぞれ加えておく。

最後に、web共有でapache2を使うようにする。
cd /usr/sbin
mv httpd httpd13
mv apachectl apache13ctl
ln -s ../local/apache2/bin/httpd httpd
ln -s ../local/apache2/bin/apachectl apachectl


以上でセットアップ完了。

osXでmount

unixを使ったことのある人なら多分/homeや/usr/local位は別パーティションを当てたいと思うのではないか、などと思う。俺はそうやから。で、やってみた。TigerじゃなくてPanterやけど。

参考にしたのはLife with MacOSXという日記サイトらしき所の去年の6月の11日のエントリ。
ぐぐって見つけたんやけど結構面白そう...また暇があったらチェックしてみよう。

まず何を別にするかやけど、/Usersと/usr/localを分けようと思った。/usrはいろいろ入っていてややこしそうだったのと、/ApplicationsやらはどのみちOSを入れ直すたびに入れ直さなきゃいけないので一緒かな、ということで。

基本的にすることは3つ。別パーティションを用意して内容をコピーするのと、/etc/fstabファイルでマウントポイントを設定するのと、vsdbutilで所有権をちゃんと識別するように変更すること。

最初のコピーについては、/Usersはいるけど/usr/localは空っぽなんで必要ない。
/UsersにはUsers、/usr/localにはlocalというパーティションを用意して、Usersにはrootでcp -Rfしてファイルを全部コピーした後chownで各ユーザのパーミションに直しておく。
あと、ちゃんと読み込めていることを確認するために用意したパーティションの直下になんかファイルを置いたりした。

で、今度はマウントポイントの設定。の前にいったん用意したパーティションをディスクユーティリティでアンマウントしておく。
アンマウントがすめば、いよいよ設定ファイルを記述する。記述するのは以下の2行。
LABEL=Users /Users hfs rw
LABEL=local /usr/local hfs rw

このファイルの書式は、
LABEL=[ボリュームラベル] [マウントポイント] [フォーマット] [読み書きモード]
指定したボリュームラベルのボリュームを指定したマウントポイントにマウントする、hfsもhfs+もフォーマットはhfsと書き、読み書きモードは読み込み専用はro、読み書きならrw、「,」に続けてnoautoとすれば自動マウントされないらしい。

設定がすめば元フォルダを消してからマウントしてみる。これもディスクユーティリティを使う。で、ちゃんと設定したマウントポイントにマウントできるかどうか確かめてみたりする。ちなみにデスクトップにドライブを置く設定にしていれば、デスクトップにも出てくるので慌てないように。
このときにうまく/usr/localがマウントできなくなってしまってちょっとはまった。どうやら作業中に誤ってマウントできているディレクトリをrmしてしまったらしい。この場合、mkdirでマウント先フォルダを作ってからマウントしたらうまくいった。

最後に所有権の認識のモードを設定する。これにはvsdbutilというのを使う。これはsuで使わないといけない。こんな感じ。
vsdbutil -a /Users
vsdbutil -a /usr/local

-aは認証チェックを有効にするオプションで、ほかに何やらチェックするらしい-c、無効化する-d、全部初期化する-iというのがある。で、その後は操作する対象のディレクトリらしい。

以上でとりあえず動いている。なんか問題があったらまた書こうっと。

2004-12-25

eclipseのインストール

MacOSX版のeclipseSDKとNLpack-eclipse-RCP-3.0.x-linux-gtk.zip(日本語化パック)をダウンロードしてくる。
このうち日本語化パックは解凍しないよう注意する。Safariの「安全なファイルは開く」オプションを切っとく事。

で、eclipseSDKと日本語化パックを解凍するんやけど、日本語化パックを解凍するときにunzipを使ってやるのがみそ。
eclipseSDKを解凍したeclipseフォルダが置いてあるフォルダでunzipする事で、日本語化パックの中のeclipseフォルダの中身がちゃんとマージされる。osXの上書きはフォルダ自体を上書きするんで、ファインダで上書きしたら元のeclipseが消えちゃう。

ま、そんだけのメモ。

JBOSSのインストール

JBoss自体はJBossのダウンロードページからダウンロードして、解凍して、適当な所に置けば良いだけ。
今回は/usr/local以下に解凍して/usr/local/jboss-4.0.0となった。

で、この中の/bin/の中でrun.shを実行すれば動くんやけど、JAVA_HOMEが設定されてないといけない。
全ユーザに対する環境変数の設定ファイルは/etc/profileで、こいつに

JAVA_HOME="/Library/Java/Home"
export JAVA_HOME

と書けば良い。

で、jbossのホームディレクトリ以下の/serversの下の各フォルダ(基本defaullt)の下にあるdeployの中にwarファイルやらearファイルやらその展開版(拡張子つけたフォルダ)を置けばデプロイ出来るんやけど、これはシンボリックリンクでも問題なく動くらしい。
素晴らしい。ビルドフォルダへのリンクを置いといてお手軽開発が出来るじゃないですか。

System Preferences...でapache2を起動する

どうやら/usr/sbinにあるapachectlを使って起動しているらしいので、/usr/sbinに行き、

mv httpd httpd13
mv apachectl apache13ctl

とでもして現バイナリを待避した後

ln -s ../local/apache2/bin/httpd httpd
ln -s ../local/apache2/bin/apachectl apachectl

としてみた。この後System Preferences...の共有からパーソナルweb共有を行うと...
ちゃんとapachce2を立ち上げてくれたらしい。おっけ。

appleのUNIX連携周りもだんだん見通しよくなってきた気がする。それとも元々だったのか...?
前はUNIXものを手でアップグレードすると整合性を取るのが大変だったように思うんやけど...馴れかもしれない。

いよいよsubversion

とうとうsubversionを入れてみようと思う。なんにでも入れたいのです。subversion。

まずはPortsfileを読んでオプションなどを確認。
mod_dav_svnはvariantで対応らしい。pythonもvariantだけど、もうwebsvnなら何も無しで動きそうなのがわかってるので特に入れない。なんで、port install subversion +mod_dav_svnで行きそうかなぁ、てな塩梅ですな。

が、そうはうまくは行かないのでした。APXSが古いっぽいなどと言いつつ止まってしまった。
どうもインストール後に移動したせいで元のインストール先/opt/localに見に行ってしまっているらしい。どっかにインストール履歴を置いてるんやね。

で、/usr/localに移してたのをいったんもとに戻して、全部uninstallして、再度localに戻した。この点については一個前のポストのportのインストール先に反映させておく。

apache2を入れ直した所で再度port install subversion +mod_dav_svnとしてみる。
portsを入れ直したのでまた時間がかかるんやけど...今度はちゃんと入った。

リポジトリは/home/svnrootとした。/homeはosXでは使ってないので別ドライブを割り当てやすい。svnユーザはSystem Preference...で追加する。で、mkdir /homemkdir /home/svnrootchown -Rf svn:svn /home/svnrootてな具合でリポジトリ置き場を作成。 後はsvnユーザになってsvnadmin create --fs-type fsfs testみたいにして作る。

今度は設定。基本的にはFreeBSDの時と同じで良いんやけど、インストーラがあんまり何もしてないので全部自分でする必要がある。まずはLoadModuleの最後に以下の2行を追加。

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

で、svn用のLocationを追加。

# Location for subversion
<Location /svn>
DAV svn
SVNParentPath /home/svnroot
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /home/svnroot/passwd

<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>

最後にpasswdファイルを作って終了。

cd /home/svnroot
htpasswd -c passwd [適当なユーザ名]

パスワードを2回聞いてくるので適当に同じパスワードを入れて終了。

教訓:portsとか使ったときは途中で設定を変えたり入った物を動かしたりしたらえらい事になるのでした。
まる。

portsのインストール先

/usr/local以下が空っぽなのに/opt/localに入れるのもなんなので、/usr/local以下をportsに使わせる事にした。
その設定など諸々を...

まず、インストールした物を全てアンインストールしないといけない。portsはインストール先を覚えているんで、portsでインストールした物を動かすとまずいんですな。
現在apache2とphp5が入っているので、まずdports/www/php5以下でport uninstall php5して、その後../apache2に行って同様にport uninstall apache2する。

で、その後ちょっと無茶なんやけど/opt/local以下をすべて/usr/local以下に移動する。
suしてから、mv -f /opt/local/* /usr/local
で、cd /etc/ports/とportsの設定フォルダに行って、ports.confを開き、
/opt/localとなっている所を/usr/localに書き換えていく。たぶんportdbpathとprefixだったと思うけど...

後は/opt/local/以下の各所に通していたPATHを/usr/local以下の同じ場所に書き換え。
このときにどのファイルだったか思い出せずに苦労したのでメモっておこう。
tcshなどのcsh系が/etc/csh.loginを見て、多分他のなんちゃらshでは/etc/profileを見るらしい。
なんで基本/etc/profileを編集すればよし。念のため/etc/csh.loginも修正しておく。tcshを使いたくなる事もあるかもしれないし。
ちなみにユーザごとの設定は~/.bash_profileとの事。
suのみに見せたいとことか、特定ユーザのみで動かしたいとことかはこれでやっときゃ良さげですな。

とここまでしても、apache2をインストールすると/opt/localに入れてしまう。どこに残ってるんだろう...?
とにかく、いっぺんports関係を全部消して再インストールしてみた。ついでにdarwinportsとdportsのどちらも/usr/直下に移動して、configureでbase_dirを/usr/localにしておく。./configure --prefix=/usr/localとしてからmake installすれば良いらしい。

あとは既に書いているのをやり直しただけなんで、そちらを参照くだされ。ただし、/opt/以下へのリンク張りやなんかは全て/usr以下なので注意。
以上。

2004-12-24

phpをばいれねば

phpを入れる。いっぺん書いたはずやのにポストが入ってなかった。残念。
で、書き直してpost時刻をごまかして順番をここに持ってきたが、実はsubversionのポストを書いてから書いてるのだ。

それはそれとして、phpのinstall では初めてvariantを使った。最初は単にport installとして入らなかった。
で、とりあえずPortfileを開いてみると何やらvariantとか言うのでapache2が指定されている。

man portで調べてみると
port [-vdqfonausbck] [-D portdir] target [portname] [options ...] [variants ...]
との事でどうやら最後に指定するといいらしい。
で、さらにport variantでぐぐるトップでヒットしたページでvariantの指定には+を使うらしいとわかった。
んで、dports/www/php5の下でport install +apache2とすると無事インストール完了。なるほどね、という事でvariantの使用法が解ったんでありました。

で、後はapacheの設定である。

httpd.confから/LoadModuleでモジュール読み込み部分を探して、最後にphp5の読み込みを追記する。
LoadModule php5_module modules/libphp5.so
で、後はAddTypeを探して同様に...
AddType application/x-httpd-php .php
で、いつもの動作確認用スクリプトをapache2/htdocs以下にtest.phpとでもして作る。
<?php phpinfo();?>
アパッチを起動apachectl restartしてこれを開いてみて、動いた。
以上。

portsでapache2

では早速apache2を入れてみる。

基本的にはFreeBSDと同じ感覚かと思いきや、結構なんか具合が違う。
とはいえ、/usr/ports以下の求めるフォルダでmake installする代わりにdarwinports/dports/以下でフォルダを探してport installするだけみたいやけど。

消したけりゃport deinstallですむので、そんなに変わりはない。ようなきもしてきた。
まあ、/opt/local/bin以下にパスが通ってないと行けないのが注意点ぐらいで、後は適当にやっていけそう。CVSupを使うよりcvs updateですむってのも普段の開発感覚に近くって良いしね。

とか何とか行ってる間にaprがすんでDB4を取り出した。
4.2.52とかで、こいつはsubversionの求めるのと同じバージョン(4.2)ですな。多分。
今回だいぶすんなり行きそうな気もしてきたなぁ。希望的過ぎかな?

などといいつつタバコなど吸いつつ風呂なんかにも入っちゃったりしたりしつつ首を長くして待っていたらようやくapache2のビルドまでたどり着いた。
ログを見てみるとlibiconvだの何だのといった物までビルドしている。なるほど、パスの体系とか違うくて全部見つからんとビルドしてたんやなぁ、ご苦労さん、といった感じである。
しかもG4とはいえ867MHzといえばやはり現役最新と比べれば半分に近い速度、今やデスクトップはG5の時代に入ってやはり力不足は否めないのかもしれない。

という所でようやくインストール完了。じゃあ早速動かしてみますか。
まずはシステム環境設定の共有でweb共有が外れている事を確認。さらにブラウザでhttp://localhost/にアクセスして確実に動いてない事を確認する。
で、ln -s /opt/local/apache2/bin/apachectl /usr/sbin/apache2ctlとリンクを張り、/opt/local/apache2/confでcp httpd.conf.sample httpd.confととりあえずの設定ファイルを作って、apache2ctl startと起動してみる。
ちなみにportsを入れた時点で/opt/local/binにパスを通すべきなんだが、私はこの時点でcsh.loginのpathのエントリに追加した。

で、結果は。うごいたー。X)
以上でした。

MacOSXでports

まずはports。まあその前にXCodeとかは入ってんねんけど。
これはDarwinPortsを使ってみようってサイトが参考になった。
結局cvsから取ってきてmakeすれば良い...みたい。

で、まずは取ってくる。
cvsでpserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/odにログインして、checkoutする。
このページで書いてる-Pオプションは空のフォルダを削除するオプション。なんでデフォルトでつけておくべきですな。

次のmakeはうまく行かない。なんせ指定のdarwinportsにはmakefileが入っていなかったTT。

で、READMEがあったので呼んでみたら、baseに入って./configure; make; make installだと書いてあるじゃないですか。
その通りにしました。そしたら/opt以下が出来ました。
後は/opt/local/binをパスに加えれば良いらしい。
以上でした。