mieki256's diary



2014/10/09(木) [n年前の日記]

#1 [perl][windows] perlbrewとかplenvとかについて少し調べたり

Perlのバージョンを切り替えるツールとして、perlbrew とか plenv とかがあるらしいので、どういうものなのかほんのちょっと調べたり。とりあえず、ActivePerl 5.8.x、5.16.x、Strawberry Perl 5.18 あたりを共存というか、切り替えて使いたいのだけど。つまり Windows 上で使いたいのですけど。使えるのかな。

_App-perlbrew | Perl Package Manager Index (PPM) | ActiveState Code によると、perlbrew は、ActivePerl 5.8.x では使えるけど、5.16.x ではダメっぽい。

_plenv | Perl Package Manager Index (PPM) | ActiveState Code によると、plenv は ActivePerl 5.16.x では使えるらしい。5.8.x はダメっぽい。

そもそも仕組みが分からないな…。どういう処理をしてるんだろう。

Ruby なら pik とか uru。 :

#2 [perl][windows] Strawberry Perl 5.8.x で ActivePerl 5.8.x の代用になるかどうか

_[覚書] strawberryperl - てきとーにやる で、Strawberry perl には ppm コマンドもある、という話を見かけて、ということは ActivePerl 5.8.x の代用として Strawberry Perl 5.8.x が使えたりしないのかなと思ったわけで。

試しに、strawberry-perl-5.8.9.5.msi をDLしてインストール。

問答無用で、C:\strawberry にインストールされてしまった。インストール先フォルダを変更したかったのに…。どうやら昔の Strawberry Perl はインストール場所を決め打ちしちゃってるようで。

それはともかく。
ppm install http://www.akaneiro.jp/PPMPackages/800/File-MMagic.ppd -force
と打ってみた。

ダメっぽい。
> ppm install http://www.akaneiro.jp/PPMPackages/800/File-MMagic.ppd

Installing package 'http://www.akaneiro.jp/PPMPackages/800/File-MMagic.ppd'...
Error installing package 'http://www.akaneiro.jp/PPMPackages/800/File-MMagic.ppd': Read a PPD for 'http://www.akaneiro.jp/PPMPackages/800/File-MMagic.ppd', but it is not intended for this build of Perl (MSWin32-x86-multi-thread-5.8)

まあ、そうだろうな…。代用できるなら、その旨書いとくだろうし…。

この記事へのツッコミ

Re: Strawberry Perl 5.8.x で ActivePerl 5.8.x の代用になるかどうか by opengl2772    2015/01/27 05:32
Strawberry Perl の PPM 対応が実にいい加減で対応が不十分なんです。
Strawberry Perl でも正しく処理できるように PPD ファイルを書き換えてやれば、Strawberry Perl にもインストールできることを確認しています。
書き換えた内容は未公開ですけど...。

#3 [namazu][perl][windows] Namazu for Windowsの動作テスト

とりあえず ActivePerl 5.8.x を有効にした状態で、Namazu for Windows の動作テストをしてみたり。README-ja.txt によると、
cd C:\namazu\pltests
perl alltests.pl
を実行して、
All XX tests passed
と表示されれば動作テストに成功、らしい。

自分の環境は、環境変数 HOME を設定済みなので、Namazu for Windows の「HOME を設定せよ」という要求とは競合してしまう。そこで、別途batファイルを用意して、ソレを実行して環境変数を設定してから Namazu for Windows を試すことにした。

namazuvars.bat
@rem namazu setting
@echo off

SET NAMAZUDRIVE=C:
SET NAMAZUPATH=\namazu
SET NAMAZUHOME=%NAMAZUDRIVE%%NAMAZUPATH%
SET KAKASIHOME=C:\kakasi
@rem SET CHASENHOME=C:\usr\local
@rem SET MECABHOME=C:\usr\local

PATH %NAMAZUHOME%\bin;%PATH%

SET LANG=ja_JP.SJIS
SET LANGUAGE=%LANG%
SET LC_ALL=%LANG%
SET LC_MESSAGES=
SET LC_CTYPE=

SET NAMAZURC=%NAMAZUHOME%\etc\namazu\namazurc
SET MKNMZRC=%NAMAZUHOME%\etc\namazu\mknmzrc
SET NAMAZULOCALEDIR=%NAMAZUHOME%\share\locale
SET pkgdatadir=%NAMAZUHOME%\share\namazu

