Title: Managing OpenBSD installed packages declaratively | |
Author: Solène | |
Date: 05 May 2022 | |
Tags: openbsd | |
Description: I wrote a simple utility to manage my packages using a | |
configuration file, installed missing packages and removing the extra | |
ones | |
# Introduction | |
I wrote a simple utility to manage OpenBSD packages on a system using a | |
declarative way. | |
pkgset git repository | |
Instead of running many pkg_add or pkg_delete commands to manage my | |
packages, now I can use a configuration file (allowing includes) to | |
define which package should be installed, and the installed but not | |
listed packages should be removed. | |
After using NixOS too long, it's a must have for me to manage packages | |
this way. | |
# How does it work? | |
pkgset works by marking extra packages as "auto installed" (the | |
opposite is manually installed, see pkg_info -m), and by installing | |
missing packages. After those steps, pkgset runs "pkg_delete -a" to | |
remove unused packages (the one marked as auto installed) if they are | |
not a dependency of another required package. | |
# How to install? | |
The installation is easy, download the sources and run make install as | |
root, it will install pkgset and its man page on your system. | |
```shell commands | |
$ git clone https://tildegit.org/solene/pkgset.git | |
$ cd pkgset | |
$ doas make install | |
``` | |
# Configuration file example | |
Here is the /etc/pkgset.conf file on my laptop. | |
```configuration file | |
borgbackup--%1.2 | |
bwm-ng | |
fish | |
fzf | |
git | |
git-annex | |
gnupg | |
godot | |
kakoune | |
musikcube | |
ncdu | |
rlwrap | |
sbcl | |
vim--no_x11 | |
vlc | |
xclip | |
xfce | |
xfce-extras | |
yacreader | |
``` | |
# Limitations | |
The only "issue" with pkgset is that for some packages that "pkg_add" | |
may find ambiguous due to multiples versions or favors available | |
without a default one, you must define the exact package version/flavor | |
you want to install. | |
# Risks | |
If you use it incorrectly, running pkgset doesn't have more risks than | |
losing some or all installed packages. | |
# Why not use pkg_add -l ? | |
I know pkg_add as an option to install packages from a list, but it | |
won't remove the extra packages. I may look at adding the "pkgset" | |
feature to pkg_add one day maybe. |