NixOS'ta bir dosyanın hangi (yüklü olmayan) pakete ait olduğunu nasıl öğrenebilirim?


13

Ben kullanıyorum Nix paket yöneticisini üzerinde NixOS . Dosya sağlayan bir paket yüklemek istediğimi varsayalım libgtk-x11-2.0.so.0. Bu dosyayı sağlayan, diğer GNU / Linux dağıtımlarına benzer bir paketi nasıl bulabilirim ?

Şu anda dosyayı google'a ve hangi pakete ait olabileceğini bulmam ve Nix deposunda ilgili paketi bulmam gerekiyor, ancak daha deyimsel bir yöntem istiyorum.


1
Vazgeçmeden önce "bir ctags veritabanı kur ..." nixos.org/wiki/… .
15'te

Bazı paket yöneticileri (örn. yumVe dnfRPMland'da) "yükleme dosyası" demenize izin verir, doğru paketi bulurlar ve bunu yüklerler.
vonbrand

2
Bunu sadece çalıştırılabilir ATM ( $ command-not-found foo) için var. Nix dosyalarında (örn. Ctags ile) arama yapmanın burada yardımcı olmayacağını unutmayın. Ne yüklediğini bulmak için derlemeyi gerçekleştirmeniz gerekir.
Vladimír Čunát

Neden? Diğer paket yöneticilerinin gerçekten böyle bir işlevi var mı? Diğer "deyimsel" yöntem, INSTALLpaketin (ortamını oluşturmak istediğiniz) dosyasını, yani önceden yüklemeniz gereken paketlerin Requirements/ Dependenciesbölümünü okumaktır . Sonra bakmak paketler halinde nixpkgs. (Başka bir deyişle, paket yöneticileri dosyalar değil paketlerle ilgilidir ...)
Andrew Miloradovsky

3
@AndrewMiloradovsky, çünkü bazen bir komutun adını (veya başka bir dosya adını) biliyorsunuz, ancak onu sağlayan paketin adını bilmiyorsunuz. Ve evet, diğer paket yöneticilerinin böyle bir özelliği vardır, örneğin yum provides '*/bin/grep'veya dnf provides '*/bin/grepveya apt-file search 'fprintf.3.gz'.
maxschlepzig

Yanıtlar:


9

nix-index ihtiyacınız olan şeydir.

Dizini yükleyin ve oluşturun:

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

Konum libgtk-x11-2.0.so.0:

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

Çıktı:

(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

Son satır gtk+-2.24.31, öznitelik yoluna sahip paketin gnome2.gtkbu dosyayı içerdiğini söylüyor .


2

Belgelere bakıldığında bunu yapmanın kolay bir yolu yok gibi görünüyor.

Yapabileceğiniz yum tabanlı dağıtım yum provides $fileile apt-get dağıtımında apt dosyası kurabilir ve yapabilirsiniz apt-file $fileama eşdeğerini göremiyorum nix-env -q.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.