「Pkgfile」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(カテゴリを修正)
48行目: 48行目:
 
== "Command not found" フック ==
 
== "Command not found" フック ==
   
  +
[[Bash#Command not found]]、[[Zsh# pkgfile の "command not found" ハンドラー]]、および [[Fish#"command not found" フック]] を参照してください。
pkgfile には、不明なコマンドを入力したときに自動で[[公式リポジトリ]]を検索する "command not found" フックが含まれています。例えば以下のように表示されます:
 
 
{{hc|$ abiword|
 
abiword may be found in the following packages:
 
extra/abiword 2.8.6-7 usr/bin/abiword
 
}}
 
 
シェルでこのフックを有効にするには、シェルの初期化ファイルにフックを読み込ませる必要があります。
 
 
* [[Bash|Bash]] の例:
 
 
{{hc|~/.bashrc|
 
source /usr/share/doc/pkgfile/command-not-found.bash}}
 
 
* [[Zsh|Zsh]] の例:
 
 
{{hc|~/.zshrc|
 
source /usr/share/doc/pkgfile/command-not-found.zsh}}
 
 
他にも AUR のパッケージ {{AUR|command-not-found}} によって提供されている "command not found" フックもあり、以下のように出力を生成します:
 
 
{{hc|$ abiword|
 
The command 'abiword' is been provided by the following packages:
 
'''abiword''' (2.8.6-7) from extra
 
[ abiword ]
 
'''abiword''' (2.8.6-7) from staging
 
[ abiword ]
 
'''abiword''' (2.8.6-7) from testing
 
[ abiword ]
 
}}
 
 
これを使うには、以下を zshrc に追加して下さい:
 
 
[ -r /etc/profile.d/cnf.sh ] && . /etc/profile.d/cnf.sh
 
 
''command-not-found'' パッケージは [[wikipedia:ja:C++|C++]] で書かれているため、''pkgfile'' の Bash スクリプトよりもずっと高速に動作します。
 
   
 
== 自動アップデート ==
 
== 自動アップデート ==

2023年11月9日 (木) 22:55時点における版

関連記事

pkgfile は特定のファイルを所有しているパッケージはどれか、または特定のパッケージに入っているファイルはどれかを表示するツールです。

ヒント: pacman には類似の機能が内蔵されています。

インストール

公式リポジトリpkgfile パッケージをインストールしてください。あるいは、AURpkgfile-gitAUR パッケージで開発版をインストールしてください。

インストールしたらファイルデータベースを更新してください:

# pkgfile -u

使用方法

"makepkg" という名前のファイルを含んでいるパッケージを検索する例:

$ pkgfile makepkg
core/pacman

検索したファイルは [core] リポジトリの pacman パッケージに含まれていることがわかりました。

また、archlinux-keyring パッケージに入っている全てのファイルを表示する例:

$ pkgfile -l archlinux-keyring
core/archlinux-keyring usr/
core/archlinux-keyring usr/share/
core/archlinux-keyring usr/share/pacman/
core/archlinux-keyring usr/share/pacman/keyrings/
core/archlinux-keyring usr/share/pacman/keyrings/archlinux-revoked
core/archlinux-keyring usr/share/pacman/keyrings/archlinux-trusted
core/archlinux-keyring usr/share/pacman/keyrings/archlinux.gpg

pacman -Ql と同じような機能ですが (pacman#パッケージ・データベースに問い合わせるを参照)、インストールしていないパッケージでも使うことができます。

"Command not found" フック

Bash#Command not foundZsh# pkgfile の "command not found" ハンドラー、および Fish#"command not found" フック を参照してください。

自動アップデート

pkgfile には pkgfile データベースを自動的に同期するための systemd サービスとタイマーが同梱されています。自動アップデートを有効にするには pkgfile-update.timer有効化してください。

デフォルトでは、pkgfile は1日毎にアップデートされます。頻度を変えるにはユニットファイルを編集してください。