mieki256's diary



2014/10/08(水) [n年前の日記]

#1 [namazu][perl] Search::Namazuをインストールしようとしたけど

Windows7 x64 + ActivePerl 5.16.3 で Search::Namazu を cpanp でインストールしようとしてるけど、なかなか難しい。
cpanp
d Search::Namazu
z Search::Namazu
exit
i Search::Namazu

少しググってみたら、nmz-config はシェルスクリプトらしい。シェルスクリプト…ってことは、このモジュールは、*NIX環境に限定したモジュールなのかな。

_Search-Namazu for Windows でエラー発生: ナマズのブログ で、Makefile.PL を書き換えて試した事例が公開されてた。自分も修正して試してみたり。
use ExtUtils::MakeMaker;

# my $cflags = `nmz-config --cflags`;
# my $libs = `nmz-config --libs`;

WriteMakefile(
    'NAME' => 'Search::Namazu',
    'VERSION_FROM' => 'Namazu.pm',
    'INC' => '-IC:/namazu/include',
    'LIBS' => ['-LC:/namazu/lib -lnmz'],
    'clean' => {'FILES' => "t/index"}
);
C:\namazu\ に Namazu for Windows を解凍して置いてあるけど、その中に include/ と lib/ があるからソレを指定する、ということらしい。

やっぱりエラーだらけ。
CPAN Terminal> i Search::Namazu

Installing Search::Namazu (0.96)
Running [C:\Perl\bin\perl.exe -e use strict; BEGIN { my $old = select STDERR; $|++; select $old; $|++; $0 = shift(@ARGV); my $rv = do($0); die $@ if $@; } C:\home\mieki256\.cpanplus\5.16.3\build\Search-Namazu-0.96\Makefile.PL]...
Set up gcc environment - 3.4.5 (mingw-vista special r3)
Checking if your kit is complete...
Looks good
Have \perl\lib
Want \perls\perl516\lib
Your perl and your Config.pm seem to have different ideas about the
architecture they are running on.
Perl thinks: [lib]
Config says: [MSWin32-x86-multi-thread]
This may or may not cause problems. Please check your installation of perl
if you have problems building this extension.
Warning (mostly harmless): No library found for -lkernel32
Warning (mostly harmless): No library found for -luser32
Warning (mostly harmless): No library found for -lgdi32
Warning (mostly harmless): No library found for -lwinspool
Warning (mostly harmless): No library found for -lcomdlg32
Warning (mostly harmless): No library found for -ladvapi32
Warning (mostly harmless): No library found for -lshell32
Warning (mostly harmless): No library found for -lole32
Warning (mostly harmless): No library found for -loleaut32
Warning (mostly harmless): No library found for -lnetapi32
Warning (mostly harmless): No library found for -luuid
Warning (mostly harmless): No library found for -lws2_32
Warning (mostly harmless): No library found for -lmpr
Warning (mostly harmless): No library found for -lwinmm
Warning (mostly harmless): No library found for -lversion
Warning (mostly harmless): No library found for -lodbc32
Warning (mostly harmless): No library found for -lodbccp32
Warning (mostly harmless): No library found for -lcomctl32
Warning (mostly harmless): No library found for -lmsvcrt
Generating a dmake-style Makefile
Writing Makefile for Search::Namazu
Writing MYMETA.yml and MYMETA.json
[ERROR] MAKE failed:  cp Namazu.pm blib\lib\Search\Namazu.pm
Running Mkbootstrap for Search::Namazu ()
C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 Namazu.bs
C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils\xsubpp  -typemap C:\Perls\Perl516\lib\ExtUtils\typemap  Namazu.xs > Namazu.xsc && C:\Perl\bin\perl.exe -MExtUtils::Command -e mv -- Namazu.xsc Namazu.c
C:\Perl\site\bin\gcc.exe -c  -IC:/namazu/include        -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D_USE_32BIT_TIME_T -DHASATTRIBUTE -fno-strict-aliasing -mms-bitfields -O2       -DVERSION=\"0.96\"  -DXS_VERSION=\"0.96\"  "-IC:\Perls\Perl516\lib\CORE"   Namazu.c
C:\Perl\bin\perl.exe -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"Search::Namazu\", 'DLBASE' => 'Namazu', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
Set up gcc environment - 3.4.5 (mingw-vista special r3)
C:\Perl\site\bin\dlltool.exe --def Namazu.def --output-exp dll.exp
C:\Perl\site\bin\g++.exe -o blib\arch\auto\Search\Namazu\Namazu.dll -Wl,--base-file -Wl,dll.base -mdll -L"C:\Perls\Perl516\lib\CORE" Namazu.o   C:\Perls\Perl516\lib\CORE\perl516.lib C:\namazu\lib\libnmz.a dll.exp
C:\namazu\lib\libnmz.a(libnamazu.o): In function `nmz_msg':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/libnamazu.c:217: undefined reference to `libintl_vsnprintf'
C:\namazu\lib\libnmz.a(libnamazu.o): In function `nmz_set_dyingmsg_sub':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/libnamazu.c:235: undefined reference to `libintl_vsnprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_warn_printf':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:293: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:296: undefined reference to `libintl_vfprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:300: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:284: undefined reference to `libintl_fprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_debug_printf':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:323: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:326: undefined reference to `libintl_vfprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:330: undefined reference to `libintl_fprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_strerror':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:578: undefined reference to `libintl_gettext'
collect2: ld returned 1 exit status
dmake.exe:  Error code 129, while making 'blib\arch\auto\Search\Namazu\Namazu.dll'


