Thursday, June 2, 2016

create local cpan repository for perl

1- create directory cpan in /var/www/html/cpan
$ sudo mkdir /var/www/html/cpan
$ chmod 777 /var/www/html/cpan -R

2- sync from cpan-rsync.perl.org to our newly created directory, size about 24Gb
$ rsync -a -r -v rsync://cpan-rsync.perl.org/CPAN/ /var/www/html/cpan

3- after rsync finish, we create a apache2 vhost to serve as local cpan repository
- create file //etc/apache2/sites-enabled/cpan.conf with the following content
<VirtualHost *:80>
    ServerName www.cpan.repo
    DocumentRoot  /var/www/html/cpan
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


remember to create dns record to edit hosts file to map name www.cpan.repo to the server ip address


4- restart apache2 service and we are ready on the server path
$ sudo /etc/init.d/apache2 restart

5- on client we need to edit cpan configuration file to make it use our newly local cpan repository
- we can update urllist from cpan console
$ sudo cpan
cpan> o conf urllist http://www.cpan.repo
cpan> o conf commit

- or we can edit the configuration file directly /root/.cpan/CPAN/MyConfig.pm

$CPAN::Config = {
  'applypatch' => q[],
  'auto_commit' => q[0],
  'build_cache' => q[100],
  'build_dir' => q[/root/.cpan/build],
  'build_dir_reuse' => q[0],
  'build_requires_install_policy' => q[yes],
  'bzip2' => q[/bin/bzip2],
  'cache_metadata' => q[1],
  'check_sigs' => q[0],
  'colorize_output' => q[0],
  'commandnumber_in_prompt' => q[1],
  'connect_to_internet_ok' => q[1],
  'cpan_home' => q[/root/.cpan],
  'ftp_passive' => q[1],
  'ftp_proxy' => q[],
  'getcwd' => q[cwd],
  'gpg' => q[/usr/bin/gpg],
  'gzip' => q[/bin/gzip],
  'halt_on_failure' => q[0],
  'histfile' => q[/root/.cpan/histfile],
  'histsize' => q[100],
  'http_proxy' => q[],
  'inactivity_timeout' => q[0],
  'index_expire' => q[1],
  'inhibit_startup_message' => q[0],
  'keep_source_where' => q[/root/.cpan/sources],
  'load_module_verbosity' => q[none],
  'make' => q[/usr/bin/make],
  'make_arg' => q[],
  'make_install_arg' => q[],
  'make_install_make_command' => q[/usr/bin/make],
  'makepl_arg' => q[INSTALLDIRS=site],
  'mbuild_arg' => q[],
  'mbuild_install_arg' => q[],
  'mbuild_install_build_command' => q[./Build],
  'mbuildpl_arg' => q[--installdirs site],
  'no_proxy' => q[],
  'pager' => q[/usr/bin/less],
  'patch' => q[/usr/bin/patch],
  'perl5lib_verbosity' => q[none],
  'prefer_external_tar' => q[1],
  'prefer_installer' => q[MB],
  'prefs_dir' => q[/root/.cpan/prefs],
  'prerequisites_policy' => q[follow],
  'recommends_policy' => q[1],
  'scan_cache' => q[atstart],
  'shell' => q[/bin/bash],
  'show_unparsable_versions' => q[0],
  'show_upload_date' => q[0],
  'show_zero_versions' => q[0],
  'suggests_policy' => q[0],
  'tar' => q[/bin/tar],
  'tar_verbosity' => q[none],
  'term_is_latin' => q[1],
  'term_ornaments' => q[1],
  'test_report' => q[0],
  'trust_test_report_history' => q[0],
  'unzip' => q[/usr/bin/unzip],
  'urllist' => [q[http://www.cpan.repo]],
  'use_prompt_default' => q[0],
  'use_sqlite' => q[0],
  'version_timeout' => q[15],
  'wget' => q[/usr/bin/wget],
  'yaml_load_code' => q[0],
  'yaml_module' => q[YAML],
};
1;
__END__



***note***
if you mess up the cpan configuration, we can reset it back using cpan console
$ sudo cpan
cpan> o conf init
then choose yes to let cpan create new configuration automatically

No comments:

Post a Comment