« Fedora Core 3 にCatalystのセットアップ | メイン | 本日の体操 »

2005年10月08日

[技術] Fedora Core 3にCatalystをインストールするときの注意点

【覚書】Fedora Core 3で、付属のPostgreSQL(7.4.6)を利用したCatalystアプリを作成するときの注意点

■Catalystのインストール

# perl -MCPAN -e 'install Bundle::Catalyst' で、Catalystのインストールをはじめるが一筋縄ではいかない。芋づる式にいろんなパッケージをインストールしなければならない。特にClass::DBIまわりを別途インストールすることになる。

■Catalystのインストール完了後、PosgreSQLのModelをヘルパースクリプトで生成するには、Fedora Core 3のパッケージ perl-DBD-Pg-1.31-6はアンインストールして、もっと上のバージョン(1.43とか)にする必要がある。

% myapp_create.pl model CDBI CDBI dbi:Pg:dbname=hoge user
でヘルパースクリプトを実行すると下記のようにパッケージがコールされる。

Catalyst::Helper::mk_component
Catalyst::Helper::Model::mk_compclass
Class::DBI::Loader::new
Class::DBI::Loader::Generic::_load_classes (Class::DBI::Loader::Pg)
Class::DBI::Loader::Pg::_tables
DBD::Pg::db::tables

Class::DBI::Loader::Pg::_tables で、DBD::Pg::db->tablesの引き数に{noprefix=>1}を渡しているが、肝心のDBD::Pg::db(v1.31)では、オプションを全く評価しないので、PostgreSQLのバージョンが7.3以上という条件だけで、テーブル名にprefix(この場合、public)をつけて、返している。

そして、そのテーブル名は、Class::DBI::Pg::set_up_tableに引数で渡し、そこでpg_class,pg_indexテーブルにSQL文を発行して、テーブルのindex_keyの数を取得しようとしているが、PostgreSQL7.4.6のpg_classのrelnameには、prefixなしのテーブル名となっているので、index数を取得できず、結果的にCatalystのヘルパースクリプトは失敗している。

■DBD::Pgをソースコードからインストールするときは、PostgreSQLのインストール情報を表示するpg_configというコマンドが必要なのだが、これはFodora Core 3の場合、postgresql-devel-7.4.6-1.FC3.1に含まれているので、このパッケージがインストールされている必要がある。

投稿者 nekobara : 2005年10月08日 19:14


トラックバック

このエントリーのトラックバックURL:
http://www.ishihara.ne.jp/mt/mt-tb.cgi/640

コメント

こんにちは、燃えるモリゾーがおもしろい!
Catalystで商品データベースみたいものつくりたいです。
商品登録できて修正、追加、削除などができるイメージ。
まさに石原さんの手順書のようなものなのですが。

どうもCPANで経由でエラーでまくりで手も足もでず
Catalystインストールできず、はまりまくりです。
Perl本(リャマ本っていうんですね)を買ったので
手動で勉強の為に一から書いてみるかと思っております。
またアドバイスお願いいたします。

投稿者 後藤 : 2005年10月12日 12:52

いつも、コメントありがとう

CPANでダウンロードしてきたソースがキャッシュされているディレクトリ(例えば、.cpan/build/)にCatalyst-5.33というようなディレクトリがあると思うので、そこで、下記のように実行してみてください。

% perl Makefile.PL

そうすると、Catalystが必要なCPANライブラリでインストールされていないCPANライブラリがないぞと文句を言われると思います。

それらを地道にインストールしてみてください。

そして、そこで、perl Makefile.PLがとおったら

% make test
% make install

してみてください。

% perldoc Catalyst

して、ドキュメントが表示されたら、とりあえずインストール成功です。

その後、Catalystを実行していく中で、いくつかモジュールがないと怒られたら、つど、CPANでインストールしてみてください。

投稿者 nekobara : 2005年10月12日 23:11

こんばんは、アドバイスありがとうございます。
下記のようになったのですが、
そもそもテンプレートがインストールされていないとは?
どういう意味なんでしょう(^^;ぐぐってみましたが
ひっかからず・・・なにか分かりますでしょうか?
すいません。

[root@kame Catalyst-5.33]# perl Makefile.PL
# running Build.PL
/usr/bin/perl -I_build/lib Build.PL
Checking whether your kit is complete...
Looks good
* ERROR: Prerequisite Template isn't installed
ERRORS/WARNINGS FOUND IN PREREQUISITES. You may wish to install the versions
of the modules indicated above before proceeding with this installation.

Deleting Build
Removed previous script 'Build'
Creating new 'Build' script for 'Catalyst' version '5.33'
********************************************************************************
naughton is the greatest and gabb is drunk again!
********************************************************************************

投稿者 後藤 : 2005年10月13日 22:03

後藤さん、こんばんわ。

Templateとは、Template Toolkitのことです。これがまぎわらしいのが、呼称がTemplate Toolkitなのですが、パッケージ名は、Templateなんですよ。

% perl -MCPAN -e shell
cpan> install Template

すればインストールされると思います。

ところで、後藤さんの所の専用サーバ(Turbo Linux)に、Catalystをインストールできるかどうか、検証することになりました。(私の元職場が依頼元)

投稿者 nekobara : 2005年10月13日 22:50

こんにちは、ありがとうございます。
perldoc Catalystで表示されました。
インストールできたようですほっ。

PostgreSQLがないのでインストールして先に
進んでみたいと思います。

あっ、TurboかRedhatで検討されてました!
今後ともよろしくお願いいたします!
なにかご不明な点あればばしばし聞いてくださいね。

投稿者 後藤 : 2005年10月14日 06:39