痔になりやすい生活習慣とは?

CPANモジュールのインストールについて質問があります。
環境は
Windows XP, ActiveParl5.8.8 ,コンパイラはVC++6.0 です。
※tar.exeとgzip.exeは C:\Perl\binにあります。

現在、Text::NSPというモジュールをインストールしようとしていますが

cpan> install Text::NSP を実行すると

makefile (1199):fatal error U1033:予期しない'@echo'Stop.
nmake --NOT OK

とエラーが出ました。

Microsoftサポートオンラインでエラーを調べたら、nmake仕様が原因らしいのですが、どこをどう変えたら解決できるのかが分かりません。

また、nmake ではなく dmake を使おうと思い、

C:\Perl\bin に dmake.exe を起きました。

また、C:\Perl\lib\CPAN のフォルダにあるConfig.pmのmakeを 

'make'= q[] ⇒  'make' =q[C:\Perl\bin\dmake.EXE]と変更しました。

上記の変更で実行すると

dmake.exe: Error-- 'C:\Perl\libConfig.pm' not found, and can't be made C:\Perl\bin\dmake.exe -- Not OK
とエラーになります。

また perl -V:make でmakeを確認しても常に結果が make ='nmake'; としかなりません。
ここが make ='dmake'; と変えられればインストール出来るのかな?とも考えています。

この変更の仕方が調べているのですが、なかなか分かりません。
よろしくお願いします。
※現在のnmakeの設定で他のモジュールは何の問題もなくインストール出来ています。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

使っているCPANモジュールのバージョンはいくつですか?


わたしの手元の環境だと(ActivePerl 5.8.8 build 819)
で、CPAN.pmのバージョンは
>perl -MCPAN -e "print $CPAN::VERSION"
1.70

です。
#ちょっと古い

Config.pm のエントリは

'lynx' => '',
'make' => '',
'make_arg' => '',

こんな感じで q[] は使ってません。
とはいうもののこれ自体は違っても何の問題もないはずですけど。

ところでCPANモジュールのコンフィグレーションをいじるのなら、
直接 /lib/CPAN/Config.pm をいじってもいいですけど、
マルチユーザー環境を校了したつくりになっていますので、
$HOME/.cpan/CPAN/ というディレクトリ($HOME は HOMEという
環境変数の設定内容で置き換えてください)にMyConfig.pmという
ファイルを置くと、その内容で上書きしてくれます。
書式は Config.pmと一緒です。

dmake.exeはもっていないので、cygwinのmakeで試してみました

'lynx' => '',
'make' => 'd:\cygwin\bin\make.exe',
'make_arg' => '',

>cpan
cpan shell -- CPAN exploration and modules installation (v1.70)
ReadLine support enabled

cpan> o conf make
make d:\cygwin\bin\make.exe

と書き換わります。

エラーのほうですが
dmake.exe: Error-- 'C:\Perl\libConfig.pm' not found, and can't be made C:\Perl\bin\dmake.exe -- Not OK

dmake.exe自体は起動しているのではないですか?
lib と Config.pm の間にあるべき \ がないのが気になります。

この回答への補足

以下でお聞きした
Can't locate については自己解決出来ました。

大変ありがとうございます。

補足日時:2007/08/26 13:03
    • good
    • 0
この回答へのお礼

CPANモジュールのバージョン は1.76でした。

sakusaker7のアドバイスを基に色々試した結果、nmakeでは「Text::NSP」をmake出来なさそうだという結論になりました。

また、同様にdmakeでも試しましたが、結果は
dmake.exe: Error-- 'C:\Perl\libConfig.pm' not found, and can't be made C:\Perl\bin\dmake.exe -- Not OK
となりました。
libConfig.pmの所が私も気になりました。
特にC:\Perl のディレクトリにlibConfig.pm はないですし、あるのは.libのディレクトリですから・・・

結局、sakusaker7のアドバイス通りcygwinのmake.exeを使用したら何の問題もなくmake出来ました。

ありがとうございます。

Makefileが出来たので、このモジュールを使用出来るようになったと思ったのですが、実行してみると

「 Can't locate Text/NSP/Measures/2DFisher2/twotailed.pm in @INC (@INC contains:C:/Perl/site/lib C:/Perl/lib .) 」

というエラーが出ました。
この指示道りにpmファイルを配置したら、上記のエラーは出ないのですが、次は違うファイルのpmファイルの要求がありました。

・・・Text/NSP/Measures/2D/MI/ll.pm in @INC ・・・

このpmファイルを検索してもなかったので、

>install Text::NSP::Measures::2D::MI::ll を実行しました。
結果は、 ・・・・up to date. となりインストールは出来ています。

これはどういう事なのでしょうか?

お礼日時:2007/08/26 12:41

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QActivePerl付属のPPMでモジュールのインストールができない

今回ActivePerl 5.8.6.811を使いまして、PPMにてモジュールの追加を
行いましたが、うまくいきません。

具体的にはモジュールをインストールする際、
ppm> install time-hires
Error: No valid repositories:
Error: 500 Can't connect to ppm.ActiveState.com:80 (connect: Unknown error)
Error: 500 Can't connect to ppm.ActiveState.com:80 (connect: Unknown error)
となり、レポジトリーを疑ったところ、
ppm> rep
Repositories:
[1] ActiveState PPM2 Repository
[2] ActiveState Package Repository
ppm> rep describe 1
Warning: 500 Can't connect to ppm.ActiveState.com:80 (connect: Unknown error)
Describing Active Repository 1:
Name: ActiveState PPM2 Repository
Location:
http://ppm.ActiveState.com/cgibin/PPM/ppmserver-5.8-windows.pl?urn:/PPMServer
Type: unsupported
ppm> rep describe 2
Warning: 500 Can't connect to ppm.ActiveState.com:80 (connect: Unknown error)
Describing Active Repository 2:
Name: ActiveState Package Repository
Location:
http://ppm.ActiveState.com/PPM/ppmserver-5.8-windows.plex?urn:/PPM/Server/SQL
Type: unsupported
となってしまいます。また、ルーターのログから外部にアクセスした形跡もないようです。

調べていて、このような場合は「パスが通っていない」と言われますが、
今回のケースもパスが通っていないのでしょうか?
初心者であることは免罪符になるとは思っていませんが、
皆様のお力をお借りしたいです。

私の環境は
OS:win2000 Pro(SP4) CPU:Athron1.4G
使用ソフト:ActivePerl 5.8.6.811 PPM3.1(付属のもの)
です。長文で読みにくくて申し訳ありませんが、よろしくお願いしますm(_ _)m

今回ActivePerl 5.8.6.811を使いまして、PPMにてモジュールの追加を
行いましたが、うまくいきません。

具体的にはモジュールをインストールする際、
ppm> install time-hires
Error: No valid repositories:
Error: 500 Can't connect to ppm.ActiveState.com:80 (connect: Unknown error)
Error: 500 Can't connect to ppm.ActiveState.com:80 (connect: Unknown error)
となり、レポジトリーを疑ったところ、
ppm> rep
Repositories:
[1] ActiveState PPM2 Repository
[2] ActiveState Package Re...続きを読む

Aベストアンサー

オンラインインストールするとプロキシーなどの問題がありますが、
ローカルインストールに変えれば問題が解決します。

まず
http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/Time-HiRes-1.49.zip
をダウンロードして下さい。

ダウンロードしたモノを、ディレクトリ付きで展開して下さい。

展開先のディレクトリにhogehoge.ppdというのがあるので、そこをカレントディレクトリにして
ppm install hogehoge.ppd
とコマンド入力して下さい。

それでインストールできるはずです。

Qppmのリポジトリの場所

GD::SecurityImage::AC
Image::Magick

上記のモジュールをactive_perlのppmでインストールしたいのですが、リポジトリがなかなか見つかりません。リポジトリ の場所をご存じでしたら教えていただけませんでしょうか。よろしくお願いいたします。
動作環境と登録済のリポジトリは以下です。
ちなみにppmはGUIを使っています。

