จะค้นหาไฟล์ที่ไม่ได้ติดตั้งในแพ็คเกจบน NixOS ได้อย่างไร?


13

ผมใช้แพคเกจผู้จัดการห้ามบนNixOS libgtk-x11-2.0.so.0สมมติว่าผมต้องการที่จะติดตั้งแพคเกจที่ให้แฟ้ม ฉันจะหาแพ็คเกจที่ให้ไฟล์นี้คล้ายกับการกระจาย GNU / Linux อื่น ๆ ได้อย่างไร

ขณะนี้ฉันต้อง google ไฟล์และหาแพคเกจที่มันอาจเป็นและหาแพคเกจที่สอดคล้องกันบนที่เก็บห้าม แต่ฉันต้องการวิธีการสำนวนมากขึ้น


1
ฉันได้เท่าที่ "ตั้งค่าฐานข้อมูล ctags ... " nixos.org/wiki/ ......ก่อนที่จะยอมแพ้
thrig

ผู้จัดการแพคเกจบางคน (เช่นyumและdnfใน RPMland) อนุญาตให้คุณพูดว่า "ติดตั้งไฟล์" พวกเขาสามารถระบุแพ็คเกจที่ถูกต้องและติดตั้งไฟล์นั้น
vonbrand

2
เรามีสิ่งนี้สำหรับตู้เอทีเอ็มที่ปฏิบัติการได้ ( $ command-not-found foo) โปรดทราบว่าการค้นหาไฟล์ห้าม (เช่นด้วย ctags) จะไม่ช่วย คุณต้องทำการสร้างเพื่อค้นหาสิ่งที่ติดตั้ง
VladimírČunát

ทำไม? ผู้จัดการแพคเกจอื่น ๆ มีฟังก์ชั่นดังกล่าวหรือไม่? วิธีการ "สำนวน" เพิ่มเติมคือการอ่านINSTALLไฟล์ของแพ็คเกจ (ซึ่งคุณต้องการสร้างสภาพแวดล้อม) คือRequirements/ Dependenciesส่วนของแพ็คเกจที่คุณต้องติดตั้งไว้ล่วงหน้า จากนั้นมองหาแพคเกจnixpkgsใน (กล่าวอีกนัยหนึ่งผู้จัดการแพ็กเกจเกี่ยวกับแพ็คเกจไม่ใช่ไฟล์ ... )
Andrew Miloradovsky

3
@AndrewMiloradovsky เพราะบางครั้งคุณก็รู้ชื่อของคำสั่ง (หรือชื่อไฟล์อื่น) แต่ไม่ใช่ชื่อของแพ็คเกจที่ให้มา และใช่ผู้จัดการแพคเกจอื่น ๆ ที่มีคุณสมบัติดังกล่าวเช่นyum provides '*/bin/grep'หรือหรือdnf provides '*/bin/grep apt-file search 'fprintf.3.gz'
maxschlepzig

คำตอบ:


9

ระวังดัชนีคือสิ่งที่คุณต้องการ

ติดตั้งและสร้างดัชนี:

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 distro ตามที่คุณสามารถทำyum provides $fileและ apt-get distro คุณสามารถติดตั้ง apt-ไฟล์และทำแต่ฉันไม่สามารถมองเห็นในเทียบเท่าapt-file $filenix-env -q

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.