今回はプログラミング言語Perlの話。
先々週書いた以下の記事の続き。
イジハピ! : 【第508回】『すぐわかるオブジェクト指向Perl』補遺〜CalendarモジュールがCPANから入らない?
前号のあらすじとしては、拙著『すぐわかるオブジェクト指向Perl』で推しているCalendarモジュールがCPANでは入らない、という状況だけを説明した。
今回は非CPANモジュールのインストール方法について述べる。
まとめると、tarballを拾ってきて、
perl Makefile.PL
make
make test
sudo make install
とすればよい。
CPANコマンド以前はみんなこうやっていた。
(※2014-01-30補足:cpanmを使うともっと簡単)
ただしこのsudoを使うやり方は、自分が管理者権限を持っている(rootのパスワードを持っている)ときで、そうでない場合(レンタルサーバーの場合など)は、local::libというのを使うと良い。
(これは今回は試していない。)
以上で分かった方はここで読むのやめていいです。

先々週書いた以下の記事の続き。
イジハピ! : 【第508回】『すぐわかるオブジェクト指向Perl』補遺〜CalendarモジュールがCPANから入らない?
前号のあらすじとしては、拙著『すぐわかるオブジェクト指向Perl』で推しているCalendarモジュールがCPANでは入らない、という状況だけを説明した。
今回は非CPANモジュールのインストール方法について述べる。
まとめると、tarballを拾ってきて、
perl Makefile.PL
make
make test
sudo make install
とすればよい。
CPANコマンド以前はみんなこうやっていた。
(※2014-01-30補足:cpanmを使うともっと簡単)
ただしこのsudoを使うやり方は、自分が管理者権限を持っている(rootのパスワードを持っている)ときで、そうでない場合(レンタルサーバーの場合など)は、local::libというのを使うと良い。
(これは今回は試していない。)
以上で分かった方はここで読むのやめていいです。

