perlbrewのインストール
perlbrewはperlの複数のバージョンをひとつの環境に共存させることができるモジュールです。まずはダウンロードです。
curl -LO http://xrl.us/perlbrew
次にインストールですがそのためにperlを使います。perlを使いたいからperlbrewを入れるのに、そのためにperlを入れるのも妙な話ですが(笑)。
なお、perlbrewはデフォルトでは~/perl5/perlbrew以下にインストールされますが、個人的に隠しディレクトリにしたかったので~/.perlbrewにインストール先を変更しています。
sudo yum install -y perl
PERLBREW_ROOT=~/.perlbrew perl perlbrew install
インストールすると~/.bash_profileを編集しろといったメッセージが出てきますが、編集するとログインした時点で環境変数をいろいろと追加されてしまいます。個人的になんか気持ち悪いのでこの編集はあえてせず、自力でperlbrewにパスを通します。perlbrewのインストール後は~/.perlbrew以下にperlbrewが新たに作られるため、最初にダウンロードした古いperlbrewを削除し、新しいperlbrewの方にパスを通します。
rm ./perlbrew
vi ~/bin/perlbrew
#!/bin/bash
PERLBREW_ROOT=~/.perlbrew ~/.perlbrew/bin/perlbrew "$@"
chmod +x ~/bin/perlbrew
perlbrew self-upgrade
perlbrew経由で改めてperlをインストールします。まず、perlbrewからインストールできるperlのバージョンを確認します。
perlbrew available
執筆時時点での最新版はperl-5.15.7ですが、なぜか400が返ってきて失敗するのでひとつ古いperl-5.14.2をインストールします。また、perlのインストールに必要なmakeとgccもあらかじめインストールしておきます。
sudo yum install -y make gcc-c++
perlbrew install perl-5.14.2
perlbrewのインストールにはやたら時間がかかります。その間ログもほとんど流れないため本当に成功しているか不安になりますが、辛抱強く待ちましょう。数十分くらい画面が止まったままになりますが正常です。
perlをインストールした段階ではまだこのperlにパスが通っていないので、パスを通すためにperlbrewのシェルを起動します。
perlbrew use perl-5.14.2
これで先ほどインストールしたperl-5.14.2にパスが通った状態でシェルが起動します。シェルを終了するにはいつもどおりexitかCtrl+Dとします。以下を実行してperlのバージョンがあっていることを確認し、いったんシェルを終了します。
perl -v
exit
毎回perlのバージョンを打つのはわずらわしいのでここで別名をつけておきます。
perlbrew alias create perl-5.14.2 stable
これでperl-5.14.2にstableという名前がつきました。stableという名前でperlbrewのシェルに入りなおしてみます。
perlbrew use stable
これで先ほどと同じようにperl-5.14.2にパスが通っているはずです。
cpanmのインストール
cpanmはcpanの一種で、cpan同様perlの各種モジュールをダウンロードできます。cpanよりも軽くて早いそうです。これもperlbrew経由でインストールします。
perlbrew install-cpanm
cpanm --self-update
簡単ですね。以降はperlbrewのシェルの起動中であればcpanmを利用できます。
いよいよNet::Twitterのインストールです。cpanmでインストールします。依存モジュールも大量にありますが、それらもcpanmが適切にインストールしてくれます。
cpanm Net::Twitter
しかし、途中Crypt::SSLeayというモジュールでインストールに失敗します。これはopenssl-develがないためなのでこれをインストールします。
sudo yum install -y openssl-devel
しかし今度はCrypt::SSLeayのテストに失敗します。これはテストのために自分でhttpsサーバーを立てる必要があるためです(参考)。正直そんなことやってられないので無視して強制的にインストールします。
cpanm --force Crypt::SSLeay
cpanm Net::Twitter
これでNet::Twitterが正常にインストールできるかと思います。
なぜperlbrewなのか
最初はyum経由でインストールしたperlを直接使ってNet::Twitterをインストールしようとしたのですが、yum経由でインストールされたperlの各種モジュールとcpanまたはcpanm経由でインストールされるperlモジュールとの依存関係に問題があるらしくうまくいきませんでした。そのためyumのperlとは独立したperl環境を作るためにperlbrewを使いました。Net::Twitterを使うのでなくても、cpanまたはcpanmを使うのであればperlbrewを併用するのが無難だと思います。
おわりに
以上で環境構築は終了です。その後はWindows用に書いていたperlのソースコードをCentOS 6にコピーし、cronで定期的に実行するようにしています。なお、このコードはいずれnode.jsで書き直したいと思っているので、できましたらまた報告したいと思います。それではまた。