누락된 Perl 모듈을 설치하는 가장 쉬운 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/65865

  •  09-06-2019
  •  | 
  •  

문제

다음 오류가 발생합니다.

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";
    }
}

이것은 나에게 잘 작동합니다. 아마도 여기에 사용할 수 있는 것이 있을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top