SET KANWADICTPATH=%KAKASIHOME%\share\kakasi\kanwadict
SET ITAIJIDICTPATH=%KAKASIHOME%\share\kakasi\itaijidict

@rem SET CHASENRC=%CHASENHOME%\etc\chasenrc
@rem SET MECABRC=%MECABHOME%\etc\mecabrc

@rem if NOT "x%HOME%" == "x" goto Lable_end_HOME
@rem if "x%HOMEDRIVE%" == "x" set HOMEDRIVE=%NAMAZUDRIVE%
@rem if "x%HOMEPATH%" == "x" set HOMEPATH=%NAMAZUPATH%
@rem set HOME=%HOMEDRIVE%%HOMEPATH%

set HOME=%NAMAZUHOME%

@rem :Lable_end_HOME

echo HOME=%HOME%
echo LANG=%LANG%
echo NAMAZURC=%NAMAZURC%
echo MKNMZRC=%MKNMZRC%
echo NAMAZULOCALEDIR=%NAMAZULOCALEDIR%
echo KANWADICTPATH=%KANWADICTPATH%
echo ITAIJIDICTPATH=%ITAIJIDICTPATH%
echo CHASENRC=%CHASENRC%
echo MECABRC=%MECABRC%
echo pkgdatadir=%pkgdatadir%

それはともかく、perl alltests.pl を実行してみたところ、
PASS: namazu-4.pl
FAIL: namazu-5.pl
PASS: namazu-6.pl
...
====================
1 of 43 tests failed
====================
naamzu-5.pl でエラーが。うーん。

_[Namazu-win32-users-ja 722] Re: Namazu for Windows 2.016のalltests.pl実行にてnamazu-5.plがFAILになる で解説されてた。また、README-ja.txt にも記述があった。
・Microsoft Office をインストールしている環境では、Microsoft Office 付属の一太郎文書コンバータを予めインストールしてください。
・Microsoft Office 2000、Office XP、または Office 2003 をインストールしている環境では、「Word/Excel/PowerPoint 2007 ファイル形式用 Microsoft Office 互換機能パック」を予めインストールしてください。また、Office 互換機能パックの最新のサービスパックをインストールしてください。
Office 2003、2007をインストールしてる関係で引っ掛かったらしい。 FileFormatConverters は、 _Download Word/Excel/PowerPoint 用 Microsoft Office 互換機能パック from Official Microsoft Download Center からDLした。

上記2点を実行してから再度試したところ、処理途中で何度も何度も、一太郎文書コンバータのオプション指定ダイアログが開いた。コレ、自動化できないのかな…。

とりあえず、テストは全部通ったらしい。
PASS: kakasi-2.pl
PASS: kakasi-3.pl
===================
All 43 tests passed
===================

_nmzchkcnv.pl で、一太郎文書コンバータのインストール状況を調べるPerlスクリプトが公開されてた。試しにDLして動かしてみたり。
> perl nmzchkcnv.pl

Microsoft Word 11.0
 r- ichitaro7:jfw jvw
 r- ichitaro8:jtd jtt
 rw meword12:docm
 r- mspab:pab
 -w msword6rtfexp:doc
 rw msworkswin6:wps
 r- oasyswin345:fmt oa2
 r- outlook:olk
 r- recover:*
 r- splus:scd
 rw wks632:wps
 rw word12:docx
 r- wordperfect6x:wpd doc
 r- wrdprfctdos:doc
最初に「-」がついてたら、それは未インストール状態、ということらしい。2文字目の「r」は読み込み対応を示してるそうで、つまりこの状態は、一応どれも読み取りには対応してる、ということになるのかな…。

この記事へのツッコミ

Re: Namazu for Windowsの動作テスト by opengl2772    2015/01/27 05:15
一太郎文書コンバータのオプション指定ダイアログは、一太郎文書コンバータが出すもので抑止できないのですよね。
古い Office のバージョンではダイアログ出ずに処理できるので、機能としては残してあるのですが、実質使い物になりません。

#4 [perl][windows][namazu] Strawberry Perl + Namazu for Windows で動作テスト

ActivePerl 5.16.x では、NKF.pm だか NKF.dll が正常動作しないので Namazu for Windows を動かせなかったけど。Strawberry Perl 5.18.x ならどうなるのか気になったので試してみたり。

Namazu for Windows の動作に必要、かつ、cpan でインストールできるモジュールは、以下の通り、だったような気がする。
cpan File::MMagic
cpan MP3::Info
cpan IO::stringy
cpan OLE::Storage_Lite

