web-dev-qa-db-ja.com

不足しているPerlモジュールをインストールする最も簡単な方法は何ですか?

私はこのエラーを受け取ります:

Can't locate Foo.pm in @INC

ダウンロード、解凍、作成などよりも簡単にインストールできますか?

166
dreeves

Unix

通常、シェルで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

CPAN FAQの Perlモジュールのインストール方法 を参照してください

多くのディストリビューションは、多くのPerlモジュールをパッケージとして出荷しています。

  • Debian/Ubuntu:apt-cache search 'Perl$'
  • Arch Linux:pacman -Ss '^Perl-'
  • Gentoo:カテゴリdev-Perl

always自動(セキュリティ)updatesと使いやすさremovalcpanツール自体では、これはかなり難しい場合があります。

Gentooには、g-cpanという素敵なツールがあり、CPANからモジュールをビルド/インストールし、Gentooパッケージを作成します(- ebuild ).

202

App :: cpanminus

# cpanm Chocolate::Belgian

何かをインストールするのに最適です。 CPANやCPANPLUSのより複雑な機能は提供しないため、インストールするモジュールがわかっていれば、簡単に使用できます。 cpanminusをまだ取得していない場合は、次のように入力します。

# cpan App::cpanminus

それをインストールします。

Cpanをまったく使用せずにインストールすることもできます。基本的なbootstrapプロシージャは、

curl -L http://cpanmin.us | Perl - --Sudo App::cpanminus

詳細については、App :: cpanminusページにアクセスして、インストールに関するセクションを参照してください。

61
Philip Potter

私は、Sudoでcpanを1回実行することを提案している人々に注目しています。以前はシステムディレクトリにインストールする必要がありましたが、最新バージョンのCPANシェルでは、インストールにSudojustを使用するように設定できます。これは、テストがルートとして実行されないことを意味するため、はるかに安全です。

古いCPANシェルを使用している場合は、新しいcpanをインストールするだけで(「CPANのインストール」)、シェルをリロードすると、これらの新しいディレクティブを構成するように求められます。

最近では、古いCPANを備えたシステムを使用している場合、最初に行うことは、シェルを更新してセットアップすることです。これにより、通常のユーザーとしてcpanのほとんどの作業を実行できます。

また、Windowsユーザーが strawberry Perl を調査することを強くお勧めします。これは、事前構成されたCPANシェルおよびコンパイラーとともにパッケージ化されたPerlのバージョンです。また、外部Cライブラリの依存関係、特にXML :: Parserを含む、コンパイルが困難なPerlモジュールも含まれています。これは、モジュールのインストールに関しては、他のすべてのPerlユーザーと同じことを実行できることを意味し、物事はより頻繁に「正常に動作する」傾向があります。

28
Dave Rolsky

Ubuntuを使用していて、事前にパッケージ化されたPerlモジュール(たとえば、geo :: ipfree)をインストールする場合は、これを試してください。

 $ apt-cache検索Perl geo :: ipfree 
 libgeo-ipfree-Perl-IPアドレスの国の検索Perlモジュール
 
 $ Sudo apt-get libgeo-ipfree-Perl 
をインストールします
23
Otto

数人の人が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.
15
brian d foy

Sudo Perl -MCPAN -e 'install Foo'

11
dreeves

はい、CPANを使用することもできます も参照してください。ルートまたはSudoアクセスなしでCPANを使用する方法を示します。

10
Corion

Ottoは 良い提案 を作成しました。これは、他のDebian派生物と同様に、Debianでも機能します。不足している部分は、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パッケージが提供されます。ここでの大きな利点の1つは、モジュール自体に加えて、マニュアルページとサンプルスクリプトがディストリビューションの選択した場所に配置されることです。ディストリビューションにSome :: Random :: Moduleの新しいバージョンの公式パッケージが付属している場合、apt-get upgradeを実行すると自動的にインストールされます。

8
mikegrb

すでに答えられ、受け入れられた答え-しかしとにかく:

