Mac OS X 10.5 - MAMP+DBD::mysql

MAMPなクライアント環境でweb開発のテスト中です。
ApachePHPmySQLは、さくさく動いています。


ところが、サーバで動いていたCGI(perl) が動きません。

use DBI;


ここが原因。

この後、試行錯誤をいろいろとして、勉強になりました。
最終的に理解したことと手順をまとめると…

    • DBIとは、perlのモジュールで、DBインタフェースとして必要。
    • DBにmySQLを使うなら、ドライバとしてDBD::mysqlも必要。
    • MAMPに、perlは、含まれていない。*1
    • MAMPな環境では、perlは、OSにくっついてきたのを使っている。
    • つまり、OSにくっついてきたperlに、モジュール(DBI, DBD::mysql)を追加する必要あり。
    • DBIは、cpanコマンド(perlのモジュール管理ツール)でインストール。
    • DBD::mysqlcpanコマンドでインストール出来れば苦労はないが、MAMPに合わせたコンパイルの引数を指定するためには、makeしなければならない。
    • makeのためには、DBD::mysqlmySQLのソースが必要となる。
    • perlに、mySQLの場所を教えてあげる必要がある。


これが理解出来てないと、検対処療法に追われる感じになるんだよね。
解決策っぽいのを見つけても、環境が違ったりして…。


一番便利だったのは、MAMPフォーラム 「DBI, DBD-mysql will work」


MAMPに特化しているだけあって、一番スマートな方法じゃあないでしょうか。
DBIのインストールの次から、私なりに訳すと次のような感じ。

DBDの構築

1. mysql_configを探す。(私の場合は /Applications/MAMP/Library/bin/ にある)

2. MAMPと同じバージョンのMySQLをダウンロードして、解凍する。
 (訳注.mySQLのサイトからでもよし、MAMPのサイトでソース版をダウンロードしてもよし)

3. includeディレクトリを /Applications/MAMP/Library/ディレクトリの下に移動する。

4. libディレクトリの内容を /Applications/MAMP/Library/lib/mysql/ディレクトリにコピーする。

5. make file を作る: sudo Perl Makefile.PL --mysql_config=/Applications/MAMP/Library/bin/mysql_config
 (訳注.mysql_configを指定することによって、この環境用のコンパイル引数を調べて設定してくれる)

6. sudo make

7. sudo make install*2


追加設定*3

DBI と DBD-mysqlMySQLライブラリの場所を教える。

1. /usr/localにmysqlディレクトリ作成: sudo mkdir /usr/local/mysql
 (訳注.すでに/usr/local/mysql(他のmysqlへのリンク)があったので、あらかじめ削除しました)

2. シンボリックリンクを作る:
 sudo ln -s /Applications/MAMP/Library/lib/mysql lib
 sudo ln -s /Applications/MAMP/Library/include include

3. perlからMySQLのソケットを見つけるために、/tmpにシンボリックリンクを作成する:
 sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

ダウンロードしたmySQLは、削除しちゃってもOK。
(/Applications/MAMP/Library/includeも、/Applications/MAMP/Library/lib/mysql/にコピーしたファイルも削除しちゃっていいんでしょうが、また必要になるかもしれないので、残してあります。)


MAMPとは、まだ付き合っていくことになりそう。
ここまでくると、簡単インストールとは言えないけどね。

*1:ここで、xampに鞍替えという道もあります。好みの問題かな。

*2:make testでは、エラーが出ました。でも、次の追加設定をしてちゃんと動いたので無視していいのかな…?

*3:「追加」というか必須です。

Mac OS X 10.5 - MAMP+ImageMagick

MAMPのインストール

MacBookPHP+MySQLのテストをしたかったので、MAMP1.7.2 をインストールしました。
MAMPのインストールは、簡単なので内容は省略。


次に、以前別の環境で動いていたPHPコードを動かしたら、エラーが…。*1

sh: convert: command not found

そうだ、exec関数で、ImageMagick を 呼び出してたんだ。
インストールしなきゃ。

インストール方針

OSXオープンソースなソフトウェアをインストールするには、いろいろ選択肢*2があるようですね。


1.ゴリゴリ派*3
2.パッケージ管理ツール派
  1)MacPorts
  2)Fink


2の2)Finkを選択。
さらに、バイナリインストールか、ソースインストールか。
まずは、簡単なバイナリインストールで。無理だったらソースインストールにする、というスタンスにしました。

FinkImageMagickインストール

初めての方にお勧めするというFinkのインストール説明*4にしたがって、「Fink 0.9.0 バイナリインストーラ (Intel) 」をダウンロードして、インストール。
いろいろ書いてあって試したけれど、最新のバイナリインストーラがインストール出来れば、とりあえずはいいのかな。


ImageMagick は、コマンドラインから

fink install imagemagick

で、OK。

MAMPのバグ!?

