end0tknr's kipple - 新web写経開発

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

chefでperlモジュールをローカル?からインストール

多分、次の通り

$ pwd
/home/endo/dev/xing/chef-perl/perl-modules
$ ls
IO-Tty-1.07.tar.gz
   :
YAML-Syck-1.27.tar.gz
module-install.pl

で、module-install.pl は、以下の通り

#!/chef/local/perl/bin/perl

use strict;
use warnings;

my $src = `pwd`; chomp $src;
my $perl = $^X; #Perl バイナリ自身が実行された時の名前

my $gtar = "tar";
my $make = "make";

my @perl_modules = qw(
IO-Tty-1.07.tar.gz
YAML-Syck-1.27.tar.gz
);

sub install {
    for my $tarboll (@perl_modules) {
        print "[make start] $tarboll\n";
        `$gtar zxvf $src/$tarboll` or die "$!\n";
        (my $folder = $tarboll) =~ s/(\.tar\.gz|\.tgz)$//g;
	$folder =~ s/(_|-)patched$//g;
        die "not found $folder!. $!\n" unless (-d $folder);

	    my $r = system("(cd $src/$folder; $perl Makefile.PL; $make; $make test; $make install;)");
	    die "$!\n" if ($r >> 8);

        my $r2 = system("rm -rf $src/$folder");
        die "$!\n" if ($r2 >> 8);
        print "[make end] $tarboll\n";
    }
}

install;

exit 0;