This is an example configuration and quick start guide for the installation of rkt from source on Ubuntu 16.04 GNOME. For a detailed developer's reference, see the rkt hacking guide.
In this example ~/Repos is a personal workspace where all repos are stored
$ mkdir ~/Repos && cd ~/Repos
$ mkdir -p ~/.local/gopath/src/github.com/rkt
$ sudo apt-get install git
$ git -C ~/.local/gopath/src/github.com/rkt clone https://github.com/rkt/rkt.git
$ ln -s ~/.local/gopath/src/github.com/rkt/rkt rkt
On a fresh system installation, few additional software packages are needed to correctly build rkt:
$ sudo ~/Repos/rkt/scripts/install-deps-debian-sid.sh
See also the dependencies page.
$ cd ~/Downloads
$ wget https://storage.googleapis.com/golang/go1.6.1.linux-amd64.tar.gz
$ tar -xvf go1.6.1.linux-amd64.tar.gz
$ mv go ~/.local
Add GO variables to .bashrc file:
export PATH=~/.local/bin:~/.local/go/bin:$PATH
export GOPATH=~/.local/gopath
export GOROOT=~/.local/go
Ccache can save a lot of time. If you build a kernel once, most of the compiled code can just be taken from the cache. Ccache can be configured in a few easy steps:
$ sudo apt-get install ccache
$ ccache --max-size=10G
$ sudo ln -s /usr/bin/ccache /usr/local/bin/gcc
The maximum cache size is 10GB now (the default value is too small to cache kernel compilation).
Run the autogen and configure commands with the relevant arguments, for example (kvm as flavor):
$ cd ~/Repos/rkt
$ ./autogen.sh && ./configure --enable-functional-tests --enable-incremental-build --with-stage1-flavors=kvm
Now build rkt with:
$ make V=2 -j
REMEMBER: If you want to test somebody else's changes:
$ git checkout <branch>
$ make clean
$ ./autogen.sh && ./configure <proper arguments>
$ ./tests/build-and-run-tests.sh -f kvm
$ make functional-check
$ make functional-check GO_TEST_FUNC_ARGS='-run TEST_NAME_HERE'
See more in the tests readme page.
$ sudo ./build-rkt-*/bin/rkt run --insecure-options=image --interactive docker://busybox
$ exit
$ sudo ./build-rkt-*/bin/rkt gc --grace-period=0
for link in $(ip link | grep rkt | cut -d':' -f2 | cut -d'@' -f1);
sudo ip link del "${link}"
done
gofmt -s -w file.go