「Etckeeper」の版間の差分
(ページの作成:「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.conf
で LOWLEVEL_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
Incron
上記のスクリプトの代わりに、/etc
のファイルに変更が加えられたときに etckeeper を使って自動的に変更をコミットするように incron を設定することもできます。
リモートリポジトリに自動的にプッシュ
/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 リポジトリに変更がコミットされるようになります。