Ack2 is a greplike tool. Accordingly to documentation it's primary purpose is for searching large amount of content data like source-code of projects.
There is a great comparison chart on ack2 authors site that I recommend to check!
Docker for building ack2
So as I'm a docker-fan-boy as usually I decided to check if this tool will work, but not on my host machine, but using docker first with a
I've created a Dockerfile like that:
FROM alpine:3.6 RUN apk add --update RUN apk add --update perl && rm -rf /var/cache/apk/* RUN apk add --update wget && rm -rf /var/cache/apk/* RUN apk add --update tar && rm -rf /var/cache/apk/* RUN apk add --update curl && rm -rf /var/cache/apk/* RUN apk add --update make && rm -rf /var/cache/apk/* WORKDIR /app RUN curl -o ack2.tar.gz https://codeload.github.com/beyondgrep/ack2/tar.gz/2.23_02 RUN tar -zxvf ack2.tar.gz WORKDIR /app/ack2-2.23_02 RUN perl Makefile.PL RUN make RUN PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install File::Next' RUN make test RUN make ack-standalone RUN cp ack-standalone /bin/ack2 CMD ["ack2"]
docker build -t anselmos/ack2:2.23_02 -f Docker.alpine.latest . and checked for building to be done.
Ack on Docker alpine
There is an alpine version of ack but only on
edge version and the ack version is 2.18.
I used this Dockerfile to check it:
FROM alpine:edge RUN apk update RUN apk add ack
docker build -t anselmos/ack2 -f Dockerfile_alpine .
docker run -it anselmos/ack2:alpine
There is also a much more simpler way that is described here.
For ubuntu you run:
sudo apt-get install -y ack-grep
And you can create a soft link for calling
sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep
For Ubuntu:Trusty it's 2.12 version.
To use ack check this documentation - contains all the reference - also I encourage you to check
ack2 --help to see what type of flags there is.
The output from ack2 is a bit different from grep, and it's more readable than on grep.
ack2 "perl" *.md
And it will search for "perl" in all .md extension files.
- ack2/DESIGN.md at dev · beyondgrep/ack2 · GitHub
- ack2/DEVELOPERS.md at dev · beyondgrep/ack2 · GitHub
- Releases · beyondgrep/ack2 · GitHub
- perl - How do I tell CPAN to install all dependencies? - Stack Overflow
- 2. Installing Perl Modules
- HowToInstallCpanModules < TWiki < TWiki
- docker-alpine-perl/Dockerfile at master · avast/docker-alpine-perl · GitHub
- Alpine Linux packages
- Travis-Ci Ack2
That's it :) Comment, share or don't - up to you.
Any suggestions what I should blog about? Post me a comment in the box below or poke me at Twitter: @anselmos88.
See you in the next episode! Cheers!