コンテンツにスキップ

「Etckeeper」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
ページの作成:「Category:システム管理 en:Etckeeper Etckeeper は {{ic|/etc}} をバージョン管理します。 == インストール == Etckeeper は公式リポジ...」
 
カテゴリ変更
(同じ利用者による、間の4版が非表示)
1行目: 1行目:
[[Category:システム管理]]
[[Category:設定管理]]
[[en:Etckeeper]]
[[en:Etckeeper]]
{{Related articles start}}
Etckeeper は {{ic|/etc}} をバージョン管理します。
{{Related|Git}}
{{Related|Cron}}
{{Related articles end}}
[http://etckeeper.branchable.com/ Etckeeper] は {{ic|/etc}} をバージョン管理します。


== インストール ==
== インストール ==
Etckeeper は[[公式リポジトリ]]の {{Pkg|etckeeper}} パッケージ[[pacman|インストール]]できます
{{Pkg|etckeeper}} パッケージ[[インストール]]してください


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


お好きな VCS (デフォルトは git) を設定したら、次を実行することで {{ic|/etc}} リポジトリを初期化できます:
使用するバージョン管理システム (デフォルトは [[git]]) などのオプションは {{ic|/etc/etckeeper/etckeeper.conf}} で設定できます

# etckeeper init
Etckeeper は {{ic|etckeeper.conf}} で {{ic|LOWLEVEL_PACKAGE_MANAGER}} あるいは {{ic|HIGHLEVEL_PACKAGE_MANAGER}} として [[pacman]] を使うことをサポートしています。


== 使用方法 ==
== 使用方法 ==


設定後、{{ic|/etc}} のリポジトリを初期化する必要があります:
Etckeeper は {{ic|etckeeper.conf}} で {{ic|LOWLEVEL_PACKAGE_MANAGER}} として pacman の使用をサポートしています。pacman にはフック機能が存在しないため {{ic|HIGHLEVEL_PACKAGER_MANAGER}} として pacman を使うことは不可能です。そのため、手動で変更をコミットするか、以下のどれかの方法を使用する必要があります。
# etckeeper init

''etckeeper'' バージョン 1.18.3-1 現在、パッケージのインストール・アップデート・削除時に pre-install と post-install の [[pacman#フック|pacman フック]]が自動的に実行されるようになっています。手動で[[#ラッパースクリプト|ラッパースクリプト]]を設定する必要はありません。

{{ic|/etc}} への他の変更を記録したい場合、手動で変更をコミットするか (使用するコマンドは {{man|8|etckeeper}} の man ページを見てください)、あるいは以下のように定期的に記録するようにしてください。


=== systemd ===
=== systemd ===


パッケージにはサービスタイマーユニットが含まれています。{{ic|etckeeper.timer}} を[[systemd/タイマー#管理|有効化]]してください
パッケージにはサービスタイマーユニットが付属しています。{{ic|etckeeper.timer}} を[[systemd/タイマー#管理|有効化]]することで使えます


タイマーの詳は [[systemd/タイマー]]を、付属のユニットを編集する場合は [[systemd#ユニットファイルの編集]]をさい。
タイマーの使い方についてしくは [[systemd/タイマー]]を見てください。ユニットを編集したい場合は [[systemd#ユニットファイルの編集]]を参照しください。


=== Cron ===
=== Cron ===


配布されているソースには [https://git.joeyh.name/index.cgi/etckeeper.git/tree/debian/cron.daily cron スクリプト] が含まれています。スクリプトを使うことで定期的に自動コミットできます。
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}}).


例えば、1日毎に実行するには:
=== ラッパースクリプト ===
# [[cron]] をインストール・有効化してください。
# {{ic|/etc/cron.daily/''script_name''}} としてスクリプトを作成。
# ''root'' でファイルに実行権限を付与 ({{ic|# chmod u+x /etc/cron.daily/''script_name''}})。


詳しくは [[cron#Cronie]] や [[cron]] を見てください。
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.


=== Incron ===
#!/bin/bash
etckeeper pre-install
pacman -Syu
etckeeper post-install


{{ic|/etc}} のファイルに変更が加えられたときに [[incron]] を使って自動的に変更をコミットするように設定することもできます。{{man|7|inotify}} によるファイルシステム通知を利用します。
Alternatively you can add a quick alias to {{ic|~/.bashrc}}:


詳しくは [http://inotify.aiken.cz/?section=incron&page=doc&lang=en] や {{man|8|incrond}} を見てください。
alias pkg-update='sudo etckeeper pre-install && sudo pacman -Syu && sudo etckeeper post-install'


=== リモートリポジトリに自動プッシュ ===
or a function where it is possible to specify the arguments for pacman or pacman wrapper:
{{Warning|etckeeper のリポジトリを誰でもアクセスできるリモートリポジトリにプッシュしてしまうと、パスワードハッシュや秘密鍵などの機密情報が漏洩する可能性があります。気をつけて使ってください。}}


{{ic|/etc/.git}} のローカルバックアップを作るだけでなく、コミットするたびに GitHub などのリモートリポジトリに変更を自動的にプッシュすることできます。
Pacman () { sudo etckeeper pre-install && sudo pacman "$@" && sudo etckeeper post-install; }


まず、{{ic|etc/.git}} を編集してリモートの GitHub リポジトリを追加:
To use the function, just run pacman as usual with flags as needed, but with a capital "P".
For example:
Pacman -Syu
Pacman -R foo


# git remote add origin ''<nowiki>https://github.com/user/repo.git</nowiki>''
{{Warning|Do not name your wrapper script "pacman" and rely on it appearing earlier in the PATH than {{ic|/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 ===


==== 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.


{{ic|/etc/etckeeper/etckeeper.conf}} の {{ic|PUSH_REMOTE}} オプションを編集して、etckeeper からプッシュしたいリモートリポジトリの名前を指定してください。例:
=== リモートリポジトリに自動的にプッシュ ===

{{Warning|etckeeper のリポジトリを誰でもアクセスできるリモートリポジトリにプッシュするこ、パスワードハッシュや秘密鍵などの機密情報が漏洩する可能性があります。気をつけて使ってさい。}}
PUSH_REMOTE="''origin''"
{{ic|/etc/.git}} のローカルバックアップを作ることを第一歩としてetckeeper ではさらにコミットするたびに Github などのリモートリポジトリに変更を自動的にプッシュすることできます。実行可能ファイル {{ic|/etc/etckeeper/commit.d/40github-push}} を作成:

スペースで区切ることで複数のリモートリポジトリを追加できます。

==== カスタムフックを使う ====

{{ic|/etc/etckeeper/commit.d/40github-push}} ファイルを作成 (実行権限を付与してください):


#!/bin/sh
#!/bin/sh
74行目: 79行目:
fi
fi


ラッパースクリプトやエイリアスを実行するたびに、GitHub リポジトリに自動的に変更がコミットされます。
{{ic|etc/.git}} に移動してリモートの Github リポジトリを追加:

=== ラッパースクリプト ===

頻繁に実行するコマンドの変更を追跡したい場合 (例: {{ic|''command''}})、シンプルなラッパースクリプトで自動化できます。例えば、以下のファイルを作成:

{{hc|/usr/local/bin/checketc.sh|2=
#!/bin/bash

etckeeper pre-install
''command''
etckeeper post-install}}


作成したら実行可能権限を付与してください。また、bash のエイリアスや関数で Etckeeper のコマンドを呼び出すこともできます。詳しくは [[Bash#エイリアス]]を見てください。
# git remote add origin https://github.com/user/repo.git


これで上記のラッパースクリプトやエイリアスを実行する自動的に Github リポジトリに変更がコミットされるようになります。
{{Note|Etckeeper バージョン 1.18.3-1 以前は Pacman による変更を追跡するのに上記のラッパースクリプトが必要でし。現在 Pacman はフックよってコマンドを自動的に実行します。}}

2019年3月1日 (金) 01:01時点における版

関連記事

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

インストール

etckeeper パッケージをインストールしてください。

設定

使用するバージョン管理システム (デフォルトは git) などのオプションは /etc/etckeeper/etckeeper.conf で設定できます。

Etckeeper は etckeeper.confLOWLEVEL_PACKAGE_MANAGER あるいは HIGHLEVEL_PACKAGE_MANAGER として pacman を使うことをサポートしています。

使用方法

設定後、/etc のリポジトリを初期化する必要があります:

# etckeeper init

etckeeper バージョン 1.18.3-1 現在、パッケージのインストール・アップデート・削除時に pre-install と post-install の pacman フックが自動的に実行されるようになっています。手動でラッパースクリプトを設定する必要はありません。

/etc への他の変更を記録したい場合、手動で変更をコミットするか (使用するコマンドは etckeeper(8) の man ページを見てください)、あるいは以下のように定期的に記録するようにしてください。

systemd

パッケージにはサービス・タイマーユニットが付属しています。etckeeper.timer有効化することで使えます。

タイマーの使い方について詳しくは systemd/タイマーを見てください。ユニットを編集したい場合は systemd#ユニットファイルの編集を参照してください。

Cron

配布されているソースには cron スクリプト が含まれています。スクリプトを使うことで定期的に自動コミットできます。

例えば、1日毎に実行するには:

  1. cron をインストール・有効化してください。
  2. /etc/cron.daily/script_name としてスクリプトを作成。
  3. root でファイルに実行権限を付与 (# chmod u+x /etc/cron.daily/script_name)。

詳しくは cron#Croniecron を見てください。

Incron

/etc のファイルに変更が加えられたときに incron を使って自動的に変更をコミットするように設定することもできます。inotify(7) によるファイルシステム通知を利用します。

詳しくは [1]incrond(8) を見てください。

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

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

/etc/.git のローカルバックアップを作るだけでなく、コミットするたびに GitHub などのリモートリポジトリに変更を自動的にプッシュすることもできます。

まず、etc/.git を編集してリモートの GitHub リポジトリを追加:

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

そして、フックを使用・設定してプッシュするようにしてください。

etckeeper に付属しているフックを使う

/etc/etckeeper/etckeeper.confPUSH_REMOTE オプションを編集して、etckeeper からプッシュしたいリモートリポジトリの名前を指定してください。例:

PUSH_REMOTE="origin"

スペースで区切ることで複数のリモートリポジトリを追加できます。

カスタムフックを使う

/etc/etckeeper/commit.d/40github-push ファイルを作成 (実行権限を付与してください):

#!/bin/sh
set -e

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

ラッパースクリプトやエイリアスを実行するたびに、GitHub リポジトリに自動的に変更がコミットされます。

ラッパースクリプト

頻繁に実行するコマンドの変更を追跡したい場合 (例: command)、シンプルなラッパースクリプトで自動化できます。例えば、以下のファイルを作成:

/usr/local/bin/checketc.sh
#!/bin/bash

etckeeper pre-install
command
etckeeper post-install

作成したら実行可能権限を付与してください。また、bash のエイリアスや関数で Etckeeper のコマンドを呼び出すこともできます。詳しくは Bash#エイリアスを見てください。

ノート Etckeeper バージョン 1.18.3-1 以前では Pacman による変更を追跡するのに上記のラッパースクリプトが必要でした。現在 Pacman はフックによってコマンドを自動的に実行します。