< 携帯コンテンツ開発情報 | URL or URI ? >

October 7, 2003

モジュールのインストール

モジュールは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

コメント

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?