os : windows8.1
perl : active_perl 5.16.3
登録済のリポジトリ  :
http://www.bribes.org/perl/ppm
http://www.bribes.org/perl/ppm/package.xml
http://log4perl.sourceforge.net/ppm
http://trouchelle.com/ppm10/
http://cpan.uwinnipeg.ca/PPMPackages/10xx/
http://www.wxperl.co.uk/repository/ansi
http://www.wxperl.co.uk/repository
http://ftp.nara.wide.ad.jp/pub/CPAN/authors/id/H/HM/HMBRAND/
です。
宜しくお願い致します。

GD::SecurityImage::AC
Image::Magick

上記のモジュールをactive_perlのppmでインストールしたいのですが、リポジトリがなかなか見つかりません。リポジトリ の場所をご存じでしたら教えていただけませんでしょうか。よろしくお願いいたします。
動作環境と登録済のリポジトリは以下です。
ちなみにppmはGUIを使っています。

os : windows8.1
perl : active_perl 5.16.3
登録済のリポジトリ  :
http://www.bribes.org/perl/ppm
http://www.bribes.org/perl/ppm/package.xml
http://log4perl.sourceforge.net...続きを読む

Aベストアンサー

http://www.bribes.org/perl/ppm のリストを見ると
GD-SecurityImage-AC.ppd, Image-Magick.ppd が存在するのでインストール可能だと思えます。
実際に自分の環境でやってみましたが、どちらも ppm(GUI経由) でインストールできましたよ。

環境 Win7(64bit) Active-perl(32bit)
This is perl 5, version 16, subversion 3 (v5.16.3) built for MSWin32-x86-multi-thread

GD-SecurityImage-AC.ppd をみると
<ARCHITECTURE NAME="MSWin32-x86-multi-thread-5.16>
とあるので AcrivePerl の64bit バージョンだとはじかれている可能性もあり得ます。

Q数値かどうかの判定方法

$aに代入されているものが数値かどうかを判定するにはどのようにしたらよいのでしょうか?

Aベストアンサー

$a =~ /^[0-9]*$/
上記の場合、*は「直前のパターンの0回以上の繰り返し」の意味なので、0から9がなくても、つまり$aが空でもマッチしてしまいます。
なので、
$a =~ /^[0-9]+$/
としましょう。
(+は「直前のパターンの1回以上の繰り返し」)
また、0-9は\dで表すこともできるので
$a =~ /^\d+$/
と書くこともできます。

QCPANでインストールしたモジュールの削除方法

CPANであるモジュールをインストールしたのですが見当違いのモジュールでした。
削除しなければならず色々調べてみたのですがインストール方法しか見つからず削除方法がわかりません。

どなたかわかる方教えてください。

Aベストアンサー

がると申します。
uninstallは、install方法次第ではあるのですが。
もしcpanコマンド使ってであるとすると、それは実際にはMakefileでのコンパイル&installになります。
で。
make install系の、これは最大の欠点といわれているのですが。「自力で手動で探し出す以外に削除手段はない」です。
# rpm系の唯一にして最大の利点がココの部分の解消ですね。

cpanでのinstallですと、どこか(多分 /root あたり)に.cpan/build/というディレクトリがありまして、その下にソースが展開されているので。
ソースはそこから。.soファイルは…Makefile解析するか、findあたりで探すか、で削除するしかないです。
確か、メジャーなcpanのMakefileはそんなにお行儀悪くないので、そうあちこちには散らかしてないと思うのですが…。

また不明な点などあったら追加で質問していただければ。

Qperlでppmを利用せずPKGを手動インストールする方法を教えてください。

perlでppmを利用せずPKGを手動インストールする方法を教えてください。例として”Net::Nslookup”をインストールする場合などの実例を挙げてもらえると助かります。
もしくは、それを説明している日本語Webサイトを教えてください。

Aベストアンサー

手動でインストールの意味がよくわかりませんが、
ppmとかCPANとかのパッケージマネージャを使わないでインストールするということなら、
アーカイブを解くと Makefile.PL というのがありますから、

Perl Makefile.PL
make
make test
make install

でインストールできます。
使っているPerlがActivePerl なら、makeはnmakeになります。

モジュールのインストールについてのメモ
http://homepage3.nifty.com/hippo2000/perltips/module_install.htm

