Unpacking Software Livestream

Join our monthly Unpacking Software livestream to hear about the latest news, chat and opinion on packaging, software deployment and lifecycle management!

Learn More

Chocolatey Product Spotlight

Join the Chocolatey Team on our regular monthly stream where we put a spotlight on the most recent Chocolatey product releases. You'll have a chance to have your questions answered in a live Ask Me Anything format.

Learn More

Chocolatey Coding Livestream

Join us for the Chocolatey Coding Livestream, where members of our team dive into the heart of open source development by coding live on various Chocolatey projects. Tune in to witness real-time coding, ask questions, and gain insights into the world of package management. Don't miss this opportunity to engage with our team and contribute to the future of Chocolatey!

Learn More

Calling All Chocolatiers! Whipping Up Windows Automation with Chocolatey Central Management

Webinar from
Wednesday, 17 January 2024

We are delighted to announce the release of Chocolatey Central Management v0.12.0, featuring seamless Deployment Plan creation, time-saving duplications, insightful Group Details, an upgraded Dashboard, bug fixes, user interface polishing, and refined documentation. As an added bonus we'll have members of our Solutions Engineering team on-hand to dive into some interesting ways you can leverage the new features available!

Watch On-Demand
Chocolatey Community Coffee Break

Join the Chocolatey Team as we discuss all things Community, what we do, how you can get involved and answer your Chocolatey questions.

Watch The Replays
Chocolatey and Intune Overview

Webinar Replay from
Wednesday, 30 March 2022

At Chocolatey Software we strive for simple, and teaching others. Let us teach you just how simple it could be to keep your 3rd party applications updated across your devices, all with Intune!

Watch On-Demand
Chocolatey For Business. In Azure. In One Click.

Livestream from
Thursday, 9 June 2022

Join James and Josh to show you how you can get the Chocolatey For Business recommended infrastructure and workflow, created, in Azure, in around 20 minutes.

Watch On-Demand
The Future of Chocolatey CLI

Livestream from
Thursday, 04 August 2022

Join Paul and Gary to hear more about the plans for the Chocolatey CLI in the not so distant future. We'll talk about some cool new features, long term asks from Customers and Community and how you can get involved!

Watch On-Demand
Hacktoberfest Tuesdays 2022

Livestreams from
October 2022

For Hacktoberfest, Chocolatey ran a livestream every Tuesday! Re-watch Cory, James, Gary, and Rain as they share knowledge on how to contribute to open-source projects such as Chocolatey CLI.

Watch On-Demand



Downloads of v 3.4.0:


Last Update:

23 Jul 2020

Package Maintainer(s):

Software Author(s):

  • Andy Lester


ack grep perl beyondgrep


  • 1
  • 2
  • 3

3.4.0 | Updated: 23 Jul 2020



Downloads of v 3.4.0:


Software Author(s):

  • Andy Lester

Ack! 3.4.0

  • 1
  • 2
  • 3

All Checks are Passing

3 Passing Tests

Validation Testing Passed

Verification Testing Passed


Scan Testing Successful:

No detections found in any package files

Learn More

Deployment Method: Individual Install, Upgrade, & Uninstall

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:


Deployment Method:


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

1. Enter Your Internal Repository Url

