Local RP Dependency Setup
June 11, 2026 ยท View on GitHub
- Local RP Dependency Setup
- Miscellaneous OS Requirements
Note
To run an RP instance as a Go process using go run locally, additional tools are required and are outlined below.
Install Package Dependencies
Fedora/RHEL Dependencies
Important
For other OS specific requirements, refer to the Miscellaneous OS Requirements section.
- General dependencies
sudo dnf install -y \ gpgme-devel \ libassuan-devel \ openssl \ nodejs - Dependencies for Fedora 37+
sudo dnf install -y \ lvm2 \ lvm2-devel \ golang-github-containerd-btrfs-devel - Dependencies for
pyenvsudo dnf install -y \ bzip2-devel \ ncurses-devel \ libffi-devel \ readline-devel \ sqlite-devel \ tk-devel \ xz-devel \ zlib-devel \ gcc \ make
Fedora/RHEL Optional Dependencies
- Install Docker Compose
- Fedora/RHEL
sudo dnf install -y \ docker-compose-plugin - See Install Go via
gvmgvm
- Fedora/RHEL
Debian Dependencies
- Install the required dependencies
sudo apt install -y \ libgpgme-dev \ libbtrfs-dev \ libdevmapper-dev \ nodejs \ npm
Debian Optional Dependencies
- Install
docker-compose-pluginsudo apt install -y docker-compose-plugin
MacOS Dependencies
- Install the required dependencies
brew install coreutils \ findutils \ gnu-tar \ grep \ gettext \ gpgme diffutils \ node
Optional MacOS Dependencies
Warning
Pay attention to the notes after the brew installer runs as there will be instructions to follow to complete setup on MacOS.
- Install
docker-composebrew install docker-compose
Install Go
Install Go Manually
Tip
Go versions installation and management can be simplified with gvm.
See Install Go With gvm
-
Download Go matching the version in
go.mod. -
Extract the archive
cd $HOME/Downloads sudo tar -C /usr/local -xzf go1.22.12.linux-amd64.tar.gz -
Add Go to
PATHin your shell's RC fileexport PATH="${PATH}:/usr/local/go/bin" -
Configure
GOPATHas an environment variable in your shell, as it is required by some dependencies formake generate. To use the default path, add the following to your shell's RC fileexport GOPATH=$(go env GOPATH)
Install Python (pyenv)
Important
Python versions earlier than 3.6 or later than 3.10 are currently not supported.
- Install
pyenvcurl https://pyenv.run | bash - Append the following to your shell's RC file
export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" - Install required Python version using
pyenvpyenv install 3.10.0
Install AZ Client
Note
Due to the az client requiring a specific Python version, you will find the instructions to install the az client in the Getting Started section. This will use pyenv to ensure the correct Python version limited to the local ARO-RP environment.
ARO-RP comes with make pyenv, this will set up the environment and install the az client after setting the local Python version via pyenv.
Install OpenVPN
- Find the client you require here
- Or: on RHEL/Fedora run the following
sudo dnf install openvpn
Note
You can also use the built in Network Manager to add .ovpn configuration files.
Install Podman and Podman Docker
Note
Podman is used for building container images and running the installer.
- Install Podman
sudo dnf install -y \ podman \ podman-docker
Configure Podman
Important
Podman needs to be running in daemon mode when running the RP locally.
- On Linux, you can enable socket activation to start Podman in daemon mode
systemctl --user enable podman.socket
Warning
If you are using podman-machine, you will need to export the socket:
export ARO_PODMAN_SOCKET=unix://$HOME/.local/share/containers/podman/machine/qemu/podman.sock
You will also need to ensure that podman-machine has enough resources:
podman machine stop
podman machine rm
podman machine init --cpus 4 --memory 5000
podman machine start
- Disable Docker compatibility mode for
az acr loginsupportsudo touch /etc/containers/nodocker
Configure Podman on macOS (Apple Silicon)
Important
On Apple Silicon Macs (M1/M2/M3/M4), the aro-installer container image is only built for amd64. You must configure Podman with Rosetta emulation to run amd64 containers.
-
Install Podman
brew install podman -
Initialize the Podman machine with Rosetta support and sufficient resources
podman machine init --cpus 4 --memory 5000 --rootful --rosetta podman machine startNote
If you already have a Podman machine without Rosetta, recreate it:
podman machine stop podman machine rm podman machine init --cpus 4 --memory 5000 --rootful --rosetta podman machine start -
Set the Podman socket environment variable
The socket path varies by system. Find yours with:
podman machine inspect --format '{{.ConnectionInfo.PodmanSocket.Path}}'Then add to your shell RC file or
envfile:export ARO_PODMAN_SOCKET="unix://$(podman machine inspect --format '{{.ConnectionInfo.PodmanSocket.Path}}')" -
Verify the setup
# Confirm Rosetta is enabled podman machine inspect | grep -i rosetta # Test pulling an amd64 image podman pull --platform linux/amd64 alpine podman run --rm alpine uname -m # Should output: x86_64
Install GolangCI Lint
- Find latest version here
- Run the install
# https://github.com/golangci/golangci-lint/releases GOLINT_VERSION="<REPLACE WITH LATEST>" curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b $(go env GOPATH)/bin "$GOLINT_VERSION"
Install YAMLLint
sudo dnf install -y \
yamllint
Miscellaneous OS Requirements
RHEL
- Register the system with
subscription-manager register - Enable the CodeReady Linux Builder repository to install *-devel packages
- Enable the EPEL repository for packages not in the base repositories (such as OpenVPN)
Debian
Important
Your actual pkgconfig path may differ; please adjust it accordingly.
- Ensure you have installed all Debian dependencies
- Make sure that
PKG_CONFIG_PATHcontains thepkgconfigfiles of the above packages. For example:export PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig
MacOS
Note
Developers using macOS are encouraged to contribute to this repository. To ensure compatibility, macOS users should install GNU utilities on their systems.
The goal is to minimize shell scripting and other platform-specific variations within the repository. Installing GNU utilities on macOS helps reduce discrepancies in command-line flags, usage and more, ensuring a consistent development experience across environments.
-
Ensure you have installed all MacOS dependencies
-
Link
gettextto make commands available system-widebrew link gettext -
Update your
PATHin your shell's RC file to prepend yourPATHwith GBU Utils pathsexport PATH=$(find $(brew --prefix)/opt -type d -follow -name gnubin -print | paste -s -d ':' -):\$PATH -
Add the following to your shell's RC file
export LDFLAGS="-L$(brew --prefix)/lib" export CFLAGS="-I$(brew --prefix)/include" export CGO_LDFLAGS=$LDFLAGS export CGO_CFLAGS=$CFLAGS -
Login to ACR
Tip
The following steps may be applicable where you symlink
dockertopodmanlocation.### CHECK SYMLINK ### ls -la $(whereis -q docker) # Example Output: /Users/<USER>/.local/bin/docker -> /opt/homebrew/bin/podman ### LOGIN TO ACR ### az acr login --name <TARGET_ACR>
Containerized RP Software Required
Tip
For a minimal development environment, the recommended approach is to use the containerized setup. This runs the RP inside a container with your local workspace mounted, facilitating debugging and quick code changes.
See Containerized Development Environment for a complete setup guide.
The containerized development environment requires only these locally installed tools:
- az
- make
- podman
- openvpn (Optional for Hive cluster deployments)
Note
Instructions for installing these tools are provided in the sections below. Refer to the Podman section for setup details specific to your operating system.