Cによるライブラリコードが含まれているモジュールだと、Cコンパイラが必要になります。
Net::Nslookup はそうではないようですが。

QCpanのインストールができません。

こんにちわ。Cpanのモジュールをインストールしたいと思っているのですが、出来ません。順に入力していくとCPAN:NET::FTP: loaded ok
Fetching with NET::FTP::
ftp://ftp.perl.org/pub/CPAN/MIRRORDE.BY
Fetching with NET::FTP::
ftp://ftp.perl.org/pub/CPAN/MIRRORDE.BY.gz
Issuing "C:\WINDOWS\sysytem32\ftp.EXE -n"
Unknown host ftp.perl.org.
Not connected.
Local directory now C:\USR\Perl\bin\sources.
Not connectde.
Bad luck...Still failde!
Can't access URL ftp://ftp.perl.org/pub/CPAN/MIRRORDE.BY.
Please check,if the URLs I found in your configuration file()are vaild.
The urllist can be edited. E.g with 'o conf urllist push ftp://myurl/'
Could not fetch MIRRORED.BY
CPAN.pm need at least one URL where it can fetch CPAN files from.
Please enter your CPAN site: [ ]
このようなメッセージ群がでます。翻訳ソフトで翻訳してみたのですが全くピンときません。どなたか、何を直したらよいのか教えて下さい。よろしくお願いします。

こんにちわ。Cpanのモジュールをインストールしたいと思っているのですが、出来ません。順に入力していくとCPAN:NET::FTP: loaded ok
Fetching with NET::FTP::
ftp://ftp.perl.org/pub/CPAN/MIRRORDE.BY
Fetching with NET::FTP::
ftp://ftp.perl.org/pub/CPAN/MIRRORDE.BY.gz
Issuing "C:\WINDOWS\sysytem32\ftp.EXE -n"
Unknown host ftp.perl.org.
Not connected.
Local directory now C:\USR\Perl\bin\sources.
Not connectde.
Bad luck...Still failde!
Can't access URL ftp://ftp.perl.o...続きを読む

Aベストアンサー

補足3 を見ましたが、、これはちと厳しいですねえ、、
まずNortonの設定は
https://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?rid=114&PID=6305-6022
ここを読んでも良くわからなければ、CPANでinstallしようとするときだけ
NortonInternetSecurityを無効にして、終わったらまた有効にするしかないかと?

>C:\○○となってしまい左端はCpan>とはじめることができません。

その状況で何故、質問文に書かれたように>CPAN:NET::FTP: loaded okが表示されたのか判りませんが
(そのCD-ROMからCPANのショートカットが作られたって事かな?)
、、、取り合えず
http://www.oklab.org/program/windows/command_prompt.html
を読んで少し勉強してください

で、WindowsからCPANする方法は
http://digit.que.ne.jp/work/index.cgi?Perl%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab%2f%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%28CPAN%29#i7
に書いてありますが、よくわからなければ地域とミラーサーバーの選択時だけ数値を入れて、
あとは構わず、そのままEnterキーを押してください。

pingについては
http://itpro.nikkeibp.co.jp/article/Windows/20051025/223374/
あたりを参考に、、、

補足3 を見ましたが、、これはちと厳しいですねえ、、
まずNortonの設定は
https://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?rid=114&PID=6305-6022
ここを読んでも良くわからなければ、CPANでinstallしようとするときだけ
NortonInternetSecurityを無効にして、終わったらまた有効にするしかないかと?

>C:\○○となってしまい左端はCpan>とはじめることができません。