(this should look similar to https://community.chocolatey.org/api/v2/)

2. Setup Your Environment

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

2. Get the package into your environment

  • 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 https://community.chocolatey.org/api/v2/. 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. Copy Your Script

choco upgrade ack -y --source="'INTERNAL REPO 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="'INTERNAL REPO URL'" 

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

Exit $exitCode

- name: Install ack
    name: ack
    version: '3.4.0'
    state: present

See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.

chocolatey_package 'ack' do
  action    :install
  source   'INTERNAL REPO URL'
  version  '3.4.0'

See docs at https://docs.chef.io/resource_chocolatey_package.html.

cChocoPackageInstaller ack
    Name     = "ack"
    Version  = "3.4.0"
    Source   = "INTERNAL REPO URL"

Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.

package { 'ack':
  ensure   => '3.4.0',
  provider => 'chocolatey',
  source   => 'INTERNAL REPO URL',

Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.

4. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

Package Approved

This package was approved as a trusted package on 23 Jul 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 "ack.pl"

@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].

[1]: https://www.perlfoundation.org/artistic-license-20.html

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\ack.pl -Algorithm SHA256
Chocolatey: %ChocolateyInstall%\tools\checksum.exe -t=sha256 tools\ack.pl
Cygwin:     sha256sum tools/ack.pl

Verify it matches the following:

2d7f87caf20a42770fec7956cf939100f8741bb3409d138d21f2d9f51d0beb7c *tools/ack.pl

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.

Add to Builder Version Downloads Last Updated Status
Ack! 3.1.1 1530 Tuesday, September 24, 2019 Approved
Ack! 2.22 3492 Wednesday, December 27, 2017 Approved
Ack! 2.20 408 Friday, December 22, 2017 Approved
Ack! 2.18 716 Wednesday, December 6, 2017 Approved
Ack! 2.14 6681 Tuesday, October 14, 2014 Approved
Ack! 2.04 3727 Wednesday, June 19, 2013 Approved
Ack! 1.96.2 1297 Tuesday, January 24, 2012 Approved
Ack! 1.96.1 694 Tuesday, January 24, 2012 Approved
Ack! 1.96 753 Tuesday, January 24, 2012 Approved

From: https://beyondgrep.com/changes.txt

v3.4.0 Mon Jun 29 23:04:18 CDT 2020

When calling "ack -c" to get a list of filenames and counts, the filename
would not be colored like when getting normal search results. Now it will.
Thanks to Matthew Hughes for adding the feature, and Ophir Lifshitz for the
suggestion. (GH#282)

Added --toml for the TOML filetype. (GH#306)

The test t/ack-x.t would fail when run as root. Now it is skipped. Thanks,
Michael LaGrasta. (GH#217)

v3.3.1 Mon Jan 13 10:27:16 CST 2020

Some regexes would be shown as invalid when used with the -Q option. Since
the -Q tells ack to treat the regex as a literal, this shouldn't be
possible. (GH#294)

v3.3.0 Sat Dec 28 16:00:21 CST 2019

The error message ack displays when the regex passed is invalid has been
improved. The message is more readable and includes a pointer to the
offending part of the regex. For example:

$ ack 'status: (open|closed|in progress'
ack: Invalid regex 'status: (open|closed|in progress'
Regex: status: (open|closed|in progress
^---HERE Unmatched ( in regex

Added many new file and directory exclusions to speed up file selection.

  • Python's *.pyc, *.pyd and *.pyo compiled files
  • Python's __pycache__ and .pytest_cache directories
  • Linux *.so shared object files
  • Windows dynamic-link library *.dll files
  • gettext compiled *.mo translation files
  • macOS's __MACOSX directories and .DS_Store files

Reorganized the --help menu to put "action" options like -f, -g and -l at
the top of the listing.

The --show-types option only has an effect with -f or -g. ack will now
tell you if you use --show-types without -f or -g when it will have no

Improved the error message when ack gets passed two options that can't be
used together.

Fixed the behavior of --break and --heading. Using --break would
implicitly set --noheading, and --heading would implicitly set --nobreak.

The following pairs of options don't make sense to use together, and ack will now warn you if you try:

  • -x and --files-from
  • -v and -o
  • -v and --output
  • -v and --passthru

Fixed the minimum version of the Getopt::Long module required. (GH #287)

The line number and filename separators in --passthru mode now work the
same as in context (-A/-B/-C) mode. (GH #291)

v3.2.0 Sun Nov 3 22:52:18 CST 2019

Added "-t X" as a short alias for --type=X.

Added "-T X" as a short alias for --type=noX.

The feature of using the name of the type as an option is deprecated. For
example, ack currently lets you use "--perl" instead of "--type=perl" or
"-t perl", This is now deprecated and will be removed in a future release.

Removed support for Parrot (--parrot).

v3.1.3 Sat Oct 19 19:23:48 CDT 2019

No changes to functionality. Fixed a problem with version numbers.
Thanks to Dan Book for his help.
See https://github.com/beyondgrep/ack3/commit/b3c43d44109dea6ebc0753107a8e85a6b322f4ca

v3.1.2 Mon Oct 14 21:47:51 CDT 2019

Using -w with a pattern that ended with a metacharacter would be slower
than it should be because it would skip an optimization. Now it's fixed.
(GH #181, #251)

Fixed test failures that would sometimes happen on Windows machines because
of taint mode. Thanks, Tomasz Konojacki. (GH #235)

Remove the use of the version.pm module.

v3.1.1 Sat Aug 31 22:56:10 CDT 2019

Improved the speed up the -l, -L and -c options by pre-scanning the file
in bulk before doing line-by-line scan. (GH #221)

ack now uses File::Next 1.18 which calls stat() only once per file or
directory, instead of sometimes calling it twice. This should improve the
time spent traversing directories.

On Windows, patterns with $ to mark the end of the line would not match.
(GH #229)

Fixed docs that referred to --range-stop instead of --range-end. (GH #228)

v3.1.0 Thu Aug 22 22:43:15 CDT 2019

Added the --range-start and --range-end options to allow searching only
ranges of each file. (GH #165)

v3.0.3 Tue Aug 20 23:42:02 CDT 2019

Made smartcase's check for lowercase patterns smarter.

Updated many URLs, especially in the config. (GH #223)

v3.0.2 Thu Jul 4 21:42:43 CDT 2019

ack's smart-case feature would think that a pattern like "select \S+ from"
is looking for a uppercase letter, and so would not make a case-insensitive
search. Now, ack knows that uppercase letters in metacharacters don't
count as looking for a uppercase letter. (GH #156, 187, 214)

v3.0.1 Tue Jun 25 20:47:58 CDT 2019

The -s option tells ack not to complain about missing or unreadable files
it tries to search. The -s option would not always work in conjection with
the -x option. Now it does. Thanks, Anders Eriksson and M. Scott Ford.
(GH #175)

ack would die if you specified a --output option that didn't use one
of Perl's special match variables. Now it won't. Thanks, M. Scott
Ford. (GH #210)

Added a Dockerfile for use when working on ack development. Thanks,
M. Scott Ford. (GH #208)

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