.zip や .tar.gz をDLして、C:\MinGW\msys\1.0\home\アカウント名\ 以下でビルド?できたモジュールは、以下の通り。
ExtUtils::FakeConfig は、以下のような感じ。だったと思う。少し記憶が怪しいけど。
wget http://search.cpan.org/CPAN/authors/id/M/MB/MBARBON/ExtUtils-FakeConfig-0.12.zip
unzip ExtUtils-FakeConfig-0.12.zip
cd ExtUtils-FakeConfig
perl Makefile.PL
nmake
nmake test
nmake install

Text::Kakasi は、 _2014.10.07の日記 と似たような手順で作業できた。
wget http://search.cpan.org/CPAN/authors/id/D/DA/DANKOGAI/Text-Kakasi-2.04.tar.gz
tar zxvf Text-Kakasi-2.04.tar.gz
cd Text-Kakasi-2.04
(Makefile.PLを修正。INC,LIBS,LDDLFLAGSのパス指定を変更)
perl Makefile.PL
dmake
dmake test
dmake install
だったような気がする。

NKFは、 _nkf Network Kanji Filter プロジェクト日本語トップページ - SourceForge.JP から、nkf-2.1.3.tar.gz をDLして解凍。
cd nkf-2.1.3\NKF.mod
perl Makefile.PL
dmake
dmake test
dmake install

あと、Search::Namazu というモジュールも必要らしいけど、これはビルドしてもエラーが出てインストールできなかった。とりあえず、Search::Namazu 無しでどの程度動くのか試してみようかなと。

さて、この状態で、cd C:\namazu\pltests\ をして、perl alltests.pl を実行してみた。

結構「PASS」が出てきて喜んだけど、やっぱり問題が。
PASS: mknmz-18.pl
FAIL: idxdiff-1.pl
FAIL: idxdiff-3.pl
PASS: namazu-1.pl
...
====================
2 of 43 tests failed
====================
惜しい…! 2つほどPASSしてくれなかった。test-log に結果が残ってるので確認してみると…。
  *** starting idxdiff-1.pl
diff c:/namazu/pltests/idx1/NMZ.p c:/namazu/pltests/idx2/NMZ.p
diff c:/namazu/pltests/idx1/NMZ.pi c:/namazu/pltests/idx2/NMZ.pi
  *** starting idxdiff-3.pl
diff c:/namazu/pltests/idx5/NMZ.p c:/namazu/pltests/idx6/NMZ.p
diff c:/namazu/pltests/idx5/NMZ.pi c:/namazu/pltests/idx6/NMZ.pi
  *** ..\bin\namazu.exe --help 
本来ここで「diff 〜」が表示されなければOK、ということなのだろうか。わからんけど。

エラーは出たものの、これってつまり、Search::Namazu モジュールがインストールできてなくても、ある程度は動く、ということだろうか? それとも、Search::Namazu が無いと、全てのテストをPASSしない、ということなのだろうか?

ところで。
MP3::Info
IO::stringy
OLE::Storage_Lite
をインストールしたら、perl alltests.pl 実行時に、一太郎文書コンバータのオプションダイアログが一々開かずに処理をしてくれたのだけど。どれかのモジュールが、そのあたりをイイ感じに処理してくれているのだろうか?

idxdiff-*.plについて調べる。 :

idxdiff-1.pl と idxdiff-3.pl を開いて眺めてみた。
  • idxdiff-1.pl は、idx1/NMZ.* と idx2/NMZ.* を比較して、違うファイルがあったら 1(= 失敗)を返す。どれも同じファイルなら 0(= 成功)を返す。
  • idxdiff-3.pl は、idx5/NMZ.* と idx6/NMZ.* を比較して、違うファイルがあったら 1(= 失敗)を返す。どれも同じファイルなら 0(= 成功)を返す。

WinMerge を使って、idx1/ と idx2/、idx5/ と idx6/ を比較してみた。たしかに、NMZ.p、NMZ.pi の内容が違っている。

また、idx*/ は、alltests.pl を実行した時に自動生成される。

こちらとしては、「idx1/NMZ.* と idx2/NMZ.* は違いがないよ。テストにPASSしたよ」という結果が出てくることを期待しているわけだけど。しかし実際には、idx1/NMZ.* と idx2/NMZ.* の中は一部が違ってる。

