【问题标题】:How do I automate the initial CPAN configuration?如何自动化初始 CPAN 配置?
【发布时间】:2011-03-29 08:38:17
【问题描述】:

在这里How do I automate CPAN configuration? 我找到了一些导致一些问题的答案。 我试过cpan -j config.pm,但据我所知,它是每次安装使用的,而不是永久更改配置文件。

使用 $CPAN::Config-方法,强制 CPAN::FirstTime 不默认为手动-部分在这里不起作用,所以我尝试不使用它:

#!/usr/bin/perl
use strict;
use warnings;
use Config;
use CPAN;
use CPAN::FirstTime;

$ENV{PERL_MM_USE_DEFAULT}=1;
$ENV{PERL_MM_NONINTERACTIVE}=1;
$ENV{AUTOMATED_TESTING}=1;

my $cpan_home = '/home/me/.cpan';

mkdir $cpan_home or die $! if not -d $cpan_home;
mkdir "$cpan_home/CPAN" or die $! if not -d "$cpan_home/CPAN";

CPAN::FirstTime::init( "$cpan_home/CPAN/MyConfig.pm" );

delete $CPAN::Config->{links};

$CPAN::Config->{applypatch} = '';
# ...
$CPAN::Config->{build_dir} = "$cpan_home/build";
$CPAN::Config->{cpan_home} = $cpan_home;
$CPAN::Config->{histfile} = "$cpan_home/histfile";
$CP$CPAN::Config->{keep_source_where} = "$cpan_home/sources";
$CPAN::Config->{make_install_make_command} = 'sudo make';
$CPAN::Config->{mbuild_install_build_command} = 'sudo ./Build';
$CPAN::Config->{prefs_dir} = "$cpan_home/prefs";
# ...
$CPAN::Config->{yaml_module} = 'YAML';

CPAN::HandleConfig->commit("$cpan_home/CPAN/MyConfig.pm");

CPAN::install('Bundle::CPAN');
# ...
# etc.

exit 0;

这样好吗?到目前为止,我注意到的唯一不好的事情是等待,直到找到 cpan-mirror-urls。 delete $CPAN::Config->{links}; 是为了什么?

【问题讨论】:

    标签: perl cpan


    【解决方案1】:

    看起来你正在做很多工作。你想完成什么?

    如果要永久更改配置文件,只需更改配置文件即可。它是 Perl 代码,所以我认为您可以在配置文件中做所有您需要的事情,例如设置根目录,而无需处理 CPAN.pm。

    【讨论】:

    • 当我安装一个新的 Linux 版本时,我希望尽可能少地手动配置。我认为这样的脚本看起来比复制配置文件更优雅。我将在一个脚本中进行配置和模块安装。但是因为这看起来需要做很多工作,所以我尝试了这个: #!/bin/bash mkdir -p ~/.cpan/CPAN mkdir -p ~/.cpan/build mkdir -p ~/.cpan/histfile mkdir -p ~/.cpan/sources cp MyConfig.pm ~/.cpan/CPAN cpan Moldule::1 Module::2 Module::3 但它并没有像我希望的那样工作。
    • 这是要添加到您的问题中的东西,而不是隐藏在评论中。 :)
    猜你喜欢
    • 2011-03-28
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    相关资源
    最近更新 更多