2.4.4 Golang Quickstart
If you prefer videos:
then we need to actually install the rpm
and now the c_client is installed and ready in your
This will disable Go's default behavior of abiding by certain C pointer rules (default is cgocheck=1); you can learn more about this option here: https://golang.org/cmd/cgo/#hdr-Passing_pointers.
Next let's install some prereqs. If you would like to simply copy and paste the next commands, please switch the root user.
First up is PCRE:
And next is SWIG:
Now let's install the actual Go Client from github: https://github.com/griddb/go_client/releases
and unzip the tar ball and
Now that the Go Client is made, let's point our GOPATH to the go client so that we can properly use the Go client with our code.
Introduction
Sometime last year, we released our initial blog post which relayed information on how to get up and running using the GridDB Go Client. Because of some changes to both the process and installation, we've decided to release an update. As a small note on the Go client before you begin work: please know that the array type for GridDB is not yet available for the Go Client. If your project absolutely requires the array type, please use the Python/C/Java Client instead.Installation
Install c_client
This small excerpt is taken from our Node.js Client Blog The GridDB c_client (a preqrequisite to using the Go Client) can be found here: https://github.com/griddb/c_client. The c_client installation has been simplified since the last blog; instead of compiling from source yourself, there is now an RPM available for your convenience (the releases page can be found here). So to get started simplywget
the latest RPM and install.
$ wget \
https://github.com/griddb/c_client/releases/download/v4.2.0/griddb_c_client-4.2.0-1.linux.x86_64.rpm
$ sudo rpm -ivh griddb_c_client-4.2.0-1.linux.x86_64.rpm
/usr/
directory. That was easy!
With the C Client installed, we will need to point our LD_LIBRARY_PATH environment variable to the directory which contains the newly made files.
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/griddb_c_client-4.2.0/lib
$ export LIBRARY_PATH=$LIBRARY_PATH:/usr/griddb_c_client-4.2.0/lib
Install Go Client
To install the Go Client is a bit more work as it has a couple of dependencies. Obviously the Go language itself is needed, so please install that first and set your environment. While you're setting your environment, please note that the following is mandatory for the Go Client to run successfully:$ export GODEBUG=cgocheck=0
$ wget https://sourceforge.net/projects/pcre/files/pcre/8.39/pcre-8.39.tar.gz
$ tar xvfz pcre-8.39.tar.gz
$ cd pcre-8.39
$ ./configure
$ make
$ make install
$ wget https://prdownloads.sourceforge.net/swig/swig-3.0.12.tar.gz
$ tar xvfz swig-3.0.12.tar.gz
$ cd swig-3.0.12
$ ./configure
$ make
$ make install
$ wget \
https://github.com/griddb/go_client/archive/0.8.1.tar.gz
make
$ tar xvzf 0.8.1.tar.gz
$ cd go_client-0.8.1
$ make
$ export GOPATH="${GOPATH}:/home/lib/go_client-0.8.1"
Possible Issues Installing
Issues Making
One common issue encountered is the following error:go install github.com/griddb/go_client can't load package: package github.com/griddb/go_client: cannot find package "github.com/griddb/go_client"This arises out of not having your environment properly set. If this happens, run a
make clean
within the directory to start from scratch, and make sure that the CGOCHECK is set to 0 (disabled) and that the LD_LIBRARY_PATH is pointing to your GridDB C Client (a prereq/dependency for this package).
Issuing Importing Package Into Code
Another potential sore spot has to do with how Go organizes its remote packages (libraries outside the standard library). In Go, remote packages are fetched with thego get
command which then places them in yourgopath/src/packagerepository/accountname/package
. So if I download the echo web framework from Labstack for example, the code will auto-placed into /home/israel/go/src/github.com/labstack/echo
. So when you import the echo web framework in your code import "github.com/labstack/echo"
, Go will look into these directories to pull the code.
Knowing this, a developer would likely build the Go Client, place it into the proper directory using known rules, and attempt to go build
their project. Except now they're hit with a:
can't load package: package github.com/griddb/go_client: no Go files in /home/israel/go/src/github.com/griddb/go_clientLuckily for us, this has an easy fix. To get this to work, we just need to move our directory out of the default Go path and anywhere else (/home/lib/ for example) and then point our Go Path to this new location.
$ export GOPATH="${GOPATH}:/home/lib/go_client-0.8.1