[ERROR] Unable to create a new distribution object for 'Search::Namazu' -- cannot continue

[ERROR] IPC::Run version '0.55' is required on MSWin32 in order to capture buffers. The logfile generated may not contain any useful data, until it is installed

*** Install log written to:
  C:\home\mieki256\.cpanplus\install-logs\Search-Namazu-0.96-1412724320.log

Error installing 'Search::Namazu'
Problem installing one or more modules
*** You can view the complete error buffer by pressing 'p' ***
何が起きてるのかさっぱり分からない。なんだか色んなものが足りてないような雰囲気だけど。

ExtUtils::FakeConfig をインストール。 :

「ExtUtils::FakeConfig を使えば〜」というコメントを見かけたので、何のツールかよく分からないけどインストール。

_MinGW + MSYS 環境で Text::Kakasi と MeCab をビルドする - あまつぶ@はてなダイアリー に従って作業。

MinGW/MSYS をインストール済みの環境なので、C:\MinGW\msys\1.0\ 以下で作業する。

C:\MinGW\msys\1.0\home\アカウント名\perl-modules\ でフォルダを作成。 _Mattia Barbon / ExtUtils-FakeConfig - search.cpan.org から、ExtUtils-FakeConfig-0.12.zip をDL。解凍。
wget ExtUtils-FakeConfig-0.12.zip
unzip ExtUtils-FakeConfig-0.12.zip
cd ExtUtils-FakeConfig-0.12
perl Makefile.PL
nmake
nmake install
make じゃなくて、nmake を使うのがポイントらしい。nmake.exe をどこかから入手する必要があるけど。

自分のHDD内を検索したら、
  • C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\nmake.exe
  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\nmake.exe
  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\nmake.exe
  • C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\nmake.exe
といったあたりが見つかった。Visual Studio 2010 Express とか Visual Studio 2013 Express をインストールすると、nmake.exe も入手できるのかもしれない。

さておき。以下のような出力メッセージになった。
> perl Makefile.PL