その状況で何故、質問文に書かれたように>CPAN:NET::FTP: loaded okが表示されたのか判りませんが
(そのCD-ROMから...続きを読む

Qバッチファイルで昨日の日付を取得

すみません、どなたか教えて下さい。

バッチファイルの記述で、昨日の日付を取得する方法を教えて下さい。
今日の日付は下記のように取得しています。

rem 日時変数の取得
for /f "tokens=1-3 delims=/" %%a in ('echo %date:~-10%') do (set YYYYMMDD=%%a%%b%%c
)

Aベストアンサー

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if %mm%==05 (set mm=04&& set dd=30)
if %mm%==06 (set mm=05&& set dd=31)
if %mm%==07 (set mm=06&& set dd=30)
if %mm%==08 (set mm=07&& set dd=31)
if %mm%==09 (set mm=08&& set dd=31)
if %mm%==10 (set mm=09&& set dd=30)
if %mm%==11 (set mm=10&& set dd=31)
if %mm%==12 (set mm=11&& set dd=30)
)
echo 昨日は、%yy%年%mm%月%dd%日です。

echo.
pause
:: ----- prevdate.bat おわり -----

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if...続きを読む

Q関数「exists」と「defined」の違いは?

関数「exists」と「defined」の違いが分かりません。

「exists」はハッシュにしか使えないため「defined」
より特殊な関数なのでしょうが。

$a{$i} = 0 unless defined $a{$i};
$a{$i} = 0 unless exists $a{$i};

↑の二つの文は等価ですよね?

Aベストアンサー

キーが存在するがその値が未定義、という場合があるので等価ではない。

---------------------------------------------
my %a = ("x"=>undef);

if ( defined($a{"x"}) ) {
print qq(\$a{"x"} is defined\n);
}
else{
print qq(\$a{"x"} is not defined\n);
}
if ( exists($a{"x"}) ) {
print qq(\$a{"x"} exists\n);
}
else{
print qq(\$a{"x"} does not exists\n);
}

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qパスワード設定していないユーザーのログイン

いつもお世話になっております。

linuxで、useraddした後、passwdコマンドでパスワードを設定していないユーザーがいます。ここでは、postgresとします。

このユーザーに一般ユーザーからなるときに、
$su - postgres
としますが、パスワードがきかれて、何も入力しないと、
invalidになります。(centos5)

パスワードを設定しないと、一般ユーザーからログインできないのでしょうか。
ちなみに、rootからpostgresですと、ログインできます。
$su -
$su - postgres

お手数をおかけしますが、なにとぞご教授お願いいたします。

Aベストアンサー

 実際useraddしてみると分かりますが、useradd直後の状態では、パスワードは「設定されていません」。
 設定しとらんのやけん設定はされとらんやろ何を言うてるんアホちゃうんと思うなかれ。パスワードが設定されていないとは、パスワードが空である(=初期値としてランダムパスワードが設定されている訳ではない)という事です。さて、ではどうして一般ユーザーからsuできないのでしょうか。rootになって

# getent shadow postgres

とすると、パスワードの欄が半角びっくりマーク2個のみが印字されたかと思います。この半角びっくりマーク2個というのがLinuxにおいて「アカウントがロックされている」という状態になります。
 試しに/etc/shadowファイルをrootで直接書き換える(びっくり2つを削る)と、一般ユーザーからパスワードなしでsu - postgresできるようになります。もちろんこんな危険な操作(shadowの書き換え)は普通せずに、以下のようにします。

# passwd -u -f postgres

passwd -uというのは、ロックアウトされているアカウントのロックを解除するものですが、現在postgresにはパスワードが設定されていないためpasswd -uだけだと「危険だべ」と拒否されます。ので、-fオプションをつけて強行します。すると先ほど/etc/shadowを直接書き換えたのと同じ状態に変わり、一般ユーザーからパスワードなしでsu - postgresする事ができるようになります。逆にロックする時は

# passwd -l postgres

です。詳しくはpasswd -hなどを参照の事。root(uid 0)はロックされているアカウントもおかまいなしに変身できるという凄い権利を持っています。

 実際useraddしてみると分かりますが、useradd直後の状態では、パスワードは「設定されていません」。
 設定しとらんのやけん設定はされとらんやろ何を言うてるんアホちゃうんと思うなかれ。パスワードが設定されていないとは、パスワードが空である(=初期値としてランダムパスワードが設定されている訳ではない)という事です。さて、ではどうして一般ユーザーからsuできないのでしょうか。rootになって

# getent shadow postgres

とすると、パスワードの欄が半角びっくりマーク2個のみが印字されたかと思...続きを読む


人気Q&Aランキング