試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

the Minnu's filer2(mfiler2)のビルドメモ

the Minnu's filer2(mfiler2)は、日本人作者によるCLIのファイルマネージャ(「ファイラ」とも呼ばれる)。現状では、ディストリのパッケージになっていることがないため、自分でビルドすることになる。

  1. 依存パッケージ
  2. configureスクリプト
  3. x86_64環境でwkfライブラリのconfigureが停止する問題に対処
  4. 付属パッケージの注意点

依存パッケージ

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.guessconfig.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.guessconfig.subの更新のみを行うcputoolizeというコマンドがあることが分かった。

付属パッケージの注意点

本体などは/usr/local/以下にも入れられるが、

  • needle
  • net-sftp
  • net-ssh

の付属rubyパッケージは/usr/lib/ruby/site_ruby/以下に入れられてしまうため、もし、ディストリのパッケージとしてこれらがインストールしてあった場合には...

*1:configureスクリプトの検出部分のコードを書き換えて「無効」の値にしてしまう、という、邪道?な方法