Offline Installation
Pigsty normally installs packages from upstream Internet repositories. If the environment has no Internet access, use offline packages.
Overview
An offline package contains the RPM or DEB packages and dependencies from a local APT or YUM repository. It records the repository contents after an online installation.
Use offline packages for production deployments when you need consistent package versions. They let new nodes use the same packages as the existing nodes. They also remove the installation dependency on upstream repository availability.
- Install in environments without Internet access.
- Download packages in advance to reduce installation time.
- Avoid installation failures from later upstream dependency changes.
- Download each package once for multiple nodes.
- Use one local repository to control package versions across nodes.
Offline packages target specific operating system minor versions.
A package can fail on a different version.
Its contents reflect the creation date and can omit later updates or security patches.
Public v4.5.0 offline packages are approximately 1.6-2.0 GB compressed.
Online installation downloads only the packages that you need.
Offline Packages
The public stable release v4.5.0 provides 14 offline packages for seven OS baselines and both x86_64 and aarch64. The table records the baselines verified when that release was published. Match the Pigsty version, OS minor version, and CPU architecture.
| Linux Distribution | System Code | Baseline Minor Version | x86_64 | aarch64 |
|---|---|---|---|---|
| Rocky Linux 9 | el9 | 9.8 | Download (1.95 GB) | Download (1.83 GB) |
| Rocky Linux 10 | el10 | 10.2 | Download (1.91 GB) | Download (1.79 GB) |
| Debian 12 | d12 | 12.15 | Download (1.74 GB) | Download (1.59 GB) |
| Debian 13 | d13 | 13.6 | Download (1.87 GB) | Download (1.72 GB) |
| Ubuntu 22.04 | u22 | 22.04.5 | Download (1.97 GB) | Download (1.84 GB) |
| Ubuntu 24.04 | u24 | 24.04.4 | Download (1.76 GB) | Download (1.64 GB) |
| Ubuntu 26.04 | u26 | 26.04.0 | Download (1.88 GB) | Download (1.77 GB) |
The release page also provides the source archive, checksums, and corresponding .asc GPG signatures. See GPG Signatures for verification. Older packages remain available from historical releases.
These SHA-256 values come from GitHub release asset metadata, verified on 2026-10-13:
Save the list as SHA256SUMS, then run sha256sum --ignore-missing -c SHA256SUMS in the download directory before renaming files. The release’s checksums file uses MD5, a different format from this SHA-256 list.
Different OpenSSL or system library versions can cause installation failures across minor versions. If the baseline does not match, build an offline package on the same OS minor version and architecture, or contact support.
Using Offline Packages
Do these steps in order:
- Download the matching offline package and save it as
/var/tmp/pkg.tgz. - Download the Pigsty source package matching the offline package version and extract it into your home directory.
- Run
cd ~/pigstyto enter the source directory. - Run
./bootstrap -p /var/tmp/pkg.tgzto extract the offline package, configure the local repository, and install Ansible. - Run
./configure -g -c richto select therichtemplate and generate random passwords. - Run
./deploy.ymlto install the core modules from the local repository.
You can also use your own configuration with the repository settings below. Other optional modules still require their own playbooks.
For errors such as No package nginx available, first check the offline package version, OS, architecture, /www/pigsty/repo_complete, and repository contents. The development bootstrap script cleans incomplete output and reports an error if extraction fails or the completion marker is missing; it reuses an existing valid repository. Preserve the old repository before replacing it and extracting again.
To use an extracted offline package with your own configuration, set these parameters:
- Set
repo_enabledtotrueto enable the local software repository. - Set
node_repo_modulestolocalto install all packages from that repository.
Most templates disable repository creation and select node,infra,pgsql as upstream package sources.
With node_repo_modules: local, the local repository is the only package source.
To permit upstream repositories as well, use local,node,infra,pgsql.
Hybrid installation
If the environment has Internet access, you can combine local and upstream package sources. Use the offline package as the initial repository. Then download missing packages from upstream.
Within the same Linux major version and architecture, use an Internet-connected build node to run make repo-build for missing dependencies, then rebuild the offline package and validate installation. This still depends on upstream repositories. Only an artifact whose downloads, metadata rebuild, and installation checks are complete is suitable for an isolated environment.
Making Offline Packages
To build a package for another operating system, use the cache.yml playbook.
Select an online node with the exact operating system version and architecture of the offline nodes.
Run
./configure -c richand complete an online installation with therichtemplate.Make sure that the target INFRA node has a local repository at
/www/pigsty.If the repository is absent, run
./infra.yml -t repoagainst that node first.Choose one INFRA node with a local repository, then build and fetch the package. This example writes outside the source tree:
Retrieve
pigsty-pkg-<version>.<os>.<arch>.tgzfrom/var/tmp/pigsty-dist/<version>/on the admin node. Transfer it to/var/tmp/pkg.tgzin the offline environment, then run./bootstrap -p /var/tmp/pkg.tgz.
Replace <infra-host> with one INFRA host in the inventory. Local directory preparation and validation run on localhost, so keep it in the limit. Both the admin and target nodes need rsync. Nodes on the same platform generate the same filename; select one build node per run.
Override these main cache.yml parameters with extra variables:
| Parameter | Default | Description |
|---|---|---|
cache_pkg_name | pigsty-pkg-${version}.${os}.${arch}.tgz | Offline package filename template |
cache_pkg_dir | dist/${version} | Output directory on the admin node |
cache_tmp_dir | /var/tmp | Added in development sources; temporary archive directory on the target. Create it before overriding. v4.5.0 uses fixed /tmp |
cache_repo | pigsty | Local repository to package on the target node; separate multiple repositories with commas |
The output directory also contains MD5-format checksums. Prepare the source release archive separately; cache.yml does not archive the working tree automatically.
Paid services build and verify offline packages for a specified Linux baseline, with a reference price of ¥200. Contact us to confirm scope and pricing.
Bootstrap
Pigsty uses Ansible to run playbooks.
The bootstrap script installs Ansible and prepares the required package repositories:
Run bootstrap in these cases:
- You downloaded or cloned the source manually and Ansible is absent.
- You need to extract an offline package and install Ansible from it.
Development sources look for /var/tmp/pkg.tgz by default, falling back to the legacy /tmp/pkg.tgz only if the default path is absent. The v4.5.0 release still defaults to /tmp/pkg.tgz. For use across versions, specify the path explicitly:
If the package exists, the script extracts it and installs Ansible from the local repository. If the package is absent, the script attempts an online Ansible installation. If that installation fails, install Ansible manually.
By default, bootstrap moves existing repository configurations into a backup directory.
This leaves only the required repositories enabled.
On EL, the backup directory is /etc/yum.repos.d/backup.
On Debian and Ubuntu, it is /etc/apt/backup.
To keep existing repository configurations, use -k|--keep:
Was this page helpful?
Thanks—your feedback helps us improve this page.
What got in the way? (optional)