モジュールのインストール
- [Perl]
モジュールはsearch.cpan.orgや、CPAN Searchから探すといいみたいです。
Jcode.pmを例にとると、インストール手順はこんな感じ。
C:\>cd temp\jcode-0.83 C:\Temp\Jcode-0.83>perl Makefile.PL C:\Temp\Jcode-0.83>nmake C:\Temp\Jcode-0.83>nmake test C:\Temp\Jcode-0.83>nmake install実際に私の環境で行うと、nmakeでエラーになってしまいました。
C:\Temp\Jcode-0.83\Unicode\uni.cの18行目を修正するとよいという情報に従い、テストを行うとうまくいきました。
具体的にはこんな感じで、
C:\>cd temp\jcode-0.83
C:\Temp\Jcode-0.83>perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Jcode::Unicode
Writing Makefile for Jcode
C:\Temp\Jcode-0.83>nmake
Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
cp win_install.pl blib\lib\win_install.pl
cp Jcode/H2Z.pm blib\lib\Jcode/H2Z.pm
cp Jcode/Constants.pm blib\lib\Jcode/Constants.pm
cp Jcode/Unicode/NoXS.pm blib\lib\Jcode/Unicode/NoXS.pm
cp mac_install.pl blib\lib\mac_install.pl
cp Jcode/Unicode/Constants.pm blib\lib\Jcode/Unicode/Constants.pm
cp Jcode.pm blib\lib\Jcode.pm
cp Jcode/Tr.pm blib\lib\Jcode/Tr.pm
cp Unicode.pm ..\blib\lib\Jcode\Unicode.pm
cp _test.pl ..\blib\lib\Jcode\_test.pl
C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils/xsubpp -typemap C:\Perl\lib\ExtUtils\typemap Unicode.xs > Unicode.xsc && C:\Perl\bin\perl.exe -MExtUtils::Command -e mv Unicode.xsc Unicode.c
cl -c -nologo -Gf -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO-DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 -DVERSION=\"1.02\" -DXS_VERSION=\"1.02\" "-IC:\Perl\lib\CORE" Unicode.c
Unicode.c
uni.c(18) : fatal error C1083: インクルード ファイルがオープンできません。'sys/errno.h': Nosuch file or directory
NMAKE : fatal error U1077: 'cl' : リターン コード '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : リターン コード '0x2'
Stop.
エラーになりますので、uni.cを修正します。
/* * $Id: uni.c,v 0.79 2002/01/16 02:18:49 dankogai Exp $ * (c) 1999 Dan Kogai <dankogai@dan.co.jp> */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <limits.h> /* isascii() is no longer used to keep compatible w/ jperl -- thanks, Hirofumi.Watanabe@jp.sony.com #include <ctype.h> */ #define IS_ASCII(c) ((unsigned)(c) <= 0x7F) #include "table.h" #include <で、続き。sys/errno.herrno.h> // sys/errno.h→errno.hに修正 #define not_iso646_jp(x) ((x) != '\\' && (x) != '~')
C:\Temp\Jcode-0.83>nmake
Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
cp win_install.pl blib\lib\win_install.pl
cp Jcode/H2Z.pm blib\lib\Jcode/H2Z.pm
cp Jcode/Constants.pm blib\lib\Jcode/Constants.pm
cp Jcode/Unicode/NoXS.pm blib\lib\Jcode/Unicode/NoXS.pm
cp mac_install.pl blib\lib\mac_install.pl
cp Jcode/Unicode/Constants.pm blib\lib\Jcode/Unicode/Constants.pm
cp Jcode.pm blib\lib\Jcode.pm
cp Jcode/Tr.pm blib\lib\Jcode/Tr.pm
cp Unicode.pm ..\blib\lib\Jcode\Unicode.pm
cp _test.pl ..\blib\lib\Jcode\_test.pl
C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils/xsubpp -typemap C:\Perl\lib\ExtUtils\typemap Unicode.xs > Unicode.xsc && C:\Perl\bin\perl.exe -MExtUtils::Command -e mv Unicode.xsc Unicode.c
cl -c -nologo -Gf -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO-DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 -DVERSION=\"1.02\" -DXS_VERSION=\"1.02\" "-IC:\Perl\lib\CORE" Unicode.c
Unicode.c
uni.c(27) : warning C4244: '=' : 'unsigned long ' から 'unsigned char ' に変換しました。データが失われているかもしれません。
uni.c(121) : warning C4101: 'i' : ローカル変数は 1 度も使われません。
uni.c(203) : warning C4244: '=' : 'unsigned long ' から 'unsigned char ' に変換しました。データが失われているかもしれません。
uni.c(204) : warning C4244: '=' : 'unsigned long ' から 'unsigned char ' に変換しました。データが失われているかもしれません。
Unicode.c(34) : warning C4101: 'RETVAL' : ローカル変数は 1 度も使われません。
Unicode.c(61) : warning C4101: 'RETVAL' : ローカル変数は 1 度も使われません。
Unicode.c(88) : warning C4101: 'RETVAL' : ローカル変数は 1 度も使われません。
Unicode.c(113) : warning C4101: 'RETVAL' : ローカル変数は 1 度も使われません。
"Running Mkbootstrap for Jcode::Unicode ()"
C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 Unicode.bs
C:\Perl\bin\perl.exe -MExtUtils::Mksymlists -e "Mksymlists('NAME'=>\"Jcode::Unicode\", 'DLBASE' => 'Unicode', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);"
link -out:..\blib\arch\auto\Jcode\Unicode\Unicode.dll -dll -nologo -nodefaultlib -debug -opt:ref,icf -libpath:"C:\Perl\lib\CORE" -machine:x86 Unicode.obj C:\Perl\lib\CORE\perl58.lib oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib -def:Unicode.def
ライブラリ ..\blib\arch\auto\Jcode\Unicode\Unicode.lib とオブジェクト ..\blib\arch\auto\Jcode\Unicode\Unicode.exp を作成中
C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 755 ..\blib\arch\auto\Jcode\Unicode\Unicode.dll
C:\Perl\bin\perl.exe -MExtUtils::Command -e cp Unicode.bs ..\blib\arch\auto\Jcode\Unicode\Unicode.bs
C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 ..\blib\arch\auto\Jcode\Unicode\Unicode.bs
C:\Temp\Jcode-0.83>nmake test
Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
C:\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib\lib', 'blib\arch')" t\convert.t t\getcode.t t\h2z.t t\length.t t\mime.t t\new.t t\tr.t
t\convert....ok
t\getcode....ok
t\h2z........ok
t\length.....ok
t\mime.......ok
t\new........ok
t\tr.........ok
All tests successful.
Files=7, Tests=126, 2 wallclock secs ( 0.00 cusr + 0.00 csys = 0.00 CPU)
'No tests defined for Jcode::Unicode extension.'
C:\Temp\Jcode-0.83>nmake install
Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
Installing C:\Perl\site\lib\auto\Jcode\Unicode\Unicode.dll
Installing C:\Perl\site\lib\auto\Jcode\Unicode\Unicode.lib
Installing C:\Perl\site\lib\auto\Jcode\Unicode\Unicode.exp
Installing C:\Perl\site\lib\auto\Jcode\Unicode\Unicode.pdb
Skipping C:\Perl\site\lib\auto\Jcode\Unicode\Unicode.bs (unchanged)
Skipping C:\Perl\site\lib\win_install.pl (unchanged)
Skipping C:\Perl\site\lib\mac_install.pl (unchanged)
Skipping C:\Perl\site\lib\Jcode.pm (unchanged)
Skipping C:\Perl\site\lib\Jcode\H2Z.pm (unchanged)
Skipping C:\Perl\site\lib\Jcode\Constants.pm (unchanged)
Skipping C:\Perl\site\lib\Jcode\Tr.pm (unchanged)
Skipping C:\Perl\site\lib\Jcode\Unicode.pm (unchanged)
Skipping C:\Perl\site\lib\Jcode\_test.pl (unchanged)
Skipping C:\Perl\site\lib\Jcode\Unicode\NoXS.pm (unchanged)
Skipping C:\Perl\site\lib\Jcode\Unicode\Constants.pm (unchanged)
Writing C:\Perl\site\lib\auto\Jcode\.packlist
Appending installation info to C:\Perl\lib/perllocal.pod
C:\Temp\Jcode-0.83>
なにやら、いろいろとエラーは出力されていますが、どうやらインストールされたようです。
※ Perl5.8.0より、Encode Moduleが標準らしいです。
でも、Jcode使ってるスクリプトって多いので、まだまだ現役かしら?
トラックバック
- このエントリーにトラックバック:
- http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/59
コメント