summaryrefslogtreecommitdiff
path: root/prompts/skills/pkgrepo/references/client-setup.md
blob: 5e231ffa4570c1917ba40d0c9bea07bff4fed2f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# Client Setup

How to configure each OS to install packages from `pkgrepo.f3s.buetow.org`.

## FreeBSD (f0–f3)

Custom repo is configured alongside the official FreeBSD repos.

File: `/usr/local/etc/pkg/repos/custom.conf`

```
custom: {
  url: "https://pkgrepo.f3s.buetow.org/freebsd/FreeBSD:15:amd64/latest",
  mirror_type: "NONE",
  signature_type: "NONE",
  enabled: yes
}
```

### Using packages

```sh
doas pkg update
doas pkg install <package-name>
doas pkg upgrade                  # upgrade all, including custom packages
doas pkg install -fy <package>    # force reinstall (same version)
```

### Setting up a new FreeBSD host

Pipe via stdin to avoid csh quoting issues:

```sh
cat <<'REPO' | ssh -p 22 <host>.lan.buetow.org 'doas mkdir -p /usr/local/etc/pkg/repos && doas tee /usr/local/etc/pkg/repos/custom.conf > /dev/null'
custom: {
  url: "https://pkgrepo.f3s.buetow.org/freebsd/FreeBSD:15:amd64/latest",
  mirror_type: "NONE",
  signature_type: "NONE",
  enabled: yes
}
REPO
```

## OpenBSD (blowfish, fishfinger)

Custom repo is configured via `PKG_PATH` in `/root/.profile`, deployed by `rex pkgrepo_setup`.
Official OpenBSD packages still install normally via `/etc/installurl`.

```sh
export PKG_PATH="https://pkgrepo.f3s.buetow.org/openbsd/7.8/packages/amd64/"
```

### Using packages

```sh
doas pkg_add <package>       # installs from custom repo (signed with signify)
doas pkg_add -u <package>    # update to latest version
```

### Setting up a new OpenBSD host

Two things needed:

1. **Signify public key** — copy from an existing host:
   ```sh
   scp rex@fishfinger.buetow.org:/etc/signify/custom-pkg.pub /tmp/
   scp /tmp/custom-pkg.pub rex@<newhost>:/tmp/
   ssh rex@<newhost> "doas cp /tmp/custom-pkg.pub /etc/signify/custom-pkg.pub"
   ```

2. **PKG_PATH** — run the Rex task from `~/git/conf/frontends`:
   ```sh
   rex pkgrepo_setup   # adds PKG_PATH to /root/.profile on all frontends
   ```

Update `PKG_PATH` whenever the OpenBSD version changes (currently 7.8).

### Package signing

OpenBSD packages are signed with `signify(1)` via `pkg_sign`:
- **Private key**: `/etc/signify/custom-pkg.sec` on fishfinger (build host)
- **Public key**: `/etc/signify/custom-pkg.pub` on all OpenBSD clients
- Signing happens automatically during `make pkg-openbsd` / `make pkg`
- `pkg_add` verifies the signature — no `-D unsigned` needed

## Rocky Linux (r0–r2, pi0–pi3)

Architecture-specific repo URLs:
- `https://pkgrepo.f3s.buetow.org/rockylinux/9/x86_64/`  (r0–r2)
- `https://pkgrepo.f3s.buetow.org/rockylinux/9/aarch64/` (pi0–pi3)

### Persistent repo file

Create `/etc/yum.repos.d/f3s-dtail.repo`:

```ini
[f3s-dtail]
name=f3s DTail
baseurl=https://pkgrepo.f3s.buetow.org/rockylinux/9/$basearch/
enabled=1
gpgcheck=0
repo_gpgcheck=0
```

Then:

```sh
sudo dnf makecache
sudo dnf install dtail
sudo dnf upgrade dtail
```

### Temporary one-off usage (no persistent repo file needed)

```sh
sudo dnf repoquery \
  --disablerepo='*' \
  --repofrompath=f3s-dtail,https://pkgrepo.f3s.buetow.org/rockylinux/9/$(uname -m)/ \
  --enablerepo=f3s-dtail \
  dtail
```

Do **not** pass `--repofrompath` when the persistent repo file already exists — dnf errors with "listed more than once".