No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 57 | 58 | 59 | 60 | 61 || Next»

RMagick Compilation on Cygwin Failed...

Cygwin 上の ruby に RMagick をインストールしようとしたら

checking for InitializeMagick in -lMagick... no
configure: error: Can't install RMagick. Can't find libMagick

と怒られた.いや,libMagick-devel 入れてるし /usr/lib/libMagick.a あるし.ということで config.log を見てみると...

/usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/../../../../i686-pc-cygwin/bin/ld: cannot find -lxml2

をい,libxml2 が見つからないんじゃんと.何でこんなオプション(-lxml2)がここで付いているのか不明だが,これもちゃんとチェックしとけよ configure .とりあえず libxml2-devel をインストールしてやったら ./configure がちゃんととおりましたとさ.

次は make で.C のコンパイルは成功してちゃんと shared library ができたらしい.が,その後のテストで RMagick.so のロードに失敗したと文句を吐きまくる.Cygwin で shared library って特別な作り方が必要だっけ? とりあえず面倒なので gem でのバイナリインストールに切り替える.gen 自身が入っていなかったので落としてきて(RubyGems)インストール

ruby setup.rb

続いて RMagick のバイナリアーカイブを解答して gem でインストール

gem install RMagick-win32-1.7.0-mswin32.gem

よし,動くだろう.ということで

ruby -e 'require "RMagick"'
/usr/lib/ruby/site_ruby/1.8/i386-cygwin/RMagick.so: dlopen, Win32 error 126 - /usr/lib/ruby/site_ruby/1.8/i386-cygwin/RMagick.so (LoadError)
        from /usr/lib/ruby/site_ruby/1.8/RMagick.rb:11
        from -e:1:in `require'
        from -e:1

ダメじゃん.

今日は日が悪いらしいのでまた今度にしよ

RMagick Compilation with Older GCC

CGI での画像操作に ImageMagick の Ruby interface である RMagick を使いたい.ということで RMagick をサーバ上でコンパイルしたのだが,少々問題発生.

RMagick は古い gcc2.95 とかでコンパイルすると -std=gnu99 オプションのせいでコンパイルがこける.なので,ext/RMagick/extconf.rb.in の

$CFLAGS = "-std=gnu99 -Wall -g @CFLAGS@"

$CFLAGS = "-Wall -g @CFLAGS@"

に書き換えてオプションをはずしてしまう.これでコンパイルできる.ついでに,インストール先を変えた場合パスを通しておかないと動かないので,たとえば

./configure --prefix=/home/ls-al/local/usr/

としたときには

ruby -I/home/ls-al/local/usr/lib/ruby/site_ruby/1.8/ -I/home/ls-al/local/usr/lib/ruby/site_ruby/1.8/i386-freebsd4 -e'require "RMagick"'

みたいに RMagick.rb, RMagick.so へのパスを渡す.一般的には次のような感じだと思う.

./configure --prefix=_PREFIX
ruby -I_PREFIX/lib/ruby/site_ruby/1.8/ -e'require "RMagick"' -I_PREFIX/lib/ruby/site_ruby/1.8/_ARCH

CentOS

Redhat Enterprise Linux の商用部分を省いた形のパッケージである CentOS なるものがあることを知った.http://www.centos.org/

なにやらアップデートとかも速いらしいので安定に使うにはいいものかもしれない.とりあえず暇になったら試してみよう.

pLaTeX で EUC

cvs に上げられた TeX ファイルをコンパイルしようと思ったら EUC コードだった.普段使っている pTeX のデフォルトは SJIS なので当然のことながらこける.

で,せっかくなのでEUCをコンパイルするオプションを学んでみた.

platex --kanji=euc --fmt=platex-euc paper

これだけでコンパイルできるのでそれなりに簡単なのだが,platex -e ぐらいに単純だともっといいなぁと思う今日この頃.

ちなみに,オプションつけるより

platex-euc paper

としたほうが短い.

Meadow で文字コード変更

何度やっても忘れるのでここに書いておこう.Meadow での文字コード変更は

C-x Ret f
M-x set-buffer-file-coding-system

だ.

rsync でバックアップ

サーバのバックアップに SCP で全ファイル転送とかやるのもいい加減あほらしいので ssh を通した rsync でローカルを同期させることにした(さすがに rsh は使いたくない).とりあえず使い方と使いそうなオプションを見てみると

Usage:
 rsync [OPTION]... SRC [SRC]... DEST
Options: -v, --verbose 詳細表示 -a, --archive アーカイブモード(-rlptgoD) -r, --recursive 再帰 -l, --links シンボリックリンクそのまま -p, --perms パーミッション保存 -o, --owner オーナー保存(root only) -g, --group グループ保存 -D, --devices デバイスファイル保存(root only) -t, --times タイムスタンプ保存 -u, --update アップデート(より新しいファイルの上書きはしない) -n, --dry-run 転送されるものの確認(実際の転送を行わない) --delete 送信元に無いファイルは送信先で削除 -z, --compress データを圧縮する -e, --rsh=COMMAND リモートのシェルコマンドの指定

といった感じである.一々コマンド全部打つのも面倒なので使いそうなオプションの組み合わせで makefile を用意.

.phony : put-dry get-dry put get \
         put-del-dry get-del-dry put-del get-del default
  
LOCAL=./alldata
REMOTE=ls-al@ls-al.jp:
OPTIONS=-avzu -e ssh --exclude='*~' --exclude='*.bak' --exclude='CVS'
  
default: get
put:
	rsync $(OPTIONS) $(LOCAL) $(REMOTE)
get:
	rsync $(OPTIONS) $(REMOTE) $(LOCAL)
put-dry:
	rsync $(OPTIONS) --dry-run $(LOCAL) $(REMOTE)
get-dry:
	rsync $(OPTIONS) --dry-run $(REMOTE) $(LOCAL)
put-del:
	rsync $(OPTIONS) --delete $(LOCAL) $(REMOTE)
get-del:
	rsync $(OPTIONS) --delete $(REMOTE) $(LOCAL)
put-del-dry:
	rsync $(OPTIONS) --dry-run --delete $(LOCAL) $(REMOTE)
get-del-dry:
	rsync $(OPTIONS) --dry-run --delete $(REMOTE) $(LOCAL)

get/put で削除なしの同期(REMOTE→LOCAL / LOCAL → REMOTE)で,-del が付くと削除あり,-dry が付くと実際の転送なしで確認となる.

これでバックアップが楽になったぞ(ネットワークの負荷的に)

«Prev || 1 | 2 | 3 |...| 57 | 58 | 59 | 60 | 61 || Next»
Search
Feeds

Page Top