「Pacman/Pacnew と Pacsave」の版間の差分
Kusakata.bot (トーク | 投稿記録) (update Pkg/AUR templates) |
(同期) |
||
1行目: | 1行目: | ||
[[Category:パッケージ管理]] |
[[Category:パッケージ管理]] |
||
− | [[cs:Pacnew and Pacsave |
+ | [[cs:Pacman/Pacnew and Pacsave]] |
[[de:Pacnew- und Pacsave-Dateien]] |
[[de:Pacnew- und Pacsave-Dateien]] |
||
− | [[ |
+ | [[es:Pacman/Pacnew and Pacsave]] |
− | [[ |
+ | [[en:Pacman/Pacnew and Pacsave]] |
[[fr:Gestion des fichiers de configurations]] |
[[fr:Gestion des fichiers de configurations]] |
||
− | [[it:Pacnew and Pacsave |
+ | [[it:Pacman/Pacnew and Pacsave]] |
− | [[ |
+ | [[pt:Pacman/Pacnew and Pacsave]] |
+ | [[ru:Pacman/Pacnew and Pacsave]] |
||
− | == はじめに == |
||
+ | [[zh-hans:Pacman/Pacnew and Pacsave]] |
||
− | pacman がパッケージを削除するときに設定ファイルがある場合、通常はその設定ファイルのバックアップコピーが作成されファイルの名前に .pacsave が付けられます。 |
||
+ | pacman でパッケージを削除するときに設定ファイルが存在していた場合、通常はその設定ファイルのバックアップコピーが作成されファイルの名前に ''.pacsave'' が付けられます。同じく、pacman でパッケージを更新するときにパッケージに新しい設定ファイルが含まれており、現在インストールされているファイルとは異なっていた場合、''.pacnew'' 設定ファイルが書き出されます。Pacman はこれらのファイルが書き出された時に警告を表示します。 |
||
+ | == ファイルが作成される理由 == |
||
− | 同じく、pacman がパッケージを更新するときに現在インストールされているファイルとは異なる新しいファイルがメンテナによって作成されている場合、.pacnew 設定ファイルを書き出します。場合によっては、特別な事情がある場合、.pacorig ファイルが作成されます。Pacman はこれらのファイルが書きだされた時に警告を表示します。 |
||
− | {{ic|.pacnew}} ファイルはパッケージを更新 |
+ | {{ic|.pacnew}} ファイルはパッケージを更新 ({{Ic|pacman -Syu}}, {{Ic|pacman -Su}}, {{Ic|pacman -U}}) したときに(ユーザーによって編集された)既に存在するファイルを上書きしないために作成されます。この時 pacman は以下のようなメッセージを出力します: |
warning: /etc/pam.d/usermod installed as /etc/pam.d/usermod.pacnew |
warning: /etc/pam.d/usermod installed as /etc/pam.d/usermod.pacnew |
||
− | {{ic|.pacsave}} ファイルはパッケージを削除 |
+ | {{ic|.pacsave}} ファイルはパッケージを削除 ({{Ic|pacman -R}}) したりパッケージを更新するときに作成されます (パッケージを更新するにはまず先にパッケージを削除する必要があります)。pacman データベースにはパッケージに含まれているファイルが記録されており、バックアップするべきファイルがあったときは {{ic|.pacsave}} ファイルが作成されます。この時 pacman は以下のようなメッセージを出力します: |
warning: /etc/pam.d/usermod saved as /etc/pam.d/usermod.pacsave |
warning: /etc/pam.d/usermod saved as /etc/pam.d/usermod.pacsave |
||
− | これらのファイルはユーザーによる手動の操作を必要としており、パッケージを更新・削除した後は |
+ | pacman によって作成されたこれらのファイルはユーザーによる手動の操作を必要としており、パッケージを更新・削除した後はファイルを即座に処理することが良いとされます。放置していると、不適切な設定によってソフトウェアの誤動作を招いたり、ソフトウェアが実行できなくなったりする可能性があります。 |
== パッケージのバックアップファイル == |
== パッケージのバックアップファイル == |
||
− | パッケージの {{ic|PKGBUILD}} ファイルにはパッケージを更新・削除したときにどのファイルを保存・バックアップするべきかが指定されています。例えば {{ |
+ | パッケージの {{ic|PKGBUILD}} ファイルにはパッケージを更新・削除したときにどのファイルを保存・バックアップするべきかが指定されています。例えば {{Pkg|pulseaudio}} の [[PKGBUILD]] には次の行が含まれています: |
backup=('etc/pulse/client.conf' 'etc/pulse/daemon.conf' 'etc/pulse/default.pa') |
backup=('etc/pulse/client.conf' 'etc/pulse/daemon.conf' 'etc/pulse/default.pa') |
||
30行目: | 31行目: | ||
== タイプの説明 == |
== タイプの説明 == |
||
− | + | {{ic|.pac*}} ファイルにはさまざまなタイプがあります。 |
|
===.pacnew=== |
===.pacnew=== |
||
− | パッケージ |
+ | パッケージに含まれている {{ic|backup}} ファイルが更新されると、pacman はファイルの中身から生成される3つの [[wikipedia:Md5sum|md5sum]] を相互に比較します: 1つは更新前のパッケージによってインストールされる元のバージョンのチェックサム、1つはファイルシステムに存在する現在のバージョンのチェックサム、そしてもう1つは新しいパッケージに含まれているバージョンのチェックサムです。ファイルシステムに存在する現在のバージョンのファイルがパッケージによってインストールされる元のバージョンから修正されている場合、pacman は修正を新しいバージョンのファイルにマージする方法を知り得ません。従って、更新するとき、修正されたファイルを上書きする代わりに pacman は {{ic|.pacnew}} 拡張子が付いた新しいバージョンを保存し、修正されたバージョンには手を付けないでおきます。 |
− | もっと詳しく |
+ | もっと詳しく解説すると、3-way の MD5 チェックサムの比較は以下のどれかに当てはまることになります: |
− | ; original = ''X'', current = ''X'', new = ''X'' : |
+ | ; original = ''X'', current = ''X'', new = ''X'' : 3つのバージョンのファイルは全て同じ中身で、上書きしても問題ありません。現在のバージョンは新しいバージョンで上書きされユーザーには通知されません (ファイルの中身が同じ場合でも、ファイルのインストール時刻・修正時刻・アクセス時刻などのファイルシステム情報は更新され、ファイルのパーミッションが変更されている場合、全て適用されます)。 |
− | ; original = ''X'', current = ''X'', new = ''Y'' : 現在のバージョンの中身は元のバージョンと同じですが、新しいバージョン |
+ | ; original = ''X'', current = ''X'', new = ''Y'' : 現在のバージョンの中身は元のバージョンと同じですが、新しいバージョンとは異なっています。ユーザーが現在のバージョンを修正しておらず、新しいバージョンには改善やバグフィックスが含まれていることがあるので、新しいバージョンによって現在のバージョンは上書きされユーザーには通知されません。これは pacman が実行できる唯一の自動マージです。 |
; original = ''X'', current = ''Y'', new = ''X'' : 元のパッケージと新しいパッケージは全く同じバージョンのファイルを含んでいますが、ファイルシステムにある現在のバージョンは修正されています。現在のバージョンがそのまま残され、新しいバージョンはユーザーに通知されずに処分されます。 |
; original = ''X'', current = ''Y'', new = ''X'' : 元のパッケージと新しいパッケージは全く同じバージョンのファイルを含んでいますが、ファイルシステムにある現在のバージョンは修正されています。現在のバージョンがそのまま残され、新しいバージョンはユーザーに通知されずに処分されます。 |
||
46行目: | 47行目: | ||
; original = ''X'', current = ''Y'', new = ''Y'' : 新しいバージョンが現在のバージョンと同一です。現在のバージョンは新しいバージョンによって上書きされユーザーには通知されません (ファイルの中身が同じだとしても、ファイルのインストール・修正・アクセス時刻などファイルシステムの情報は更新されますし、ファイルのパーミッションの変更は全て適用されます)。 |
; original = ''X'', current = ''Y'', new = ''Y'' : 新しいバージョンが現在のバージョンと同一です。現在のバージョンは新しいバージョンによって上書きされユーザーには通知されません (ファイルの中身が同じだとしても、ファイルのインストール・修正・アクセス時刻などファイルシステムの情報は更新されますし、ファイルのパーミッションの変更は全て適用されます)。 |
||
− | ; original = ''X'', current = ''Y'', new = ''Z'' : |
+ | ; original = ''X'', current = ''Y'', new = ''Z'' : 3つのバージョン全てが異なっています。現在のバージョンはそのまま維持され、新しいバージョンは {{ic|.pacnew}} 拡張子を付けてインストールされます。またユーザーに新しいバージョンについて警告が表示されます。新しいバージョンから現在のバージョンへ必要な変更を手動でマージする必要があります。 |
===.pacsave=== |
===.pacsave=== |
||
53行目: | 54行目: | ||
{{Note|{{ic|-n}} オプションを付けて {{ic|pacman -R}} を実行すると指定されたパッケージの''全ての''ファイルが完全に削除されます。従って {{ic|.pacsave}} ファイルは作成されません。}} |
{{Note|{{ic|-n}} オプションを付けて {{ic|pacman -R}} を実行すると指定されたパッケージの''全ての''ファイルが完全に削除されます。従って {{ic|.pacsave}} ファイルは作成されません。}} |
||
− | |||
− | ===.pacorig=== |
||
− | |||
− | パッケージのインストールや更新で、あるファイルが (通常 {{ic|/etc}} にある設定) インストールされているどのパッケージにも属さず、しかしながらそのパッケージの {{ic|backup}} に含まれている状態になった場合、ファイルは {{ic|'''.pacorig'''}} 拡張子で保存されパッケージにあるバージョンのファイルで置き換えられます。設定ファイルがあるパッケージから他のパッケージに移動したときに通常起こります。そのようなファイルが {{ic|backup}} になかった場合、pacman はファイルの衝突エラーで操作を中断します。 |
||
− | |||
− | {{Note|{{ic|.pacorig}} ファイルは特別なときにだけ作られるので、このファイルに対処する普遍的な方法は存在しません。既知の問題の場合、おそらく [https://www.archlinux.org/news/ Arch News] に対処する手段が書かれています。}} |
||
== .pac* ファイルの検索== |
== .pac* ファイルの検索== |
||
− | + | Pacman には {{ic|.pacnew}} ファイルを自動で処理する機能を提供していません。あなた自身でこれらのファイルを管理する必要があります; 次のセクションではいくつかのツールが紹介されています。管理を手動で行うには、まずファイルを確認しなくてはならないでしょう。多数のパッケージを更新・削除した時は、更新された *.pac* ファイルを見落とすかもしれません。{{ic|*.pac*}} ファイルがインストールされていないかどうか調べるには: |
|
ほとんどのグローバルな設定が保存されている場所だけを検索するには: |
ほとんどのグローバルな設定が保存されている場所だけを検索するには: |
||
− | $ find /etc -regextype posix-extended -regex ".+\.pac(new|save |
+ | $ find /etc -regextype posix-extended -regex ".+\.pac(new|save)" 2> /dev/null |
ディスク全体を検索するには: |
ディスク全体を検索するには: |
||
− | $ find / -regextype posix-extended -regex ".+\.pac(new|save |
+ | $ find / -regextype posix-extended -regex ".+\.pac(new|save)" 2> /dev/null |
もしくは (インストールしている場合) [[locate]] を使って下さい。まずデータベースのインデックスを作成します: |
もしくは (インストールしている場合) [[locate]] を使って下さい。まずデータベースのインデックスを作成します: |
||
78行目: | 73行目: | ||
そして: |
そして: |
||
− | $ locate - |
+ | $ locate --existing --regex "\.pac(new|save)$" |
− | または pacman のログ |
+ | または pacman のログからファイルを見つける方法もあります: |
− | $ |
+ | $ grep --extended-regexp "pac(new|save)" /var/log/pacman.log |
− | ログにはファイルシステムにある現在のファイルや既に削除されているファイルの記録は保存していないので注意してください。 |
+ | ログにはファイルシステムにある現在のファイルや既に削除されているファイルの記録は保存していないので注意してください。上記のコマンドはシステムに存在していた全ての {{ic|*.pac*}} ファイルを表示します。 |
+ | {{ic|tail}} コマンドを使うことで一番最近の10個の {{ic|*.pac*}} ファイルに絞ることができます: |
||
− | == .pacnew ファイルの管理 == |
||
+ | $ grep --extended-regexp "pac(new|save)" /var/log/pacman.log | tail |
||
− | .pacnew や .pacsave ファイルの問題の解決を補助する様々なツールがあります。標準の diff ユーティリティ (または、colordiff) を使えば簡単にファイルを比較できます。[https://github.com/pbrisbin/scripts/blob/master/pacnews pacnews bash script] は同じような機能を提供します。pacdiff と pacnews はどちらも vimdiff を使って .pacnew や .pacsave ファイルを比較・編集します。 |
||
+ | == .pacnew ファイルの管理 == |
||
− | 存在する {{ic|.pacnew}} ファイルを全て確認したら、ユーザーは [[Vim#ファイルのマージ (vimdiff)|vimdiff]], ediff ([[Emacs|emacs]] に含まれています), {{Pkg|meld}} (GNOME の GUI ツール), sdiff ({{Pkg|diffutils}} に含まれています), {{Pkg|kompare}} (KDE の GUI ツール) などの一般的なマージツールを使って手動で対処し、その後 {{ic|.pacnew}} ファイルを削除することができます。 |
||
− | |||
− | 以上の作業において個々のレベルの自動化を提供するサードパーティのユーティリティが [[Arch User Repository#.5Bcommunity.5D|community リポジトリ]]や [[Arch User Repository|AUR]] から利用可能です。 |
||
− | |||
− | *pacdiff - {{Pkg|pacman}} パッケージに含まれている最小の CLI スクリプト。pacnew や pacsave ファイルを全て検索し、それぞれのファイルをどうするか尋ねます。 |
||
− | *{{AUR|pacmerge-git}}{{Broken package link|{{aur-mirror|pacmerge-git}}}} - CLI 対話式マージプログラム |
||
− | *[[Vim#ファイルのマージ (vimdiff)|Vimdiff]] - ファイルのマージ用に特別に作られた Vim |
||
− | *[[Dotpac]] - ncurses ベースのテキストインターフェイスと便利なウォークスルーを持ったベーシックな対話式スクリプト。マージや自動マージ機能はありません。 |
||
− | *pacdiffviewer - 自動マージができるフル機能の対話式 CLI スクリプト。{{AUR|yaourt}} パッケージに含まれています。 |
||
− | *{{AUR|diffpac}}{{Broken package link|{{aur-mirror|diffpac}}}} - スタンドアロンの pacdiffviewer 代替 |
||
− | *[[Yaourt|Yaourt]] - AUR リポジトリをサポートしているパッケージマネージャ。{{ic|yaourt -C}} を使って設定ファイルの比較・置換・マージなどができます。 |
||
− | *{{AUR|etc-update}} - [http://www.gentoo.org/doc/en/handbook/handbook-amd64.xml?part=3&chap=4#doc_chap2 Gentoo の etc-update] ユーティリティの Arch 移植版、対話式の編集や変更のマージ・回覧、些細な変更 (例: コメント) の自動マージなどができるシンプルな CLI を提供します。他のツールとは違い、あなたに新しいエディタを覚えるようしむけるのではなく好みのテキストエディタを使うことができます。 |
||
− | *{{Pkg|meld}} - グラフィカルインターフェイスによって2つ(もしくはそれ以上)のファイルを横に並べて比較・編集できる使いやすいプログラム。開いたファイルの違いを色でハイライトします。 |
||
− | *{{AUR|pacnews-git}} - {{ic|.pacnew}} ファイルを全て探し、{{ic|vimdiff}} で編集するシンプルなスクリプト。下の {{ic|meld}} を使ったスクリプトとは違います。 |
||
− | |||
− | === Meld を使って差異を更新する === |
||
− | |||
− | meld をループで使って設定ファイルの更新をするスクリプトです。ループでそれぞれの {{Ic|.pacnew}} ファイルを削除するか尋ねます。 |
||
− | |||
− | {{hc|pacnew|<pre>#!/bin/bash |
||
− | # Merge new *.pacnew configuration files with their originals |
||
− | |||
− | pacnew=$(find /etc -type f -name "*.pacnew") |
||
+ | Pacman には pacnew/pacsave ファイルを管理するためのシンプルなツールとして ''pacdiff'' が付属しています。''pacdiff'' は全ての {{ic|pacnew}} と {{ic|pacsave}} ファイルを検索して、ファイルをどうするか質問します。デフォルトでは [[Vim#ファイルのマージ (vimdiff)|vimdiff]] が使われますが、{{ic|1=DIFFPROG=your_editor pacdiff}} で別のツールを指定することも可能です。他の一般的な比較ツールについては[[アプリケーション一覧/ユーティリティ#マージツール]]を参照してください。 |
||
− | # Check if any .pacnew configurations are found |
||
− | if [[ -z "$pacnew" ]]; then |
||
− | echo " No configurations to update" |
||
− | fi |
||
+ | [[AUR]] にはマージ作業をある程度自動化するサードパーティのユーティリティが存在します。以下のツールを使うことができます: |
||
− | for config in $pacnew; do |
||
− | # Diff original and new configuration to merge |
||
− | gksudo meld ${config%\.*} $config & |
||
− | wait |
||
− | # Remove .pacnew file? |
||
− | while true; do |
||
− | read -p " Delete \""$config"\"? (Y/n): " Yn |
||
− | case $Yn in |
||
− | [Yy]* ) sudo rm "$config" && \ |
||
− | echo " Deleted \""$config"\"." |
||
− | break ;; |
||
− | [Nn]* ) break ;; |
||
− | * ) echo " Answer (Y)es or (n)o." ;; |
||
− | esac |
||
− | done |
||
− | done</pre>}} |
||
+ | *{{App|dotpac|ncurses ベースのテキストインターフェイスと分かりやすいウォークスルーによる基礎的な対話スクリプト。マージや自動マージ機能は備えていません。|https://github.com/AladW/dotpac|{{AUR|dotpac}}}} |
||
− | このスクリプトはグラフィカルに sudo を使うために [[GNOME|GNOME]] の {{Ic|gksudo}} を利用しています。[[KDE|KDE]] では {{Ic|kdesu}} を使って下さい。 |
||
+ | *{{App|etc-update|Gentoo の ''etc-update'' ユーティリティの Arch 移植。シンプルな CLI を使って変更を表示・マージ・編集することができます。些細な変更 (コメントの追加など) は自動的にマージすることができます。|3=https://wiki.gentoo.org/wiki/Handbook:Parts/Portage/Tools#etc-update|4={{AUR|etc-update}}}} |
||
+ | *{{App|pacmarge|.pacnew ファイルを自動マージするためのツール。|https://github.com/foutrelis/pacmarge|{{AUR|pacmarge}}}} |
||
+ | *{{App|pacnew-auto|{{Pkg|git}} の rebase を使って {{ic|pacnew}} を自動マージします。|https://github.com/joanrieu/pacnew-auto|{{AUR|pacnew-auto-git}}}} |
||
+ | *{{App|pacnews-git|''.pacnew'' ファイルを全て検索して [[Vim#ファイルのマージ (vimdiff)|vimdiff]] で編集するシンプルなスクリプト。|https://github.com/pbrisbin/scripts/blob/master/pacnews|{{AUR|pacnews-git}}}} |
||
− | == |
+ | == 参照 == |
*Arch Linux フォーラム: [https://bbs.archlinux.org/viewtopic.php?id=53532 Dealing With .pacnew Files] |
*Arch Linux フォーラム: [https://bbs.archlinux.org/viewtopic.php?id=53532 Dealing With .pacnew Files] |
2018年1月16日 (火) 22:06時点における版
pacman でパッケージを削除するときに設定ファイルが存在していた場合、通常はその設定ファイルのバックアップコピーが作成されファイルの名前に .pacsave が付けられます。同じく、pacman でパッケージを更新するときにパッケージに新しい設定ファイルが含まれており、現在インストールされているファイルとは異なっていた場合、.pacnew 設定ファイルが書き出されます。Pacman はこれらのファイルが書き出された時に警告を表示します。
目次
ファイルが作成される理由
.pacnew
ファイルはパッケージを更新 (pacman -Syu
, pacman -Su
, pacman -U
) したときに(ユーザーによって編集された)既に存在するファイルを上書きしないために作成されます。この時 pacman は以下のようなメッセージを出力します:
warning: /etc/pam.d/usermod installed as /etc/pam.d/usermod.pacnew
.pacsave
ファイルはパッケージを削除 (pacman -R
) したりパッケージを更新するときに作成されます (パッケージを更新するにはまず先にパッケージを削除する必要があります)。pacman データベースにはパッケージに含まれているファイルが記録されており、バックアップするべきファイルがあったときは .pacsave
ファイルが作成されます。この時 pacman は以下のようなメッセージを出力します:
warning: /etc/pam.d/usermod saved as /etc/pam.d/usermod.pacsave
pacman によって作成されたこれらのファイルはユーザーによる手動の操作を必要としており、パッケージを更新・削除した後はファイルを即座に処理することが良いとされます。放置していると、不適切な設定によってソフトウェアの誤動作を招いたり、ソフトウェアが実行できなくなったりする可能性があります。
パッケージのバックアップファイル
パッケージの PKGBUILD
ファイルにはパッケージを更新・削除したときにどのファイルを保存・バックアップするべきかが指定されています。例えば pulseaudio の PKGBUILD には次の行が含まれています:
backup=('etc/pulse/client.conf' 'etc/pulse/daemon.conf' 'etc/pulse/default.pa')
タイプの説明
.pac*
ファイルにはさまざまなタイプがあります。
.pacnew
パッケージに含まれている backup
ファイルが更新されると、pacman はファイルの中身から生成される3つの md5sum を相互に比較します: 1つは更新前のパッケージによってインストールされる元のバージョンのチェックサム、1つはファイルシステムに存在する現在のバージョンのチェックサム、そしてもう1つは新しいパッケージに含まれているバージョンのチェックサムです。ファイルシステムに存在する現在のバージョンのファイルがパッケージによってインストールされる元のバージョンから修正されている場合、pacman は修正を新しいバージョンのファイルにマージする方法を知り得ません。従って、更新するとき、修正されたファイルを上書きする代わりに pacman は .pacnew
拡張子が付いた新しいバージョンを保存し、修正されたバージョンには手を付けないでおきます。
もっと詳しく解説すると、3-way の MD5 チェックサムの比較は以下のどれかに当てはまることになります:
- original = X, current = X, new = X
- 3つのバージョンのファイルは全て同じ中身で、上書きしても問題ありません。現在のバージョンは新しいバージョンで上書きされユーザーには通知されません (ファイルの中身が同じ場合でも、ファイルのインストール時刻・修正時刻・アクセス時刻などのファイルシステム情報は更新され、ファイルのパーミッションが変更されている場合、全て適用されます)。
- original = X, current = X, new = Y
- 現在のバージョンの中身は元のバージョンと同じですが、新しいバージョンとは異なっています。ユーザーが現在のバージョンを修正しておらず、新しいバージョンには改善やバグフィックスが含まれていることがあるので、新しいバージョンによって現在のバージョンは上書きされユーザーには通知されません。これは pacman が実行できる唯一の自動マージです。
- original = X, current = Y, new = X
- 元のパッケージと新しいパッケージは全く同じバージョンのファイルを含んでいますが、ファイルシステムにある現在のバージョンは修正されています。現在のバージョンがそのまま残され、新しいバージョンはユーザーに通知されずに処分されます。
- original = X, current = Y, new = Y
- 新しいバージョンが現在のバージョンと同一です。現在のバージョンは新しいバージョンによって上書きされユーザーには通知されません (ファイルの中身が同じだとしても、ファイルのインストール・修正・アクセス時刻などファイルシステムの情報は更新されますし、ファイルのパーミッションの変更は全て適用されます)。
- original = X, current = Y, new = Z
- 3つのバージョン全てが異なっています。現在のバージョンはそのまま維持され、新しいバージョンは
.pacnew
拡張子を付けてインストールされます。またユーザーに新しいバージョンについて警告が表示されます。新しいバージョンから現在のバージョンへ必要な変更を手動でマージする必要があります。
.pacsave
backup
に指定されているファイルのどれかをユーザーが編集した場合、そのファイルは .pacsave
拡張子が付けられた名前に変更されパッケージが削除された後もファイルシステムに残り続けます。
.pac* ファイルの検索
Pacman には .pacnew
ファイルを自動で処理する機能を提供していません。あなた自身でこれらのファイルを管理する必要があります; 次のセクションではいくつかのツールが紹介されています。管理を手動で行うには、まずファイルを確認しなくてはならないでしょう。多数のパッケージを更新・削除した時は、更新された *.pac* ファイルを見落とすかもしれません。*.pac*
ファイルがインストールされていないかどうか調べるには:
ほとんどのグローバルな設定が保存されている場所だけを検索するには:
$ find /etc -regextype posix-extended -regex ".+\.pac(new|save)" 2> /dev/null
ディスク全体を検索するには:
$ find / -regextype posix-extended -regex ".+\.pac(new|save)" 2> /dev/null
もしくは (インストールしている場合) locate を使って下さい。まずデータベースのインデックスを作成します:
# updatedb
そして:
$ locate --existing --regex "\.pac(new|save)$"
または pacman のログからファイルを見つける方法もあります:
$ grep --extended-regexp "pac(new|save)" /var/log/pacman.log
ログにはファイルシステムにある現在のファイルや既に削除されているファイルの記録は保存していないので注意してください。上記のコマンドはシステムに存在していた全ての *.pac*
ファイルを表示します。
tail
コマンドを使うことで一番最近の10個の *.pac*
ファイルに絞ることができます:
$ grep --extended-regexp "pac(new|save)" /var/log/pacman.log | tail
.pacnew ファイルの管理
Pacman には pacnew/pacsave ファイルを管理するためのシンプルなツールとして pacdiff が付属しています。pacdiff は全ての pacnew
と pacsave
ファイルを検索して、ファイルをどうするか質問します。デフォルトでは vimdiff が使われますが、DIFFPROG=your_editor pacdiff
で別のツールを指定することも可能です。他の一般的な比較ツールについてはアプリケーション一覧/ユーティリティ#マージツールを参照してください。
AUR にはマージ作業をある程度自動化するサードパーティのユーティリティが存在します。以下のツールを使うことができます:
- dotpac — ncurses ベースのテキストインターフェイスと分かりやすいウォークスルーによる基礎的な対話スクリプト。マージや自動マージ機能は備えていません。
- etc-update — Gentoo の etc-update ユーティリティの Arch 移植。シンプルな CLI を使って変更を表示・マージ・編集することができます。些細な変更 (コメントの追加など) は自動的にマージすることができます。
- pacmarge — .pacnew ファイルを自動マージするためのツール。
- pacnew-auto — git の rebase を使って
pacnew
を自動マージします。
- pacnews-git — .pacnew ファイルを全て検索して vimdiff で編集するシンプルなスクリプト。
参照
- Arch Linux フォーラム: Dealing With .pacnew Files