Strawberry Perl+Proxy接続環境でCPANモジュールをインストールする

Strawberry Perl+Proxy接続環境でCPANモジュールをインストールする

Posted at January 17,2014 12:55 AM
Tag:[CPAN, Perl]

Strawberry Perl+Proxy接続環境でCPANモジュールをインストールする方法について紹介します。

1.問題点

Strawberry PerlでCPANモジュールを追加するには、スタートメニューから「Strawberry Perl」→「tools」→「CPAN Client」を起動します。

CPAN Client

そのあと、

install モジュール名

を実行すれば簡単にインストールできます。

が、企業で利用しているサーバは、外部にアクセスする際にプロキシサーバを経由することになっているため、正常にインストールすることができません。

ネットでは「そういうときはcpanにプロキシサーバのURLとポートを設定」という記事をみかけますが、proxy.pacという自動プロキシ設定ファイルを利用しているケースもあり、その中からプロキシサーバを導き出すのは非常に面倒ですし、うまくいかない可能性もあります。

ということで、ここではそういった環境でもCPANモジュールを追加できる方法を紹介します。

端的にいうと、CPANモジュールは手動でダウンロードして、それをWindows上でmakeします。

2.CPANモジュールのダウンロード

インストールしたいCPANモジュールをダウンロードします。ここではDBI.pmを例にします。

DBIの場合、「DBI - search.cpan.org」にあるDBI-1.630.tar.gzをクリック(バージョンは2014年1月現在)。

DBI-1.630.tar.gz

3.アーカイブの展開

ダウンロードしたアーカイブを展開します。

ここではCドライブ直下に「DBI-1.630」というフォルダを展開し、フォルダ直下にMakefile.PLというファイルがある前提で話を進めます。

4.Makefileの作成

コマンドプロンプトを起動して展開したフォルダに移動し、Makefileを作成します。

C:\>cd C:\DBI-1.630
C:\DBI-1.630>perl Makefile.PL

実行結果は次の通りです。

C:\DBI-1.630>perl Makefile.PL
Your perl was compiled with gcc (version 4.7.3), okay.
Creating test wrappers for DBD::Gofer:
t/zvg_01basics.t
t/zvg_02dbidrv.t
t/zvg_03handle.t
(中略)
t/zvxgnp_85gofer.t
 
    I see you're using perl 5.018001 on MSWin32-x86-multi-thread-64int, okay.
    Remember to actually *read* the README file!
    Use  'make' to build the software (dmake or nmake on Windows).
    Then 'make test' to execute self tests.
    Then 'make install' to install the DBI and then delete this working
    directory before unpacking and building any DBD::* drivers.
 
    Windows users need to use the correct make command.
    That may be nmake or dmake depending on which Perl you are using.
    If using the Win32 ActiveState build then it is recommended that you
    use the ppm utility to fetch and install a prebuilt DBI instead.
 
Writing Makefile for DBI
Writing MYMETA.yml and MYMETA.json

5.ビルド

Makefileができればあとはビルドを行います。

ここではStrawberry Perlに同梱されているdmakeを利用します。

最初にコンパイルを実施します。

C:\DBI-1.630>dmake

実行結果は次の通りです。

C:\DBI-1.630>dmake
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e mkpath -- blib\lib\DBI
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e rm_f -- blib\lib\DBI\Changes.pm
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e cp -- Changes blib\lib\DBI\Changes.pm
cp lib/DBD/File/Roadmap.pod blib\lib\DBD\File\Roadmap.pod
cp lib/DBD/Gofer/Policy/classic.pm blib\lib\DBD\Gofer\Policy\classic.pm
cp lib/DBD/File/HowTo.pod blib\lib\DBD\File\HowTo.pod
(中略)
g++ -o blib\arch\auto\DBI\DBI.dll -Wl,--base-file -Wl,dll.base -mdll -s -L"C:\strawberry\perl\lib\CO
RE" -L"C:\strawberry\c\lib" DBI.o   C:\strawberry\perl\lib\CORE\libperl518.a -lmoldname -lkernel32 -
luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws
2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 dll.exp
dlltool --def DBI.def --base-file dll.base --output-exp dll.exp
g++ -o blib\arch\auto\DBI\DBI.dll -mdll -s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib" D
BI.o   C:\strawberry\perl\lib\CORE\libperl518.a -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -l
comdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion
-lodbc32 -lodbccp32 -lcomctl32 dll.exp
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 755 blib\arch\auto\DBI\DBI.dll
C:\strawberry\perl\bin\perl.exe "-Iblib\arch" "-Iblib\lib" dbilogstrip.PL dbilogstrip
Extracted dbilogstrip from dbilogstrip.PL with variable substitutions.
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e cp -- dbilogstrip blib\script\dbilogstrip
pl2bat.bat blib\script\dbilogstrip
C:\strawberry\perl\bin\perl.exe "-Iblib\arch" "-Iblib\lib" dbiprof.PL dbiprof
Extracted dbiprof from dbiprof.PL with variable substitutions.
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e cp -- dbiprof blib\script\dbiprof
pl2bat.bat blib\script\dbiprof
C:\strawberry\perl\bin\perl.exe "-Iblib\arch" "-Iblib\lib" dbiproxy.PL dbiproxy
Extracted dbiproxy from dbiproxy.PL with variable substitutions.
C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e cp -- dbiproxy blib\script\dbiproxy
pl2bat.bat blib\script\dbiproxy

