# Installation Instructions ## System Requirements ### Kernel Version Requirements To run Buildah on Red Hat Enterprise Linux or CentOS, version 7.4 or higher is required. On other Linux distributions Buildah requires a kernel version of 4.0 or higher in order to support the OverlayFS filesystem. The kernel version can be checked with the 'uname -a' command. ### runc Requirement Buildah uses `runc` to run commands when `buildah run` is used, or when `buildah build-using-dockerfile` encounters a `RUN` instruction, so you'll also need to build and install a compatible version of [runc](https://github.com/opencontainers/runc) for Buildah to call for those cases. If Buildah is installed via a package manager such as yum, dnf or apt-get, runc will be installed as part of that process. ## Package Installation Buildah is available on several software repositories and can be installed via a package manager such as yum, dnf or apt-get on a number of Linux distributions. ## Installation from GitHub Prior to installing Buildah, install the following packages on your Linux distro: * make * golang (Requires version 1.8.1 or higher.) * bats * btrfs-progs-devel * bzip2 * device-mapper-devel * git * go-md2man * gpgme-devel * glib2-devel * libassuan-devel * ostree-devel * runc (Requires version 1.0 RC4 or higher.) * skopeo-containers ### Fedora In Fedora, you can use this command: ``` dnf -y install \ make \ golang \ bats \ btrfs-progs-devel \ device-mapper-devel \ glib2-devel \ gpgme-devel \ libassuan-devel \ ostree-devel \ git \ bzip2 \ go-md2man \ runc \ skopeo-containers ``` Then to install Buildah on Fedora follow the steps in this example: ``` mkdir ~/buildah cd ~/buildah export GOPATH=`pwd` git clone https://github.com/projectatomic/buildah ./src/github.com/projectatomic/buildah cd ./src/github.com/projectatomic/buildah make sudo make install buildah --help ``` ### RHEL, CentOS In RHEL and CentOS 7, ensure that you are subscribed to `rhel-7-server-rpms`, `rhel-7-server-extras-rpms`, and `rhel-7-server-optional-rpms`, then run this command: ``` yum -y install \ make \ golang \ bats \ btrfs-progs-devel \ device-mapper-devel \ glib2-devel \ gpgme-devel \ libassuan-devel \ ostree-devel \ git \ bzip2 \ go-md2man \ runc \ skopeo-containers ``` The build steps for Buildah on RHEL or CentOS are the same as Fedora, above. ### Ubuntu In Ubuntu zesty and xenial, you can use these commands: ``` apt-get -y install software-properties-common add-apt-repository -y ppa:alexlarsson/flatpak add-apt-repository -y ppa:gophers/archive apt-add-repository -y ppa:projectatomic/ppa apt-get -y -qq update apt-get -y install bats btrfs-tools git libapparmor-dev libdevmapper-dev libglib2.0-dev libgpgme11-dev libostree-dev libseccomp-dev libselinux1-dev skopeo-containers go-md2man apt-get -y install golang-1.8 ``` Then to install Buildah on Ubuntu follow the steps in this example: ``` mkdir ~/buildah cd ~/buildah export GOPATH=`pwd` git clone https://github.com/projectatomic/buildah ./src/github.com/projectatomic/buildah cd ./src/github.com/projectatomic/buildah PATH=/usr/lib/go-1.8/bin:$PATH make runc all TAGS="apparmor seccomp" sudo make install install.runc buildah --help ``` ### Debian To install the required dependencies, you can use those commands, tested under Debian GNU/Linux amd64 9.3 (stretch): ``` gpg --recv-keys 0x018BA5AD9DF57A4448F0E6CF8BECF1637AD8C79D gpg --export 0x018BA5AD9DF57A4448F0E6CF8BECF1637AD8C79D >> /usr/share/keyrings/projectatomic-ppa.gpg echo 'deb [signed-by=/usr/share/keyrings/projectatomic-ppa.gpg] http://ppa.launchpad.net/projectatomic/ppa/ubuntu zesty main' > /etc/apt/sources.list.d/projectatomic-ppa.list apt update apt -y install -t stretch-backports libostree-dev golang apt -y install bats btrfs-tools git libapparmor-dev libdevmapper-dev libglib2.0-dev libgpgme11-dev libseccomp-dev libselinux1-dev skopeo-containers go-md2man ``` The build steps on Debian are otherwise the same as Ubuntu, above.