etckeeper¶
etckeeper is a collection of tools that
can be used to manage the /etc directory in a Git repository. This allows
changes to be checked and undone if necessary. It also connects to package
managers such as apt to
automatically commit changes made to /etc during a package upgrade.
Finally, it also takes into account metadata of files that Git does not normally
manage, but which are important for /etc, such as the permissions of
/etc/shadow.
Installation¶
etckeeper can be easily installed with
$ sudo apt install git etckeeper
Configuration¶
The configuration of etckeeper is done in the
etckeeper.conffile:# The VCS to use. #VCS="hg" VCS="git" #VCS="bzr" #VCS="darcs" …
In addition, the following two automatic commits should be avoided:
# Uncomment to avoid etckeeper committing existing changes # to /etc automatically once per day. AVOID_DAILY_AUTOCOMMITS=1 … # Uncomment to avoid etckeeper committing existing changes to # /etc before installation. It will cancel the installation, # so you can commit the changes by hand. AVOID_COMMIT_BEFORE_INSTALL=1
Now git itself should be configured, see Configuration.
Finally, the
/etcdirectory can be taken under Git version control with:$ cd /etc/ $ sudo etckeeper init Initialized empty Git repository in /etc/.git/ $ sudo etckeeper commit "Initial commit"
Use¶
If a configuration file is now edited, the changes can now be easily logged with Git.
Managing metadata¶
Since Git itself does not record complete metadata, etckeeper has set up a
pre-commit hook in /etc/.git/hooks/pre-commit. This
hook logs the chmod and chgrp entries for all files that do not
correspond to the standard permissions in the file /etc/.etckeeper:
maybe chmod 0755 '.'
maybe chmod 0700 './.etckeeper'
maybe chmod 0644 './.gitignore'
…
. gitignore
Files that are not to be versioned with Git in the /etc directory can be
added in the file /etc/.gitignore. This file is created when etckeeper
is initiated and can be extended if necessary after the comment
# end section managed by etckeeper