« 2006年10月 | メイン | 2006年12月 »

2006年11月 アーカイブ

2006年11月05日

MacでMapServerをソースからビルド

Mac用のMapServerバイナリはあるにはあるが、やっぱり手でビルドしたいと言うことでソースからビルドした。環境はMacBook Kro( CoreDuo 2GHz & Mac OSX 10.4.8)。


注意点としては、とりあえず沢山ライブラリが必要であるということだ。
例の如く、その辺はport様にやって頂く。
なので、基本的には2つほどインストールさえすれば、他のライブラリもよしなにport様がやってくださる。
とりあえず最短距離を示して、後半は個人的なログにする。


■■最短距離

■1. 事前準備。必要なライブラリを揃える。
前述の通り、基本的にこの2つをインストールすれば、その中で依存関係にあるライブラリをよしなにやってくださる。こいつらのインストールが終わるまでひたすら待つ。

$ sudo port install gdal
[以下、無い場合は勝手に追加されるライブラリ]
--> zlib
--> libpng
--> tiff
--> libgeotiff
--> jpeg
--> giflib
--> sqlite3
--> proj


$ sudo port install gd2
[以下、無い場合は勝手に追加されるライブラリ]
--> libpng
--> jpeg
--> freetype
--> XFree86

■2. MapServerのビルド。
ここを参考にしつつ、ここのはバージョンが4.6とちょっと古かったり微妙に間違ってたり(?)するのでチョコチョコ変更。

とりあえず適当なディレクトリに移動し、本家からソースをゲット。

$ cd /usr/local/src
$ wget http://cvs.gis.umn.edu/dist/mapserver-4.10.0.tar.gz
$ tar xvfz mapserver-4.10.0.tar.gz
$ cd mapserver-4.10.0

ここで、port様に合わせた設定でconfigureする。つまり、/opt/localを大半のオプションとして渡す。--with-geosオプションに関しては、先のページだと/usr/localとなっているため最初/opt/localを渡したが、「Cant execute /opt/localどうの」というエラーが出たため、geos-configコマンドまでのフルパスを指定してやると通るようになった。

$ ./configure --mandir=/usr/local/share/man --with-proj=/opt/local --with-gdal=/opt/local/bin/gdal-config --with-ogr --with-gd=/opt/local --with-xpm=/usr/X11R6 --with-geos=/opt/local/bin/geos-config --with-wfs --with-wcs --with-wfsclient --with-wmsclient --with-postgis=/opt/pgsql/bin/pg_config --with-freetype=/opt/local/bin/freetype-config

これが通れば、あとはmakeをする。
ただし、make installはしない。
makeが正常終了すれば、mapservというのが現在のディレクトリ配下に作られる。
これが求めしもの。

それを
/Library/WebServer/CGI-Executables
等に移動し、Apacheを起動した上でブラウザから
http://localhost/cgi-bin/mapserv
にアクセスし、

「No query information to decode. QUERY_STRING is set, but empty」

と表示されれば、ビルドは成功だ。

■■ログ
$sudo port install gdal
を実行するも、zlibが無いと言われてconfigureエラーになってしまった。
確認するとちゃんとzlibは/opt/local/lib配下にインストールされている。
同様にzlibに依存するlibpngをインストールする際にもエラーが出た。
なので、とりあえずzlibを入れ直すことに。

■zlibの削除。


$ sudo port uninstall zlib

---> Unable to uninstall zlib 1.2.3_0, the following ports depend on it:

---> openssl

---> freetype

そうですか依存されてますか。ということで依存関係にあるやつも根こそぎ削除。
ここでは書かないが、削除に当たってはuninstallに加えてclean --allによってアーカイブもまっさらに消した。

$ sudo port uninstall openssl
---> Unable to uninstall openssl 0.9.8a_0+darwin_8, the following ports depend on it:
---> wget

$ sudo port uninstall wget
---> Deactivating wget 1.10.2_0+darwin_8
---> Uninstalling wget 1.10.2_0+darwin_8

$ sudo port uninstall openssl
---> Deactivating openssl 0.9.8a_0+darwin_8
---> Uninstalling openssl 0.9.8a_0+darwin_8

$ sudo port uninstall freetype
---> Unable to uninstall freetype 2.1.10_1, the following ports depend on it:
---> fontconfig

$ sudo port uninstall fontconfig
---> Deactivating fontconfig 2.3.2_1+macosx
---> Uninstalling fontconfig 2.3.2_1+macosx

$ sudo port uninstall freetype
---> Deactivating freetype 2.1.10_1
---> Uninstalling freetype 2.1.10_1

$ sudo port uninstall zlib
---> Deactivating zlib 1.2.3_0
---> Uninstalling zlib 1.2.3_0

■zlibらの入れ直し。
とりあえずエラーが出たlibpngを入れることにした(依存関係のために自動でzlibも入れ直してくれる)。

$ sudo port install libpng

成功。あとはwget( 消したopensslに依存するので自動でopensslを復元)やgdal, gd2を入れる。

$ sudo port install wget
$ sudo port install gdal

-->ここでエラー
/usr/bin/ld: warning /opt/local/lib/libreadline.dylib cputype (18, architecture ppc) does not match cputype (7) for specified -arch flag: i386 (file not loaded)

たぶん、前にppcで入れたreadlineを引き継いでいる?しょうがないのでreadlineも一旦uninstallしてから、入れ直し。

$ sudo port uninstall readline
Password:
---> Deactivating readline 5.0.005_0+darwin_8
---> Uninstalling readline 5.0.005_0+darwin_8
$ sudo port install readline


$ sudo port install gd2

あとは、上のconfigureオプションでビルド。


2006年11月09日

OSX * Rails * PostgreSQL

RailsにてMySQLでは無くPostgresを使いたいときは、とりあえずRubyからPostgreSQLに接続する用のライブラリを入れる必要がある。入れ方は簡単。gemで一発だ。

$ sudo gem install postgres-pr

あとは、適宜database.ymlも変更する。

$ vi config/database.yml
development:
adapter: postgresql
database: posgrails
username: postgres
password: postgres
host: localhost

これでオッケイ。


参考URL:http://wiki.rubyonrails.com/rails/pages/PostgreSQL


PostGISへのシェープファイルの追加方法

メモ。


■1. シェープファイルからSQLファイルに変換する
※ -sは座標系SRIDを指定するオプション。4326だとwgs84を指す。

$ shp2pgsql -s 4326 /path/to/hoge_shapefile.shp gis_table gisdb > gis_table.sql


■2. 作成されたSQLファイルをDBに流し込む

$ psql -U postgres -d gisdb -f gis_table.sql
(略)
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
COMMIT


で完了。


2006年11月14日

GMailをPOPで受信

先日HDDが逝ってしまって、svnで管理してた~/Documents以外、つまりメールとかライブラリとかがすべてぶっ飛んでしまったが、メールは復旧できることに気がついた。


というのは、Gmail上のメールをPOP受信できるからだ。
Gmailとローカル両方で同じメール受信してて、HDDが逝ってしまった人はこの方法で復旧できる。


ヘルプにあるように、ちょろっといじればPOPで受信できるようになる。


設定→メール転送とPOP設定→POPダウンロードのとこを[すべてのメール]とかにして保存してクライアント側で受信用のアカウントを設定すると、GmailからPOP用にコピーされたメールをガシガシと受信できる。
コピーされたものを受信するので、サーバからは消えない。


とりあえずGmailに転送設定しとけば、どんだけHDDが飛んでもメールは復旧できるわけだ。
まぁIMAP使えという話か。


2006年11月21日

Cannot find gem for Rails =1.1.6

ActionMailerを使って、Postfixのalias経由でコマンドにパイプしようとしたときに、

Command output: Cannot find gem for Rails =1.1.6:


等というエラーが出て正常に動かなかった。
読んで字のごとくRails 1.1.6のgemがありませんよ、と言っているのだが、/usr/local/lib/ruby/gems/1.8/gemsにはちゃんとrails-1.16は入っている。


よく見てみると、/usr/lib/ruby/にもgemsというフォルダがあったので、中をのぞいてみるとrails-1.1.2だとかのちょい古いやつがブワーっと入っていた。
どうやらここを見に行っているようだ。


しょうがないので、

$ pwd
/usr/lib/ruby
$ ls -l
1.8
gems
site_ruby
$ sudo mv gems gems.bkup
$ ls -l
1.8
gems.bkup
site_ruby
$ sudo ln -s /usr/local/lib/gems gems
$ ls -lF
1.8
gems@ -> /usr/local/lib/ruby/gems
gems.bkup
site_ruby


と、これでrails-1.1.6のある/usr/local/lib/ruby/gemsを見に行く。
念のためgemsはgems.bkupとして保存。
.gemrcとかで設定するのがほんとだと思うが、まぁ動くのでヨシ。

2006年11月29日

max_allowed_packet

Railsでアップローダーを作って、バイナリをガシガシlongblobで入れるように設計してたら、突如

Error in ActionControlelr max_allowed_packet なんちゃら

という気持ち悪いのが出た。
これの対処法は、

/etc/my.cnfの

$ sudo vi /etc/my.cnf
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M   ←コレ

のmax_allowed_packetをデフォルトの1Mから、適当な値に変える。

$ sudo vi /etc/my.cnf
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16M
#max_allowed_packet = 1M
max_allowed_packet = 30M  ←コレ


これで、mysqldを再起動で指定したサイズまではいけるようになる。
ただ、longblobで持たせるのが間違っている気がしないでもないけど、動いたからヨシ。

About 2006年11月

2006年11月にブログ「what a bringdown」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2006年10月です。

次のアーカイブは2006年12月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。