Prerequisites
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:
Example:
$ 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 | VM | Docker |
Docker Service | ✅ | ✅ | NA |
Docker group | ✅ | ✅ | NA |
User in Docker group | ✅ | ✅ | NA |
Execute and validate docker command | ✅ | ✅ | ✅ |
User Mode | root & non-root | root & non-root | root |
Extra | NA | NA | 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 https://gpctl.s3.ap-southeast-1.amazonaws.com/4.2.5/gpctl
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
<gpctl-testdir>/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