Difference between revisions of "Etckeeper"

From ArchWiki
Jump to: navigation, search
(Add Category. See Help:Category.)
(Added section to push to remote repo)
Line 38: Line 38:
 
  pacman -Syu
 
  pacman -Syu
 
  etckeeper post-install
 
  etckeeper post-install
 +
 +
Alternatively you can add a quick alias to {{ic|~/.bashrc}}:
 +
 +
alias pkg-update='sudo etckeeper pre-install && sudo pacman -Syu && sudo etckeeper post-install'
  
 
=== Incron ===
 
=== Incron ===
Line 43: Line 47:
 
As an alternative to the above, you could set up incron to automatically commit changes using etckeeper
 
As an alternative to the above, you could set up incron to automatically commit changes using etckeeper
 
whenever a file in /etc is modified.
 
whenever a file in /etc is modified.
 +
 +
=== Automatic push to remote repo ===
 +
 +
Whilst having a local backup in {{ic|/etc/.git}} is a good first step, etckeeper can automatically push your changes on each commit to a remote repository such as Github. Create an executable file {{ic|/etc/etckeeper/commit.d/40github-push}}:
 +
 +
#!/bin/sh
 +
set -e
 +
 +
if [ "$VCS" = git ] && [ -d .git ]; then
 +
  cd /etc/
 +
  git push origin master
 +
fi
 +
 +
Change to {{ic|etc/.git}} and add your remote Github repository:
 +
 +
# git remote add origin https://github.com/user/repo.git
 +
 +
Now each time you run your wrapper script or alias from above, changes will be automatically commited to your Github repo.

Revision as of 11:46, 4 August 2013

Etckeeper lets you keep /etc under version control.

Install

Get etckeeperAUR from the AUR.

Configure

The main config file is /etc/etckeeper/etckeeper.conf. You can set things such as the VCS to use in this file.

Once you've set your preferred VCS (the default is git), you can initialize the /etc repository by running

# etckeeper init

Usage

Etckeeper supports using pacman as a LOWLEVEL_PACKAGE_MANAGER in etckeeper.conf. Support for using pacman as a HIGHLEVEL_PACKAGER_MANAGER is not yet added, so you'll need to either commit changes manually or use one of the stopgap solutions below.

Cron

There is a cron script in the source distribution at debian/cron.daily. You can use this script to automatically commit changes on a schedule. To make it run daily, for example, make sure you have cron installed and enabled, then simply copy the script from the srcdir where you built etckeeper to /etc/cron.daily and make sure it's executable (e.g. chmod +x /path/to/script).

Wrapper Script

In order to emulate the auto-commit functionality that etckeeper has on other systems, you could place a script such as the one below somewhere in your PATH, make it executable, and use it instead of pacman -Syu to update your system.

#!/bin/bash

etckeeper pre-install
pacman -Syu
etckeeper post-install

Alternatively you can add a quick alias to ~/.bashrc:

alias pkg-update='sudo etckeeper pre-install && sudo pacman -Syu && sudo etckeeper post-install'

Incron

As an alternative to the above, you could set up incron to automatically commit changes using etckeeper whenever a file in /etc is modified.

Automatic push to remote repo

Whilst having a local backup in /etc/.git is a good first step, etckeeper can automatically push your changes on each commit to a remote repository such as Github. Create an executable file /etc/etckeeper/commit.d/40github-push:

#!/bin/sh
set -e

if [ "$VCS" = git ] && [ -d .git ]; then
  cd /etc/
  git push origin master
fi

Change to etc/.git and add your remote Github repository:

# git remote add origin https://github.com/user/repo.git

Now each time you run your wrapper script or alias from above, changes will be automatically commited to your Github repo.