Set up gcc environment - 3.4.5 (mingw-vista special r3)
Checking if your kit is complete...
Looks good
Have \perl\lib
Want \perls\perl516\lib
Your perl and your Config.pm seem to have different ideas about the
architecture they are running on.
Perl thinks: [lib]
Config says: [MSWin32-x86-multi-thread]
This may or may not cause problems. Please check your installation of perl
if you have problems building this extension.
Generating a nmake-style Makefile
Writing Makefile for ExtUtils::FakeConfig
Writing MYMETA.yml and MYMETA.json
Using: 'nmake'
> nmake

Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

        C:\Perl\bin\perl.exe script/fill_template.pl spec/Config_ap.txt spec/ap_mingw_510.txt blib\lib/Config_m.pm cc=gcc pack_name=Config_m
cp lib/Config_u.pm blib\lib\Config_u.pm
cp lib/ExtUtils/FakeConfig.pm blib\lib\ExtUtils\FakeConfig.pm
cp lib/Config_m.pod blib\lib\Config_m.pod
> nmake install

Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

Installing C:\Perls\Perl516\html\site\lib\Config_m.html
Installing C:\Perls\Perl516\html\site\lib\Config_u.html
Installing C:\Perls\Perl516\html\site\lib\ExtUtils\FakeConfig.html
Installing C:\Perls\Perl516\site\lib\Config_m.pm
Installing C:\Perls\Perl516\site\lib\Config_m.pod
Installing C:\Perls\Perl516\site\lib\Config_u.pm
Installing C:\Perls\Perl516\site\lib\ExtUtils\FakeConfig.pm
        C:\Perl\bin\perl.exe script\make_implib.pl --output-dir="C:\Perls\Perl516\lib\CORE" --target=mingw "C:\Perls\Perl516\bin\perl516.dll"
Appending installation info to C:\Perls\Perl516\lib/perllocal.pod
.pm が、ActivePerl 5.16.x のインストールフォルダの中にコピーされたっぽい。

別のDOS窓を開いて、モジュールが登録されているか確認。
perl -MExtUtils::FakeConfig -e""
登録はされてるっぽい。

Search::Namazuのインストールに再挑戦。 :

_NOKUBI Takatsugu / Search-Namazu-0.96 - search.cpan.org から、Search-Namazu-0.96.tar.gz をDLして試してみる。

C:\MinGW\msys\1.0\home\アカウント名\ 以下で。
wget http://search.cpan.org/CPAN/authors/id/K/KN/KNOK/Search-Namazu-0.96.tar.gz
tar zxvf Search-Namazu-0.96.tar.gz
cd Search-Namazu-0.96
Makefile.PL を修正して保存。

おそらくは、ExtUtils::FakeConfig とやらを使った形で Makefile を作らせる。
perl -MConfig_m Makefile.PL
nmake
エラーが出た。
> nmake

Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

cp Namazu.pm blib\lib\Search\Namazu.pm
Running Mkbootstrap for Search::Namazu ()
        C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 Namazu.bs
        C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils\xsubpp  -typemap C:\Perls\Perl516\lib\ExtUtils\typemap  Namazu.xs > Namazu.xsc && C:\Perl\bin\perl.exe -MExtUtils::Command -e mv -- Namazu.xsc Namazu.c
        gcc -c  -IC:/namazu/include  -O2 -DWIN32 -DPERL_IMPLICIT_CONTEXT -DPERL_MSVCRT_READFIX -O2    -DVERSION=\"0.96\"  -DXS_VERSION=\"0.96\" -DHASATTRIBUTE "-IC:\Perls\Perl516\lib\CORE"
   Namazu.c
        C:\Perl\bin\perl.exe -MExtUtils::Mksymlists  -e "Mksymlists('NAME'=>\"Search::Namazu\", 'DLBASE' => 'Namazu', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
Set up gcc environment - 3.4.5 (mingw-vista special r3)
NMAKE : fatal error U1073: don't know how to make 'C:\Perls\Perl516\lib\CORE\libperl510.a'
Stop.
「C:\Perls\Perl516\lib\CORE\libperl510.a がねえよ」と言われてる? libperl510.a って何だ?

NKF.pmのインストールに挑戦。 :

