From 4dab65ddc864c5b3ee7cb0e4733d1b76e5d0e3f0 Mon Sep 17 00:00:00 2001 From: Jun Futagawa Date: Wed, 24 Jun 2026 17:50:00 +0900 Subject: [PATCH] docs: add RPM package installation docs Co-authored-by: Codex --- README.md | 86 +++++++++++++++++++------------ packaging/RPM-GPG-KEY-jfut-github | 29 +++++++++++ 2 files changed, 83 insertions(+), 32 deletions(-) create mode 100644 packaging/RPM-GPG-KEY-jfut-github diff --git a/README.md b/README.md index 6e6fa27..0bd7849 100644 --- a/README.md +++ b/README.md @@ -91,69 +91,91 @@ Everything else is `source=system`. ## Installation -`precd` must run as root. +Install a release package from [Releases](https://github.com/jfut/prec/releases), or use the RPM repository setup below on RHEL-compatible distributions. -### Manual build and manual install (from source) +Run package installation, manual system installation, and service management commands as root. -Build: +For rpm and deb upgrades (for example with `dnf update` or `apt upgrade`), package post-install scripts run `systemctl restart precd.service` automatically. +For rpm and deb uninstall actions, package post-remove scripts run `systemctl stop precd.service` automatically. -```bash -just build -sudo install -m 0755 dist/prec /usr/bin/prec -sudo install -m 0755 dist/precd /usr/sbin/precd -``` +### RPM releases with dnf-plugin-anyrepo -Install config and service files manually: +Install [dnf-plugin-anyrepo](https://github.com/jfut/dnf-plugin-anyrepo), import the RPM GPG key, add this repository, then install the package with `dnf`. ```bash -sudo mkdir -p /etc/prec -sudo chmod 750 /etc/prec -sudo install -m 0640 packaging/precd.conf.example /etc/prec/precd.conf +rpm --import https://raw.githubusercontent.com/jfut/prec/refs/heads/main/packaging/RPM-GPG-KEY-jfut-github +dnf-anyrepo add https://github.com/jfut/prec +dnf install prec +``` -sudo mkdir -p /var/log/prec -sudo chmod 0750 /var/log/prec +Upgrade the installed package with `dnf`. -sudo install -m 0640 packaging/systemd/precd.service /usr/lib/systemd/system/ -sudo install -m 0640 packaging/logrotate/prec /etc/logrotate.d/prec +```bash +dnf upgrade prec ``` -### Package-based install +### Downloaded or locally built packages + +Use one release package downloaded from [Releases](https://github.com/jfut/prec/releases), or build local package files first: ```bash just release ``` -Install one package from `dist/` with your package manager: +Install one package with your package manager. For downloaded release packages, replace the `dist/...` path with the downloaded file path. Use the matching architecture package name (for example, `arm64` or `aarch64` on ARM64 hosts). ```bash # Debian/Ubuntu -sudo dpkg -i dist/prec_*_amd64.deb +dpkg -i dist/prec_*_amd64.deb # RHEL/Fedora -sudo rpm -Uvh dist/prec-*.x86_64.rpm +rpm -Uvh dist/prec-*.x86_64.rpm # Alpine -sudo apk add --allow-untrusted dist/prec_*_x86_64.apk +apk add --allow-untrusted dist/prec_*_x86_64.apk # Arch Linux -sudo pacman -U dist/prec-*-x86_64.pkg.tar.zst +pacman -U dist/prec-*-x86_64.pkg.tar.zst ``` -For rpm and deb upgrades (for example with `dnf update` or `apt upgrade`), -package post-install scripts run `systemctl restart precd.service` -automatically. -For rpm and deb uninstall actions, package post-remove scripts run -`systemctl stop precd.service` automatically. +### Manual install from source + +Build the binaries first: + +```bash +just build +``` + +Install the binaries: + +```bash +install -m 0755 dist/prec /usr/bin/prec +install -m 0755 dist/precd /usr/sbin/precd +``` + +Install config and service files manually: + +```bash +mkdir -p /etc/prec +chmod 750 /etc/prec +install -m 0640 packaging/precd.conf.example /etc/prec/precd.conf + +mkdir -p /var/log/prec +chmod 0750 /var/log/prec + +install -m 0640 packaging/systemd/precd.service /usr/lib/systemd/system/ +install -m 0640 packaging/logrotate/prec /etc/logrotate.d/prec +``` -### Enable daemon +### Enable and start precd ```bash -sudo systemctl daemon-reload -sudo systemctl enable precd.service -sudo systemctl start precd.service -sudo systemctl status precd.service +systemctl daemon-reload +systemctl enable precd.service +systemctl start precd.service +systemctl status precd.service ``` ## Configuration diff --git a/packaging/RPM-GPG-KEY-jfut-github b/packaging/RPM-GPG-KEY-jfut-github new file mode 100644 index 0000000..03042c1 --- /dev/null +++ b/packaging/RPM-GPG-KEY-jfut-github @@ -0,0 +1,29 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBGo6QHcBEADGA6jdyDIHo5fnvC89uU+M3NpsQObhTKG4P1nZAdmT10+9FBZp +uQJIxdZvE/YVTlATkyqjBi4pNg6Hin4ObCbZScvQyBHlBePURzBI6HjstXLreQjk +BE6JTOZUpj8KzJ50jRK0XKQdcf5WV8i/z2+s/GE7AdtZocRhwWrUN/re9h6FBBBK +no6C2opkdP6gUipNRH79MxC81TqRc+TPJzmJgPcJROkI8sXU9hqZoYhuzSh50Dag +IGu3/OlfY2JLX8XXoLXSc4lBoK5u2Tf4/Uuq2ou+uiuE+XNfn9O3mSuDV8YH63HI +tZoOSDKnIP8zuBXMp1id4fFBbxczkg6T572oqckCP+cxNC6jNpN7PmFq4LxUviBX +pLgB2BT/9GQXJlF6DpdKLjo5lw30Sz1LBmIH+a0HisL3mbBog46RrWO3rAoNE9GU +L0ut3LvBXPejcLtyJXaibSt9g5CbHH03ddWbNGQkteTECsSlSt7VPTAXkCmDl9fn +iCrrVMR09x4Eh8gtxNqSA6BkVJCAP/aJgVPzHH5zciXyu45IGPdZY0igH88hQfqB +yGcBVMzSj6czDRxgAeSnEuHL67ut/Y8ncHqLUk/P7/ZPibHp8mfydD1ljRPXW7XL +jA2g63sxddmi1jczxBpmWtO7COLKO9bh+sb5tRuGaeF3crFeiFMNkmhTkQARAQAB +tCtqZnV0IEdpdEh1YiBSUE0gU2lnbmluZyBLZXkgPGpmdXRAaW50ZWcuanA+iQJR +BBMBCAA7FiEEFQBo1bDtsDvGU9fSgMHsCUC6n5UFAmo6QHcCGwMFCwkIBwICIgIG +FQoJCAsCBBYCAwECHgcCF4AACgkQgMHsCUC6n5X6NRAArd5QsHWzxumS+vqcqucg +0t9AFP9NC7nMEU+u9AETvQm3UEqhs3kuMp6eqgE21tW7lJKTCRISMXm0844ox+vD +7zIsGN6dPTAjjRAj2XZ5lSjIfS5MvFIEIbp5CFEXs//zKJSBeyvjmkPTNCoSEcRm +rUi2gU7GG+vVeG9drBBvsr7TjvvpkycA21k/0cDvlNhQb0bkqpyGWg9UumskU/DX +bFxJUdXAe+6U+8LGXQxTSgmxjmdvyNCRp4h+ipJ/hQ5udIoP3I4HyaT8OwfBFs9J +GmERmrBzgGGq55w68q9WNH1TIkAGzoZLhTbjAkofeufTmi4OZ9IG0C2UcH/GLYWS +qUGCkHt9TQZULxM4FSVrFeEfBcadlzAZgIN8uwdq8nezi1bv+gYm+Yx96oCrsWap +5HNVy0EVVNbCwl4678Fbk1QhyO9Tsbjiz8rtDi2ShMdpgJR9hbeTCUo6w9Ig1iF6 +EKL+vxHzIH2O1CdzMZJSKvvW54vX6DctTatN2hJtnD9Wsq2GOm3gWNIn/MaxVrW1 +D4LXysdD/Dv5ehpYxZ+FMQ2SMMup7C+I2TWJbNVN+6p2Y+3ndC0WkJUQt9l33Ktu +w1s0DOyIbthylnR1jWgSxJBcx29s7cdgghZGK26Zf3Q9SwKz3X4CiJjBxhWdvgTf +iS/r7lau6fPS8T3dCeI1yzc= +=bLDd +-----END PGP PUBLIC KEY BLOCK-----