Lần đầu tiên bạn chạy cpan từ dòng lệnh, bạn sẽ được nhắc trả lời các câu hỏi khác nhau. Làm thế nào để bạn tự động hóa cpan và cài đặt các mô-đun không tương tác ngay từ đầu?Làm cách nào để tự động cấu hình CPAN?
Trả lời
Vì nó chưa được đề cập, cpanminus là trình cài đặt cpan zero-conf. Và bạn có thể tải xuống tệp thực thi độc lập nếu không có sẵn để kiểm soát phiên bản của bạn.
Các cpanm thực thi có thể dễ dàng cài đặt (như tài liệu trong thực thi chính nó) với:
curl -L http://cpanmin.us | perl - --self-upgrade
# or
wget -O - http://cpanmin.us | perl - --self-upgrade
Một cách là lấy CPAN/Config.pm (hoặc ~/.cpan/CPAN/MyConfig.pm) được tạo sau một lần chạy từ một hệ thống và cài đặt nó dưới dạng ~/.cpan/CPAN/MyConfig.pm trên hệ thống bạn muốn tự động hóa. Một cách khác là chạy phần sau để tạo tệp MyConfig.pm cho bạn (một điều bị thiếu bên dưới là giá trị thực của tham số urllist mà bạn sẽ phải điền bằng các giá trị thích hợp cho gương CPAN):
#!/usr/bin/perl
use strict;
use Config;
$ENV{PERL_MM_USE_DEFAULT}=1;
$ENV{PERL_MM_NONINTERACTIVE}=1;
$ENV{AUTOMATED_TESTING}=1;
# get the path to the library
my $libpath = $Config{privlib};
# force CPAN::FirstTime to not default to manual
# setup, since initial CPAN setup needs to be automated
{
local @ARGV = "$libpath/CPAN/FirstTime.pm";
my @source = <>;
$source[72] =~ s/\byes\b/no/ or die "Could not auto configure CPAN";
eval join('', @source) or die "Error executing CPAN::FirstTime: [email protected]";
}
CPAN::FirstTime::init("$libpath/CPAN/Config.pm");
delete $CPAN::Config->{links};
$CPAN::Config->{auto_commit} = '0';
$CPAN::Config->{check_sigs} = '0';
$CPAN::Config->{halt_on_failure} = '0';
$CPAN::Config->{make_install_make_command} = '/usr/bin/make';
$CPAN::Config->{mbuild_arg} = '';
$CPAN::Config->{mbuildpl_arg} = '';
$CPAN::Config->{mbuild_install_arg} = '';
$CPAN::Config->{show_upload_date} = '';
$CPAN::Config->{tar_verbosity} = '1';
$CPAN::Config->{trust_test_report_history} = '0';
$CPAN::Config->{use_sqlite} = '0';
$CPAN::Config->{yaml_load_code} = '0';
$CPAN::Config->{urllist}
= [qw(http://... ftp://... etc...)];
$CPAN::Config->{connect_to_internet_ok} = '1';
$CPAN::Config->{perl5lib_verbosity} = 'v';
$CPAN::Config->{prefer_installer} = 'MB';
$CPAN::Config->{build_requires_install_policy} = 'no';
$CPAN::Config->{term_ornaments} = '1';
$CPAN::Config->{mbuild_install_build_command} = './Build';
mkdir ".cpan/CPAN" or die "Can't create .cpan/CPAN: $!";
CPAN::Config->commit(".cpan/CPAN/MyConfig.pm");
CPAN::install('Bundle::CPAN');
CPAN::install('JSON');
CPAN::install('JSON::XS');
# etc.
exit 0;
Tạo file CPAN.pm cấu hình của riêng bạn. Các phiên bản gần đây của lệnh cpan
có công tắc -J
để ngắt cấu hình hiện tại và chuyển đổi -j
để tải bất kỳ cấu hình nào bạn muốn.
Cảm ơn. Tôi không biết về -j và -J – runrig
tôi đang tìm kiếm một giải pháp dễ dàng cho việc này như là tốt và phát hiện ra rằng công trình này:
(echo y;echo o conf prerequisites_policy follow;echo o conf commit)|cpan
Chỉ cần nghĩ rằng tôi sẽ đăng nó ở đây trong trường hợp bất cứ ai khác đi kèm theo.
Điều này làm việc tốt để có được cấu hình cpan trong Docker. – Sobrique
của tôi chỉ là 'echo | cpan', bởi vì câu hỏi đầu tiên là "tự động hóa càng nhiều càng tốt [yes]?" – activedecay
Tôi nghĩ rằng tôi được bán trên cpanminus :-) – runrig
cpanminimus lưu ngày cho Dockerfiles của tôi – BitByteDog