よく分かってないけど、 _nkf Network Kanji Filter プロジェクト日本語トップページ - SourceForge.JP から nkf-2.1.3.tar.gz をDLして解凍。INSTALL.j を眺めると、
Perl モジュールを作るには、
    make perl
です。NKF.mod 下にできます。そちらで、perl Makefile.PL; make
でもOk。 Perl 5 以上で動作します。5.6, 5.8 で動作確認しています。
と書いてあった。

Makefile の perl の箇所を眺めると、
perl:
	( cd NKF.mod ; \
	$(PERL) Makefile.PL  ; \
	make ; \
	make test )
と書いてあったので…。
  1. cd NKF.mod
  2. perl Makefile.PL
  3. make
  4. make test
をすればいいんじゃないかなと想像。

試してみたけど、エラーが出る。
> perl Makefile.PL

Set up gcc environment - 3.4.5 (mingw-vista special r3)
Have \perl\lib
Want \perls\perl516\lib
Your perl and your Config.pm seem to have different ideas about the
architecture they are running on.
Perl thinks: [lib]
Config says: [MSWin32-x86-multi-thread]
This may or may not cause problems. Please check your installation of perl
if you have problems building this extension.
Generating a dmake-style Makefile
Writing Makefile for NKF
Writing MYMETA.yml and MYMETA.json

> make

make: rem: Command not found
make: *** [blibdirs] Error 127
もしかして、「make なんてコマンドは知らねえよ」と言われているのだろうか。 C:\MinGW\msys\1.0\bin\make.exe にあるはずなんだけど…。それとも、「rem って何だ? 知らねえコマンドだなオイ」と言われてるのだろうか。

ふと、perl Makefile.PL をした際に、
Generating a dmake-style Makefile
と言われてることに気がついた。「dmake 用のフォーマットで Makefile を作ったぜ」と言ってるのかな。

which dmake をしたら、C:\Perl\site\bin\dmake.exe に入ってる模様。ActivePerl が dmake を用意してくれてるっぽい。

make の代わりに、dmake と打ってみた。なんだかそれっぽいメッセージが出てきた。blib\arch/auto/NKF/NKF.dll てのが作られた、のかな?

dmake test をしてみた。
> dmake test

C:\Perl\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.pl
Can't load 'blib\arch/auto/NKF/NKF.dll' for module NKF: load_file:メモリ ロケーションへのアクセスが無効です。 at C:/Perl/lib/DynaLoader.pm line 191.
 at test.pl line 29.
Compilation failed in require at test.pl line 29.
BEGIN failed--compilation aborted at test.pl line 29.
dmake.exe:  Error code 130, while making 'test_dynamic'
エラーが出てるらしい。

Strawberry Perl でも試してみた。 :

ActivePerl ならハマるけど Strawberry Perl ならすんなり行く、ということはないのかなと思えてきたので、試しにインストール。先日は strawberry-perl-5.20.1.1-32bit.msi をインストールしたけど、今回は strawberry-perl-5.18.4.1-32bit.msi をインストールしてみた。

Text::Kakasi は、 _昨日 と同じような手順でインストールできたように見える。動くかどうかは分からないけど。

Search::Namazu は、ActivePerl と同じような感じのエラーが出た。libperl510.a がどうのこうのとエラーが出てる。何者なんだ、libperl510.a って。

NKF.pm のほうは、C:\MinGW\msys\1.0\home\アカウント名\perl-modules\ 以下にDLして、
tar zxvf nkf-2.1.3.tar.gz
cd nkf-2.1.3
cd NKF.mod
perl Makefile.PL
dmake
dmake test
と打ってみたら、ずらずらと「OK」「OK」と表示された。なんか上手く行ってるっぽい?

インストールもできるのかな?
dmake install
> dmake install

