「Etckeeper」の版間の差分
細 (カテゴリ変更) |
(序文を更新) |
||
5行目: | 5行目: | ||
{{Related|Cron}} |
{{Related|Cron}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
+ | [https://etckeeper.branchable.com/ Etckeeper] は、リポジトリ内の {{ic|/etc/}} を追跡するためのツールのコレクションです ([[Git]]、[[Mercurial]]、[[Bazaar]]、または [[Darcs]] がサポートされています) [[pacman フック]] は、システムのアップグレード前に変更を自動的にコミットし、ファイルのアクセス許可が追跡されます。これはバージョン管理では通常サポートされていませんが、[[/etc/shadow]] などのファイルにとっては重要です。 |
||
− | [http://etckeeper.branchable.com/ Etckeeper] は {{ic|/etc}} をバージョン管理します。 |
||
== インストール == |
== インストール == |
2024年2月11日 (日) 00:50時点における版
Etckeeper は、リポジトリ内の /etc/
を追跡するためのツールのコレクションです (Git、Mercurial、Bazaar、または Darcs がサポートされています) pacman フック は、システムのアップグレード前に変更を自動的にコミットし、ファイルのアクセス許可が追跡されます。これはバージョン管理では通常サポートされていませんが、/etc/shadow などのファイルにとっては重要です。
目次
インストール
設定
使用するバージョン管理システム (デフォルトは git) などのオプションは /etc/etckeeper/etckeeper.conf
で設定できます。
Etckeeper は etckeeper.conf
で LOWLEVEL_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日毎に実行するには:
- cron をインストール・有効化してください。
/etc/cron.daily/script_name
としてスクリプトを作成。- root でファイルに実行権限を付与 (
# chmod u+x /etc/cron.daily/script_name
)。
詳しくは cron#Cronie や cron を見てください。
Incron
/etc
のファイルに変更が加えられたときに incron を使って自動的に変更をコミットするように設定することもできます。inotify(7) によるファイルシステム通知を利用します。
詳しくは [1] や incrond(8) を見てください。
リモートリポジトリに自動プッシュ
/etc/.git
のローカルバックアップを作るだけでなく、コミットするたびに GitHub などのリモートリポジトリに変更を自動的にプッシュすることもできます。
まず、etc/.git
を編集してリモートの GitHub リポジトリを追加:
# git remote add origin https://github.com/user/repo.git
そして、フックを使用・設定してプッシュするようにしてください。
etckeeper に付属しているフックを使う
/etc/etckeeper/etckeeper.conf
の PUSH_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#エイリアスを見てください。