如何修改我的 cygwin 环境以使用 Strawberry Perl 而不是打包的 Perl 发行版?
-
19-08-2019 - |
题
我目前使用 草莓 Perl 作为我的主要 Perl 发行版。然而,我有一些应用程序通过 cygwin 进行 Perl 调用。这些通常会失败,因为它们调用与 cygwin 一起打包的 Perl 版本,并且只在 cygwin 的 lib 文件夹中查找。如何修改我的 cygwin 环境来调用 Strawberry Perl(并使用 C:/strawberry/perl/lib 目录)?
解决方案
如果您使用它将使用的Perl草莓默认设置程序的cygwin除去的Perl。
如果你无法从cygwin的除去Perl中,可以创建的符号链接从草莓Perl可执行文件。
从cygwin外壳,使用下列命令集:
$ mv /usr/bin/perl /usr/bin/perl-cygwin
$ ln -s /cygdrive/c/strawberry/perl/bin/perl.exe /usr/bin/perl
这是假设你使用默认草莓Perl的安装程序。相应的更新,如果你安装了它在其他地方你perl.exe
位置。
检查以确保该链接是通过检查Perl版本正常工作:
$ perl -v
这应该说的这是perl的,对于MSWin32 86多线程(或类似)建(版本)和的不的专为cygwin的线程 - 多64int 强>
其他提示
您可以更改您的PATH首先把草莓目录。草莓试图通过把它的目录放在路径的末尾是好的。如果从.zip文件安装的,但是,它并没有改变路径的。
您可以移动的/ usr / bin中/ perl的,但是这是一个坏主意,因为它在Cygwin的尝试更新它认为是它的perl的突破。我只是有这个星期发生在我身上,并用发生在我身上我的Mac上,直到我停止与系统设置播放和安装我自己的东西完全独立的。
一件好事,我可以补充的是,如果你得到正确的Perl是第一位的路径,它应该处理你可能已经在一个CMD壳运行草莓perl的安装站点特定的CPAN模块。
“这perl” 会是你的朋友。
如果您遇到了麻烦,这一点,你可以设置PERL5LIB环境变量,但它不应该是必要的。
我仍然在DOS样式文件路径作为参数传递到perl脚本,即,“d:\数据\ myfile.txt的”,而不是“/cygdrive/d/data/myfile.txt”。所以,奇怪的是,这样的搭配路径符号的作品:
的bash> /cygdrive/d/scripts/myscript.pl d:\数据\ myfile.txt的
许多是很好的解决方案,但我宁愿采取一种简单的一个,我没有修改一次以上。
所有你需要做的就是添加/修改您的.bashrc文件一行。
# Prepend strawberry perl to cygwin's path
export PATH=/cygdrive/C/Tools/Perl/perl/bin:$PATH
从shell,源.bashrc文件(或启动一个新的壳)和运行程序。
source ~/.bashrc
perl script.pl
这可能不是一个最佳的解决方案,但你应该能够修改#!行:
#!/cygdrive/c/strawberry/perl/bin/perl5.10.0
我总是指的Perl的一个明确的位置和安装,而不是依靠什么在/ usr / bin中。
如果您不想更动任何路径或做任何事情永久有一个简单的临时黑客。在Cygwin的SH提示符下键入“里的Perl”。它会列出所有它认为在PATH在他们的执行顺序的perl.exe所在。改变你不想被看到的那些要使用Perl之前获得上市的名称。但千万记得要改变他们回来时,你完成,或者你可能在路上的几个问题。
我没有我的Cygwin的机器附近,所以我不能对此进行测试,但也许你可以用一个脚本前端perl的命令:去在Cygwin的/ bin和有移动perl.exe所在到别的如Perl-org.exe,然后设置具有相同的参数的高层的其他的perl一个外壳脚本。