NixOSでファイルがどの(インストールされていない)パッケージに属しているかを調べる方法は?


13

私が使用していますニックスパッケージマネージャをNixOS。ファイルを提供するパッケージをインストールするとしますlibgtk-x11-2.0.so.0他のGNU / Linuxディストリビューションと同様に、このファイルを提供するパッケージを見つけるにはどうすればよいですか?

現在、ファイルをグーグル検索し、どのパッケージが属しているかを把握し、Nixリポジトリで対応するパッケージを見つける必要がありますが、より慣用的な方法が必要です。


1
あきらめる前に、「ctagsデータベースをセットアップ...」nixos.org/wiki/…まで得ました。
thrig

いくつかのパッケージマネージャ(例えばyumdnfRPMlandでは)彼らは右のパッケージを把握し、その1をインストールし、あなたが「ファイルをインストール」と言うことができます。
フォンブランド

2
これは、実行可能ファイルATM($ command-not-found foo)に対してのみあります。nixファイルの検索(たとえばctagsを使用)はそこでは役に立ちません。ビルドを実行して、インストールするものを見つける必要があります。
ウラジミールČunát15年

どうして?他のパッケージマネージャーは本当にそのような機能を持っていますか?より「イディオマティック」な方法はINSTALL、パッケージのファイル(環境を作成する対象)、つまり、プリインストールする必要があるパッケージのRequirements/ Dependenciesセクションを読み取ることです。次に、でパッケージを探しますnixpkgs。(つまり、パッケージマネージャーはファイルではなくパッケージに関するものです...)
アンドリューミロラドフスキー

3
@AndrewMiloradovsky。コマンド(または別のファイル名)の名前は知っているが、それを提供するパッケージの名前は知らないことがあるからです。そして、はい、他のパッケージマネージャは、このような特徴を持っている例yum provides '*/bin/grep'またはdnf provides '*/bin/grepまたはapt-file search 'fprintf.3.gz'
maxschlepzig

回答:


8

nix-indexは必要なものです。

インデックスをインストールして構築します。

nix-env -iA nixos.nix-index
nix-index

見つけるlibgtk-x11-2.0.so.0

nix-locate -w libgtk-x11-2.0.so.0

出力:

(zed.out)                                             0 s /nix/store/bc4mngklj2j7hmm21jra4641x4pm9r8z-node-webkit-env/lib/libgtk-x11-2.0.so.0
(thrust.out)                                          0 s /nix/store/wzg0k4i2cy0qsm3hwxlywxxbga019hbq-env-thrust/lib/libgtk-x11-2.0.so.0
(nwjs_0_12.out)                                       0 s /nix/store/js6klvzjfi5q4djmwb0bqzfb4x0vzm6g-nwjs-env/lib/libgtk-x11-2.0.so.0
(node_webkit_0_11.out)                                0 s /nix/store/30vm6a7bmc56ckl575rqassw60ccxjpg-node-webkit-env/lib/libgtk-x11-2.0.so.0
(mumble_overlay.out)                                  0 s /nix/store/wayx023w1nslqg2z0c5v4n0b4jxn5n06-gtk+-2.24.31/lib/libgtk-x11-2.0.so.0
gnome2.gtk.out                                        0 s /nix/store/3iqchhncghm5s458lzy99c3prfymrnp2-gtk+-2.24.31/lib/libgtk-x11-2.0.so.0

最後の行は、gtk+-2.24.31属性パスを持つパッケージgnome2.gtkにこのファイルが含まれていることを示しています。


2

ドキュメントを見ると、これを行う簡単な方法があるようには見えません。

yumベースのディストリビューションではできますがyum provides $file、apt-getディストリビューションではapt-fileをインストールして実行できますがapt-file $file、に相当するものが表示されませんnix-env -q

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.