Files found in blib\arch: installing files in blib\lib into architecture dependent library tree
Installing C:\Perls\strawberry518\perl\site\lib\auto\NKF\NKF.dll
Installing C:\Perls\strawberry518\perl\site\lib\NKF.pm
Appending installation info to C:\Perls\strawberry518\perl\lib/perllocal.pod
できてるかもしれない。

モジュールとして登録されてるだろうか。
perl -MNKF -e ""
エラーは出ない。登録されてるっぽい。

Search::Namazu が困ったちゃんだなあ…。コイツがどうにかなれば、Namazu for Windows を動かすために必要な最低限のモジュールが揃うのだろうけど。

libperl510.a 云々。 :

_Re^2: Missing nmake - 64bit, Windows 7 に、libperl510.a でエラーが出る問題について情報が。site\lib\Config_m.pm 内を書き換えろ、と書いてある。
libperl='libperl510.a'
↓
libperl='libperl518.a'
ファイルは読み取り専用になってるので、書き込み可にしてから修正して保存。

Search::Namazu のインストールを再度試した。もちろん Makefile.PL は前述のとおり修正。
cd Search-Namazu-0.96
perl -MConfig_m Makefile.PL
nmake

出力メッセージがちょっと変わってきた。
> nmake

Microsoft (R) Program Maintenance Utility Version 12.00.21005.1
Copyright (C) Microsoft Corporation.  All rights reserved.

Skip blib\lib\Search\Namazu.pm (unchanged)
Running Mkbootstrap for Search::Namazu ()
        C:\Perl\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 Namazu.bs
        gcc -c  -IC:/namazu/include  -O2 -DWIN32 -DPERL_IMPLICIT_CONTEXT -DPERL_MSVCRT_READFIX -O2    -DVERSION=\"0.96\"  -DXS_VERSION=\"0.96\" -DHASATTRIBUTE "-IC:\Perls\strawberry518\perl\lib\CORE"   Namazu.c
        dlltool --def Namazu.def --output-exp dll.exp
        g++ -o blib\arch\auto\Search\Namazu\Namazu.dll -Wl,--base-file -Wl,dll.base -s -mdll -L"C:\Perls\strawberry518\perl\lib\CORE" Namazu.o   C:\Perls\strawberry518\perl\lib\CORE\libperl518.a C:\namazu\lib\libnmz.a dll.exp
C:\namazu\lib\libnmz.a(libnamazu.o): In function `nmz_msg':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/libnamazu.c:217: undefined reference to `libintl_vsnprintf'
C:\namazu\lib\libnmz.a(libnamazu.o): In function `nmz_set_dyingmsg_sub':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/libnamazu.c:235: undefined reference to `libintl_vsnprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_warn_printf':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:293: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:296: undefined reference to `libintl_vfprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:300: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:284: undefined reference to `libintl_fprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_debug_printf':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:323: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:326: undefined reference to `libintl_vfprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:330: undefined reference to `libintl_fprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_strerror':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:578: undefined reference to `libintl_gettext'
collect2.exe: error: ld returned 1 exit status
NMAKE : fatal error U1077: 'C:\Perl\c\bin\g++.EXE' : return code '0x1'
Stop.
libperl510.a 云々でエラーは出てないようだけど、やっぱり色々言われてる。C:/msys/1.0/home/www/ 以下に namazu-2.0.21/ というフォルダがあるつもりで何かしてるあたりが気になる。libnmz.a とやらが作られた時の環境が表示されてるのかな?

Namazu for Windows は導入がとにかく大変。 :

「Namazu for Windows は、ActivePerl 5.8.x でしか動きません」と仰る理由がよく分かったような気になりました。他のバージョンではダメだ。こりゃ大変だ。

せめて、StrawberryPerl を前提にしてモジュールを用意してあれば良かったのかなと思えてきたり。ActivePerl は過去の版を入手しづらい状態になってしまったので、「ActivePerl 5.8.x はどこからDLできるんでしょう?」てな初っ端のあたりからハマるけど。Starwberry Perl なら、 _Strawberry Perl for Windows - Releases から過去の版も入手できるように見えるので、そういう部分でハマったりはしなかったのかもしれないなと。

昔は ActivePerl の旧版も入手できていたような気がするけど、ActivePerl を選択すること自体がトラップになるとは…。や、ActiveState社も商売が厳しくてこうなったのだろうし、ActivePerl の ppm も当時は便利だったのだろうし、昔は ActivePerl しか選択肢が無かったのだろうから、仕方ないよな…。

#2 [perl][windows] ActivePerl や Strawberry Perl を切り替えるbatファイルを書いた

_昨日 、ActivePerl の異なるバージョンを切り替えるbatファイルを書いたけど、もうちょっと頑張れば Strawberry Perl とも切り替えられるかなと思えてきたので試したり。

以下のような場所に、それぞれインストール。 Strawberry Perl のフォルダ構成と合わせるために、ActivePerl のインストールフォルダに対して、以下の空フォルダを作成。
環境変数 PATH に、以下を追加しておく。既に Perlインストールフォルダがいくつか登録されていたら、それらは消しておく。
C:\Perl\c\bin
C:\Perl\perl\site\bin
C:\Perl\perl\bin

batファイルは以下の通り。

plch.bat
@echo off

set PERLPATH1=C:\Perls\activeperl58
set PERLPATH2=C:\Perls\activeperl516
set PERLPATH3=C:\Perls\strawberry518

set PPATH=
if "%1"=="58" set PPATH=%PERLPATH1%
if "%1"=="516" set PPATH=%PERLPATH2%
if "%1"=="518" set PPATH=%PERLPATH3%
if not "%PPATH%"=="" goto SETPERLDIR

echo Perlのパスを切り替えます。(mklink /d を使ってシンボリックを張り直し)
echo.
echo     1 : ActivePerl 5.8
echo     2 : ActivePerl 5.16
echo     3 : Strawberry Perl 5.18
echo.

set USERINPUTSTR=
set /P USERINPUTSTR="切り替えたい番号を選んでください : "
if "%USERINPUTSTR%"=="1" set PPATH=%PERLPATH1%
if "%USERINPUTSTR%"=="2" set PPATH=%PERLPATH2%
if "%USERINPUTSTR%"=="3" set PPATH=%PERLPATH3%
if not "%PPATH%"=="" goto SETPERLDIR

echo.
echo Usage:
echo     plch 58
echo     plch 516
echo     plch 518
goto END

:SETPERLDIR
@echo on
rmdir C:\Perl
mklink /d C:\Perl %PPATH%
@echo off
echo.
echo Perlのパスを %PPATH% に設定しました
echo.

:END

管理者権限でDOS窓を開いて、plch 58 とか plch 516 とか plch 518 とか、あるいは plch とか打てば、C:\Perl というシンボリックリンクが作られる。perl -v と打ってみて、バージョンが変わってることを確認。

注意事項。事前に C:\Perl というフォルダがあって、中にPerl一式が実体として入ってたら、rmdir C:\Perl で全消去されそうな予感。C:\Perl というシンボリックリンク名じゃなくて、違うリンク名にしておいたほうがまだ安心、かもしれない。

この手の専用のツールって作れないかな。 :

環境変数PATHの中身を置換できるツールがあれば済むのだろうけど…。誰か作ってないのかな…。もっとも、セキュリティ面でアレな気はするけれど。

ググってみたら、環境変数を置換する方法はあるらしい。 _炎のコマンドプロンプト入門/バッチファイル/環境変数 で解説されてた。
%[環境変数]:[置換元文字列]=[置換先文字列]%
set NEWPATH=%PATH:C:\Perl=C:\Perls\Perl516%
echo %NEWPATH%
なんだかbatファイルでもどうにかできそうな気がする。それをシステム全体に再設定できるかは、また別の話だろうけど。

以上、1 日分です。

過去ログ表示

Prev - 2014/10 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project