a) OS Distribution

You can install the gopaddle command-line utility 'gpctl' in an Ubuntu 18.04 LTS distribution, either on a host or a VM, or a docker container.

b) Dependencies on the Host/VM running Ubuntu 18.04 LTS

These steps are required, even if you desire to install gpctl inside a docker container

1. Make sure docker service is running:

$ systemctl status docker

The output of the above command should have the line:

Active: active (running)

2. If there is a user group called 'docker' created already, and if the current user is already added to this group, you can skip this step:

$ sudo groupadd docker 
$ sudo usermod -aG docker <current-user-name>

If you had to perform the above step, then:

  • Log out and log back in so that your group membership is re-evaluated.

  • On a desktop Linux environment such as X Windows, log out of your session completely and then log back in.

  • If testing on a virtual machine, if the above do not work, restart the virtual machine for changes to take effect.

3. Verify that you can run docker commands without sudo:


$ docker images

The above command should not show any 'permission denied' errors.

Additional steps to run gpctl inside a Docker container

If you are running inside a container, then, execute the below to set up docker container and login into the container, before you can proceed with the installation of gpctl tool:

On the Host/VM running Ubuntu 18.04 LTS, run the following command:

$ docker run -it -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker ubuntu:18.04 /bin/bash

c) Install Dependencies

If you are executing on Host/VM running Ubuntu 18.04 LTS:

$ sudo apt-get update 
$ sudo apt-get install -y wget cmake pkg-config libicu-dev zlib1g-dev libcurl4-openssl-dev libssl-dev ruby-dev jq net-tools iproute2 strace bc
$ sudo gem install github-linguist -v 7.17.0

If you are executing inside a docker container:

# apt-get update 
# apt-get install -y wget cmake pkg-config libicu-dev zlib1g-dev libcurl4-openssl-dev libssl-dev ruby-dev jq net-tools iproute2 strace bc
# gem install github-linguist -v 7.17.0

Here is a quick reference on the installation requirements based on the local environment.

Host Machine



Docker Service


Docker group


User in Docker group


Execute and validate docker command

User Mode

root & non-root

root & non-root





Mount docker socket and docker binary inside the container

d) Install gpctl

1. Create a test directory, and download the gpctl binary:

$ mkdir <gpctl-testdir> 
$ cd <gpctl-testdir>
$ wget

2. Perform check sum to ensure the right binary is installed.

$ sum gpctl 
18268 9188

3. Change permission for the binary:

$ chmod +x gpctl

4. Set the PATH variable to include the absolute path to the test directory, and check if gpctl binary is recognized:

$ export PATH=$PATH:<gpctl-testdir> 
$ which gpctl

5. Check whether all the required dependencies are available in the local system using the below command before you could proceed with the initialization process.

$ gpctl -v chkdeps
O.S distribution discovered on the system: ubuntu 18.04
Supported O.S distributions: ubuntu 18.04
Supported O.S version check ... SUCCEEDED
wget: yes
cmake: yes
pkg-config: yes
libicu-dev: yes
zlib1g-dev: yes
libcurl4-openssl-dev: yes
libssl-dev: yes
ruby-dev: yes
jq: yes
net-tools: yes
iproute2: yes
strace: yes
bc: yes
All dependent packages are installed
Checking version of github-linguist ...
Expected version: (7.17.0) Installed version: (7.17.0)
Dependent packages check ... SUCCEEDED

Did this answer your question?