Nonsystemd

From ParabolaWiki
Jump to: navigation, search

nonsystemd is a repository that aims to provide software built and patched to correctly work without systemd. You can find an updated list of removed packages and eventual corresponding replacements at your-init-freedom blacklist. The purpose is to make possible to have a fully-working Parabola system without systemd, or more precisely, to allow users to choose their init-system and service manager to change them at any time, rather than imposing one and only one upon all users. That is the essence of Init-Freedom!

Here you will find OpenRC and its init-scripts for various packages. We might add more init alternatives in the future. In this page, you will learn how to enable the repo, the criteria for a package inclusion and the packaging recommendations.

1 Activation of nonsystemd repo

First, upgrade your currently installed packages from your currently configured repositories:

# pacman -Syyuu

Then, add the following lines in /etc/pacman.conf:

/etc/pacman.conf
[nonsystemd]
Include = /etc/pacman.d/mirrorlist

# Enable [nonsystemd-multilib] only if you have [multilib] enabled
#[nonsystemd-multilib]
#Include = /etc/pacman.d/mirrorlist
Note: The [nonsystemd] repo must be listed above the [libre] repo. The default pacman.conf has these in the correct order, but disabled (commented-out).

Next, replace your currently installed packages with those from the [nonsystem] repo.

# pacman -Syyuu

The your-init-freedom package will advise you if some blacklisted package are installed on your system and if any replacement is available. This blacklist bans non-critical packages that only work with systemd or are made for it.

2 Criteria

Here it is described the criteria for candidate packages to be patched/rebuilt in [nonsystemd] or blacklisted.

your-init-freedom will conflict a package when:

  • It is made for systemd only.
  • It is a part of systemd without non-systemd replacements.

A package is rebuilt and/or patched when:

  • Needs systemd, but can be patched or rebuilt to work without it.
  • Needs systemd, but can be patched or rebuilt to work with a replacement, e.g. elogind.
  • The package includes an ALPM hook which runs systemd commands.

3 Packaging

Most of the packages in this repo are based on Artix packages and Gentoo packages. Closely following the Artix development ensures better compatibility with it for, e.g., avoiding too many migration issues.

3.1 Init scripts

This is a generic template for an init script PKGBUILD

PKGBUILD
pkgname=foo-openrc
pkgver=2020101 # printf "%(%Y%m%d)T"
pkgrel=1
pkgdesc="OpenRC foo init script"
arch=('any')
url="https://example.com"
license=('GPL2')
provides=('init-foo')
conflicts=('init-foo')
backup=('etc/conf.d/foo')
source=("foo."{confd,initd})
sha256sums=('0000000000000000000000000000000000000000000000000000')

package() {
    depends=('openrc' 'foo')
    install -Dm755 "$srcdir/foo.initd" "$pkgdir/etc/init.d/foo"
    install -Dm644 "$srcdir/foo.confd" "$pkgdir/etc/conf.d/foo"
}

Init scripts only require openrc and the daemon they start at runtime, this is why depends must be inside package(). Only build and runtime dependencies should be in the global depends. Artix init scripts packages don't do this, so be aware when bringing them to Parabola.

4 Help and contributions

If you need help or if you want to contribute to this project you can join #parabola channel on the Libera Chat network as well as the mailing list and the community forum.

5 See also