the Minnu's filer2(mfiler2)のビルドメモ
the Minnu's filer2(mfiler2)は、日本人作者によるCLIのファイルマネージャ(「ファイラ」とも呼ばれる)。現状では、ディストリのパッケージになっていることがないため、自分でビルドすることになる。
依存パッケージ
ncursesとruby(の開発パッケージ)は必須。iconvはGNU/Linuxではglibc(土台となるCライブラリ)に含まれるため、意識することはない。ruby-gtk2はドラッグアンドドロップを使用するためのオプション扱いで、使用する/しないに関わらず、ビルド時には必要ない。
C/Migemoは、日本語ファイル名を検索するときに使われるが、自動検出。既にシステムにインストールされている状態で無効にするには、ちょっとした工夫*1が必要。
configureスクリプト
普通にconfigureスクリプトを実行させるとchecking RubyPath... no set --with-ruby-header-path and --with-ruby-lib-path and --with-ruby-lib-name --with-ruby-header-path=PATH specify ruby.h location (/usr/lib/ruby/1.8/i386-linux, /usr/lib/ruby/1.8/i386-freebsd5,... etc) --with-ruby-lib-path=PATH specify librubyXX.so location (/usr/lib, /usr/local/lib,...,etc) --with-ruby-lib-name=LIBNAME specify ruby lib name (LIBNAME is libruby1.8.so --> ruby1.8, libruby.so --> ruby)
となり、止まってしまう。
[引用] www.geocities.jp/daisuke530221jp/ 「コンパイルの仕方」より
--with-ruby-header-path="ruby.hのあるディレクトリ" 通常"/usr/lib/ruby/rubyのバージョン(1.8など)/アーキテクチャ(i386-linuxなど)"にあります --with-ruby-lib-path="librubyXX.soのあるディレクトリ" 通常"/usr/lib", "/usr/lccal/lib"にあります。 --with-ruby-lib-name="ライブラリの名前" libruby.soなら"ruby", libruby1.8.soなら"ruby1.8"を指定してください。
指示どおりに指定してもよいのだが
d.hatena.ne.jp/gamaguchi/20070608/p2
の下のほうにあるように
--with-ruby-header-path=$(ruby -r rbconfig -e 'print Config::CONFIG["archdir"]') --with-ruby-lib-name=$(ruby -r rbconfig -e 'print Config::CONFIG["RUBY_SO_NAME"]') --with-ruby-lib-path=/usr/lib
としたほうがスマートなようだ。--with-ruby-lib-path=/usr/libは省略しても大丈夫だった。
x86_64環境でwkfライブラリのconfigureが停止する問題に対処
x86_64環境では、ビルドが$ make (中略) mv minato_extra.o bin/ gcc -c minato_debug.c -g -I /usr/local/include -I /usr/lib64/ruby/1.8/x86_64-linux mv minato_debug.o bin/ gcc -c minato_ruby.c -g -I /usr/local/include -I /usr/lib64/ruby/1.8/x86_64-linux mv minato_ruby.o bin/ cd wkf-1.3.9 && ./configure && make checking build system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized configure: error: /bin/sh ./config.sub x86_64-unknown-linux-gnu failed make[1]: *** [wkf-1.3.9/libwkf.a] Error 1 make[1]: Leaving directory `/tmp/work/mfiler2-3.1.7/minato_lib' make: *** [minato_lib/minato_lib.a] Error 2
という感じで止まってしまった。しかし、これは
http://web.archive.org/web/20090105182114/http://kashinya.com/blog/archives/2006/10/jpegsrcv6b64linuxx86_64.html
の要領で、システムの「libtool」パッケージに含まれるconfig.guessとconfig.subで置き換えることで回避できた。更に、手動で/usr/share/libtool/以下から該当ファイルをコピーするのではなく、libtoolizeというコマンドで、これらのファイルを置き換えることができることも分かった。
$ tar zxf /usr/portage/distfiles/mfiler2-3.1.7.tgz $ cd mfiler2-3.1.7/minato_lib/wkf-1.3.9/ $ libtoolize --copy --force $ cd ../../ (configureスクリプトの実行へ続く)
(2008/12/16)その後、config.guessとconfig.subの更新のみを行うcputoolizeというコマンドがあることが分かった。
付属パッケージの注意点
本体などは/usr/local/以下にも入れられるが、- needle
- net-sftp
- net-ssh
の付属rubyパッケージは/usr/lib/ruby/site_ruby/以下に入れられてしまうため、もし、ディストリのパッケージとしてこれらがインストールしてあった場合には...