# Installing ZUPT 5.2.5 This guide covers the ZUPT command-line program and the optional Python GUI. The canonical source repository is `https://github.com/cristiancmoises/zupt`. ## Choosing an installation method - Build from the immutable source tag when you want the upstream source-only path described below. - Use a distribution package only when it matches your distribution release and architecture. - Release-page DEB, RPM, Linux tar.xz, portable GUI ZIP, Windows ZIP, and macOS files are separate artifacts. Their presence does not make them part of the Git tree or upstream source archive. Use only artifacts whose release notes record a successful format-specific test for your target. The immutable `v5.2.2` candidate was not promoted after CI integration failures. The immutable `v5.2.3` candidate was not promoted because its source-policy test assumed LF for a Windows `.bat` file checked out as the required CRLF. The immutable `v5.2.4` candidate was not promoted after exact-tag GitHub Actions run `33431386002`: 12 jobs succeeded, the sole openSUSE service-harness job failed because its executor did not enter the service directory, and dependent Windows/macOS jobs were skipped. A local Tumbleweed reproduction confirmed both the explicit tag ref and the corrected working-directory contract. This is release/test integration only; the product, archive format, cryptography, codec, and SDK ABI are unchanged. Do not treat any prior candidate's artifacts or evidence as 5.2.5 packages or validation. The 5.2.5 package set eligible for promotion after each target gate succeeds is: | Component | Gated artifacts | |---|---| | CLI | `zupt-5.2.5.tar.gz`, `zupt_5.2.5_amd64.deb`, openSUSE x86_64 binary/source RPMs, `zupt-5.2.5-linux-x86_64.tar.xz`, `zupt-5.2.5-windows-x86_64.zip`, and `ZUPT-5.2.5-macOS-*.dmg` | | GUI | `zupt-gui_5.2.5_all.deb`, `zupt-gui-5.2.5-1.noarch.rpm`, `zupt-gui-5.2.5-1.src.rpm`, and `zupt-gui-5.2.5-portable.zip` | The GUI packages require the matching `zupt` CLI package and must pass exact payload/dependency checks plus an installed off-screen GUI/CLI integration test. The source-only portable GUI ZIP bundles launchers, notices, and GUI source, but not Python, Qt, or the CLI. The Linux tar.xz carries the tested CLI beside the complete public license/notice payload. AppImage, AppDir, Flatpak bundles, GUI platform installers, and bare Linux/Windows executables are not promoted for 5.2.5. The Windows ZIP and macOS DMG contain the CLI only. Exact target boundaries are listed in `README.md`. The release's `SHA256SUMS` and validation notes, not the mere presence of a download link, identify an artifact that completed its gate. Do not install a package for a different distribution or CPU architecture. ## Build requirements The default CLI build requires: - a C11 compiler; - GNU make; - the platform C library, math library, and threading support; - standard build utilities including `gzip` for installation and source export. It does not need a vendored binary, OpenSSL, libargon2, `libvuptsdk`, or `libpqvaptvupt`. Dependencies must be installed before the build; `make` does not download anything. Typical package-manager commands are: ```sh # Debian / Ubuntu sudo apt install build-essential gzip # Fedora / RHEL family sudo dnf install gcc make gzip # openSUSE sudo zypper install gcc make gzip # Arch Linux sudo pacman -S base-devel gzip ``` Package names can differ by distribution release. These commands are examples, not a statement that 5.2.5 has been accepted into each distribution repository. ## Build and test from source Verify the checkout or extracted archive, then use the source-only feature set: ```sh scripts/check-source-only.sh make clean make -j"$(getconf _NPROCESSORS_ONLN 2>/dev/null || printf 1)" \ WITH_SDK=0 WITH_PQBOX=0 V=1 make WITH_SDK=0 WITH_PQBOX=0 check ./zupt --version ./zupt --help ``` From a release archive, run the scanner as follows before extraction or from a trusted checkout after download: ```sh scripts/check-source-only.sh --archive /path/to/zupt-5.2.5.tar.gz ``` The default build provides the native password, ML-KEM-768 + X25519 hybrid `--pq`, and ML-KEM-768 `--pq-only` paths. See `SECURITY.md` and `THREAT_MODEL.md` before selecting an encryption mode. For password encryption, prefer one of the explicit non-argv inputs: ```sh # Interactive, without terminal echo; compress confirms the password. zupt compress --password-prompt backup.zupt files/ # Read the first line of a mode-0600 file. zupt test --pass-file /secure/path/password.txt backup.zupt # Read the first line from an inherited descriptor. zupt extract --pass-fd 3 -o restored backup.zupt 3