Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 54 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
29 changes: 29 additions & 0 deletions packaging/RPM-GPG-KEY-jfut-github
Original file line number Diff line number Diff line change
@@ -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-----