HowTo: Install jq
jq
is a command line JSON processor; with it you can map, filter, slice, and transform JSON. We will use jq
with JSON much like we would use sed
, awk
, and grep
with text. Since the AWS CLI tool returns JSON, we can use jq
to parse the data. This can actually make things easier than with the older AWS command line tools that return text; rather than using grep
and awk
to find the rows and columns we are interested in, we can query for the specific attributes in JSON that we are looking for.
There are prebuilt binaries for Linux, Mac OS X, and Windows; however they are merely the executable, but they are adding packages for installation. You can check the Download jq to see if they have one for your platform yet or to get the prebuilt binaries. In this article we’ll look at building it from source.
JQ 1.3 and Later
In JQ 1.3, they went from a premade Makefile to using autotools. The old build instructions, and old article, are below: JQ 1.2 and Earlier.
The requirements are:
- flex
- bison version 3.0 or later
- gcc
- make
- autotools
- ruby (we’ll use rvm in this example)
- oniguruma
- git - to download the source
Bison
While you can probably get Bison as a package for your OS, it may not be version 3.0 or later.
Console - user@hostname ~ $
1
2
3
4
5
6
7
8
mkdir -p ~/Downloads
cd ~/Downloads
curl -O http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz
tar -xzf bison-3.0.4.tar.gz
cd bison-3.0.4
./configure
make
sudo make install
RVM
In this article, we’ll use RVM for getting ruby. If you haven’t installed rvm, it can be done like so
Console - user@hostname ~ $
1
curl -L https://get.rvm.io | bash -s stable --ruby=1.9.3
You may need to run the following to the rvm to install:
Console - user@hostname ~ $
1
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
Once rvm is installed, you’ll have to run the following for the current shell to see it:
Console - user@hostname ~ $
1
source $HOME/.rvm/scripts/rvm
If you already have rvm installed but not ruby 1.9.3
Console - user@hostname ~ $
1
rvm install ruby-1.9.3
Oniguruma
Console - user@hostname ~ $
1
2
3
4
5
6
7
8
mkdir -p ~/Downloads
cd ~/Downloads
curl -O http://www.geocities.jp/kosako3/oniguruma/archive/onig-5.9.6.tar.gz
tar -xzf onig-5.9.6.tar.gz
cd onig-5.9.6
./configure
make
sudo make install
May need to refresh the library cache
Console - user@hostname ~ $
1
sudo ldconfig -v
JQ
Ruby Virtual Environment
Console - user@hostname ~ $
1
rvm ruby-1.9.3@jq --create
Checkout
Console - user@hostname ~ $
1
2
3
mkdir -p ~/Downloads
cd ~/Downloads
git clone https://github.com/stedolan/jq.git
Choose Version
You can skip this if you want to build the absolute latest.
The following will show you what versions are available:
Console - user@hostname ~ $
1
2
cd ~/Download/jq
git tag
You can choose a version (1.4 in this case) like so:
Console - user@hostname ~ $
1
2
cd ~/Download/jq
git checkout jq-1.4
Install Dependencies
Console - user@hostname ~ $
1
2
cd ~/Downloads/jq/docs
bundle install
Build
Console - user@hostname ~ $
1
2
3
4
5
cd ~/Downloads/jq
autoreconf -i
./configure
make
sudo make install
JQ 1.2 and Earlier
Installation
Console - user@hostname ~ $
1
2
git clone https://github.com/stedolan/jq.git
cd jq
If you have a later version of the jq repository but want to build the older version, you can get it like so:
Console - user@hostname ~ $
1
git checkout jq-1.2
Run the following to build:
Console - user@hostname ~ $
1
make && sudo make install
Requires:
- flex
- bison
- python
- gcc
- make
Note
There is also a soft dependency for Bonsai. The first time we run sudo make install
it will try to build the documentation as well, if bonsai is not installed the make will fail with a message that looks something like this:
Failed make install
1
2
3
4
5
6
( cd docs; rake manpage; ) > jq.1
rake aborted!
no such file to load -- bonsai
(See full trace by running task with --trace)
make: *** [jq.1] Error 1
Just run sudo make install
again and it should skip building the docs and finish the install.