続いて、コンパイルしてできたものが正しく動作するか検証するためのコマンドを実行します。

C:\DBI-1.630>dmake test

実行結果は次の通りです。

C:\DBI-1.630>dmake test
C:\strawberry\perl\bin\perl.exe "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harne
ss::Switches; test_harness(0, 'blib\lib', 'blib\arch')" t/*.t
t/01basics.t .................... ok
t/02dbidrv.t .................... ok
t/03handle.t .................... ok
(中略)
t/zvxnp_51dbm_file.t ............ ok
t/zvxnp_52dbm_complex.t ......... skipped: DBI::SQL::Nano is being used
t/zvxnp_85gofer.t ............... ok
All tests successful.
Files=182, Tests=7465, 93 wallclock secs ( 2.09 usr +  1.09 sys =  3.18 CPU)
Result: PASS
C:\strawberry\perl\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.pl
test.pl
DBI test application $Revision$
Switch: DBI 1.63 by Tim Bunce, 1.63
Available Drivers: ADO, DBM, ExampleP, File, Gofer, ODBC, Pg, Proxy, SQLite, Sponge, mysql
dbi:ExampleP:: testing 3 sets of 20 connections:
Connecting... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Disconnecting...
Connecting... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Disconnecting...
Connecting... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Disconnecting...
connect 20 and disconnect them, 3 times: 0.0080s / 60 = 0.0001s
Testing handle creation speed...
35650 NullP sth/s perl 5.018002 MSWin32-x86-multi-thread-64int (gcc 4.7.3 -s -O2) 0.000028s
 
test.pl done

最後にインストールを実行します。

C:\DBI-1.630>dmake install

実行結果は次の通りです。

C:\DBI-1.630>dmake install
Files found in blib\arch: installing files in blib\lib into architecture depende
nt library tree
Installing C:\strawberry\perl\site\lib\auto\DBI\dbd_xsh.h
Installing C:\strawberry\perl\site\lib\auto\DBI\DBI.bs
Installing C:\strawberry\perl\site\lib\auto\DBI\DBI.dll
Installing C:\strawberry\perl\site\lib\auto\DBI\dbipport.h
Installing C:\strawberry\perl\site\lib\auto\DBI\dbivport.h
Installing C:\strawberry\perl\site\lib\auto\DBI\DBIXS.h
Installing C:\strawberry\perl\site\lib\auto\DBI\dbixs_rev.h
Installing C:\strawberry\perl\site\lib\auto\DBI\dbi_sql.h
Installing C:\strawberry\perl\site\lib\auto\DBI\Driver.xst
Installing C:\strawberry\perl\site\lib\auto\DBI\Driver_xst.h
Installing C:\strawberry\perl\site\lib\DBI.pm
(中略)
Installing C:\strawberry\perl\site\bin\dbiproxy
Installing C:\strawberry\perl\site\bin\dbiproxy.bat
Appending installation info to C:\strawberry\perl\lib/perllocal.pod
dmake:  Warning: -- Target [install] was made but the time stamp has not been up
dated.

これでC:\strawberry\perl\site\libにDBI.pmおよび関連モジュールがインストールされます。

DBI.pm

6.参考サイト

参考サイトは以下です。ありがとうございました。

PerlモジュールをCPANでインストールしたいのですが、プロキシにひっかかってしま...
関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)