再度、PHPコードを動かしてみると、次はこんなエラーが…。

dyld: Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /Applications/MAMP/Library/lib/libjpeg.62.dylib

ライブラリがうまくリンク出来てない、って意味でしょうか。
調べまくった末に行き着いた先は、MAMPのフォーラム
(注.翻訳させてるので開くのが遅いです。英語が得意な方は、原文でどうぞ)


2007年3月13日午後6時30分のアダムさんのコメントに注目。

Here is something you can do that may help you out.
Comment out the 2 lines in the file /Applications/MAMP/Library/bin/envvars:

DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH

so that they read:

#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH

and restart Apache? There is probably some fine tuning necessary but it should help in many cases.

Please let us know if it works for you.

「/Applications/MAMP/Library/bin/envvarsというファイルのライブラリパスの指定をコメントアウトして、Apacheを再起動すれば、いいかもよ。」
ってことかな、と思って試してみるとエラーなし。ImageMagickもちゃんと実行できてた!


遠い空の下のアダムさんに感謝!!


追記:
ところで、この envvars って何なんだろう、と気になって調べました。
分かったのは、MAMPapacheを起動するまでの仕組み(一部)。

  • /Applications/MAMP/bin/start.sh が実行される。
    • /Applications/MAMP/bin/startApache.sh が実行される。
      • /Applications/MAMP/Library/bin/apachectl が実行される。
        • /Applications/MAMP/Library/bin/envvars が実行される。
        • /Applications/MAMP/Library/bin/httpd が実行される。

つまり、apache起動前に環境変数の設定をするのが目的のようです。*5
apacheの設定ファイル(httpd.conf)でも、環境変数の設定とか引き渡しがあるけれど、こうやってもいいのですね。

意味が分かったから、envvars の最後に

PATH=$PATH:/sw/bin

と追加して、apacheを再起動しました。
phpinfo で、Apache Environment の PATH を確認すると、/sw/bin が追加されています。
これで、絶対パスで指定しなくてもよくなります。すっきり。

*1:/Applications/MAMP/logs/apache_error_log

*2:これ以外にあるのかな

*3:必要なファイルをダウンロードしてコンパイル。つまり、もっとも原始的かつ玄人好み

*4:その割に、ちょっと分かりにくい説明なんだけど…

*5:この辺のところが、MAMP PRO では、やりやすくなっているのかなあ。

Max OS X 10.5 - Ruby-GetText

Railsアプリケーションを日本語化(というか国際化)する Ruby-GetTextライブラリを使ってみました。

現在の環境

Ruby-GetTextのインストール

深く考えずに

$sudo gem install gettext

したら、自動的に gettext(1.92.0) がインストールされました。
途中で、バージョンが選択できるかと思ったのに。

このままでは、日本語化への第一歩(後述)の修正をして、WEBrickサーバを再起動したときに

…aliasing.rb:28:in `alias_method': undefined method `label' for class `ActionView::Helpers::FormBuilder' (NameError)

と出て、サーバが起動しません。
gettext1.90 にすると、回避できるらしいのですが…

結論。

rails1.2系のときは、gettext1.10.0 を使うべきみたいです。
gettext1.90リリースノートに「Rails 1.2.xは対象外とします」とあります*1

先に入れたgettext1.92.0を削除して

$sudo gem uninstall gettext

バージョンを指定して再度インストールしておきます。

$sudo gem install gettext -v 1.10.0

日本語化への第一歩

config/environment.rb(先頭に2行、最終行に1行追加)

$KCODE = 'u'
require 'jcode'
(省略)
require 'gettext/rails'

app/controllers/application.rb

class ApplicationController < ActionController::Base
 init_gettext 'プロジェクト名'
end

変更したら、WEBrickを再起動するのを忘れずに。
エラーメッセージが日本語で出る!うれしい!!



GNU gettext のインストール

日本語化をもう一歩進めるために、msginit, msgmergeコマンドが使えるように GNU gettext をインストールします。
目的にどんぴしゃなgettextのインストール(Mac OSX)を参考にインストールしました。(Leopard対応、大感謝!!)

        • libiconv-1.12
        • expat-2.0.1
        • gettext-0.17

*1:本家のサイトには書いてなかったよなあ。なんと、さりげない…。いい勉強になりました。

Mac OS X 10.5 - eclipse3.4

Ruby on Rails を学び始めました。
が、Xcodeのエディタを使っていたら、ウィンドウをたくさん開いて扱いにくくなってきたので、統合開発環境なるEclipse(+RedRails)をインストールすることにしました。*1

eclipse3.4のインストール

Eclipse for RCP/Plug-in Developers*2をダウンロードして解凍し、アプリケーション(/Applications)にコピーする。


eclipse3.4の日本語化もっと詳しく…

