Downloads of v 3.1.1:


Last Update:

24 Sep 2019

Package Maintainer(s):

Software Author(s):

  • Andy Lester


ack grep perl beyondgrep


3.1.1 | Updated: 24 Sep 2019



Downloads of v 3.1.1:


Software Author(s):

  • Andy Lester

Ack! 3.1.1

All Checks are Passing

2 Passing Test

Validation Testing Passed

Verification Testing Passed


To install Ack!, run the following command from the command line or from PowerShell:


To upgrade Ack!, run the following command from the command line or from PowerShell:


To uninstall Ack!, run the following command from the command line or from PowerShell:


NOTE: This applies to both open source and commercial editions of Chocolatey.

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Enter your internal repository url

(this should look similar to

4. Choose your deployment method:

choco upgrade ack -y --source="'STEP 3 URL'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:

choco upgrade ack -y --source="'STEP 3 URL'"

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0

Exit $exitCode

- name: Ensure ack installed
    name: ack
    state: present
    version: 3.1.1
    source: STEP 3 URL

See docs at

Coming early 2020! Central Managment Reporting available now! More information...

chocolatey_package 'ack' do
  action    :install
  version  '3.1.1'
  source   'STEP 3 URL'

See docs at

    Name: ack,
    Version: 3.1.1,
    Source: STEP 3 URL

Requires Otter Chocolatey Extension. See docs at

cChocoPackageInstaller ack
   Name     = 'ack'
   Ensure   = 'Present'
   Version  = '3.1.1'
   Source   = 'STEP 3 URL'

Requires cChoco DSC Resource. See docs at

package { 'ack':
  provider => 'chocolatey',
  ensure   => '3.1.1',
  source   => 'STEP 3 URL',

Requires Puppet Chocolatey Provider module. See docs at

salt '*' chocolatey.install ack version="3.1.1" source="STEP 3 URL"

See docs at

5. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

This package was approved as a trusted package on 05 Feb 2020.


ack is a tool like grep, optimized for programmers

Designed for programmers with large heterogeneous trees of source code, ack is written purely in portable Perl 5 and takes advantage of the power of Perl's regular expressions.

$ErrorActionPreference = 'Stop';
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"

$AckCmd = Join-Path -Path $toolsDir -ChildPath "ack.cmd"
$AckPl = Join-Path -Path $toolsDir -ChildPath ""

@echo off
perl.exe $AckPl %*
"@ | Out-File -FilePath $AckCmd -Encoding "ASCII"

Install-BinFile -Name "ack" -Path $AckCmd

$OldAckBinfile = Join-Path -Path $env:ChocolateyInstall -ChildPath "bin\ack.cmd"
$OldAckBinfileRegex = "^perl\.exe .*ack\.pl %\*$"

if ((Get-Content -Path $OldAckBinfile -ErrorAction SilentlyContinue | Select-Object -Last 1) -match $OldAckBinfileRegex) {
  Write-Host "Removing pre-2.18 launcher: $OldAckBinfile"
  Remove-Item -Path "$OldAckBinfile"
$ErrorActionPreference = 'Stop';

Uninstall-BinFile -Name "ack"
ack is released under the [Artistic License 2.0][1].


Artistic License 2.0

Copyright (c) 2000-2006, The Perl Foundation.

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


This license establishes the terms under which a given free software
Package may be copied, modified, distributed, and/or redistributed. The
intent is that the Copyright Holder maintains some artistic control
over the development of that Package while still keeping the Package
available as open source and free software.

You are always permitted to make arrangements wholly outside of this
license directly with the Copyright Holder of a given Package. If the
terms of this license do not permit the full use that you propose to
make of the Package, you should contact the Copyright Holder and seek
a different licensing arrangement.


"Copyright Holder" means the individual(s) or organization(s) named in
the copyright notice for the entire Package.

"Contributor" means any party that has contributed code or other material
to the Package, in accordance with the Copyright Holder's procedures.

"You" and "your" means any person who would like to copy, distribute,
or modify the Package.

"Package" means the collection of files distributed by the Copyright
Holder, and derivatives of that collection and/or of those files. A given
Package may consist of either the Standard Version, or a Modified Version.

"Distribute" means providing a copy of the Package or making it accessible
to anyone else, or in the case of a company or organization, to others
outside of your company or organization.

"Distributor Fee" means any fee that you charge for Distributing this
Package or providing support for this Package to another party. It does
not mean licensing fees.

"Standard Version" refers to the Package if it has not been modified,
or has been modified only in ways explicitly requested by the Copyright

"Modified Version" means the Package, if it has been changed, and such
changes were not explicitly requested by the Copyright Holder.

"Original License" means this Artistic License as Distributed with the
Standard Version of the Package, in its current version or as it may be
modified by The Perl Foundation in the future.

"Source" form means the source code, documentation source, and
configuration files for the Package.

"Compiled" form means the compiled bytecode, object code, binary, or any
other form resulting from mechanical transformation or translation of
the Source form.

Permission for Use and Modification Without Distribution

(1) You are permitted to use the Standard Version and create and use
Modified Versions for any purpose without restriction, provided that you
do not Distribute the Modified Version.

Permissions for Redistribution of the Standard Version

(2) You may Distribute verbatim copies of the Source form of the Standard
Version of this Package in any medium without restriction, either gratis
or for a Distributor Fee, provided that you duplicate all of the original
copyright notices and associated disclaimers. At your discretion, such
verbatim copies may or may not include a Compiled form of the Package.

(3) You may apply any bug fixes, portability changes, and other
modifications made available from the Copyright Holder. The resulting
Package will still be considered the Standard Version, and as such will
be subject to the Original License.  Distribution of Modified Versions
of the Package as Source

(4) You may Distribute your Modified Version as Source (either gratis
or for a Distributor Fee, and with or without a Compiled form of the
Modified Version) provided that you clearly document how it differs
from the Standard Version, including, but not limited to, documenting
any non-standard features, executables, or modules, and provided that
you do at least ONE of the following:

(a) make the Modified Version available to the Copyright Holder of
the Standard Version, under the Original License, so that the Copyright
Holder may include your modifications in the Standard Version.

(b) ensure that installation of your Modified Version does not prevent
the user installing or running the Standard Version. In addition, the
Modified Version must bear a name that is different from the name of
the Standard Version.

(c) allow anyone who receives a copy of the Modified Version to make
the Source form of the Modified Version available to others under (i)
the Original License or (ii) a license that permits the licensee to
freely copy, modify and redistribute the Modified Version using the
same licensing terms that apply to the copy that the licensee received,
and requires that the Source form of the Modified Version, and of any
works derived from it, be made freely available in that license fees
are prohibited but Distributor Fees are allowed.

Distribution of Compiled Forms of the Standard Version or Modified Versions without the Source

(5) You may Distribute Compiled forms of the Standard Version without
the Source, provided that you include complete instructions on how to
get the Source of the Standard Version. Such instructions must be valid
at the time of your distribution. If these instructions, at any time
while you are carrying out such distribution, become invalid, you must
provide new instructions on demand or cease further distribution. If
you provide valid instructions or cease distribution within thirty days
after you become aware that the instructions are invalid, then you do
not forfeit any of your rights under this license.

(6) You may Distribute a Modified Version in Compiled form without the
Source, provided that you comply with Section 4 with respect to the
Source of the Modified Version.

Aggregating or Linking the Package

(7) You may aggregate the Package (either the Standard Version or
Modified Version) with other packages and Distribute the resulting
aggregation provided that you do not charge a licensing fee for the
Package. Distributor Fees are permitted, and licensing fees for other
components in the aggregation are permitted. The terms of this license
apply to the use and Distribution of the Standard or Modified Versions
as included in the aggregation.

(8) You are permitted to link Modified and Standard Versions with other
works, to embed the Package in a larger work of your own, or to build
stand-alone binary or bytecode versions of applications that include the
Package, and Distribute the result without restriction, provided the
result does not expose a direct interface to the Package.

Items That are Not Considered Part of a Modified Version

(9) Works (including, but not limited to, modules and scripts) that
merely extend or make use of the Package, do not, by themselves, cause
the Package to be a Modified Version. In addition, such works are not
considered parts of the Package itself, and are not subject to the terms
of this license.

General Provisions

(10) Any use, modification, and distribution of the Standard or Modified
Versions is governed by this Artistic License. By using, modifying or
distributing the Package, you accept this license. Do not use, modify,
or distribute the Package, if you do not accept this license.

(11) If your Modified Version has been derived from a Modified Version
made by someone other than you, you are nevertheless required to ensure
that your Modified Version complies with the requirements of this license.

(12) This license does not grant you the right to use any trademark,
service mark, tradename, or logo of the Copyright Holder.

(13) This license includes the non-exclusive, worldwide, free-of-charge
patent license to make, have made, use, offer to sell, sell, import
and otherwise transfer the Package with respect to any patent claims
licensable by the Copyright Holder that are necessarily infringed by the
Package. If you institute patent litigation (including a cross-claim or
counterclaim) against any party alleging that the Package constitutes
direct or contributory patent infringement, then this Artistic License
to you shall terminate on the date that such litigation is filed.


The hash correct hash can be verified by independently downloading the file from the official distribution location:

Generate a local hash with one of the following commands:

PowerShell: Get-FileHash -Path tools\ -Algorithm SHA256
Chocolatey: %ChocolateyInstall%\tools\checksum.exe -t=sha256 tools\
Cygwin:     sha256sum tools/

Verify it matches the following:

2d7f87caf20a42770fec7956cf939100f8741bb3409d138d21f2d9f51d0beb7c *tools/

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Version Downloads Last Updated Status
Ack! 2.22 3300 Wednesday, December 27, 2017 Approved
Ack! 2.20 249 Friday, December 22, 2017 Approved
Ack! 2.18 544 Wednesday, December 6, 2017 Approved
Ack! 2.14 6492 Tuesday, October 14, 2014 Approved
Ack! 2.04 3563 Wednesday, June 19, 2013 Approved
Ack! 1.96.2 1145 Tuesday, January 24, 2012 Approved
Ack! 1.96.1 546 Tuesday, January 24, 2012 Approved

Release notes for ack 3.000

New features

ack 3 is a greplike tool optimized for searching large code trees.

Improvements over ack 2 include:

  • Improved -w means more accurate searching for words.

  • -w option will warn if your pattern does not lend itself to
    word matching.

  • -i, -I and --smart-case

  • --proximate=N option

  • --underline option for showing matches without color coding.

  • Added --pod and --markdown.

  • Added GNUmakefile to the list of makefile specs.

  • Added -S as a synonym for --smart-case.

  • Added many more checks for mutually exclusive command-line options.

  • Added a filetype for SVG files.

Bug fixes

  • Column numbers were not getting colorized in the output. Added
    --color-colno option and ACK_COLOR_COLNO environment variable.

  • A pattern that wanted whitespace at the end could match the
    linefeed at the end of a line. This is no longer possible.

Incompatibilities with ack 2

ack 3 requires Perl 5.10.1

ack 2 only needed Perl 5.8.8. This shouldn't be a problem since 5.10.1
has been out since 2009.

-w is fussier

ack 3 will not allow you to use -w with a pattern that doesn't begin or
end with a word character.

ack 3 no longer highlights capture groups.

ack 2 would highlight your capture groups. For example,

ack '(set|get)foo(name|id)'

would highlight the set or get, and the name or id, but not the
full set_user_id that was matched.

This feature was too confusing and has been removed. Now, the entire
matching string is highlighted.

ack 3's --output allows fewer special variables

In ack 2, you could put any kind of Perl code in the --output
option and it would get evaluated at run time, which would let
you do tricky stuff like this gem from Mark Fowler

ack --output='$&: @{[ eval "use LWPSimple; 1" && length LWPSimple::get($&) ]} bytes'
'https?://\S+' list.txt 19529 bytes 7560 bytes 5562 bytes

This has been a security problem in the past, and so in ack 3 we
no longer eval the contents of --output. You're now restricted
to the following variables: $1 thru $9, $_, $., $&, $` ,
$' and $+. You can also embed \t, \n and \r ,
and $f as stand-in for $filename in ack2 --output .

ack 3 no longer uses the ACK_OPTIONS environment variable

The ACK_OPTIONS variable was used to supply command line arguments to
ack invocations. This has been removed. Use an ackrc file instead.

ack 3 no longer has the --lines option

The --lines option let you select a specific range of lines to print, and
not match. There are other better ways to do this (sed, for example).

The --man option no longer uses perldoc

The --man option would use the external perldoc program for displaying
documentation. However, this was causing portability problems since some
users might not have it installed. The downside is that the text rendering
is not quite as pretty.

Discussion for the Ack! Package

Ground Rules:

  • This discussion is only about Ack! and the Ack! package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or Ack!, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus