2010-08-13 2 views
0

Здесь How do I automate CPAN configuration? Я нашел несколько ответов, которые привели к некоторым вопросам. Я пробовал cpan -j config.pm, но, насколько я вижу, он предназначен для за установку, а не для постоянного изменения конфигурационного файла.Как автоматизировать первоначальную конфигурацию CPAN?

С $ 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; 

Это ОК? Единственное плохое, что я заметил до сих пор, - это ожидание, пока не будут найдены URL-адреса cpan-mirror. И что такое удалить $ CPAN :: Config -> {links}; для?

ответ

1

Похоже, вы много работаете. Что вы пытаетесь достичь?

Если вы хотите изменить файл конфигурации навсегда, просто измените конфигурационный файл. Это код Perl, поэтому я думаю, что вы можете делать все, что вам нужно, например, установить корневой каталог прямо в файле конфигурации, не имея дело с CPAN.pm.

+0

Когда я устанавливаю новую версию Linux, я хотел бы сделать как можно меньше настроек вручную. Я думал, что такой скрипт выглядит более элегантным, чем копирование Config-файла. И у меня была бы конфигурация и модульная установка в одном скрипте. Но так как это выглядит, как много работы, я попытался это: #!/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 Но это не работает, как я надеялся. –

+0

Это материал, который можно добавить к вашему вопросу, а не скрывать в комментарии. :) –

Смежные вопросы