[Perl] install lib v1.0
作者: reistlin
来源: http://www.reistlin.com/blog/172
更新时间: 2011.02
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要
#!/usr/bin/perl # name: install_lib v1.0 # author: reistlin # website: www.reistlin.com # date: 2011.02.22 use strict; use Data::Dumper; use Time::Local; # debug switch my $debug = 0; #################### # Configuration #################### # download website my $download = "http://www.reistlin.com/download/linux"; # home my $home = $ENV{'HOME'}; # prefix my $prefix = "$home/lib"; # pkgs my $pkgs = "$home/pkgs"; # build my $build = "$pkgs/build"; # core my $core = "4"; #################### # Library Packages #################### my %lib = ( curl => "curl-7.20.1.tar.gz", freetype => "freetype-2.4.4.tar.gz", gd => "gd-2.0.35.tar.gz", gettext => "gettext-0.18.1.1.tar.gz", jpeg => "jpeg-8c.tar.gz", libevent => "libevent-1.4.14b-stable.tar.gz", libiconv => "libiconv-1.13.1.tar.gz", libmcrypt => "libmcrypt-2.5.7.tar.gz", libpng => "libpng-1.4.4.tar.gz", libxml2 => "libxml2-2.7.8.tar.gz", mhash => "mhash-0.9.9.9.tar.bz2", pcre => "pcre-8.10.tar.gz", zlib => "zlib-1.2.5.tar.gz" ); #################### # Initialization #################### if ( ! -e $prefix ) { system "mkdir -p $prefix"; } if ( ! -e $pkgs ) { system "mkdir -p $pkgs"; } if ( ! -e $build ) { system "mkdir -p $build"; } #################### # Function #################### sub install { my %hash = @_; while ( my ($key, $value) = each %hash ) { $value =~ m/^([a-zA-Z]+)(.+)(\.tar\.gz|\.tar\.bz2)$/; print "\n"; print "*** INSTALL [$value] ***\n"; print "\n"; if ( ! -e "$pkgs/$value" ) { system "wget -P $pkgs $download/$value"; } else { print "[INFO] [$value] already exists in the local\n"; } if ( $3 eq "\.tar\.gz" ) { system "tar zxvf $pkgs/$value -C $build"; } elsif ( $3 eq "\.tar\.bz2" ) { system "tar jxvf $pkgs/$value -C $build"; } else { print "[ERROR] unknown compression file [$value]\n"; next; } # change directory chdir "$build/$1$2/"; system "./configure --prefix=$prefix/$1$2"; system "make -j $core"; system "make install"; system "ln -s $prefix/$1$2 $prefix/$1"; print "\n"; print "*** END ***\n"; print "\n"; } } #################### # Main Program #################### &install(%lib);