.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "POLICY-RC.D-DECLARATIVE 8" .TH POLICY-RC.D-DECLARATIVE 8 "2020-11-23" "" "" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" policy\-rc.d\-declarative \- define system service policies declaratively .SH "SYNOPSIS" .IX Header "SYNOPSIS" policy\-rc.d .SH "DESCRIPTION" .IX Header "DESCRIPTION" Debian policy states that packages providing system services need to start those services by default, and that the starting of the service should be done by way of the \fI/usr/sbin/invoke\-rc.d\fR script. This script will execute a program \fI/usr/sbin/policy\-rc.d\fR if it exists, allowing the local system administrator to override behaviour if wanted by creating a policy script according to the interface specified and installing it as \fI/usr/sbin/policy\-rc.d\fR. .PP This interface, however, has some downsides: .IP "\(bu" 4 While the definition of the \fIpolicy\-rc.d\fR interface specifies that policy scripts should be installed by way of the alternatives system, there are various cases (e.g., the initial installation of Debian from the Debian installer) where installing a policy script is desirable before the alternatives system is available for use. The result is that the installer creates a \fIpolicy\-rc.d\fR script \fIwithout\fR going through the alternatives system, which it then removes at the end of the installation. A side effect of this is that any creation of a policy script in the installer will be blown away at the end of an installation. .Sp As a result of this, at least one derivative distribution believed they were installing a policy script into all their installations when in fact they weren't. .IP "\(bu" 4 Because the default state is for there to be no policy script on the system, the fact that the interface exists in the first place is something that is unknown to many long-time Debian users. Having something that can be configured through a (set of) configuration files in /etc instead makes the system discoverable, and allows for better documentation of the interface. .PP Moreover, a scripted interface is far more powerful than necessary; in most cases, all that is needed is a default policy for all services, which does not require a turing-complete language. .PP This policy script attempts to solve these issues by allowing system administrators to provide init script policies by way of a declarative interface, rather than a scripted one. It does this by way of a directory \fI/etc/service\-policy.d\fR in which packages and/or system administrators may place files describing the policy to be followed. For more information on how these files should be structured, please see the \&\fBservice\-policy.d\fR\|(5) man page. .SH "BUGS" .IX Header "BUGS" The policy script interface definition states that policy scripts must support \f(CW\*(C`\-\-quiet\*(C'\fR and \f(CW\*(C`\-\-list\*(C'\fR arguments. This policy script does not (yet) implement those. .PP The list of allowed actions may be somewhat small at present. Future versions of this policy script are likely to add more, or to add a way to create custom actions. Wishlist bugs (or patches) welcome! .PP The policy script interface also specifies a runlevel argument to the script. This policy script does not currently use or read that argument, because it is believed to be not helpful. This may change in the future. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fI/usr/share/doc/init\-system\-helpers/README.policy\-rc.d.gz\fR, \&\fBinvoke\-rc.d\fR\|(8), \fBservice\-policy.d\fR\|(5)