dh_installinit - Linux


Overview

dh_installinit is a utility used in Debian package creation to generate a default init script for a service. It is designed to simplify the process of creating a properly formatted init script that follows Debian packaging guidelines.

Syntax

dh_installinit [-a architecture] [-g group] [-i init file] [-l layout] [-n name]
[-p priority] [-u user] [-v value] [-x control value] [files...]

Options/Flags

  • -a architecture: Specify the target architecture for the init script. Default is the current architecture.
  • -g group: Set the group ownership of the generated init script. Default is ‘debian-sys-maint’.
  • -i init file: Specify a custom init file template to use. Default is ‘/usr/share/debhelper/init.d/debian’.
  • -l layout: Define the layout of the generated init script. Valid values are ‘sysv’ and ‘upstart’. Default is ‘sysv’.
  • -n name: Assign a name to the service. Default is the package name.
  • -p priority: Set the priority of the init script. Default is ’90’.
  • -u user: Specify the user ownership of the generated init script. Default is ‘root’.
  • -v value: Define a variable to be passed to the init file template.
  • -x control value: Remove the specified control word from the generated init script.
  • files…: Additional files to include in the init script. Typically used to add dependencies or startup scripts.

Examples

Simple usage:

dh_installinit

This will generate a default init script with the package name as the service name and other settings using Debian defaults.

Customizing the service name and layout:

dh_installinit -n myservice -l upstart

This will generate an init script for the ‘myservice’ service using the Upstart layout.

Setting a custom variable for the template:

dh_installinit -v DEPEND_LIST=xserver-xorg-input-all

This will pass the variable DEPEND_LIST with the value xserver-xorg-input-all to the init file template.

Common Issues

  • Missing dependencies: Ensure that the package being built has declared all required dependencies. Otherwise, the generated init script may fail to start the service.
  • Incorrect permissions: The init script should have proper file permissions (755) and ownership (root:debian-sys-maint). Incorrect permissions can cause startup failures.

Integration

Using dh_installinit with dh:

dh $@
dh_installinit

This sequence can be used in a Debian package build script to generate an init script after package installation.

Combining with other commands:

sudo service myservice start
sudo update-rc.d myservice defaults

This can be used to start the service and add it to the default runlevels after the init script has been generated.

Related Commands

  • dh: The Debian helper tool that automates many tasks in Debian package creation.
  • service: Command for controlling services (starting, stopping, restarting).
  • update-rc.d: Command for managing runlevels and service startup/stop scripts.