「Etckeeper」の版間の差分
(序文を更新) |
(→使用方法: 情報を更新) |
||
18行目: | 18行目: | ||
== 使用方法 == |
== 使用方法 == |
||
− | 設定後、{{ic|/etc}} のリポジトリを初期化する必要があります: |
+ | 設定後、{{ic|/etc}} パスのリポジトリを初期化する必要があります: |
# etckeeper init |
# etckeeper init |
||
+ | そして、最初のコミットを実行して変更を追跡します。これは etckeeper が自動的に動作できるようにするために必要な手順です。 |
||
− | ''etckeeper'' バージョン 1.18.3-1 現在、パッケージのインストール・アップデート・削除時に pre-install と post-install の [[pacman#フック|pacman フック]]が自動的に実行されるようになっています。手動で[[#ラッパースクリプト|ラッパースクリプト]]を設定する必要はありません。 |
||
+ | # etckeeper commit "first commit" |
||
+ | ''etckeeper'' バージョン 1.18.3-1 では、パッケージのインストール、更新、および削除時に、インストール前およびインストール後の [[pacman フック]] が自動的に実行されます。手動 [[#ラッパースクリプト]] で行う必要ありません。 |
||
− | {{ic|/etc}} への他の変更を記録したい場合、手動で変更をコミットするか (使用するコマンドは {{man|8|etckeeper}} の man ページを見てください)、あるいは以下のように定期的に記録するようにしてください。 |
||
+ | |||
+ | {{ic|/etc}} パスへの他の変更を追跡するには、変更を手動でコミットするか (コマンドについては {{man|8|etckeeper}} のマニュアルページを参照)、または以下の一時的な解決策のいずれかを使用する必要があります: |
||
+ | |||
+ | {{Warning|git checkout/rebase/merge/cherry-pick/... により、ファイルのアクセス許可が壊れ、たとえば SSH/sudo ログインが拒否される可能性があります。 }} |
||
+ | ''git'' はファイルのパーミッションを直接保存できないため、''etckeeper'' によって処理され、チェックアウト後に ''etckeeper init'' を再度実行してパーミッションを復元する必要があります。 |
||
+ | あるいは、[[systemd#systemd-tmpfiles - 一時ファイル]] を使用してアクセス許可を保存することもできます。 |
||
=== systemd === |
=== systemd === |
2024年2月11日 (日) 00:56時点における版
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 が自動的に動作できるようにするために必要な手順です。
# etckeeper commit "first commit"
etckeeper バージョン 1.18.3-1 では、パッケージのインストール、更新、および削除時に、インストール前およびインストール後の pacman フック が自動的に実行されます。手動 #ラッパースクリプト で行う必要ありません。
/etc
パスへの他の変更を追跡するには、変更を手動でコミットするか (コマンドについては etckeeper(8) のマニュアルページを参照)、または以下の一時的な解決策のいずれかを使用する必要があります:
git はファイルのパーミッションを直接保存できないため、etckeeper によって処理され、チェックアウト後に etckeeper init を再度実行してパーミッションを復元する必要があります。 あるいは、systemd#systemd-tmpfiles - 一時ファイル を使用してアクセス許可を保存することもできます。
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#エイリアスを見てください。