누락된 Perl 모듈을 설치하는 가장 쉬운 방법은 무엇입니까?
문제
다음 오류가 발생합니다.
Can't locate Foo.pm in @INC
다운로드, 압축 해제, 제작 등보다 쉽게 설치할 수 있는 방법이 있나요?
해결책
유닉스의 경우:
보통 시작하면 cpan 쉘에서:
# cpan
그리고 유형
install Chocolate::Belgian
또는 짧은 형식으로:
cpan Chocolate::Belgian
Windows의 경우:
Windows에서 ActivePerl을 사용하는 경우 PPM(펄 패키지 관리자) CPAN.pm과 동일한 기능이 많이 있습니다.
예:
# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
보다 Perl 모듈을 어떻게 설치하나요? CPAN FAQ에서
많은 배포판에서는 많은 Perl 모듈을 패키지로 제공합니다.
- 데비안/우분투:
apt-cache search 'perl$'
- 아치 리눅스:
pacman -Ss '^perl-'
- 젠투:범주
dev-perl
당신은해야 언제나 자동(보안)의 이점을 누릴 수 있으므로 선호하세요. 업데이트 그리고 용이함 제거.이는 꽤 까다로울 수 있습니다. cpan 도구 자체.
Gentoo에는 다음과 같은 멋진 도구가 있습니다. g-cpan 이는 CPAN에서 모듈을 빌드/설치하고 젠투 패키지(이빌드) 당신을 위한.
다른 팁
노력하다 앱::cpanminus:
# cpanm Chocolate::Belgian
이것저것 설치하기 딱 좋습니다.CPAN 또는 CPANPLUS의 더 복잡한 기능을 제공하지 않으므로 설치하려는 모듈을 알고 있으면 사용하기 쉽습니다.아직 cpanminus가 없으면 다음을 입력하세요.
# cpan App::cpanminus
그것을 설치하려면.
cpan을 전혀 사용하지 않고 설치할 수도 있습니다.기본 부트스트랩 절차는 다음과 같습니다.
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
자세한 내용은 App::cpanminus 페이지로 이동하여 설치 섹션을 참조하세요.
나는 sudo에서 cpan을 한 번 실행하라고 제안하는 사람들을 주목합니다.예전에는 시스템 디렉토리에 설치하는 데 필요했지만 최신 버전의 CPAN 셸을 사용하면 sudo를 사용하도록 구성할 수 있습니다. 단지 설치를 위해.이는 테스트가 루트로 실행되지 않는다는 것을 의미하므로 훨씬 더 안전합니다.
이전 CPAN 셸이 있는 경우 새 cpan을 설치하기만 하면("CPAN 설치") 셸을 다시 로드할 때 이러한 새 지시어를 구성하라는 메시지가 표시됩니다.
요즘에는 오래된 CPAN이 있는 시스템을 사용할 때 가장 먼저 하는 일은 쉘을 업데이트하고 이를 수행하도록 설정하여 일반 사용자로서 대부분의 cpan 작업을 수행할 수 있도록 하는 것입니다.
또한 Windows 사용자는 조사해 볼 것을 강력히 제안합니다. 딸기 펄.이것은 미리 구성된 CPAN 쉘과 컴파일러가 함께 패키지로 제공되는 Perl 버전입니다.또한 외부 C 라이브러리 종속성, 특히 XML::Parser가 있는 컴파일하기 어려운 Perl 모듈도 포함되어 있습니다.이는 모듈 설치에 있어서 다른 모든 Perl 사용자와 동일한 작업을 수행할 수 있으며 작업이 훨씬 더 자주 "그냥 작동"하는 경향이 있음을 의미합니다.
Ubuntu를 사용 중이고 사전 패키지된 Perl 모듈(예: geo::ipfree)을 설치하려면 다음을 시도하십시오.
$ apt-cache search perl geo::ipfree libgeo-ipfree-perl - A look up country of ip address Perl module $ sudo apt-get install libgeo-ipfree-perl
몇몇 사람들이 cpan 유틸리티를 언급했지만 이는 단순히 쉘을 시작하는 것 이상입니다.설치하려는 모듈을 제공하고 작동하도록 하십시오.
$prompt> cpan Foo::Bar
인수를 제공하지 않으면 CPAN.pm 쉘이 시작됩니다.이는 Unix, Mac에서 작동하며 Windows(특히 Strawberry Perl)에서는 문제가 없습니다.
cpan 도구를 사용하여 수행할 수 있는 다른 작업도 몇 가지 있습니다.다음은 현재 기능에 대한 요약입니다(CPAN.pm 및 Perl과 함께 제공되는 기능보다 최신 기능일 수 있음).
-a
Creates the CPAN.pm autobundle with CPAN::Shell->autobundle.
-A module [ module ... ]
Shows the primary maintainers for the specified modules
-C module [ module ... ]
Show the Changes files for the specified modules
-D module [ module ... ]
Show the module details. This prints one line for each out-of-date module (meaning,
modules locally installed but have newer versions on CPAN). Each line has three columns:
module name, local version, and CPAN version.
-L author [ author ... ]
List the modules by the specified authors.
-h
Prints a help message.
-O
Show the out-of-date modules.
-r
Recompiles dynamically loaded modules with CPAN::Shell->recompile.
-v
Print the script version and CPAN.pm version.
sudo perl -MCPAN -e 'install Foo'
또한 참조하십시오 예, CPAN을 사용할 수도 있습니다..루트 또는 sudo 액세스 없이 CPAN을 사용할 수 있는 방법을 보여줍니다.
오토가 만들었어요 좋은 제안.이는 데비안뿐만 아니라 다른 데비안 파생물에서도 작동합니다.누락된 부분은 apt-cache 검색으로 무언가를 찾지 못한 경우 수행할 작업입니다.
$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update
그런 다음 설치하려는 임의의 모듈이 있을 때마다 다음을 수행하십시오.
$ cd ~/some/path
$ dh-make-perl --build --cpan Some::Random::Module
$ sudo dpkg -i libsome-random-module-perl-0.01-1_i386.deb
그러면 Some::Random::Module을 얻기 위해 설치할 수 있는 deb 패키지가 제공됩니다.여기서 가장 큰 이점 중 하나는 모듈 자체 외에 매뉴얼 페이지와 샘플 스크립트가 배포판의 선택한 위치에 배치된다는 것입니다.배포판이 Some::Random::Module의 최신 버전에 대한 공식 패키지와 함께 출시되면 apt-get 업그레이드 시 자동으로 설치됩니다.
이미 답변을 받았고 답변을 수락했습니다. 하지만 어쨌든:
IMHO CPAN 모듈을 설치하는 가장 쉬운 방법은 다음과 같습니다(유닉스 같은 시스템에서, 윈도우에 대해 전혀 모릅니다):
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
위의 내용은 "제로 구성 CPAN 모듈 설치 프로그램"을 설치하는 것입니다. cpanm
.(설치하는 데 몇 분이 걸릴 수 있습니다. 프로세스를 중단하지 마십시오.)
그리고 그 이후 - 간단하게:
cpanm Foo
cpanm Module::One
cpanm Another::Module
추천 많이 해주세요 CPAN.pm
, 훌륭하지만 Perl 5.10
그러면 다음 항목에도 액세스할 수 있습니다. CPANPLUS.pm
그것은 같다 CPAN.pm
하지만 더 좋습니다.
그리고 물론 다음에서 이용 가능합니다. CPAN
아직 이전 버전의 Perl을 사용하는 사람들을 위한 것입니다.시도해 보세요:
$ cpan CPANPLUS
다음과 같은 메시지와 함께 cpan install 명령이 실패하는 경우가 많습니다."make 테스트에서 잘못된 상태가 반환되었습니다. 강제 없이는 설치되지 않습니다."
이 경우 모듈을 설치하는 방법은 다음과 같습니다.
perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
우분투에서는 대부분의 Perl 모듈이 이미 패키지되어 있으므로 컴파일해야 하는 대부분의 다른 시스템보다 설치가 훨씬 빠릅니다.
설치하기 위해서 Foo::Bar
예를 들어 명령 프롬프트에서 일반적으로 다음을 수행합니다.
sudo apt-get install libfoo-bar-perl
안타깝게도 모든 모듈이 해당 명명 규칙을 따르는 것은 아닙니다.
심지어 작동해야 합니다.
cpan -i module_name
cpan 명령을 다음과 같이 사용하십시오. cpan Modulename
$ cpan HTML::Parser
종속성을 자동으로 설치하려면 아래를 따르십시오.
$ perl -MCPAN -e shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
exit
나는 선호한다 앱::cpanminus, 종속성을 자동으로 설치합니다.그냥 해
$ cpanm HTML::Parser
내가 아는 2가지 방법:
PPM 사용:
와 함께 윈도우 (ActivePerl) 나는ppm을 사용했습니다
명령줄에ppm을 입력하세요.PPM 프롬프트에서 ...
ppm> install foo
또는
ppm> search foo
사용 가능한 foo 모듈 목록을 얻으려면.유형 돕다 모든 명령에 대해
CPAN 사용:
CPAN을 다음과 같이 사용할 수도 있습니다(*nix 시스템) :
perl -MCPAN -e 'shell'
메시지를 받습니다
cpan>
프롬프트에서 ...
cpan> install foo (again to install the foo module)
cpan 명령 목록을 얻으려면 h를 입력하세요.
Fedora에서는 다음을 사용할 수 있습니다.
# yum install foo
Fedora에 해당 모듈에 대한 기존 패키지가 있는 한.
~에 Fedora Linux
또는 Enterprise Linux
, yum
또한 Perl 라이브러리 종속성을 추적합니다.따라서 Perl 모듈을 사용할 수 있고 일부 rpm 패키지가 해당 종속성을 내보내면 올바른 패키지가 설치됩니다.
yum install 'perl(Chocolate::Belgian)'
(대부분 perl-Chocolate-Belgian 패키지 또는 심지어 ChocolateFactory 패키지일 가능성이 높습니다)
나에게 가장 쉬운 방법은 다음과 같습니다.
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'
a) 자동 재귀 종속성 감지/해결/설치
b) 설정 스크립트에 적합한 쉘 온라인 프로그램입니다.
cpan 쉘이 사용하도록 구성되지 않은 사용자 정의 위치에 새 모듈을 넣으려면 아마도 다음이 유용할 것입니다.
#wget <URL to the module.tgz>
##unpack
perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install
때로는 다음을 사용할 수 있습니다. yum search foo
상대 Perl 모듈을 검색하려면 다음을 사용하십시오. yum install xxx
설치하기 위해서.
Perl의 ActiveState 배포판을 사용하는 Windows에서는 ppm 명령.
간단히 실행하기 cpan Foo::Bar
쉘에서 목적을 달성할 것입니다.
이미 답을 얻으신 것 같지만 제가 답변을 드려야겠다고 생각했습니다.이것이 내가 Ubuntu(또는 데비안 서버)의 일부 스크립트에서 수행하는 작업입니다.
#!/usr/bin/perl
use warnings;
use strict;
#I've gotten into the habit of setting this on all my scripts, prevents weird path issues if the script is not being run by root
$ENV{'PATH'} = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin';
#Fill this with the perl modules required for your project
my @perl = qw(LWP::Simple XML::LibXML MIME::Lite DBI DateTime Config::Tiny Proc::ProcessTable);
chomp(my $curl = `which curl`);
if(!$curl){ system('apt-get install curl -y > /dev/null'); }
chomp(my $cpanm = system('/bin/bash', '-c', 'which cpanm &>/dev/null'));
#installs cpanm if missing
if($cpanm){ system('curl -s -L http://cpanmin.us | perl - --sudo App::cpanminus'); }
#loops through required modules and installs them if missing
foreach my $x (@perl){
eval "use $x";
if($@){
system("cpanm $x");
eval "use $x";
}
}
이것은 나에게 잘 작동합니다. 아마도 여기에 사용할 수 있는 것이 있을 것입니다.