では詳述する。
ぼくはUbuntuを使ったが、基本LinuxおよびMacは同じはず。
その前に、普通にCPANモジュールをインストールできるモジュールについて述べる。
たとえばDate::Simpleという使いやすい日付モジュールがあるが、これは標準では付いてこない。
以下のようなサンプルコードを実行してみる。
で、インストールする。
Date::Simpleモジュールはexport LANG=Cして、英語モードにしないとmake でインストールするそうだ。
Date::Simpleのインストール失敗と、その対応 - jitsu102の日記
やってみる。
というところで、例のCalendarモジュールをインストールしようとしてみる。
2008年にはできてたんだけどなぁ〜。
ということで、tarballを拾ってくる。
Calendar - search.cpan.org
から、Calendar-v0.4.2.tar.gzをダウンロードして解凍する。
READMEにしたがって以下の手順で行う。
これで本書は全部履修出来ると思う。
以上は、cpanコマンドやmake installコマンドをsudoでやっている。
管理者権限を持っている場合のやり方だ。
(※2014-01-30補足:cpanmを使うと、もっと簡単だ。
$ sudo cpanm http://search.cpan.org/CPAN/authors/id/Y/YE/YEWENBIN/Calendar-v0.4.2.tar.gz
cpanmのインストールは以下の通り。
$ sudo cpan App::cpanminus
$ sudo cpanm --self-upgrade)
管理者権限を持っていない場合、たとえば、レンタルサーバーで動かしている場合は、rootのパスワードを知らないので、上のやり方では出来ない。
この場合のやり方もすごく細々と拙著には書いてあるのだが、本書が出てから今日までの間に月日が流れ、今様は、local::libというのを使うのが簡単なやり方だそうだ。
local::libを使った非rootでのCPAN環境構築 - hide-k.net#blog
こっちもそのうち試す。
Calendarモジュールの使い方、および、継承による改造の仕方は下の本に書いてある。
Date::Simpleモジュールの使い方、および、継承による改造の仕方は下の本に書いてある。
(記事的には7ページとかですが。。)
ぼくはUbuntuを使ったが、基本LinuxおよびMacは同じはず。
その前に、普通にCPANモジュールをインストールできるモジュールについて述べる。
たとえばDate::Simpleという使いやすい日付モジュールがあるが、これは標準では付いてこない。
以下のようなサンプルコードを実行してみる。
#! /usr/local/bin/perl怒られる。
#
# dateSimpleTest.pl --- Date::Simple のテスト
use 5.010;
use strict;
use warnings;
use Date::Simple ('date', 'today');
# Difference in days between two dates:
my $diff = date('2001-08-27') - date('2000-08-27');
say "$diff days passed from 2000-08-27 to 2001-08-27";
# Offset $n days from now:
my $date = today() + 10;
say "10 days from now is $date";
$ dateSimpleTest.pl@INCにモジュールがないよ、と言われたら、インストールされてないよ、と覚えよう。
Can't locate Date/Simple.pm in @INC (@INC contains: /usr/local/lib/perl5/site_perl/5.16.3/i686-linux-thread-multi /usr/local/lib/perl5/site_perl/5.16.3 /usr/local/lib/perl5/5.16.3/i686-linux-thread-multi /usr/local/lib/perl5/5.16.3 .) at /home/cf/perl/dateSimpleTest.pl line 9.
BEGIN failed--compilation aborted at /home/cf/perl/dateSimpleTest.pl line 9.
で、インストールする。
Date::Simpleモジュールはexport LANG=Cして、英語モードにしないとmake でインストールするそうだ。
Date::Simpleのインストール失敗と、その対応 - jitsu102の日記
やってみる。
$ export LANG=C出来た。
$ sudo cpan
Terminal does not support AddHistory.
cpan shell -- CPAN exploration and modules installation (v2.00)
Enter 'h' for help.
。。中略。。
/usr/bin/make install -- OK
cpan[2]> q
Terminal does not support GetHistory.
Lockfile removed.
$ dateSimpleTest.pl
365 days passed from 2000-08-27 to 2001-08-27
10 days from now is 2014-02-01
というところで、例のCalendarモジュールをインストールしようとしてみる。
$ sudo cpanですって。
Terminal does not support AddHistory.
cpan shell -- CPAN exploration and modules installation (v2.00)
Enter 'h' for help.
cpan[1]> install Calendar
Reading '/home/cf/.cpan/Metadata'
Database was generated on Wed, 22 Jan 2014 06:29:02 GMT
Warning: Cannot install Calendar, don't know what it is.
Try the command
i /Calendar/
to find objects with matching identifiers.
cpan[2]>
2008年にはできてたんだけどなぁ〜。
ということで、tarballを拾ってくる。
Calendar - search.cpan.org
から、Calendar-v0.4.2.tar.gzをダウンロードして解凍する。
READMEにしたがって以下の手順で行う。
$ perl Makefile.PLこれで以下のテストプログラムが走る。
Checking if your kit is complete...
。。中略。。
Result: PASS
$ sudo make install
Installing /usr/local/lib/perl5/site_perl/5.16.3/Calendar.pm
。。中略。。
Appending installation info to /usr/local/lib/perl5/5.16.3/i686-linux-thread-multi/perllocal.pod
$
#! /usr/local/bin/perl実行する。
#
# calTest.pl --- Calendar のテスト
use 5.010;
use strict;
use warnings;
use Calendar;
my $date = Calendar->new_from_Gregorian(12, 16, 2006);
print $date->date_string("Gregorian date: %M %W %d %Y"), "\n";
my $newdate = $date + 7;
print $newdate->date_string("Gregorian date of next week: %D"), "\n";
$newdate = $date-7;
print $newdate->date_string("Absolute date of last week: %A\n");
my $diff = $date-$newdate;
printf "There is %d days between %s and %s\n",
$diff, $date->date_string("%D"), $newdate->date_string("%D");
$date->convert_to_Julian;
print $date->date_string("Julian date: %M %W %d %Y"), "\n";
$ calTest.pl出来たー。
Gregorian date: December Saturday 16 2006
Gregorian date of next week: 12/23/2006
Absolute date of last week: 732654
There is 7 days between 12/16/2006 and 12/09/2006
Julian date: December Saturday 03 2006
$
これで本書は全部履修出来ると思う。
以上は、cpanコマンドやmake installコマンドをsudoでやっている。
管理者権限を持っている場合のやり方だ。
(※2014-01-30補足:cpanmを使うと、もっと簡単だ。
$ sudo cpanm http://search.cpan.org/CPAN/authors/id/Y/YE/YEWENBIN/Calendar-v0.4.2.tar.gz
cpanmのインストールは以下の通り。
$ sudo cpan App::cpanminus
$ sudo cpanm --self-upgrade)
管理者権限を持っていない場合、たとえば、レンタルサーバーで動かしている場合は、rootのパスワードを知らないので、上のやり方では出来ない。
この場合のやり方もすごく細々と拙著には書いてあるのだが、本書が出てから今日までの間に月日が流れ、今様は、local::libというのを使うのが簡単なやり方だそうだ。
local::libを使った非rootでのCPAN環境構築 - hide-k.net#blog
こっちもそのうち試す。
Calendarモジュールの使い方、および、継承による改造の仕方は下の本に書いてある。
Date::Simpleモジュールの使い方、および、継承による改造の仕方は下の本に書いてある。
(記事的には7ページとかですが。。)