私見CPANモジュールをインストールする最も簡単な方法は(UNIXのようなシステムで、Windowsのことを知らない):

curl -L http://cpanmin.us | Perl - --Sudo App::cpanminus

上記はcpanmと呼ばれる「ゼロ構成CPANモジュールインストーラー」をインストールしています。 (インストールには数分かかることがあります-プロセスを中断しないでください)

および後-単に:

cpanm Foo
cpanm Module::One
cpanm Another::Module
7
jm666

CPAN.pmには多くの推奨事項がありますが、これは素晴らしいことですが、Perl 5.10を使用している場合は、CPANPLUS.pmに似ていますが、CPAN.pmにもアクセスできます。

そしてもちろん、古いバージョンのPerlをまだ使用している人はCPANで利用できます。試してみませんか:

$ cpan CPANPLUS
6
Dave Cross

多くの場合、cpan installコマンドが"make test has bad statusを返し、強制的にインストールしない"のようなメッセージで失敗することがあります

その場合、モジュールをインストールする方法は次のとおりです。

Perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
5
jaxbihani

Ubuntuでは、ほとんどのPerlモジュールがすでにパッケージ化されているため、インストールはコンパイルが必要な他のほとんどのシステムよりもはるかに高速です。

たとえば、コマンドプロンプトでFoo::Barをインストールするには、通常は次のようにします。

Sudo apt-get install libfoo-bar-Perl

残念ながら、すべてのモジュールがその命名規則に従っているわけではありません。

4
Myforwik

それでも動作するはずです:

cpan -i module_name
4
Mandar Pande

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
4
Chankey Pathak

私にとって最も簡単な方法はこれです:

Perl_MM_USE_DEFAULT=1 Perl -MCPAN -e 'install DateTime::TimeZone'

a)再帰的な依存関係の自動検出/解決/インストール

b)セットアップスクリプトに適したシェルオンライン

3
Mister X

私が知っている2つの方法:

SING PPM:

Windows(ActivePerl)でppmを使用しました

コマンドラインから「ppm」と入力します。 ppmプロンプトで...

ppm> install foo

または

ppm> search foo

利用可能なfooモジュールのリストを取得します。すべてのコマンドに対してhelpと入力します

CPANを使用:

このようにCPANを使用することもできます(* nix systems):

Perl -MCPAN -e 'Shell'

プロンプトが表示されます

cpan>

プロンプトで...

cpan> install foo  (again to install the foo module)

hを入力して、cpanのコマンドのリストを取得します

3
JWHEAT

Fedora LinuxまたはEnterprise Linuxでは、yumはPerlライブラリの依存関係も追跡します。したがって、Perlモジュールが使用可能であり、一部のrpmパッケージがその依存関係をエクスポートする場合、適切なパッケージがインストールされます。

yum install 'Perl(Chocolate::Belgian)'

(おそらくPerl-Chocolate-Belgianパッケージ、またはChocolateFactoryパッケージ)

3
Michal Ingeli

Fedoraでは次を使用できます

# yum install foo

fedoraにモジュール用の既存のパッケージがある限り。

3
Bruce Alderman

Cpanシェルが使用するように構成されていないカスタムの場所に新しいモジュールを配置する場合は、おそらく次の方法が便利です。

 #wget <URL to the module.tgz>
 ##unpack
 Perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install
2
venkrao

yum search fooを使用して相対Perlモジュールを検索し、yum install xxxを使用してインストールできる場合があります。

2
Chris Forever

あなたはすでにあなたの答えを持っているようですが、私はチャイムを入れると思った。これはUbuntu(またはDebianサーバー)上のいくつかのスクリプトで行うこと

#!/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";
    }
}

これは私にとってはうまくいきます。多分ここに何か使えるものがあります。

1
Ed Dunn

WindowsでPerlのActiveStateディストリビューションを使用している場合は、 ppm コマンドを使用します。

1
PW.

シェルでcpan Foo::Barを実行するだけで目的が達成されます。

1
Kamal Nayan