end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

Thread::Queue::Anyをinstallできないので -Dusethreadsでperlを再install

perlのデフォルトではthreadsが無効らしい

http://github.com/naoya/mapreduce-lite/tree/master

MapReduce::Liteを試してみようと思い、依存moduleの一つであるThread::Queue::Anyをinstallしようとしたところ、Makefileの作成に失敗しました。

[endo@colinux Thread-Queue-Any-0.09]$ /usr/local/bin/perl Makefile.PL 
Thread::Queue::Any requires a version of perl that has threads enabled.
[endo@colinux Thread-Queue-Any-0.09]$ make
make: *** ターゲットが指定されておらず、makefile も見つかりません。中止。
[endo@colinux Thread-Queue-Any-0.09]$ 

Thread::Queue::Anyはthreads有効なperlを必要とするようですが、perl -Vで調べると、useithreads=undef となっており、threadsが無効となっていることが分かります。
perlのinstall時にthreadsに関するオプションを変更した覚えはないので、perlのデフォルトではthreadsが無効になっているようです。

[endo@colinux Thread-Queue-Any-0.09]$ /usr/local/bin/perl -V
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
  Platform:
    osname=linux, osvers=2.6.22.18-co-0.7.3, archname=i686-linux
    <略>
    useithreads=undef, usemultiplicity=undef
    <略>

perlのthreadsを有効にするには、perlの再installしかない?

今回は、Configureで -Dusethreads を指定し、perlを再インストールしましたが、perlのthreadsを有効にするには、perlの再installしかないのでしょうか?

$ ./Configure -Dprefix=/usr/local -Dusethreads -de
$ make
$ make test
# make install