Dependencies

Sean E. Russell upstart at ser1.net
Sun Oct 8 03:43:27 BST 2006


On Saturday 07 October 2006 18:22, Aidan Thornton wrote:
> Ah yes. The code related to upgrading is one of the more fragile parts
> of InitNG. (As I'm sure most of you know, if init or any of its
> libraries is upgraded, init needs to be restarted or remounting the
> root filesystem read-only will fail on the next shutdown).

Wow.  Was that the problem?  What causes this behavior?

> I don't think Gentoo's init system is particularly complex, it's just

I'm no guru of init systems, but I consider Gentoo's init to support 
relatively complex dependencies.  sysvinit doesn't support dependencies at 
all (sequences aren't dependencies); "after" and "before" are synonymous with 
sequences, but "need" provides true dependencies.  The real magic is "use", 
which provides fairly sophisticated behavior, and I don't know of another 
init system that offers such syntax.  Combine them all together, and I'd say 
it allows for constructing complex dependency trees unavailable in other init 
systems.

Of course, in the end, Gentoo's init merely produces a sequence, constructed 
from a convenient and flexible language for specifying dependencies; it is, 
ultimately, a determinant system.

Upstart is the only system I've encountered that has the potential to provide 
truly non-determinant init processes.  It offers parallel service starting 
(very nice!), and a reactive, adaptive method for handling services.  It may 
not offer a ton of advantage on servers, but on laptops, I suspect that it'll 
be a great help.

> By the way, I assume that there'll eventually be some way of varying
> the set of events required to start a service depending on a config
> file? For example, I want MythTV to start even if no network interface

Interesting!  This is definitely something that needs to be considered.

I also wonder about enabling and disabling scripts.  They could be moved in 
and out of /etc/event.d, but then how does one handle system upgrades?  The 
package manager can't just throw new versions in event.d.  It seems that 
there needs to be a way to remove scripts from the event queue.  I'm not 
really fond of symlinks from event.d to somewhere else on the system -- it 
smells too much like sysvinit -- but that may a solution. Have there been 
other ideas?

-- 
### SER   
### Deutsch|Esperanto|Francaise|Linux|XML|Java|Ruby|Aikido|Iaido
### http://www.ser1.net  jabber.com:ser  ICQ:83578737 
### GPG: http://www.ser1.net/Security/ser_public.gpg



More information about the Upstart-devel mailing list