質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
MSYS

MSYS(Minimal SYStem)は、Windows上で動くUnixシェル、テキスト操作ユーティリティなどをまとめたパッケージ。C言語やFortranのコンパイラであるMinGWをカバーする目的で作られています。

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

意見交換

クローズ

3回答

1462閲覧

WindowsでのPerl開発環境

melted-snow

総合スコア22

MSYS

MSYS(Minimal SYStem)は、Windows上で動くUnixシェル、テキスト操作ユーティリティなどをまとめたパッケージ。C言語やFortranのコンパイラであるMinGWをカバーする目的で作られています。

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

0グッド

0クリップ

投稿2023/05/14 07:46

0

0

実現したいこと

Windows上でPerlの開発環境を構築する過程で、cpan -uでデフォルトのモジュールを更新したいです。

前提

Perlをwindowsで開発する際、Strawberry PerlとMSYS2の2パターンがあると思いますが、
Strawberryでは同梱されてるgccやmakeにPathを通さないといけません。
普段のC/C++の開発でucrt64のgccをPathを通して使っているので、これはあまりやりたくありません。
そこで、MSYS2のmakeにPathを通してみたりしたのですが、Perl側ではgmakeを、MSYS2側ではmakeを使っているのでそのあたりの差の解消がややこしいです。
それが気に入らず、MSYS2の中で構築することにしました。
また、ucrt64で試したりしましたが、sys/wait.hなどのlinux固有のインクルードファイルはMSYS2でしか使えないようです。

発生している問題・エラーメッセージ

cpan -uを実行して全モジュールをアップデートすると、ほぼ全てにおいて、
/usr/bin/make -- OKにはなるのですが、/usr/bin/make test -- NOT OKになってしまいます。

試したこと

//hint// to see the cpan-testers results for installing this module, try: reports モジュール名

というメッセージがあったので、cpanのshell上でreports モジュール名を実行しても、必ず

Distribution: モジュール名 CPAN::DistnameInfo not installed; cannot continue

と表示されます。
cpan[0]> install CPAN::DistnameInfoを実行しても、/usr/bin/make test -- NOT OKとなります。
reports GBARR/CPAN-DistnameInfo-0.12.tar.gzを実行しても、先ほどと同じ、

Distribution: G/GB/GBARR/CPAN-DistnameInfo-0.12.tar.gz CPAN::DistnameInfo not installed; cannot continue

が表示されてしまいます。
ここで詰んでしまっているのが現状です。

現在の考え

WindowsでPerlの開発をするのは難しそうだと感じています。
VirtualBoxのUbuntuやdockerでcpan -uすると問題なく更新できるので、Windowsは諦めて、仮想環境上で開発するべきではないかと考えています。
他のみなさんはどのようにPerl開発をしているのか教えていただけると幸いです。

補足情報(FW/ツールのバージョンなど)

MSYS2 (cat /proc/version)
MSYS_NT-10.0-19045 version 3.4.6.x86_64 (runneradmin@fv-az411-253) (gcc version 11.3.0 (GCC) ) 2023-04-01 11:43 UTC

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答3

#1

maisumakun

総合スコア145779

投稿2023/05/14 07:49

WSLという選択肢はないのでしょうか?

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

otn

総合スコア85607

投稿2023/05/14 10:02

編集2023/05/14 13:15

Windowsは諦めて、仮想環境上で開発するべきではないかと考えています。

ターゲット環境次第だと思いますが。
Windowsネイティブ環境で動かす必要のあるスクリプトを開発するのであれば、開発は仮想環境で行っても、テスト環境としてのWindowsネイティブ環境が必要なので、苦労しようが、いずれは環境を構築することになりますよね。
Windowsネイティブ環境で動かす必要のあるスクリプトを開発するのでなければ、環境構築で苦労する意味は無いと思いますので、仮想環境上で。
また、業務システムなどターゲット環境が決まっているわけじゃなくて、単に自分でWindows上でPerlスクリプトを動かしたいだけであれば、WSL2も含めた仮想のLinux環境でやりたいことが実現できるのかをまず判断するところからでしょうか。
いずれにせよ、WSL2などでは目的を果たせない場合は、CygwinやWSL1も検討してはどうでしょうか。それらで今MSYS2で起こっている問題が解決できるかどうかは知りませんが、MSYS2よりはLinuxに近いはずです(例えばfork()が出来る)。
あるいは、全く別のアプローチとしては、大量の既存Perlスクリプトがあるわけじゃないのであれば、Rubyなども候補かと思います。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#3

melted-snow

総合スコア22

投稿2023/05/26 03:30

#1#2
確かにおっしゃる通りです。視野が狭まってました…。
今はperlを勉強するために環境構築しているだけですので、ターゲットも決まっていないのにわざわざ苦労する必要はありませんでした。
他の言語は全てwindows上にインストールしていたので、perlも直接インストールしたい!というこだわりが邪魔していたかもしれません。

WSL2でcpanをアプデしたところ、エラーもなく無事に構築できました。
WSL2上で勉強し、コードをwindowsで動かしたいときが来れば、おっしゃっていただいた案も含めて試行錯誤しようと思います。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問