www.nico.schottelius.org/software/cinit/browse_source/cinit-0.3pre13/doc/user/dependencies.text

69 lines
2.4 KiB
Text
Raw Normal View History

cinit - Dependencies
====================
Nico Schottelius <nico-cinit__@__schottelius.org>
0.1, for cinit 0.3, Initial Version from 2005-12-13
:Author Initials: NS
This document describes the different dependency types of cinit.
Dependencies in general
-----------------------
Each service may have two types (non-exclusive) types of dependencies:
The so called `needs` or `wants`. These are directories below the service
directory and contain symbolic links to the dependencies.
The name of the link can be freely chosen.
An example:
The service '/etc/cinit/svc/getty/2' needs the service
'/etc/cinit/svc/local-tuning/keyboard-layout':
--------------------------------------------------------------------------------
[21:35] hydrogenium:needs# cd /etc/cinit/svc/getty/2/needs
[21:35] hydrogenium:needs# ls -l
insgesamt 0
lrwxrwxrwx 1 root root 37 2006-10-26 17:51 keyboard-layout -> ../../../local-tuning/keyboard-layout
[21:35] hydrogenium:needs# cd keyboard-layout/
[21:35] hydrogenium:keyboard-layout# pwd -P
/etc/cinit/svc/local-tuning/keyboard-layout
--------------------------------------------------------------------------------
(Warning: This is an incomplete example, it misses at least `mount/root`
as dependency)
This service could additionally want something else, too. It is also
possible that a service only `wants` another service or that a service
has no dependencies.
Absolute versus relative links
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cinit does not care whether a link is relative or absolute. And
as far as I can see it does not make any difference to usability.
In general, it seems to be a little bit 'easier' to use relative links
when manually configuring cinit ('ln -s ../../../service' versus
'ln -s /etc/cinit/svc/category/service'), but easier readable when
analysing them (with `ls -l').
The two types
-------------
needs
~~~~~
`Needs` are the 'hard dependencies': If a services fails to start that
is linked in the `needs` directory, the service will not be started.
wants
~~~~~
`Wants` are the 'soft dependencies': cinit will try to start the dependencies
found in `wants` before the service, but the service will also be started,
indenpendend of success of the dependencies.
Circular dependency problem
----------------------------
If you manage to create circular dependencies cinit will fall into an
endless loop. Use `cinit.check.config` to verify your configuration.