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 ### Installing guile-3.0
29 Bookworm packages guile-3.0.8. This may work, but my tests have been done with a more recent version,
30 guile-3.0.9. For your convenience, below are the corresponding Debian packages:
34 [[guile-3.0-libs_3.0.9-0bu1_amd64.deb]]
35 [[guile-3.0-dev_3.0.9-0bu1_amd64.deb]]
36 [[guile-3.0_3.0.9-0bu1_amd64.deb]]
38 [[guile-3.0_3.0.9-0bu1_amd64.build]]
39 [[guile-3.0_3.0.9-0bu1_amd64.changes]]
40 [[guile-3.0_3.0.9-0bu1_amd64.buildinfo]]
44 [[guile-3.0-libs_3.0.9-0bu1_armhf.deb]]
45 [[guile-3.0-dev_3.0.9-0bu1_armhf.deb]]
46 [[guile-3.0_3.0.9-0bu1_armhf.deb]]
48 [[guile-3.0_3.0.9-0bu1_armhf.build]]
49 [[guile-3.0_3.0.9-0bu1_armhf.changes]]
50 [[guile-3.0_3.0.9-0bu1_armhf.buildinfo]]
54 [[guile-3.0_3.0.9-0bu1.dsc]]
55 [[guile-3.0_3.0.9-0bu1.debian.tar.xz]]
56 [[guile-3.0_3.0.9.orig.tar.gz]]
58 And you just have to run:
60 ### Installing guile-fibers-1.3.1
62 This is a thread library for guile, not yet packaged for Debian. Here are the corresponding
67 [[guile-fibers_1.3.1-1bu_amd64.deb]]
69 [[fibers_1.3.1-1bu_amd64.build]]
70 [[fibers_1.3.1-1bu_amd64.changes]]
71 [[fibers_1.3.1-1bu_amd64.buildinfo]]
73 armhf (some costly tests have been suppressed in that 2bu version, as they exceeded RAM on the compiling host):
75 [[guile-fibers_1.3.1-2bu_armhf.deb]]
77 [[fibers_1.3.1-2bu_armhf.build]]
78 [[fibers_1.3.1-2bu_armhf.changes]]
79 [[fibers_1.3.1-2bu_armhf.buildinfo]]
83 [[fibers_1.3.1-1bu.dsc]]
84 [[fibers_1.3.1-1bu.debian.tar.xz]]
85 [[fibers_1.3.1-2bu.dsc]]
86 [[fibers_1.3.1-2bu.debian.tar.xz]]
87 [[fibers_1.3.1.orig.tar.gz]]
91 ### Installing shepherd-0.10.2
93 The packages are below:
97 [[shepherd_0.10.2-0.1_amd64.deb]]
99 [[shepherd_0.10.2-0.1_amd64.build]]
100 [[shepherd_0.10.2-0.1_amd64.changes]]
101 [[shepherd_0.10.2-0.1_amd64.buildinfo]]
105 [[shepherd_0.10.2-0.1_armhf.deb]]
107 [[shepherd_0.10.2-0.1_armhf.build]]
108 [[shepherd_0.10.2-0.1_armhf.changes]]
109 [[shepherd_0.10.2-0.1_armhf.buildinfo]]
113 [[shepherd_0.10.2-0.1.dsc]]
114 [[shepherd_0.10.2-0.1.debian.tar.xz]]
115 [[shepherd_0.10.2.orig.tar.gz]]
117 And you install with:
119 ### Installing shepherd-debian-1.4
121 This package installs a set of the equivalent of init scripts or systemd
122 services for shepherd. The list of packages whose daemons are currently handled is below:
150 This should be enough for a basic server or desktop. List of packages:
154 [[shepherd-debian_1.4-1_amd64.deb]]
156 [[shepherd-debian_1.4-1_amd64.build]]
157 [[shepherd-debian_1.4-1_amd64.changes]]
158 [[shepherd-debian_1.4-1_amd64.buildinfo]]
162 [[shepherd-debian_1.4-1_armhf.deb]]
164 [[shepherd-debian_1.4-1_armhf.build]]
165 [[shepherd-debian_1.4-1_armhf.changes]]
166 [[shepherd-debian_1.4-1_armhf.buildinfo]]
170 [[shepherd-debian_1.4-1.dsc]]
171 [[shepherd-debian_1.4-1.debian.tar.xz]]
172 [[shepherd-debian_1.4.orig.tar.gz]]
176 In case of errors, install the missing dependencies and retry.
180 The above steps won't change your init system at next reboot. To use
181 shepherd as the new init system, you have to add/change the init kernel boot
182 argument as "init=/bin/shepherd". But I recommend you first study the README
183 in package shepherd-debian for other useful information.
185 ## Using shepherd with Mate
187 If you use Mate, you may want to use these packages, see README.elogind.
191 [[elogind_246.10-1debian2bu_amd64.deb]]
192 [[libelogind0_246.10-1debian2bu_amd64.deb]]
193 [[libpam-elogind_246.10-1debian2bu_amd64.deb]]
195 [[elogind_246.10-1debian2bu_amd64.build]]
196 [[elogind_246.10-1debian2bu_amd64.changes]]
197 [[elogind_246.10-1debian2bu_amd64.buildinfo]]
201 [[elogind_246.10-1debian2bu.dsc]]
202 [[elogind_246.10-1debian2bu.debian.tar.xz]]
203 [[elogind_246.10.orig.tar.gz]]