Requirements#

kdevops-ng needs Linux with systemd 258 or later, and Git to clone it. A task calls every other tool by its name, and the host’s distribution provides it.

Distributions#

Four are supported: Debian testing, Fedora Rawhide, the development release of Ubuntu, and Nix with nixpkgs’ unstable branch. Nix is the preferred one, for reproducibility: it pins every tool, so two hosts run the same build of each, and a record names that build.

Nix#

The flake stands for every package list of these pages. In the checkout, one command opens a shell with all the tools:

host#
$ nix develop

It needs the nix command and flakes enabled, once:

$ mkdir --parents --verbose ~/.config/nix
~/.config/nix/nix.conf#
experimental-features = nix-command flakes

Debian, Fedora and Ubuntu#

Root installs the packages, once. Nothing in kdevops-ng runs sudo: each list is a command for you to run.

$ sudo apt install git
$ sudo dnf install git
$ sudo apt install git

The units’ settings#

A task runs its tool as a unit of your service manager. Where the unit runs, what it may write and what files its record are drop-ins kdevops-ng ships. Link them once, from the checkout, where your service manager looks for a user’s units:

$ mkdir --parents --verbose ~/.local/share/systemd/user
$ ln --symbolic --verbose --target-directory ~/.local/share/systemd/user \
    "$PWD"/units/user/*.d
$ systemctl --user daemon-reload

The journal#

A task runs its tool as a unit of your service manager, and what the tool printed is read back from your own journal. journald keeps a journal for each user only while it stores on disk, under /var/log/journal. Every distribution here sets that up, so most hosts need nothing. Check that yours has the file:

$ ls /var/log/journal/*/user-"$(id --user)".journal

If it is missing, the journal is still in memory, under /run. Root moves it to disk, once there is room on /var:

$ sudo mkdir --parents --verbose /var/log/journal
$ sudo journalctl --flush

Your own journal needs no group. To read the system’s too, as journalctl does without --user, join systemd-journal and log in again:

$ sudo usermod --append --groups systemd-journal "$(whoami)"

I/O accounting#

A record says how much a run read and wrote where your service manager accounts for I/O. systemd gives a user’s service manager the cpu, memory and pids controllers only. Root adds io, once, and it holds from your next login:

$ sudo mkdir --parents --verbose /etc/systemd/system/user@.service.d
/etc/systemd/system/user@.service.d/delegate.conf#
[Service]
Delegate=pids memory cpu io
$ sudo systemctl daemon-reload

Check that your service manager has it:

$ cat "/sys/fs/cgroup/user.slice/user-$UID.slice/user@$UID.service/cgroup.controllers"
cpu io memory pids

Without it a record leaves those figures out. systemd accounts for network traffic in system services only, so no record has it.

What each part needs#

Each part of kdevops-ng lists its own tools, on its page: