이 오류가 발생합니다.
Can't locate Foo.pm in @INC
다운로드, 언 타링, 제작 등보다 쉬운 설치 방법이 있습니까?
이 오류가 발생합니다.
Can't locate Foo.pm in @INC
다운로드, 언 타링, 제작 등보다 쉬운 설치 방법이 있습니까?
답변:
유닉스에서 :
일반적으로 쉘에서 cpan 을 시작 합니다.
# cpan
그리고 유형
install Chocolate::Belgian
또는 짧은 형태로 :
cpan Chocolate::Belgian
Windows에서 :
Windows에서 ActivePerl을 사용하는 경우 PPM (Perl Package Manager) 은 CPAN.pm과 기능이 거의 동일합니다.
예:
# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
Perl 모듈을 설치하는 방법을 참조하십시오 . CPAN FAQ에서
많은 배포판이 많은 펄 모듈을 패키지로 제공합니다.
apt-cache search 'perl$'
pacman -Ss '^perl-'
dev-perl
당신은해야한다 항상 당신이 자동 (보안) 혜택으로 그들을 선호 업데이트 및의 용이성 제거 . cpan 도구 자체 로는 꽤 까다로울 수 있습니다 .
젠투에는 CPAN에서 모듈을 빌드 / 설치하고 젠투 패키지 ( ebuild )를 생성하는 g-cpan 이라는 멋진 도구 가 있습니다.
ppm
하이픈 -
을 사용합니다 . 훨씬 정직합니다. 예를 들어, 사용하는 경우 설치 , 또는 그것을 배포를 설치합니다 당신을 위해. 대부분의 배포판에는 동일한 이름의 단일 모듈이 포함되어 있지만 다음과 같은 예외가 있습니다.cpan
LWP
LWP::Simple
LWP::UserAgent
libwww-perl
App :: cpanminus를 보십시오 :
# cpanm Chocolate::Belgian
물건을 설치하는 데 좋습니다. CPAN 또는 CPANPLUS의 더 복잡한 기능은 제공하지 않으므로 설치할 모듈을 알고 있으면 사용하기 쉽습니다. cpanminus를 아직 얻지 못했다면 다음을 입력하십시오.
# cpan App::cpanminus
그것을 설치하십시오.
cpan을 전혀 사용하지 않고 설치할 수도 있습니다. 기본 부트 스트랩 절차는 다음과 같습니다.
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
자세한 내용은 App :: cpanminus 페이지로 이동하여 설치 섹션을 참조하십시오.
cpan
설치에 사용 하는 App::cpanminus
것은 약간 이상합니다. 일반적인 설치 지침에는 cpanmin.us 에서 일부를 다운로드 하여 나머지를 설치 하는 부트 스트랩 절차가 포함됩니다 . 이것은 cpan
(이후에) 쓸모없는 .cpan
디렉토리 의 구성 과 생성을 피합니다 .
cpanminus
터미널에서 설치할 수 있습니다 . 내가 찾아 cpanm
보다 나은 cpan
그것은 임시 로그 파일에 오히려 매장을 화면에 에러 로그를 넣어 오류의 경우에 경로를 제공하지 않기 때문에.
일부 사람들은 sudo에서 하나의 실행 cpan을 제안합니다. 이전에는 시스템 디렉토리에 설치해야했지만 최신 버전의 CPAN 셸에서는 설치시 에만 sudo를 사용하도록 구성 할 수 있습니다 . 테스트가 루트로 실행되지 않기 때문에 훨씬 안전합니다.
이전 CPAN 셸이있는 경우 새 cpan ( "install CPAN")을 설치하고 셸을 다시로드하면 이러한 새 지시문을 구성하라는 메시지가 표시됩니다.
요즘에는 오래된 CPAN이있는 시스템에있을 때 가장 먼저 쉘을 업데이트하고이를 수행하도록 설정하여 대부분의 cpan 작업을 일반 사용자로 수행 할 수 있습니다.
또한 Windows 사용자는 strawberry Perl을 조사하는 것이 좋습니다 . 이것은 컴파일러뿐만 아니라 사전 구성된 CPAN 셸과 함께 제공되는 Perl 버전입니다. 또한 외부 C 라이브러리 종속성, 특히 XML :: Parser와 함께 컴파일하기 어려운 Perl 모듈도 포함합니다. 이는 모듈을 설치할 때 다른 모든 Perl 사용자와 동일한 작업을 수행 할 수 있으며 일이 더 자주 "작동하는"경향이 있음을 의미합니다.
install CPAN
어디서? $sudo apt-get install cpan
?
두 사람이 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.
또한 참조 심지어 당신이 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의 최신 버전에 대한 공식 패키지가 제공되는 경우 업그레이드를 수행 할 때 자동으로 설치됩니다.
에 대한 많은 권장 사항 CPAN.pm
은 훌륭하지만 사용하는 경우 Perl 5.10
다음 CPANPLUS.pm
과 같은 액세스 권한 이 CPAN.pm
있지만 더 좋습니다.
물론 CPAN
이전 버전의 Perl을 사용하는 사람들도 사용할 수 있습니다 . 시도해 보지 않겠습니까?
$ cpan CPANPLUS
cpan 명령을 다음과 같이 사용하십시오. cpan Modulename
$ cpan HTML::Parser
종속성을 자동으로 설치하려면 다음을 따르십시오.
$ perl -MCPAN -e shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
exit
App :: cpanminus 선호하며 종속성을 자동으로 설치합니다. 그냥 해
$ cpanm HTML::Parser
내가 아는 두 가지 방법 :
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 Linux
또는 Enterprise Linux
, yum
또한 트랙 라이브러리 의존성을 펄. 따라서 perl 모듈을 사용할 수 있고 일부 rpm 패키지가 해당 종속성을 내 보내면 올바른 패키지가 설치됩니다.
yum install 'perl(Chocolate::Belgian)'
(대부분 perl-Chocolate-Belgian 패키지 또는 심지어 ChocolateFactory 패키지)
때로는를 사용하여 yum search foo
상대 perl 모듈을 검색 한 다음 yum install xxx
설치에 사용할 수 있습니다.
안전한 솔루션
많은 답변 은 보안에 대한 단어없이 cpan
유틸리티를 사용하는 것을 언급합니다 CPAN.pm
. 기본적으로 CPAN
2.27 이하 는 MITM 공격을 허용 urllist
하는 http URL (즉, http://www.cpan.org/ ) 을 사용 하도록 구성 되므로 안전하지 않습니다. CHECKSUMS
파일 을 다운로드하는 데 사용 되므로 보안 URL (예 : https://www.cpan.org/ ) 로 변경해야합니다 .
따라서 cpan을 실행하고 기본 구성을 승인 한 후 MyConfig.pm
다음 방법으로 생성 된 파일 (전체 경로가 출력 됨) 을 수정해야합니다 . 바꾸다
'urllist' => [q[http://www.cpan.org/]],
으로
'urllist' => [q[https://www.cpan.org/]],
참고 : https로는 충분하지 않습니다. 또한 신뢰할 수있는 웹 사이트가 필요합니다. 임의의 미러를 선택하려면주의하십시오.
그런 다음 cpan
일반적인 방법으로 사용할 수 있습니다 .
내 버그 리포트 안전하지 않은 URL에 대한 rt.cpan.org합니다.
당신이 이미 답을 얻은 것처럼 보이지만 나는 차임 할 것이라고 생각했습니다. 이것은 우분투 (또는 데비안 서버)의 일부 스크립트에서 수행하는 작업입니다.
#!/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";
}
}
이것은 나를 위해 잘 작동합니다. 어쩌면 여기에 사용할 수있는 것이있을 수 있습니다.