如何在Windows上安装和使用ack库?

74

我从未使用过Perl,但我非常 impressed by the ack,我想用它来搜索源代码等。

是否有人可以指导我在Windows上如何使用这个优秀的库?

9个回答

80

6
请注意,使用Strawberry Perl的便携版本时,Strawberry Perl目录名称中不能包含空格,否则会出现奇怪的错误。 - Ciantic
专业提示:使用cpanm(1)比使用cpan(1)更容易,并且它也可以在Strawberry Perl中使用。 - bambams

38

并非所有的测试都能在Windows的所有版本上通过。即使安装测试失败,您仍然可以从ack获得100%的功能性。如果失败的测试阻止正常安装,请使用以下命令强制安装:

perl -MCPAN -e "CPAN::Shell->force(qw(install App::Ack));"

3
谢谢,这让我成功安装了! :D - Nick Knowlson
1
或者使用 cpanm -f App::Ack 来避免大量的输入。加上 -n 参数可以跳过测试,因为目前测试实际上并没有通过…… 这不会影响除了跳过测试之外的任何事情,节省你时间,但也让你不知道它们是否通过了…… - bambams
感谢您提供的信息,测试未通过但安装正常。我一直在寻找 tarball 解决方案,直到看到这篇文章,现在好多了。 - bballdave025

34
如果您已经安装了msysgit,则不需要安装Perl,因为您已经拥有版本。您只需要下载独立版的ack并将其放在bash路径1中的某个位置即可。然后您可以从msysgit bash提示符中运行ack。
如果您还想能够从Windows命令提示符中运行ack,则需要在Windows路径2中某个位置创建一个批处理脚本,并写入以下内容:
@"C:\Program Files\Git\bin\perl" C:\path\to\ack-standalone.pl %*
(显然,您需要编辑上面的路径,以匹配您的 msysgit 安装位置和 ack 脚本的放置位置。)

1: 我只是把我的 ack 放在了 mysysgit 的 bin 目录下:C:\Program Files\Git\bin\ack。虽然这不是最明智的位置,但它能够工作。
2: 同样地,我只是在 msysgit 的 bin 目录 C:\Program File\Git\bin 中创建了 ack.bat 文件。


5
我将ack-standalone.pl文件简单地放到了C:\Program Files\Git\bin目录下,并将文件名改为ack(无扩展名)。完成后,从Git Bash中运行ack即可正常使用。无需任何批处理文件或修改路径。 - Grilse
2
@Grilse 是的,我在我的答案中确实说了那句话(尽管我想我可以用更清晰的措辞来表达)。如果您想要脚本在Windows命令提示符中运行,批处理文件和路径修改是必需的。(这也是我可以解释得更好的地方。) - Rich
1
如果您能编辑您的回答,使其更加清晰明了,那就太棒了! - Grilse
@Grilse 完成了。(迟做总比不做好!) - Rich

24
如果您已安装cygwin,您可以直接下载独立版本。Perl已经随cygwin一并安装。以下是步骤:
$ vim .bash_profile

删除这些行中的注释:

# if [ -d "${HOME}/bin" ] ; then
#  PATH="${HOME}/bin:${PATH}"
# fi

加载更改:

$ source .bash_profile

创建一个 bin 目录:
$ mkdir ~/bin

从主页下载ack:

$ curl https://beyondgrep.com/ack-2.22-single-file > ~/bin/ack && chmod 0755 ~/bin/ack

注意:你需要手动安装curl,因为它不会随cygwin一起默认安装。


1
你在 .bash_profile 中注释掉的那些行是检查 ~/bin 是否存在并将其添加到路径中的行。由于你创建了一个 bin 目录,这些检查可以保留,并且它们将起作用(而且应该保留,以防 bin 目录被删除)。 - crdx
1
安装cygwin后,所有3行都被注释掉了。正如我所指出的,您应该删除这些注释。我不确定为什么中间那行缺少注释符号,但我已经编辑并添加回来了。 - Swoogan
不错的独立文件解决方案。感谢您还提供关于PATH.bashrc的信息。 - bballdave025

20

您还需要运行以下命令以启用颜色高亮显示: cpan Win32::Console::ANSI


3
这应该是一条评论,而不是答案,因为它不是一个答案。 - Jon L.

6

在我找不到解决方案的情况下,我访问了ack网站并看到了这个页面。

enter image description here

然后我在cmd提示符中运行了以下命令:

choco install ack

5

由于一些测试没有通过,我不得不强制安装App::Ack

C:\> cpan
cpan> force install App::Ack
cpan> q

1

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接