要するに、「idxdiff-*.pl が失敗ステータスを出してるのだから、idxdiff-*.pl の中で変な動作になってるのだな」と考えるのは早計で、実際は、idx*/NMZ.* を自動生成する時に、予想外の動作になってる可能性が高いわけで。

ちなみに、ActivePerl 5.8.9 に切り替えて同じテストをしてみたところ、以下のような状態だった。
  • idx1/NMZ.p と idx2/NMZ.p は同じ。
  • idx1/NMZ.pi と idx2/NMZ.pi は同じ。
  • idx5/NMZ.p と idx6/NMZ.p は同じ。
  • idx5/NMZ.pi と idx6/NMZ.pi は同じ。

てなわけで、Strawberry Perl を使うと、NMZ.p、NMZ.pi が意図通りに生成されない状態になる模様。

さて、idx1/ だの idx2/ だのを自動生成してるのは、どの .pl なのだろう。grep をかけてみた感じでは、mknmz-1.pl、mknmz-2.pl が自動生成してるらしい。中身をざっと眺めてみたけど…何が何やら。

ActivePerl 5.8.9 の出した test-log と、Strawberry Perl 5.18 の出した test-log を見比べてみた。何か登録されてるモジュール数が違うんじゃないかと思ったけれど、別にそういうわけでもないような。

もちろん、NKFのバージョンなどは違っていて、ActivePerl側は 2.07、StrawberryPerl側は2.13 だけど…。もしかしてそこが原因だったりするのかな。NKF 2.07 と 2.13 は動作が微妙に違っていて、出力される index も違ってくるとか? そこを合わせれば解決する?

試しに、 _nkf Network Kanji Filter プロジェクト日本語トップページ - SourceForge.JP から、nkf207.tar.gz をDLしてきて、C:\MinGW\msys\1.0\home\アカウント名\ 以下でビルドして、その状態でテストしてみた。…やはり idxdiff-*.pl でエラーが出る。idx1/ と idx2/ の中の、NMZ.p、NMZ.pi が一致してない。NKFのバージョンを合わせれば問題解決するわけではなさそうだなと。

Strawberry Perl のバージョンを変えてみる。 :

そういや、Strawberry perl 5.18 で動作確認してるけど、現在の推奨バージョンは 5.20 なんだよな…。そちらもインストールしてみようか。

と思ったら。strawberry-perl-5.20.1.1-32bit.msi を実行したところ、「古い版が入ってるからインストールできねえよ」と怒られた。今の Strawberry Perl って、異なるバージョンをインストールできないのか…。5.8.9 と 5.18 は共存ができたのに…。

仕方ないので、Strawberry Perl 5.18 をアンインストールしてから、5.20 をインストール。

