Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Ganeti RPM Packaging

Build Test

Ganeti RPM Packaging for RHEL/AlmaLinux/CentOS/Rocky Linux/others.

Packaging status

  • RHEL/AlmaLinux/CentOS/Rocky Linux/others 9.x: 3.0.2-2
  • RHEL/AlmaLinux/CentOS/Rocky Linux/others 8.x: 3.0.2-2
  • RHEL/CentOS/others 7.x: 3.0.2-2


YUM/DNF repository and binary RPM files

Building RPM Packages with Docker

You can build RPM packages in Docker.

# AlmaLinux 9
./build almalinux:9
# or ./build rockylinux:9

# AlmaLinux 8
./build almalinux:8
# or ./build rockylinux:8

# CentOS 7
./build centos:7

Debug and manual mode:

# AlmaLinux 9
./build -d almalinux:9
# or ./build -d rockylinux:9

# AlmaLinux 8
./build -d almalinux:8
# or ./build -d rockylinux:8

# CentOS 7
./build -d centos:7

# Setup
cd /pkg

# Build
./build-rpm ...

Usage: build

Run on host.


        -d Debug mode

            build-rpm options (default: -a -bi -o yes)

    Environment variables:
        BUILD_HOSTNAME: container host name

    Build for AlmaLinux 9:
        build almalinux:9

    Build for AlmaLinux 8:
        build almalinux:8

    Build for CentOS 7:
        build centos:7

Usage: build-rpm

Run in a container.

    build-rpm [-a|-d|-p] [-c|-C] [-b] [-s] [-i] [-u] [-o yes|no] [package...]

    Target Options:
        -a all packages (ganeti and its dependencies and integ-ganeti repo, snf-image)
        -d ganeti dependencies packages only
        -p the specified package(s) only. Available packages are:
            ganeti dependencies (el8 only):
            ganeti dependencies (el7 only):
                ganeti ganeti-instance-debootstrap
                python-prctl snf-image

    Task Options:
        -c Clean clean the rpmbuild directory, but preserve downloaded archives
        -C Completely clean the rpmbuild directory

        -b Build packages
        -o Overwrite built package: yes|no (Default: manual)

        -s Sign built packages

        -i Install built packages
        -u Uninstall installed packages

        Task Execution Order:
            Uninstall -> Clean -> Build -> Sign -> Install

        If the build (-b) and install (-i) options are specified at the same time,
        the installation will be done immediately after the individual packages are built.
        This is to resolve dependencies needed to build the next package.

Run build command in the container

All packages + uninstall, clean, build, and install:

./build-rpm -a -ucbi

Ganeti dependencies packages + uninstall, clean, build, and install:

./build-rpm -d -ucbi

The specified package(s) + uninstall, clean, build, and install:

./build-rpm -p -ucbi PACKAGE

Build all packages with no overwrite and install:

./build-rpm -a -bi -o no

Build the new ganeti RPM package version using the already released dependency libraries and install:

# AlmaLinux 9 or Rocky Linux 9
dnf install
dnf config-manager --enable integ-ganeti
./build-rpm -p -bi ganeti

# AlmaLinux 8 or Rocky Linux 8
dnf install
dnf config-manager --enable integ-ganeti
./build-rpm -p -bi ganeti

# CentOS 7
yum install
yum-config-manager --enable integ-ganeti
./build-rpm -p -bi ganeti

Signing RPM Packages

Run the container with bash:

# AlmaLinux 9
docker run -h "${BUILD_HOSTNAME}" --rm -it -v $PWD:/pkg -v ~/.gnupg.el9:/root/.gnupg almalinux:9 bash

# AlmaLinux 8
docker run -h "${BUILD_HOSTNAME}" --rm -it -v $PWD:/pkg -v ~/.gnupg.el8:/root/.gnupg almalinux:8 bash

# CentOS 7
docker run -h "${BUILD_HOSTNAME}" --rm -it -v $PWD:/pkg -v ~/.gnupg.el7:/root/.gnupg centos:7 bash

# Setup
yum -y install findutils rpm-sign pinentry

# Set your gpg name
echo "%_gpg_name" >> ~/.rpmmacros

Sign all packages:

cd /pkg
./build-rpm -a -s

Sign the specified package(s) only:

./build-rpm -p -s PACAKGE

Other Ganeti resources


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Release tag


git tag -a v3.0.2-2 -m "v3.0.2-2"
git push origin refs/tags/v3.0.2-2