Build A Custom PERL Installation

If you want to build a PERL installation that is separate from your standard PERL, you can compile one, complete with CPAN support. Just follow these steps:

  1. mkdir /custom/perl/
  2. cd /custom/perl/
  3. curl -O http://www.cpan.org/src/perl-5.12.3.tar.gz
  4. mkdir perl-5_12_3
  5. gunzip perl-5.12.3.tar.gz
  6. tar -xf perl-5.12.3.tar
  7. cd perl-5.12.3
  8. ./Configure -d -Dprefix=/custom/perl/perl-5_12_3
  9. make
  10. make test
  11. make install
  12. /custom/perl/perl-5_12_3/bin/perl -v
  13. /custom/perl/perl-5_12_3/bin/perl -e ‘print “hello world.\n”;’
  14. /custom/perl/perl-5_12_3/bin/perl -MCPAN -e shell
    • Auto configure as much as possible. Step 15 will edit it.
  15. Edit /custom/perl/perl-5_12_3/lib/5.12.3/CPAN/Config.pm
    • Change the following paths:
    • ‘cpan_home’ => q[/custom/perl/perl-5_12_3/cpan/],
    • ‘build_dir’ => q[/custom/perl/perl-5_12_3/cpan/build],
    • ‘histfile’ => q[/custom/perl/perl-5_12_3/cpan/histfile],
    • ‘keep_source_where’ => q[/custom/perl/perl-5_12_3/cpan/sources],
    • ”prefs_dir’ => q[/custom/perl/perl-5_12_3/cpan/prefs],
    • ”urllist’ => [q[ftp://my.cpan.mirror/pub/cpan/]],
  16. Run CPAN and install Bundle::CPAN Bundle::LWP and any required packages
  17. tar -cvf /custom/perl/custom-perl5.12.13.tar /custom/perl/perl-5_12_3/*
  18. gzip /custom/perl/custom-perl5.12.13.tar
  19. Ship custom-perl5.12.13.tar.gz out to your matching architectures or mount it on a shared NAS.
  20. Call it with #!/custom/perl/perl-5_12_3/bin/perl

Did you find this post useful or have questions or comments? Please let me know!

This entry was posted in How Tos, perl, Programming. Bookmark the permalink.

2 Responses to Build A Custom PERL Installation

  1. leon says:

    i found that I always got failed when I install Gtk2 and Glib via this way, Do you have easy way to install that?

    Thanks

  2. Alexander says:

    I have used this tutorial several times. Thanks a lot!

Leave a Reply

Your email address will not be published. Required fields are marked *