2010年9月15日

cookperlというコマンドを書いた

自分用のperlバイナリをインストールするのにperlbrewは最強のツールですが、PerlのソースコードをダウンロードするのにHTTP::Liteを使っているので認証付きproxyを通らないとネットへ接続できない環境では動きません。そこだけがちょっと不便でした。

あと、最近Perlのバージョンアップ頻度が上がってきたので、その度にモジュールのセットアップをするのも面倒くさいなぁと思って、cookperlというコマンドを書いてみました。

こんなツールです。

  • LWPモジュールを使ってPerlのソースコードをダウンロードするので、認証付きproxyでも大丈夫。
  • cpanmをダウンロードしてきてモジュールのセットアップも行います。
  • インストールしたいモジュールの一覧をrecipeと呼ばれるファイルに書いて渡すと、cpanmを使ってインストールします。
  • 後からインストールしたモジュールは全部local::libを使って標準モジュールとは別ディレクトリへインストールします。

ドキュメントも、メッセージも全然整備されていませんが、以下使い方。

インストール

$ curl -LO http://roova.jp/cookperl
$ chmod +x cookperl

recipeファイルの用意

最初の行にインストールするPerlをバージョン指定します。

2行目以降はモジュール名をxxx::yyy形式で記述します。

「recipe.txt」

perl-5.12.2
Module::Starter
Test::Exception

Perlのインストール

$ ./cookperl recipe recipe.txt

Perl本体と、App::cpanminus、local::libは必ずインストールされます。

最後にPATHを設定するためのbashrcのパスが表示されるので、.bashrcへ追記して下さい。

念のために一旦ログアウトして、再度ログインして下さい。

「~/perl5/cookperl/perls/current/bin/perl」が有効なPerlへのパスになります。

local::libを使ってモジュールのインストール先が設定されています。

モジュールは、「~/perl5/cookperl/perls/current/locallib」へインストールされます。

installedコマンド

インストールされているrecipeの一覧はinstalledコマンドで表示されます。*が付いたレシピ名が現在有効なレシピです(パスが通っている、という意味)。

switchコマンド

$ switch recipe名で有効なレシピが切り替わります。

これからやること

  • ドキュメントを書く
  • 中途半端に書いたテストを真面目に書く
  • メッセージの英語があまりにデタラメなので直す
  • アンインストール機能を作る
  • LWPが無い環境でも動く様にする
  • モジュール名の形式チェックを真面目にやる
  • 色んな環境で動くか試す(今はMac OS XとUbuntuしか試していない)
  • Perl自体のビルドオプションを設定できる様にする

Perl-5.12.2をインストール出来た時点で、90%くらい自分の目的は達成しちゃった気もしますが。

こんなツール、いくらでも有る気もしますが、新幹線で計8時間も移動した時に頑張って作ってみました。

2010/9/16追記

ヘルプを一応付けました。$ ./coolperl helpで簡単な使い方が出ます。

トラックバックURL

このエントリーのトラックバックURL:
http://ash.roova.jp/mt/mt-tb.cgi/227

コメントする