5.18 の時と同じようにモジュールをインストールしていったけど、Text::Kakasi の時に大量の警告が。
Warning: .drectve `-defaultlib:MSVCRT ' unrecognized
Warning: corrupt .drectve at end of def file
これがずらずらと表示される。dmake test は PASS と表示されるのだけど…。とりあえず無視してそのままインストール。

cd C:\namazu\pltests\ して、perl alltests.pl を実行。…警告が出てくる。
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LC_ALL = "ja_JP.SJIS",
        LANG = "ja_JP.SJIS"
    are supported and installed on your system.
perl: warning: Falling back to the system default locale ("Japanese_Japan.932").
  *** starting alltests.pl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LC_ALL = "ja_JP.SJIS",
        LANG = "ja_JP.SJIS"
    are supported and installed on your system.
perl: warning: Falling back to the system default locale ("Japanese_Japan.932").
PASS: env.pl
ja_JP.SJIS なんて無いよ、と言われてるのだろうか。Perl 5.20 からそのあたりの定義が変わったのかな…?

仕方ないので、set LANG=ja_JP.SJIS を、set LANG=Japanese_Japan.932 に変えてみたり。これって、後で何か問題が起きそうだよなあ…。既存の .pl が、ja_JP.SJIS があることを前提にして書かれてたりしそうだし。

とりあえず、結果は…。
C:\namazu\pltests>perl alltests.pl
  *** starting alltests.pl
PASS: env.pl
PASS: mknmz-1.pl
...
PASS: mknmz-18.pl
FAIL: idxdiff-1.pl
FAIL: idxdiff-3.pl
FAIL: namazu-1.pl
FAIL: namazu-2.pl
FAIL: namazu-3.pl
PASS: namazu-4.pl
FAIL: namazu-5.pl
PASS: namazu-6.pl
...
PASS: namazu-12.pl
FAIL: namazu-cgi-1.pl
FAIL: namazu-cgi-2.pl
PASS: namazu-cgi-3.pl
...
PASS: namazu-cgi-12.pl
====================
8 of 40 tests failed
====================
ダメだこりゃ。

意味も分からず SET LANG=ja_JP.EUC-JP にしてみたけど結果は同じ。

Strawberry Perl のバージョンを上げたら動作が変わってしまったということは、過去の版を使えばテストが通ったりするのだろうか?

Strawberry Perl 5.16.3.1 をインストールして試してみた。
> perl alltests.pl
  *** starting alltests.pl
PASS: env.pl
PASS: mknmz-1.pl
...
PASS: mknmz-18.pl
PASS: idxdiff-1.pl
PASS: idxdiff-3.pl
PASS: namazu-1.pl
...
PASS: kakasi-3.pl
===================
All 43 tests passed
===================
おお。通った…。

Strawberry Perl 5.8.9.5 をインストールして試してみた。しかし、こちらはそもそも Text::Kakasi がビルドできない。

Namazu for Windows + ActivePerl じゃなくて、Namazu for Windows + Strawberry Perl でも動作するなら…。Namazu for Windows が、仮に Perl の特定バージョンでしか動かない状況だとしても、Strawberry Perl の古い版なら入手可能だからなんとかなるかな、てなことを思って試していたのですけど。ちょっとなんとかなりそうな雰囲気っぽいかもしれず。

でも、Search::Namazu が入らないのがちと気になりますけど。

この記事へのツッコミ

Re: Strawberry Perl + Namazu for Windows で動作テスト by 名無しさん    2014/10/11 22:12
Strawberry Perlの5.18以降はなにかおかしいですね。こちらではWin32::Unicode::ConsoleがテストにFAILしてインストールできないのでバージョンを5.16.3.1から上げられません。
Re: Strawberry Perl + Namazu for Windows で動作テスト by opengl2772    2015/01/27 05:09
Search::Namazu は Namazu for Windows を実行するのに必須ではありません。
Re: Strawberry Perl + Namazu for Windows で動作テスト by opengl2772    2015/01/27 05:11
Namazu for Windows では、ja_JP.SJIS か C しかサポートしていません。
日本語なら ja_JP.SJIS しか選択肢はありません。
Re: Strawberry Perl + Namazu for Windows で動作テスト by opengl2772    2015/01/27 05:23
一太郎文書コンバータを使うのは、Office を使って変換する OLE フィルタを使った場合です。
記憶が不確かですが、OLE::Stoage_Lite をインストールと別フィルタを使って処理するので、一太郎文書コンバータは使われず、ダイアログは出なくなります。

#5 [perl][windows] Strawberry Perl の異なるバージョンの共存について少し調べたり

いくつかのバージョンのインストールを試してみたり。

.msi 版を実行してみた際に、インストール先がどこになるか。 なので、.msi を使ってインストールしつつ古いバージョンと共存したいなら、(5.8|5.10) + (5.14|5.16) という組み合わせになるのかなと。

ただ、Strawberry Perl は .msi の他にも、zip版、portable版があるので、ソレを使えばもっと色んな組み合わせができそうな気もする。しかし、ちょっとアレな点も。 zipを解凍して、解凍場所をPATHに設定してやればそれで済むわけでもないっぽい。

Strawberry Perl 5.8.9.5の注意。 :

cpan がすぐに使える状態にはなってない模様。
cpan
o conf
o conf init
o conf
をして、wget.exe を使えるようにしたり等の設定が必要っぽい。

#6 [nitijyou] 家のペンキ塗り工事が始まった

数日前に足場を組む作業、外壁の汚れを水で吹き飛ばす作業をしてたのだけど。今日からペンキ塗りの下準備、おそらくは錆を削ったり剥がれてるペンキを削り落としたり、という作業が始まった模様。とメモ。

前回ペンキ塗り工事をしたのは何時だったろう…。自分がこっちに帰ってきてからやってたような気がするんだけど…。検索してみたら、 _1999/05/13 にペンキ塗りがどうとか書いてあった。日記って、つけておくもんだなあ…。

本当は、震災前にそろそろ塗り替えようという話が出ていたらしのだけど。震災で、業者側の仕事が一気に増えて余裕が全然無くて云々、という話も聞いたような記憶が。とメモ。

以上、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