Pleiades(eclipse日本語化プラグイン)から最新版(1.2.3.p4)ダウンロードして解凍する。

    • featuresの中身を /Applications/eclipse/features にコピーする。
    • pluginsの中身を /Applications/eclipse/plugins にコピーする。

Finderで、/Applications/eclipse/Eclipse を右クリックし、「パッケージの内容を表示」を選択する。
Contents/MacOS/eclipse.ini の最終行に

 -javaagent:../../../plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

を追加する。


eclips3.4にReadRails1.0プラグインをインストールもっと詳しく…

メニューから、「EclipsーPreferences(設定)」をクリックする*3
項目から、一般、機能を選択して、「クラシック更新」をチェックして、OKをクリックする。


メニューから、「ヘルプーソフトウェア更新ー検索とインストール」をクリックする。
「インストールする新規フィーチャーを検索」をクリックし、次へ。
新規リモートサイトを追加する。

あとは、画面の指示にしたがって、Aptana Studio をインストールする。
途中で、フィーチャーの確認ウィンドウが出るので、「すべてをインストール」をクリック。
SDKの再起動を促されたら、素直に「はい」をクリック。


Eclipse再起動後、Aptana開始ページが開くので、Pluginsの中にある Ruby on Rails のインストールをクリックして指示に従っていくと、RedRails1.0 がインストールされる。

*1:Xcodeでは、Rubyファイルの色分けはしてくれるけど、プロジェクトの管理は、Eclipse(+RedRails)の方が優れてるかな

*2:Eclipseには、Java用やC言語用もありますが、”リッチクライアントプラットフォーム開発やEclipseプラグイン開発をしたい場合”なので、Eclipse for RCP/Plug-in Developers にしています

*3:eclips3.4のときは、eclips3.3以前のプラグインインストール方式にしないといけないらしいです

MacBook MB403J/A

Fedoraは、月光、狼男と来て、硫黄に進化したらしいですね。
もう日記のタイトル変えなきゃ…。


さて、最近の相棒は、レパードです。


これまで、macは、鬼門のようになんとなく遠ざけた存在でした。
が、何のことはない、osxになったら、ベースはunix(BSD)なのでした。
まるで、linux上でmac風ウィンドウマネージャが動いているようです。
あまり話したことのなかったクラスメイト、話してみたら気が合うじゃん、って感じ。


unixをかじったこともあったけど、時代の波に押されてしかたなくwindowsを使っている、そこのあなた(=ちょっと前の私)に教えてあげたい。
mac使えます!!!」


MacBookを、Apple Premium Reseller で購入しました。
アップルストアをもっとフレンドリーにした感じのいいお店でした。
正規代理店とは名ばかりの、よく分かってない電気屋さんとは違って、商品知識もしっかりしています。
しかも、安い。
MacBook MB403J/A にメモリを増強してもらって、定価178,320円 のところ、157,400円(セゾンカードで冬のボーナス一括払い)。
さらに、ポイント(1,866p)付き。
オープン記念でマイクロソフトの 2,000円 位のマウスもゲット。
アンケートに答えて非売品のボールペンストラップもゲット。


ここ一週間で一気にマックユーザと化してしまいました。


以下はこれまでにやったことのメモ。

  • ソフトウェア・アップデート
  • Mailの設定
  • Xcodeのインストール(2枚目のCD) …Apple提供開発ツール
  • MAMPのインストール …Apache,MySQL,PHPがワンセットになったもの(既存のApacheは無効に)
  • Firefox3.0.1のインストール(+FireFTP 1.0,Firebug 1.2.0b7)
  • PEAR Services-Amazon をインストールしてPHPAmazon Webサービスを使ってみる
  • VLCをインストール


今までやっていたようなことは、問題なくできました。
戸惑ったのは、「・」が「option+/」だったことぐらいでしょうか。


次は、Ruby on Rails をやってみよう。

Fedora Core 5 - last.fm

Web2.0のカンファレンスで講演があって気になっていたlast.fm
日本語版もあったんだね。ユーザは、まだ日本人は少なそうだけど。
音楽版ミクシィというふれこみで、興味津々。


last.fmをダウンロード」をクリックして、LastFM_Linux_1.0.0b.tar.bz2をダウンロードして解凍したらおしまい。(ユーザ登録は必要。)


解凍したフォルダの./lastfm を実行すると last.fmプレイヤーが開きます。
Artist:clare fisher で 「Find it!」をクリックすると、聞こえる聞こえる!


どんどん好みのプレイヤーになっていくのだろうか、わくわくするなあ。
最後のFMって名は伊達じゃないねえ。
ちょいWeb2.0体験でした。

Fedora Core 5 - フォント(M+2P+IPAG)

デフォルトの日本語フリーフォント Sazanami が気に入らなくなってきたので、フォントを変えることにしました。


Fedora Core 5 インストール個人的ノートからの受け売りです。


おかげさまで、ホントに見違えるような見栄えが実現しました。感謝!