docs: document packaging and system-wide installation

Describe installing from the Arch and Debian packages, system-wide installs via PREFIX/DESTDIR, the packaging release flow, and add the new directories to the project layout.
This commit is contained in:
ahp
2026-10-11 12:20:52 +03:30
parent e03d6bb195
commit 746eeccd5c
+68 -4
View File
@@ -41,24 +41,67 @@ already seen so nothing is delivered twice.
## Installation
### Arch Linux
A `PKGBUILD` lives in [`packaging/archlinux`](packaging/archlinux). Build and
install the package with `makepkg`:
```sh
git clone https://src.panahifar.ir/ahp/lazyntfy.git
cd lazyntfy/packaging/archlinux
makepkg -si
```
This installs `/usr/bin/lazyntfy`, the man page under `/usr/share/man`, the
license, and the README, and pulls in `ca-certificates` so TLS to your ntfy
server works.
### Debian and Ubuntu
A debhelper-free source package lives in [`debian`](debian). Build a `.deb` and
install it system-wide:
```sh
git clone https://src.panahifar.ir/ahp/lazyntfy.git
cd lazyntfy
make deb # writes dist/lazyntfy_<version>_<arch>.deb
sudo apt install ./dist/lazyntfy_*.deb
```
`apt install ./file.deb` (or `dpkg -i` followed by `apt -f install`) resolves
the `ca-certificates` dependency. The packaging needs only the Go toolchain and
`dpkg-dev`; `make deb` passes `-d` so it also builds where `golang-go` is not
installed as a distribution package.
### From source
```sh
git clone https://src.panahifar.ir/ahp/lazyntfy.git
cd lazyntfy
make install # installs the binary and the man page under ~/.local
make install # into ~/.local, no root needed
```
`make install` honors `PREFIX` (default `~/.local`):
`make install` honors `PREFIX`, `BINDIR`, `MANDIR`, `DOCDIR`, and `DESTDIR`.
Picking a system prefix installs for every user:
```sh
make install PREFIX=/usr/local
sudo make install PREFIX=/usr/local # /usr/local/bin/lazyntfy, /usr/local/share/man/man1
sudo make install PREFIX=/usr # /usr/bin/lazyntfy, /usr/share/man/man1
```
Stage a filesystem tree into a temporary root instead of the live system (handy
for building your own package):
```sh
make install DESTDIR="$PWD/stage" PREFIX=/usr
```
### With `go install`
From a checkout:
```sh
go install ./cmd/lazyntfy@latest # or: go install lazyntfy/cmd/lazyntfy
go install ./cmd/lazyntfy # binary in $(go env GOPATH)/bin
```
## Usage
@@ -131,6 +174,25 @@ messages are pruned on startup. Credentials are never written to the database
the current run's authentication is always used. History is best effort: if the
file cannot be opened, the client still runs.
## Packaging
Both package formats are defined in the repository. `make deb` builds a Debian
package from the working tree; the Arch `PKGBUILD` builds the `v$pkgver` release
archive from the Gitea instance.
| Format | Build | Definition |
| --- | --- | --- |
| Debian / Ubuntu | `make deb` → `dist/*.deb` | [`debian/`](debian) |
| Arch Linux | `make arch` → `makepkg` | [`packaging/archlinux/PKGBUILD`](packaging/archlinux/PKGBUILD) |
When cutting a release:
1. Bump the version in [`debian/changelog`](debian/changelog) and `pkgver` in
the `PKGBUILD`.
2. Tag the commit (`git tag -s vX.Y.Z`) and push it.
3. In `packaging/archlinux`, run `updpkgsums` to refresh the tarball checksum and
`makepkg --printsrcinfo > .SRCINFO`.
## Development
```sh
@@ -162,6 +224,8 @@ go test ./internal/history/...
| `internal/textutil` | width-aware text wrapping and clipping |
| `internal/tui` | Bubble Tea interface |
| `man` | `lazyntfy(1)` man page |
| `debian` | Debian / Ubuntu package definition |
| `packaging/archlinux` | Arch Linux `PKGBUILD` |
## Contributing