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.