私は現在、メインの Perl ディストリビューションとしてStrawberry Perlを使用しています。ただし、cygwin を介して Perl 呼び出しを行うアプリケーションがいくつかあります。これらは通常、cygwin にパッケージ化されたバージョンの Perl を呼び出し、cygwin の lib フォルダーのみを参照しているため、失敗します。Strawberry Perl を呼び出す (そして C:/strawberry/perl/lib ディレクトリを使用する) ように cygwin 環境を変更するにはどうすればよいですか?
8 に答える
私が付け加えることができる良いことの1つは、パスの最初に適切なperlを取得した場合、CMDシェルで実行されているイチゴperlでインストールした可能性のあるサイト固有のCPANモジュールを処理する必要があることです。
「どのperl」はあなたの友達です。
これで問題が発生した場合は、PERL5LIB環境変数を設定できますが、必須ではありません。
私はまだDOSスタイルのファイルパスをパラメータとしてperlスクリプトに渡します。つまり、「/ cygdrive / d / data / myfile.txt」ではなく、「d:\ data\myfile.txt」です。奇妙なことに、このパス表記の組み合わせは機能します。
bash> /cygdrive/d/scripts/myscript.pl d:\ data \ myfile.txt
Strawberry ディレクトリを最初に配置するように PATH を変更できます。Strawberry は、そのディレクトリを PATH の最後に配置することで、うまくやろうとします。ただし、.zip ファイルからインストールした場合、PATH はまったく変更されませんでした。
/usr/bin/perl を移動することもできますが、cygwin がその perl であると認識しているものを更新しようとすると壊れてしまうため、これは悪い考えです。今週、私はそれが起こったばかりで、システムセットアップで遊ぶのをやめて、自分のものを完全に個別にインストールするまで、Macで私に起こりました。
これらの多くは優れた解決策ですが、私は複数回変更する必要のない簡単な解決策を採用しています。
必要なのは、.bashrc ファイルに行を追加/変更することだけです。
# Prepend strawberry perl to cygwin's path
export PATH=/cygdrive/C/Tools/Perl/perl/bin:$PATH
シェルから .bashrc ファイルをソース (または新しいシェルを開始) し、プログラムを実行します。
source ~/.bashrc
perl script.pl
これはおそらく推奨される解決策ではありませんが、#を変更できるはずです。ライン:
#!/cygdrive/c/strawberry/perl/bin/perl5.10.0
/ usr / binにあるものに依存するのではなく、常に明示的な場所とperlのインストールを参照します。
パスをいじったり、永続的なことをしたくない場合は、簡単な一時的なハックがあります。Cygwinshプロンプトで「whereperl」と入力します。PATHに表示されるすべてのPerl.exeが実行順に一覧表示されます。使用したいperlの前にリストされている、見られたくないものの名前を変更します。ただし、完了したらそれらを元に戻すことを忘れないでください。そうしないと、将来的にいくつかの問題が発生する可能性があります。
近くに cygwin マシンがないため、これをテストすることはできませんが、スクリプトを使用して perl コマンドをフロントエンドすることはできます。cygwin の下の /bin に移動し、そこにある perl.exe を perl- org.exe を開き、同じ引数で他の perl を実行するシェル スクリプトをセットアップします。