คุณจะติดตั้งแพ็คเกจแบบใช้ครั้งเดียวใน NixOS ได้อย่างไร


9

ฉันมีกล่อง NixOS ที่ฉันเก็บไว้ในnixos-16.03ช่อง ฉันต้องการให้เครื่องอยู่ในสถานะที่เสถียรเป็นส่วนใหญ่และดังนั้นฉันจึงต้องการหลีกเลี่ยงการเปลี่ยนไปใช้nixos-unstableช่อง

อย่างไรก็ตามฉันต้องติดตั้งแพ็คเกจรุ่นใหม่กว่าที่มีอยู่ในช่องนั้น ( nodejs-6_xในอินสแตนซ์นี้) ในคู่มือมีส่วนที่อธิบายการติดตั้ง One-Clickซึ่งดูเหมือนในตอนแรกเหมือนกับสิ่งที่ฉันต้องการ อย่างไรก็ตามเซิร์ฟเวอร์ Hydra ที่http://hydra.nixos.orgดูเหมือนจะไม่สามารถให้บริการ.nixpkgไฟล์ใด ๆที่nix-install-packageเครื่องมือใช้อธิบายไว้ในส่วนนั้น

วิกิยังบันทึกกระบวนการที่สามารถปรับแต่งแพ็กเกจได้ (หน้านี้เรียกว่าModifying Packages ) ซึ่งฉันคิดว่าสามารถใช้เพื่อจุดประสงค์ของฉันได้แม้ว่ามันจะดูเหมือนว่าฉันกำลังต่อสู้กับเครื่องมือแทนที่จะใช้มัน

ฉันถามเกี่ยวกับเรื่องนี้ใน IRC ด้วย (ขอบคุณM-Ralithสำหรับการตอบคำถามที่ไม่รู้ของฉันอย่างอดทน!) แต่ฉันก็ไม่เข้าใจเลยว่าจะใช้มันอย่างไร คำแนะนำคือ "แทนที่ src และเวอร์ชันใน nixpkgs config ของคุณ" ซึ่งดูเหมือนว่าฉันสามารถเขียนนิพจน์ใน.nixpkgs/configuration.nixและแทนที่คุณสมบัติเหล่านั้นสำหรับแพ็คเกจในช่องที่สมัครรับข้อมูลของฉัน ( nixos-16.03) เมื่อฉันถามเกี่ยวกับแพคเกจที่ไม่มีอยู่ในช่องทางคำแนะนำคือ "เพื่อระบุแพคเกจทั้งหมดแทนที่จะเขียนทับ src และเวอร์ชั่น" ซึ่งฉันใช้หมายความว่าฉันจะต้องทำซ้ำนิพจน์ทั้งนิพจน์สำหรับแพ็คเกจ ฉันสนใจใน.nix-env

สำหรับแพ็คเกจที่มีอยู่ในช่องอื่นที่ฉันต้องการติดตั้ง แต่อยู่ในช่องปัจจุบันของฉันจะมีวิธีที่ดีกว่านี้ไหม? nix-build <url> | nix-env -iมันเกือบจะรู้สึกเหมือนฉันควรจะสามารถที่จะทำสิ่งที่ชอบ สิ่งที่เหมาะสมที่สุดคือการติดตั้งตัวเลือกนี้ออกไป แต่ไม่มีการกำหนดค่าที่อาจป้องกันไม่ให้อัปเกรดภายหลังในกรณีที่ช่องสัญญาณปัจจุบันของฉันถูกติดตาม

คำตอบ:


8

คุณสามารถใช้nix-envเครื่องมือ

% nix-env -f https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz -iA tig

หรือใช้nix-buildเครื่องมือ

% nix-build -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz -A tig

นั่นช่วยได้อย่างไร!

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