5

Windows 上の Ubuntu で Bash を使用して Windows 10 を実行するマシンが 1 台あります。適切なハード リンクをサポートしていないある種の FUSE ファイルシステムを使用します。

このため、通常のperl コンパイルは失敗します。コンパイルしたい場合は、次のことを行う必要があります。

echo "dont_use_nlink='define'" >> Policy.sh
./Configure -des
make
make install

私が理想的に望むのは、perlbrewまたはを使用して perl を管理し、作成した perl にパラメーターをplenv渡すことです。dont_use_nlinkこれを行う方法はありますか?

4

2 に答える 2

2

幸いなことに、Win10 WSL の根本的な問題は修正されたようで、(できれば) 間もなくリリースされる予定です。

MichielB が指摘したように、-A または -D はこれを達成する必要があるように見えますが、私のテストのいくつかから、perl のConfigureが無視されたり、 が渡された場合に引数が渡され-Aたりするように見えます (重要性については、perl の metaconfig の「使用法」を参照してください)。それらの引数)。生成された config.sh の args リストに適切に形成された -A および -D フラグが明確に表示されているにもかかわらず、dont_use_nlink が追加されることはありません。-D-de

たまたま、特別なPERLBREW_CONFIGURE_FLAGS環境変数を使用しない限り、perlbrew はそれらをデフォルトとして渡します。

ただし、回避策があります。PERLBREW_CONFIGURE_FLAGSを使用-fして、独自の構成ファイルを渡すことができます。失敗した "perlbrew install" 実行によって生成されたほとんど正しい config.sh を使用し、それを微調整して渡すことができます。

手順:

  1. 失敗する perlbrew インストールを実行します。例:

perlbrew install perl-5.24.0

  1. 生成された config.sh ファイルを変更して再利用するためにどこかにコピーします。

cp /home/USERNAME/perl5/perlbrew/build/perl-5.24.0/config.sh ~/config_dont_use_nlink.sh

  1. ファイルを編集して挿入しdont_use_nlink='define'ます。整理してアルファベット順にファイルすると、dlsrc と doubleinfbytes の間になります。

dlsrc='dl_dlopen.xs' dont_use_nlink='define' doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'

  1. perlbrew install を実行しますが、新しい perl の Configure スクリプトに「-f」が渡される環境変数を設定します。

PERLBREW_CONFIGURE_FLAGS="-de -f /home/USERNAME/config_dont_use_nlink.sh" perlbrew install perl-5.24.0

これは、Win10 ビルド 14393 のほぼクリーンな WSL でコンパイルされ、ほぼすべてのテストに合格しています (残りは、WSL バグが既に提出されているもののように見えます)。

于 2017-01-08T07:55:16.310 に答える
1

私は Windows 10 や Windows 用の新しい bash シェルを見ていないので、その新しい Windows bash 環境が perlbrew や plenv とどの程度互換性があるかわかりません。

別のアプローチは、移植可能なStrawberry Perlのバージョンを利用することです。しばらく前に、David Farrell は、ソース コードから Perl をコンパイルするのではなく、移植可能な Strawberry Perl を使用して、Windows で perlbrew を模倣する berrybrew を作成しました。彼はそれについてのブログ投稿を書き、 GitHub ( berrybrew ) に彼のものを公開しました。その後、Steve Bertrand はさらに機能を追加したいと考え、最終的にプロジェクトをフォークすることになりました。詳細については、彼のブログ投稿を参照してください。彼のフォークされたプロジェクトは GitHub で公開されています (こちらを参照)。

ソース コードから Perl バージョンをビルドする必要がある/ビルドしたい場合を除き、berrybrew を使用すると、探している機能が提供される場合があります。

于 2016-09-27T19:42:41.313 に答える