モジュールDigest::SHA1
をダウンロードしてディレクトリ(../Digest-SHA1-2.13/)に抽出し、すべてのSHA1。*ファイルを(../Digest-SHA1-2.13/Digest)にコピーしました
そして、Perlスクリプトでは、次のようにしました。Digest:: SHA1を使用します。次のようなスクリプトを起動します。
Perl -I ../Digest-SHA1-2.13/Digest perlscriptname.pl
私はこのエラーを受け取ります:
Can't locate loadable object for module Digest::SHA1 in @INC
共有ライブラリ(* .so)と関係があると思いますが、ここから続行する方法がわかりません。
CPAN(-MCPAN)モジュールを使用して直接インストールできます。そのためのサーバーに対する権限がなく、ローカル(アプリケーションが実行されている場所)にのみインストールできるためです。私の最終的な目標は、Algorithm::CouponCode
に依存するDigest::SHA1
を使用することです
奇妙な部分は、私がDigest::SHA1
をインストールしている(Perl -MDigest::SHA1 -e 'print $Digest::SHA1::VERSION'
はバージョン2.11を示している)ことですが、Algorithm::CouponCode
(Digest::SHA1
と同じ方法でインストールされています)から、 @INC
で見つける
ありがとう!
このレシピを使用して、Perlモジュールを手動でインストールします。
tar zxf Digest-SHA1-2.13.tar.gz
cd Digest-SHA1-2.13
Perl Makefile.PL
make
make test
make install
一部のディストリビューションには、Build.PL
ではなくMakefile.PL
ファイルが含まれることに注意してください。その場合は、次のレシピを使用します。
tar zxf ...
cd ...
Perl Build.PL
./Build
./Build test
./Build install
(make install
と./Build install
を実行するだけでうまくいく場合があります。)
インストールディレクトリを変更する必要がある場合は、次を使用します。
Perl Makefile.PL INSTALL_BASE=...
または
Perl Build.PL --install_base ...
モジュールの種類によって異なります。
詳細については、perldocの ExtUtils :: MakeMaker :: FAQ および Module :: Build を参照してください。
Perlモジュールには、pure-PerlとXSの2種類があります。 Pure-Perlモジュールは完全にPerlで記述されており、通常、.pm
ファイルを適切なディレクトリにコピーするだけでインストールできます。 XSモジュールはPerlとCの両方で記述され(XSは ExtUtils :: ParseXS モジュールによってCコードに処理されます)、それらをインストールするにはCコンパイラが必要です。
Dsolimanoが言ったように、rootアクセスがないときにシステムPerl用のPerlモジュールをインストールする最も簡単な方法は local :: lib を使用することです。 (あなたはlocal::lib
が自分でするのと同じことをすることができますが、なぜ面倒なのですか?)
Digest::SHA1
が単独で機能するが、Algorithm::CouponCode
を使用している場合は機能しない理由は、システムPerlにDigest::SHA1
のバージョン2.11がすでにインストールされているためです。 -I ../Digest-SHA1-2.13/Digest
を使用すると、use Digest::SHA1
は../Digest-SHA1-2.13/DigestからPerlコードを取得しますが、XSコードからビルドされる共有ライブラリは対応する場所にありません。
local :: lib を使用できない理由は何ですか?
perl5LIBでPerlモジュールのローカルlib /を作成して使用する
基本的には、システム全体ではないプライベートディレクトリをPerlライブラリディレクトリとして使用するのに役立つツールです。
設定後、次のようなコマンドを実行できます
Perl -MCPAN -Mlocal::lib -e 'CPAN::install(Algorithm::CouponCode)'
次に、スクリプトはローカルにインストールされたAlgorithm::CouponCode)
のコピーを使用します。