In Linux, etckeeper is a collection of tools for versioning content, specifically in /etc directory.etckeeper uses existing revision control systems (e.g., git, bzr, mercurial, or darcs) to store version history in a corresponding backend repository. The advantage ofetckeeper is that it integrates with package managers (e.g., apt,yum) to automatically commit any changes made to /etc directory during package installation, upgrade or removal.
In this tutorial, I will describe how to version control /etc directory in Linux withetckeeper. Here, I will configure etckeeper to use bzr as a backend version control repository.
Install Etckeeper on Linux
To install etckeeper and bzr on Ubuntu, Debian or Mint:
To install etckeeper and bzr on CentOS or RHEL, first set up EPEL repository, and then run:
To install etckeeper and bzr on Fedora, simply run:
Set up and Initialize Etckeeper
The first thing to do after installing etckeeper is to edit its configuration file. You can leave other options as default.
# The VCS to use. VCS="bzr" # Avoid etckeeper committing existing changes to /etc automatically once per day. AVOID_DAILY_AUTOCOMMITS=1
Now go ahead and initialize etckeeper as follows.
At this point, everything in /etc directory has been added to the backend bzr repository. However, note that the added content has not been committed yet. You need to either commit the action manually, or install/upgrade any package with a standard package manager such asapt or yum, which will trigger the first commit automatically. Here, I will do the first commit manually as follows.
Etckeeper Examples
To check the status of /etc directory, run the following command. This will show any (uncommitted) change made to /etc directory since the latest version.
To show differences between the latest version and the current state of /etc:
To commit the current (changed) state of /etc directory:
To check the commit history of the entire /etc dirctory or specific files/subdirectories:
$ sudo etckeeper vcs log /etc/sysconfig/*
To check the difference between two specific revisions (revision number 1 and 3):
To view the change made by a specific revision (e.g., revision number 3):
To revert the content of /etc directory to a specific revision (e.g., revision number 2):
Automatic Commits by Etckeeper
As mentioned eariler, etckeeper automatically commits changes made to /etc as part of package installation or upgrade. In this example, I try installing Apache HTTP Server as a test.
To view the commit history auto-generated by package installation:
------------------------------------------------------------ revno: 5 committer: dan branch nick: fedora /etc repository timestamp: Mon 2013-08-05 06:39:33 -0400 message: committing changes in /etc after yum run Package changes: +0:apr-1.4.6-3.fc18.x86_64 +0:apr-util-1.4.1-6.fc18.x86_64 +0:httpd-2.4.4-3.fc18.x86_64 +0:httpd-tools-2.4.4-3.fc18.x86_64 ------------------------------------------------------------
To view the changes made in /etc directory by package installation: