コンテンツにスキップ

「Pkgfile」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
1版 をインポートしました
Kgx (トーク | 投稿記録)
リンクを追加
 
(5人の利用者による、間の11版が非表示)
1行目: 1行目:
{{Lowercase title}}
{{Lowercase title}}
[[Category:パッケージ開発]
[[Category:パッケージ管理]]
[[Category:パッケージ管理]]
[[Category:コマンド]]
[[en:Pkgfile]]
[[ko:Pkgfile]]
[[cs:Pkgfile]]
[[de:Pkgfile]]
[[en:pkgfile]]
[[es:Pkgfile]]
[[fa:Pkgfile]]
[[pl:Pkgfile]]
[[pt:Pkgfile]]
[[ru:Pkgfile]]
[[ru:Pkgfile]]
[[zh-CN:Pkgfile]]
[[zh-hans:Pkgfile]]
{{Related articles start}}
{{Related|pacman}}
{{Related articles end}}
'''pkgfile''' は特定のファイルを所有しているパッケージはどれか、または特定のパッケージに入っているファイルはどれかを表示するツールです。
'''pkgfile''' は特定のファイルを所有しているパッケージはどれか、または特定のパッケージに入っているファイルはどれかを表示するツールです。

{{Tip|{{Pkg|pacman}} には[[Pacman#特定のファイルが含まれているパッケージを検索|類似の機能]]が内蔵されています。}}


== インストール ==
== インストール ==


[[公式リポジトリ]]の {{Pkg|pkgfile}} [[Arch User Repository|AUR]] の {{AUR|pkgfile-git}} で[[pacman|インストール]]できます
[[公式リポジトリ]] の {{Pkg|pkgfile}} パッケージを [[インストール]] してください。あるいは、[[Arch User Repository|AUR]] の {{AUR|pkgfile-git}} パッケージ開発版をインストールしてください


インストールしたらファイルデータベースを更新してください:
インストールしたらファイルデータベースを更新してください:
18行目: 28行目:
== 使用方法 ==
== 使用方法 ==


"makepkg" という名前のファイルを含んでいるパッケージを検索する:
ファイル {{ic|makepkg}} 所有するパッケージを検索するには:


{{hc|$ pkgfile makepkg|
{{hc|$ pkgfile makepkg|
core/pacman}}
core/pacman}}
検索したファイルは ''[core]'' リポジトリの {{Pkg|pacman}} パッケージに含まれていることがわかりました。


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


{{hc|$ pkgfile -l archlinux-keyring|
{{hc|$ pkgfile -l archlinux-keyring|
34行目: 43行目:
core/archlinux-keyring usr/share/pacman/keyrings/archlinux-trusted
core/archlinux-keyring usr/share/pacman/keyrings/archlinux-trusted
core/archlinux-keyring usr/share/pacman/keyrings/archlinux.gpg}}
core/archlinux-keyring usr/share/pacman/keyrings/archlinux.gpg}}

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


== "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 に追加して下さい:


'''pkgfile''' には pkgfile データベースを自動的に同期するための [[systemd]] サービスと[[systemd/タイマー|タイマー]]が同梱されています。自動アップデートを有効にするには {{ic|pkgfile-update.timer}} を[[有効化]]してください。
[ -r /etc/profile.d/cnf.sh ] && . /etc/profile.d/cnf.sh


デフォルトでは、pkgfile は1日毎にアップデートされます。頻度を変えるには[[systemd#ユニットファイルの編集|ユニットファイルを編集]]してください。
''command-not-found'' パッケージは [[wikipedia:ja:C++|C++]] で書かれているため、''pkgfile'' の Bash スクリプトよりもずっと高速に動作します。

2023年11月9日 (木) 23:01時点における最新版

関連記事

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

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

インストール

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

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

# pkgfile -u

使用方法

ファイル makepkg を所有するパッケージを検索するには:

$ pkgfile makepkg
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日毎にアップデートされます。頻度を変えるにはユニットファイルを編集してください。