Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Etckeeperのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Etckeeper
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:設定管理]] [[en:Etckeeper]] [[es:Etckeeper]] {{Related articles start}} {{Related|Git}} {{Related|Cron}} {{Related articles end}} [https://etckeeper.branchable.com/ Etckeeper] は、リポジトリ内の {{ic|/etc/}} を追跡するためのツールのコレクションです ([[Git]]、[[Mercurial]]、[[Bazaar]]、または [[Darcs]] がサポートされています) [[pacman フック]]は、システムのアップグレード前に変更を自動的にコミットし、ファイルのアクセス許可が追跡されます。これはバージョン管理では通常サポートされていませんが、[[/etc/shadow]] などのファイルにとっては重要です。 == インストール == {{Pkg|etckeeper}} パッケージを[[インストール]]してください。 == 設定 == 使用するバージョン管理システム (デフォルトは [[git]]) などのオプションは {{ic|/etc/etckeeper/etckeeper.conf}} で設定できます。 Etckeeper は {{ic|etckeeper.conf}} で {{ic|LOWLEVEL_PACKAGE_MANAGER}} あるいは {{ic|HIGHLEVEL_PACKAGE_MANAGER}} として [[pacman]] を使うことをサポートしています。 == 使用方法 == 設定後、{{ic|/etc}} パスのリポジトリを初期化する必要があります: # etckeeper init そして、最初のコミットを実行して変更を追跡します。これは etckeeper が自動的に動作できるようにするために必要な手順です。 # etckeeper commit "first commit" ''etckeeper'' バージョン 1.18.3-1 では、パッケージのインストール、更新、および削除時に、インストール前およびインストール後の [[pacman フック]]が自動的に実行されます。[[#ラッパースクリプト]]で行う必要ありません。 {{ic|/etc}} パスへの他の変更を追跡するには、変更を手動でコミットするか (コマンドについては {{man|8|etckeeper}} のマニュアルページを参照)、または以下の一時的な解決策のいずれかを使用する必要があります: {{Warning|git checkout/rebase/merge/cherry-pick/... により、ファイルのアクセス許可が壊れ、たとえば SSH/sudo ログインが拒否される可能性があります。 }} ''git'' はファイルのパーミッションを直接保存できないため、''etckeeper'' によって処理され、チェックアウト後に ''etckeeper init'' を再度実行してパーミッションを復元する必要があります。 あるいは、[[systemd#systemd-tmpfiles - 一時ファイル]] を使用してアクセス許可を保存することもできます。 === systemd === パッケージにはサービス・タイマーユニットが付属しています。{{ic|etckeeper.timer}} を[[systemd/タイマー#管理|有効化]]することで使えます。 タイマーの使い方について詳しくは [[systemd/タイマー]]を見てください。ユニットを編集したい場合は [[systemd#ユニットファイルの編集]]を参照してください。 === Cron === 配布されているソースには [https://git.joeyh.name/index.cgi/etckeeper.git/tree/debian/cron.daily cron スクリプト] が含まれています。スクリプトを使うことで定期的に自動コミットできます。 例えば、1日毎に実行するには: # [[cron]] をインストール・有効化してください。 # {{ic|/etc/cron.daily/''script_name''}} としてスクリプトを作成。 # ''root'' でファイルに実行権限を付与 ({{ic|# chmod u+x /etc/cron.daily/''script_name''}}) 詳しくは [[cron#Cronie]] や [[cron]] を見てください。 === Incron === {{Note|このセクションは incron バージョン 5.10 にのみ適用されます。}} {{ic|/etc/}} 内の '''すべて''' のファイル変更に対してコミットを自動的に作成するには、{{Pkg|incron}} を使用します。これは、{{man|7|inotify}} を介したネイティブファイルシステムシグナリングを利用します。 incron をインストールして etckeeper を初期化した後、incron スクリプトの実行を許可するユーザーに root を追加します: # echo root | tee -a /etc/incron.allow 次に、incrontab を次のように編集します: # incrontab -e テキストを次のように追加します: # /etc IN_MODIFY,IN_NO_LOOP /bin/etckeeper commit "[message]" ''IN_NO_LOOP'' は、コミットが完了するのを待ってから次のコマンドを実行し、無限ループを防ぐフラグです。 ここで、''[message]'' は、{{ic|"modified $#"}} のようなものになります。$# は、変更されたファイルの名前に展開される特別な incrontab ワイルドカードです。 Incron はサブディレクトリを監視できないことに注意してください。パス内のファイルのみが監視されます。サブディレクトリを監視する必要がある場合は、サブディレクトリに独自のエントリを与える必要があります。ただし、トップレベルのファイルが変更されたときにコミットすると、すべての変更がコミットされます。 参照: [http://inotify.aiken.cz/?section=incron&page=doc&lang=en]、{{man|8|incrond}} === リモートリポジトリに自動プッシュ === {{Warning|etckeeper のリポジトリを誰でもアクセスできるリモートリポジトリにプッシュしてしまうと、パスワードハッシュや秘密鍵などの機密情報が漏洩する可能性があります。気をつけて使ってください。}} {{ic|/etc/.git}} のローカルバックアップを作るだけでなく、コミットするたびに GitHub などのリモートリポジトリに変更を自動的にプッシュすることもできます。 まず、{{ic|etc/.git}} を編集してリモートの GitHub リポジトリを追加: # git remote add origin ''<nowiki>https://github.com/user/repo.git</nowiki>'' そして、フックを使用・設定してプッシュするようにしてください。 ==== etckeeper に付属しているフックを使う ==== {{ic|/etc/etckeeper/etckeeper.conf}} の {{ic|PUSH_REMOTE}} オプションを編集して、etckeeper からプッシュしたいリモートリポジトリの名前を指定してください。例: PUSH_REMOTE="''origin''" スペースで区切ることで複数のリモートリポジトリを追加できます。 ==== カスタムフックを使う ==== {{ic|/etc/etckeeper/commit.d/40github-push}} ファイルを作成 (実行権限を付与してください): #!/bin/sh set -e if [ "$VCS" = git ] && [ -d .git ]; then cd /etc/ git push origin master fi === ラッパースクリプト === 頻繁に実行するコマンドの変更を追跡したい場合 (例: {{ic|''command''}})、シンプルなラッパースクリプトで自動化できます。例えば、以下のファイルを作成: {{hc|/usr/local/bin/checketc.sh|2= #!/bin/bash etckeeper pre-install ''command'' etckeeper post-install}} 作成したら実行可能権限を付与してください。また、bash のエイリアスや関数で Etckeeper のコマンドを呼び出すこともできます。詳しくは [[Bash#エイリアス]]を見てください。 {{Note|Etckeeper バージョン 1.18.3-1 以前では Pacman による変更を追跡するのに上記のラッパースクリプトが必要でした。現在 Pacman はフックによってコマンドを自動的に実行します。}} === Reflector === [[Reflector]] を呼び出すたびに変更を自動的にコミットするには、{{ic|reflector.service}} に次の内容の [[ドロップインファイル]] を作成して、{{ic|reflector.service}} を {{ic|etckeeper.service}} に依存させます: [Unit] Before=etckeeper.service Wants=etckeeper.service {{Note|[[#systemd]] で提供されるユニットを再利用するため、自動変更のコミットメッセージは "daily autocommit" となります。このメッセージを変更するには、新しいスクリプトと systemd サービスを作成します。}}
このページで使用されているテンプレート:
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:META Related articles start
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Related
(
ソースを閲覧
)
テンプレート:Related articles end
(
ソースを閲覧
)
テンプレート:Related articles start
(
ソースを閲覧
)
テンプレート:Warning
(
ソースを閲覧
)
Etckeeper
に戻る。
検索
検索
Etckeeperのソースを表示
話題を追加