GNU Shepherd 1.0.0 released
This 1.0.0 release is published today because we think Shepherd has become a solid tool, meeting user experience standards one has come to expect since systemd changed the game of free init systems and service managers alike. It's also a major milestone for Guix, which has been relying on the Shepherd from a time when doing so counted as dogfooding.
Posted Dec 10, 2024 16:16 UTC (Tue)
by david.a.wheeler (subscriber, #72896)
[Link] (25 responses)
Posted Dec 10, 2024 17:27 UTC (Tue)
by dave_malcolm (subscriber, #15013)
[Link] (24 responses)
Am I right in thinking that in systemd that .service files are deliberately not Turing complete, so that they can be statically analyzed ? (e.g. mechanically verified to comply with site-wide policies)
Posted Dec 10, 2024 17:55 UTC (Tue)
by quotemstr (subscriber, #45331)
[Link] (21 responses)
I'm a fan in general of using general purpose programming languages as configuration languages.
Posted Dec 10, 2024 20:59 UTC (Tue)
by dankamongmen (subscriber, #35141)
[Link] (18 responses)
Posted Dec 10, 2024 22:05 UTC (Tue)
by rweikusat2 (subscriber, #117920)
[Link] (16 responses)
Posted Dec 11, 2024 0:51 UTC (Wed)
by Wol (subscriber, #4433)
[Link] (2 responses)
Wasn't that how almost all the original systemd units were written - as just a wrapper for the SysV shell scripts?
Cheers,
Posted Dec 11, 2024 15:37 UTC (Wed)
by rweikusat2 (subscriber, #117920)
[Link]
Posted Dec 15, 2024 15:46 UTC (Sun)
by arsen (subscriber, #161285)
[Link]
Posted Dec 11, 2024 6:28 UTC (Wed)
by Cyberax (✭ supporter ✭, #52523)
[Link] (10 responses)
BTW, systemd supports dynamic units via generators. It's a nice escape hatch, and it's also nice that you need to explicitly use it, making it conspicuous.
Posted Dec 11, 2024 15:35 UTC (Wed)
by rweikusat2 (subscriber, #117920)
[Link] (9 responses)
NB: I didn't spend any time looking more closely at this, I just noticed it. This means I have no idea if this could also be implemented in a different way.
Posted Dec 11, 2024 18:24 UTC (Wed)
by raven667 (subscriber, #5198)
[Link] (4 responses)
Posted Dec 11, 2024 19:14 UTC (Wed)
by rweikusat2 (subscriber, #117920)
[Link] (3 responses)
¹ Via man systemd.something | perl -ne 'print("$_\n") for /\w+=/g' | sort -u for each something documenting configuration directives.
Posted Dec 11, 2024 19:34 UTC (Wed)
by zdzichu (guest, #17118)
[Link]
I took a quick glance on this wrapper script:
Wrapper is excessive.
Posted Dec 11, 2024 19:37 UTC (Wed)
by bluca (subscriber, #118303)
[Link]
Posted Dec 11, 2024 22:05 UTC (Wed)
by himi (subscriber, #340)
[Link]
SysV init scripts did often incorporate that kind of thing - hell, the old openvswitch init scripts did a lot of what ovs-ctl does, and a lot of that functionality was clearly migrated from the init scripts to ovs-ctl with the move to support systemd. But it was always a better and more flexible model to have the separate control script and an init script/unit file that made use of it.
Posted Dec 11, 2024 19:38 UTC (Wed)
by Cyberax (✭ supporter ✭, #52523)
[Link] (3 responses)
Is the reason "# Protect the service startup against concurrent ntpdate ifup hooks"?
Posted Dec 11, 2024 20:16 UTC (Wed)
by rweikusat2 (subscriber, #117920)
[Link] (2 responses)
Posted Dec 11, 2024 20:18 UTC (Wed)
by bluca (subscriber, #118303)
[Link]
Posted Dec 11, 2024 20:30 UTC (Wed)
by Cyberax (✭ supporter ✭, #52523)
[Link]
You're not making it well, because your example is more of a half-assed porting that is specifically highlighted by it being explicitly annotated.
I actually used dynamic systemd units myself, generated from an internal service definition language. So I know that the need exists. But it's a situation that is similar to `unsafe` in Rust: you sometimes need it, but whenever it's used, it must be explicitly annotated. It also should not be as ubiquitous as in C, the safe code should be sufficient for the vast majority of use-cases.
Posted Dec 12, 2024 8:28 UTC (Thu)
by beagnach (guest, #32987)
[Link] (1 responses)
> Support for System V service scripts is deprecated and will be
Posted Dec 12, 2024 8:33 UTC (Thu)
by Cyberax (✭ supporter ✭, #52523)
[Link]
Posted Dec 11, 2024 0:17 UTC (Wed)
by raven667 (subscriber, #5198)
[Link]
Congrats on their 1.0, I'm sure Guix admins are happy.
Posted Dec 10, 2024 23:19 UTC (Tue)
by motk (subscriber, #51120)
[Link]
Posted Dec 14, 2024 19:43 UTC (Sat)
by lispwitch (subscriber, #175059)
[Link]
(Doesn't Guile support running Emacs Lisp?) Yes, but only the core language and a small standard library (not including
Posted Dec 10, 2024 21:45 UTC (Tue)
by gmw (subscriber, #122071)
[Link] (1 responses)
Sort of.
This means you can build an eval environment with a limited set of functions (like no arbitrary file I/O) and also no ability to get access to extra functions.
Posted Dec 13, 2024 18:10 UTC (Fri)
by dannyobrien (subscriber, #25583)
[Link]
Comparison available?
Comparison available?
Comparison available?
Comparison available?
Comparison available?
Comparison available?
Wol
Comparison available?
Comparison available?
Comparison available?
Comparison available?
Comparison available?
Comparison available?
Comparison available?
– pidfile and lockfile are unnecessary with systemd
– /etc/default/ntpsec can be imported using EnvironmentFile= directive
– using different configuration for DHCP could be done with service instances (if it's really needed; I doubt that)
– User=/Group= exists
Comparison available?
Comparison available?
Comparison available?
Comparison available?
Comparison available?
Comparison available?
Comparison available?
> removed in v258. Please make sure to update your software
> *now* to include a native systemd unit file instead of a legacy
> System V script to retain compatibility with future systemd releases.
Comparison available?
Comparison available?
Comparison available?
Comparison available?
pcase), just enough for bootstrapping Guile-Emacs. Guile has its own pattern-matching library, (ice-9 match), that would be more useful for this task.Comparison available?
Scheme has a couple of features that, when combined, clamp down on arbitrary code execution:
1. First class environments. You can build an environment that contains all of the identifiers the evaluated code is allowed to see.
2. Lexically scoped everything. "Everything" is not just variables or functions, but also what other languages call keywords. Of particular note is the "import" keyword (or "special form" in scheme parlance).
Also, the throw-away comment at the end mentioning Spritely points to a capability-based security system in the future that would only grant scripts explicit functionality (including networked scripts).
Comparison available?
