1 # Debian Bookworm with Mate and the shepherd init system
3 ## Shepherd? Never heard of that!
5 [shepherd](https://www.gnu.org/software/shepherd/) is the init system for [guix](https://guix.gnu.org/).
6 It has a lot of drawbacks for the average Debian user:
8 1. It is not in an official Debian package, you have to install it yourself
9 2. Following 1., package maintainers don't include in them the equivalent
10 of an init script or systemd service, so writing these is on your own
11 3. It is written in a Lisp like language called [guile](https://www.gnu.org/software/guile/),
12 which is not mainstream at all
14 So why bother using it? Several reasons:
16 1. You may have noticed when reading other pages on this site that I don't like what systemd has become
17 2. And keeping sysvinit is not attractive either
18 3. No breaking features to be seen in other init systems worth testing them
19 4. shepherd by contrary is an exotic beast a hacker can only be tempted to consider
20 5. I was a guile contributor a long time ago, so the language is not a barrier at all
22 When Covid lockdown happened, I had a lot of free time, so I bite the bullet and went on implementing
23 shepherd for Debian, to the point that shepherd runs now on my main hosts. Below is the result of that work.
25 ## Installing shepherd on Debian Bookworm
27 The following instructions are safe, they won't delete your existing init system, just renaming some binaries like /sbin/{halt,reboot,poweroff}, see below.
29 ### Installing guile-3.0
31 Bookworm packages guile-3.0.8. This may work, but my tests have been done with a more recent version,
32 guile-3.0.9. For your convenience, below are the corresponding Debian packages:
36 [[guile-3.0-libs_3.0.9-0bu1_amd64.deb]]
37 [[guile-3.0-dev_3.0.9-0bu1_amd64.deb]]
38 [[guile-3.0_3.0.9-0bu1_amd64.deb]]
40 [[guile-3.0_3.0.9-0bu1_amd64.build]]
41 [[guile-3.0_3.0.9-0bu1_amd64.changes]]
42 [[guile-3.0_3.0.9-0bu1_amd64.buildinfo]]
46 [[guile-3.0-libs_3.0.9-0bu1_armhf.deb]]
47 [[guile-3.0-dev_3.0.9-0bu1_armhf.deb]]
48 [[guile-3.0_3.0.9-0bu1_armhf.deb]]
50 [[guile-3.0_3.0.9-0bu1_armhf.build]]
51 [[guile-3.0_3.0.9-0bu1_armhf.changes]]
52 [[guile-3.0_3.0.9-0bu1_armhf.buildinfo]]
56 [[guile-3.0_3.0.9-0bu1.dsc]]
57 [[guile-3.0_3.0.9-0bu1.debian.tar.xz]]
58 [[guile-3.0_3.0.9.orig.tar.gz]]
60 And you just have to run:
62 dpkg -i guile-3.0-libs_3.0.9-0bu1_amd64.deb guile-3.0-dev_3.0.9-0bu1_amd64.deb guile-3.0_3.0.9-0bu1_amd64.deb
64 ### Installing guile-fibers-1.3.1
66 This is a thread library for guile, not yet packaged for Debian. Here are the corresponding
71 [[guile-fibers_1.3.1-1bu_amd64.deb]]
73 [[fibers_1.3.1-1bu_amd64.build]]
74 [[fibers_1.3.1-1bu_amd64.changes]]
75 [[fibers_1.3.1-1bu_amd64.buildinfo]]
77 armhf (some costly tests have been suppressed in that 2bu version, as they exceeded RAM on the compiling host):
79 [[guile-fibers_1.3.1-2bu_armhf.deb]]
81 [[fibers_1.3.1-2bu_armhf.build]]
82 [[fibers_1.3.1-2bu_armhf.changes]]
83 [[fibers_1.3.1-2bu_armhf.buildinfo]]
87 [[fibers_1.3.1-1bu.dsc]]
88 [[fibers_1.3.1-1bu.debian.tar.xz]]
89 [[fibers_1.3.1-2bu.dsc]]
90 [[fibers_1.3.1-2bu.debian.tar.xz]]
91 [[fibers_1.3.1.orig.tar.gz]]
95 dpkg -i guile-fibers_1.3.1-1bu_amd64.deb
97 ### Installing shepherd-0.10.2
99 This is the real init engine. Care has been taken with the Debian alternatives system to not clobber your original /sbin/halt, /sbin/reboot and /sbin/poweroff by renaming them as /sbin/halt.orig-init, /sbin/reboot.orig-init and /sbin/poweroff.orig-init.
101 The packages are below:
105 [[shepherd_0.10.2-0.1_amd64.deb]]
107 [[shepherd_0.10.2-0.1_amd64.build]]
108 [[shepherd_0.10.2-0.1_amd64.changes]]
109 [[shepherd_0.10.2-0.1_amd64.buildinfo]]
113 [[shepherd_0.10.2-0.1_armhf.deb]]
115 [[shepherd_0.10.2-0.1_armhf.build]]
116 [[shepherd_0.10.2-0.1_armhf.changes]]
117 [[shepherd_0.10.2-0.1_armhf.buildinfo]]
121 [[shepherd_0.10.2-0.1.dsc]]
122 [[shepherd_0.10.2-0.1.debian.tar.xz]]
123 [[shepherd_0.10.2.orig.tar.gz]]
125 And you install with:
127 dpkg -i shepherd_0.10.2-0.1_amd64.deb
129 ### Installing shepherd-debian-1.4
131 This package installs a set of the equivalent of init scripts or systemd
132 services for shepherd. The list of packages whose daemons are currently handled is below:
160 This should be enough for a basic server or desktop. List of packages:
164 [[shepherd-debian_1.4-1_amd64.deb]]
166 [[shepherd-debian_1.4-1_amd64.build]]
167 [[shepherd-debian_1.4-1_amd64.changes]]
168 [[shepherd-debian_1.4-1_amd64.buildinfo]]
172 [[shepherd-debian_1.4-1_armhf.deb]]
174 [[shepherd-debian_1.4-1_armhf.build]]
175 [[shepherd-debian_1.4-1_armhf.changes]]
176 [[shepherd-debian_1.4-1_armhf.buildinfo]]
180 [[shepherd-debian_1.4-1.dsc]]
181 [[shepherd-debian_1.4-1.debian.tar.xz]]
182 [[shepherd-debian_1.4.orig.tar.gz]]
186 dpkg -i shepherd-debian_1.4-1_amd64.deb
188 In case of errors, install the missing dependencies and retry.
192 The above steps won't change your init system at next reboot. To use
193 shepherd as the new init system, you have to add/change the init kernel boot
194 argument as "init=/bin/shepherd". But I recommend you first study the README
195 in package shepherd-debian for other useful information.
197 ## Using shepherd with Mate
199 If you use Mate, you may want to use these packages, see [[README.elogind]] and the patches: [[login1.patch]] [[udisk2.patch]].
203 [[elogind_246.10-1debian2bu_amd64.deb]]
204 [[libelogind0_246.10-1debian2bu_amd64.deb]]
205 [[libpam-elogind_246.10-1debian2bu_amd64.deb]]
207 [[elogind_246.10-1debian2bu_amd64.build]]
208 [[elogind_246.10-1debian2bu_amd64.changes]]
209 [[elogind_246.10-1debian2bu_amd64.buildinfo]]
213 [[elogind_246.10-1debian2bu.dsc]]
214 [[elogind_246.10-1debian2bu.debian.tar.xz]]
215 [[elogind_246.10.orig.tar.gz]]
217 All 3 packages have to be installed:
219 dpkg -i elogind_246.10-1debian2bu_amd64.deb libelogind0_246.10-1debian2bu_amd64.deb libpam-elogind_246.10-1debian2bu_amd64.deb