「Etckeeper」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:システム管理 en:Etckeeper Etckeeper は {{ic|/etc}} をバージョン管理します。 == インストール == Etckeeper は公式リポジ...」)
 
(英語最新版に同期)
15行目: 15行目:
   
 
Etckeeper は {{ic|etckeeper.conf}} で {{ic|LOWLEVEL_PACKAGE_MANAGER}} として pacman の使用をサポートしています。pacman にはフック機能が存在しないため {{ic|HIGHLEVEL_PACKAGER_MANAGER}} として pacman を使うことは不可能です。そのため、手動で変更をコミットするか、以下のどれかの方法を使用する必要があります。
 
Etckeeper は {{ic|etckeeper.conf}} で {{ic|LOWLEVEL_PACKAGE_MANAGER}} として pacman の使用をサポートしています。pacman にはフック機能が存在しないため {{ic|HIGHLEVEL_PACKAGER_MANAGER}} として pacman を使うことは不可能です。そのため、手動で変更をコミットするか、以下のどれかの方法を使用する必要があります。
  +
  +
=== Pacman フック ===
  +
{{Pkg|pacman}} 5.0.0 から、[[pacman]] にはフックのサポートが追加されています [https://projects.archlinux.org/pacman.git/tree/NEWS?h=v5.0.0]。トランザクションの前後に etckeeper を自動的に実行するには、以下の2つのフックファイルを作成してください。まずは hooks ディレクトリを作成する必要があります:
  +
# mkdir -p /etc/pacman.d/hooks
  +
  +
{{hc|/etc/pacman.d/hooks/etckeeper-pre.hook|2=
  +
[Trigger]
  +
Operation = Install
  +
Operation = Upgrade
  +
Operation = Remove
  +
Type = Package
  +
Target = *
  +
  +
[Action]
  +
Description = Etckeeper Pre-install
  +
Depends = etckeeper
  +
When = PreTransaction
  +
Exec = /usr/bin/etckeeper pre-install}}
  +
  +
{{hc|/etc/pacman.d/hooks/etckeeper-post.hook|2=
  +
[Trigger]
  +
Operation = Install
  +
Operation = Upgrade
  +
Operation = Remove
  +
Type = Package
  +
Target = *
  +
  +
[Action]
  +
Description = Etckeeper Post-install
  +
Depends = etckeeper
  +
When = PostTransaction
  +
Exec = /usr/bin/etckeeper post-install}}
  +
  +
pacman のフックに関する詳細は {{ic|man alpm-hooks}} を参照。
   
 
=== systemd ===
 
=== systemd ===
24行目: 58行目:
 
=== Cron ===
 
=== Cron ===
   
  +
配布されているソースの {{ic|debian/cron.daily}} に cron スクリプトが存在します。このスクリプトを使用することで定期的に変更を自動コミットすることができます。毎日スクリプトを実行するには、cron をインストール・有効化してから、etckeeper をビルドした srcdir からスクリプトを {{ic|/etc/cron.daily}} にコピーして実行可能属性を付与してください (例: {{ic|chmod +x /path/to/script}})。
There is a cron script in the source distribution at {{ic|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 {{ic|/etc/cron.daily}}
 
and make sure it's executable (e.g. {{ic|chmod +x /path/to/script}}).
 
   
 
=== ラッパースクリプト ===
 
=== ラッパースクリプト ===
   
  +
以下のようなスクリプトを PATH が通っているどこかに配置して、実行可能属性を付与し、{{ic|pacman -Syu}} の代わりにスクリプトを実行することで、etckeeper が他のシステムで使っているような自動コミット機能をエミュレートすることができます。
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 {{ic|pacman -Syu}} to update your system.
 
   
 
#!/bin/bash
 
#!/bin/bash
42行目: 70行目:
 
etckeeper post-install
 
etckeeper post-install
   
  +
もしくは {{ic|~/.bashrc}} に簡単なエイリアスを追加してください:
Alternatively you can add a quick alias to {{ic|~/.bashrc}}:
 
   
 
alias pkg-update='sudo etckeeper pre-install && sudo pacman -Syu && sudo etckeeper post-install'
 
alias pkg-update='sudo etckeeper pre-install && sudo pacman -Syu && sudo etckeeper post-install'
   
  +
あるいは関数を使うことで pacman や pacman のラッパーに引数を指定することもできます:
or a function where it is possible to specify the arguments for pacman or pacman wrapper:
 
   
 
Pacman () { sudo etckeeper pre-install && sudo pacman "$@" && sudo etckeeper post-install; }
 
Pacman () { sudo etckeeper pre-install && sudo pacman "$@" && sudo etckeeper post-install; }
   
  +
関数を使うときは、通常通りに pacman にフラグを付けて実行しますが、大文字の "P" を使うようにします。例:
To use the function, just run pacman as usual with flags as needed, but with a capital "P".
 
For example:
 
 
Pacman -Syu
 
Pacman -Syu
 
Pacman -R foo
 
Pacman -R foo
59行目: 86行目:
 
=== Incron ===
 
=== Incron ===
   
  +
上記のスクリプトの代わりに、{{ic|/etc}} のファイルに変更が加えられたときに etckeeper を使って自動的に変更をコミットするように 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.
 
   
 
=== リモートリポジトリに自動的にプッシュ ===
 
=== リモートリポジトリに自動的にプッシュ ===

2016年2月4日 (木) 19:15時点における版

Etckeeper は /etc をバージョン管理します。

インストール

Etckeeper は公式リポジトリetckeeper パッケージでインストールできます。

設定

メインの設定ファイルは /etc/etckeeper/etckeeper.conf です。このファイルで使用する VCS などの設定ができます。

お好きな VCS (デフォルトは git) を設定したら、次を実行することで /etc リポジトリを初期化できます:

# etckeeper init

使用方法

Etckeeper は etckeeper.confLOWLEVEL_PACKAGE_MANAGER として pacman の使用をサポートしています。pacman にはフック機能が存在しないため HIGHLEVEL_PACKAGER_MANAGER として pacman を使うことは不可能です。そのため、手動で変更をコミットするか、以下のどれかの方法を使用する必要があります。

Pacman フック

pacman 5.0.0 から、pacman にはフックのサポートが追加されています [1]。トランザクションの前後に etckeeper を自動的に実行するには、以下の2つのフックファイルを作成してください。まずは hooks ディレクトリを作成する必要があります:

# mkdir -p /etc/pacman.d/hooks
/etc/pacman.d/hooks/etckeeper-pre.hook
[Trigger]
Operation = Install
Operation = Upgrade
Operation = Remove
Type = Package
Target = *

[Action]
Description = Etckeeper Pre-install
Depends = etckeeper
When = PreTransaction
Exec = /usr/bin/etckeeper pre-install
/etc/pacman.d/hooks/etckeeper-post.hook
[Trigger]
Operation = Install
Operation = Upgrade
Operation = Remove
Type = Package
Target = *

[Action]
Description = Etckeeper Post-install
Depends = etckeeper
When = PostTransaction
Exec = /usr/bin/etckeeper post-install

pacman のフックに関する詳細は man alpm-hooks を参照。

systemd

パッケージにはサービスとタイマーユニットが含まれています。etckeeper.timer有効化してください。

タイマーの詳細は systemd/タイマーを、付属のユニットを編集する場合は systemd#ユニットファイルの編集を見て下さい。

Cron

配布されているソースの debian/cron.daily に cron スクリプトが存在します。このスクリプトを使用することで定期的に変更を自動コミットすることができます。毎日スクリプトを実行するには、cron をインストール・有効化してから、etckeeper をビルドした srcdir からスクリプトを /etc/cron.daily にコピーして実行可能属性を付与してください (例: chmod +x /path/to/script)。

ラッパースクリプト

以下のようなスクリプトを PATH が通っているどこかに配置して、実行可能属性を付与し、pacman -Syu の代わりにスクリプトを実行することで、etckeeper が他のシステムで使っているような自動コミット機能をエミュレートすることができます。

#!/bin/bash

etckeeper pre-install
pacman -Syu
etckeeper post-install

もしくは ~/.bashrc に簡単なエイリアスを追加してください:

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

あるいは関数を使うことで pacman や pacman のラッパーに引数を指定することもできます:

Pacman () { sudo etckeeper pre-install && sudo pacman  "$@" && sudo etckeeper post-install; }

関数を使うときは、通常通りに pacman にフラグを付けて実行しますが、大文字の "P" を使うようにします。例:

Pacman -Syu
Pacman -R foo
警告: Do not name your wrapper script "pacman" and rely on it appearing earlier in the PATH than /usr/bin/pacman. One of the etckeeper pre-install hooks calls pacman without specifying its path, so your script will be invoked recursively without end.

Incron

上記のスクリプトの代わりに、/etc のファイルに変更が加えられたときに etckeeper を使って自動的に変更をコミットするように incron を設定することもできます。

リモートリポジトリに自動的にプッシュ

警告: etckeeper のリポジトリを誰でもアクセスできるリモートリポジトリにプッシュすることで、パスワードハッシュや秘密鍵などの機密情報が漏洩する可能性があります。気をつけて使って下さい。

/etc/.git のローカルバックアップを作ることを第一歩として、etckeeper ではさらにコミットするたびに Github などのリモートリポジトリに変更を自動的にプッシュすることができます。実行可能ファイル /etc/etckeeper/commit.d/40github-push を作成:

#!/bin/sh
set -e

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

etc/.git に移動してリモートの Github リポジトリを追加:

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

これで上記のラッパースクリプトやエイリアスを実行するたびに、自動的に Github リポジトリに変更がコミットされるようになります。