อ่าน 4 นาที
Nix (โปรแกรมจัดการแพ็กเกจ)
Nix เป็น ตัวจัดการแพ็ก เกจข้ามแพลตฟอร์ม สำหรับ ระบบ ที่คล้าย Unix และเป็น ภาษาฟังก์ชัน สำหรับการกำหนดค่าระบบเหล่านั้น ซึ่งคิดค้นขึ้นในปี พ.ศ. 2546 [ 7 ] โดย Eelco Dolstra
Nix (โปรแกรมจัดการแพ็กเกจ)
| ห้าม | |
|---|---|
| ผู้เขียนต้นฉบับ | อีลโค ดอลสตรา |
| ปล่อย | 15 มิถุนายน 2546 |
| เวอร์ชันเสถียร | 2.34.7 [ 1 ] |
| เขียนเป็น | C++, [ 2 ] Nix [ 3 ] |
| แพลตฟอร์ม | ลินุกซ์, ดาร์วิน, ฟรีบีเอสดี, [ 4 ]โอเพนบีเอสดี[ 5 ] |
| พิมพ์ | ตัวจัดการแพ็กเกจเชิงฟังก์ชันล้วนๆ ซอฟต์แวร์โอเพนซอร์สและฟรี การใช้งานภาษาโปรแกรม การใช้งานอ้างอิง ตัวแปลภาษา |
| ใบอนุญาต | ใบอนุญาตสาธารณะทั่วไปของ GNU เวอร์ชัน 2.1 [ 6 ] |
| เว็บไซต์ | nixos.org |
| ที่เก็บข้อมูล |
|
Nixเป็นตัวจัดการแพ็กเกจข้ามแพลตฟอร์ม สำหรับ ระบบ ที่คล้าย Unixและเป็นภาษาฟังก์ชันสำหรับการกำหนดค่าระบบเหล่านั้น ซึ่งคิดค้นขึ้นในปี พ.ศ. 2546 [ 7 ]โดย Eelco Dolstra
เข้าใกล้
ตัวจัดการแพ็กเกจ Nix ใช้โมเดลที่แพ็กเกจซอฟต์แวร์แต่ละรายการจะถูกติดตั้งลงในไดเร็กทอรีที่ไม่ซ้ำกันซึ่งมีเนื้อหาที่ไม่สามารถเปลี่ยนแปลงได้ ชื่อไดเร็กทอรีเหล่านี้สอดคล้องกับแฮชเข้ารหัสลับที่คำนึงถึงการพึ่งพาของแพ็กเกจทั้งหมด รวมถึงแพ็กเกจอื่นๆ ที่จัดการโดย Nix ด้วยเหตุนี้ ชื่อแพ็กเกจของ Nix จึงระบุเนื้อหาได้ เนื่องจากแพ็กเกจที่มีชื่อเดียวกันจะมีอินพุตและแพลตฟอร์มการสร้างเดียวกัน และด้วยเหตุนี้จึงได้ผลลัพธ์การสร้างที่เหมือนกัน[ 8 ]
การดำเนินการ
สูตรแพ็กเกจสำหรับ Nix เขียนขึ้นใน "ภาษา Nix" ที่สร้างขึ้นโดยเฉพาะ ซึ่งเป็นภาษาการเขียนโปรแกรม แบบประกาศ ฟังก์ชันล้วนประเมินแบบเลซี่และกำหนดประเภทแบบไดนามิก[ 9 ]คุณลักษณะเด่นของภาษา Nix ได้แก่ สตริงที่มี "บริบท" การแทรกสตริง เส้นทางระบบไฟล์ระดับเฟิร์สคลาส และ "สตริงที่มีการเยื้อง" ซึ่งเมื่อรวมกันแล้วจะช่วยให้สามารถแสดงความสัมพันธ์ระหว่างข้อมูลระบบไฟล์ได้อย่างกระชับเมื่อระบุเนื้อหาของไฟล์ใหม่
การพึ่งพาอาศัยกันระหว่างไฟล์ตามที่ประกาศไว้ในภาษา Nix จะถูกติดตามและเก็บรักษาไว้ใน "Nix store" โดยอัตโนมัติ[ 10 ]ไฟล์ใหม่ใน Nix store จะถูกสร้างขึ้นผ่าน "derivations" derivation คือโครงสร้างข้อมูลถาวรที่ระบุไฟล์ปฏิบัติการ อาร์กิวเมนต์ และตัวแปรสภาพแวดล้อมสำหรับการเรียกใช้ (ดูexecve) และไฟล์อื่นๆ ที่จะอ่านจาก Nix store จากนั้นไฟล์ปฏิบัติการจะถูกเรียกใช้ในแซนด์บ็อกซ์ที่ห้ามการเข้าถึงสิ่งใดๆ นอกเหนือจากไฟล์อินพุตที่ระบุไว้อย่างชัดเจน และอนุญาตให้เขียนไปยังเส้นทางเอาต์พุตที่กำหนดเท่านั้น Nix จะเก็บรักษาข้อมูลการพึ่งพาอาศัยกันในไฟล์เอาต์พุตโดยการสแกนหาแฮชเฉพาะที่ใช้สำหรับชื่อไดเร็กทอรีแพ็กเกจ[ 8 ]
การติดตามการอ้างอิงอัตโนมัติช่วยให้มั่นใจได้ถึงความสมบูรณ์ของแพ็กเกจ แม้ว่าจะมีการถ่ายโอนข้ามเครื่องก็ตาม นอกจากนี้ยังช่วยให้สามารถเก็บกวาดแพ็กเกจที่ไม่ได้ใช้เมื่อไม่มีแพ็กเกจอื่นใดขึ้นอยู่กับแพ็กเกจเหล่านั้น แม้ว่าจะมีความต้องการพื้นที่จัดเก็บข้อมูลมากขึ้น แต่การอัปเกรดทั้งหมดใน Nix รับประกันได้ว่าจะเป็นแบบอะตอมิกและสามารถย้อนกลับ ได้อย่างมีประสิทธิภาพ ชื่อไดเร็กทอรีที่ไม่ซ้ำกันช่วยให้สามารถติดตั้งแพ็กเกจจำนวนมากที่มีไลบรารีที่ใช้ร่วมกันเวอร์ชันต่างๆ กันได้ และอ้างว่าสามารถกำจัดสิ่งที่เรียกว่า " นรกแห่งการพึ่งพา " ได้ [ 11 ]นอกจากนี้ยังช่วยให้ผู้ใช้หลายคนสามารถติดตั้งซอฟต์แวร์บนระบบเดียวกันได้อย่างปลอดภัยโดยไม่ต้องใช้สิทธิ์ผู้ดูแล ระบบ ส่ง ผลให้โมเดลการจัดการและการปรับใช้แพ็กเกจ Nix โฆษณาแพ็กเกจที่มีความน่าเชื่อถือทำซ้ำได้และพกพาได้ มากขึ้น [ 8 ] [ 12 ]
Nix รองรับระบบปฏิบัติการLinux , macOSและWSL อย่างเต็มรูปแบบ และสามารถติดตั้งควบคู่ไปกับโปรแกรมจัดการแพ็กเกจอื่นๆ ได้อย่างปลอดภัย
นิคแพ็คส์
Nixpkgs คือคลังแพ็กเกจที่สร้างขึ้นบนตัวจัดการแพ็กเกจ Nix ตามข้อมูลจากRepologyณ เดือนมกราคม 2025 มีแพ็กเกจมากกว่า 122,000 รายการ[ 13 ]และมีจำนวนแพ็กเกจที่ทันสมัยมากกว่าคลังแพ็กเกจอื่นๆ[ 14 ]ระบบปฏิบัติการที่ Nixpkgs รองรับส่วนใหญ่คือ Linux และ Darwin โดยมีการรองรับ Windows และ BSD บางรุ่น สถาปัตยกรรม CPU ที่รองรับ ได้แก่64 บิต x86และARMแพ็กเกจสำหรับสถาปัตยกรรมเหล่านี้จะถูกสร้างขึ้นเป็นประจำ โดยใช้ บริการการ รวมระบบอย่างต่อเนื่องที่เรียกว่า Hydra [ 15 ]และผลลัพธ์ของการสร้างเหล่านี้จะถูกอัปโหลดไปยังแคชไบนารีสาธารณะ[ 16 ]เมื่อ Nix ติดตั้งแพ็กเกจ ระบบจะตรวจสอบแคชนี้และดาวน์โหลดแพ็กเกจไบนารีเพื่อหลีกเลี่ยงการสร้างในเครื่อง
Nixpkgs ได้รับการพัฒนาในที่เก็บ Gitเดียวบน GitHub [ 17 ]นอกจากแพ็กเกจแล้ว ยังมีซอร์สโค้ดสำหรับNixOS อีก ด้วย
โครงการที่ใช้ Nix
NixOS [ 18 ]เป็นระบบปฏิบัติการ Linuxที่ใช้ Nix ในการจัดการการกำหนดค่าระบบทั้งหมด รวมถึงเคอร์เนล Linux [ 19 ]
Nix ใช้สำหรับการบรรจุและแจกจ่ายซอฟต์แวร์ในการทดลอง LHCbของCERN [ 20 ] Nix เป็นพื้นฐานของแพลตฟอร์มการพัฒนาซอฟต์แวร์แบบกระจายReplit [ 21 ]และFirebase Studio [ 22 ]
การแยกสาขาและการนำไปใช้งานทางเลือก
ในปี 2021 มีการประกาศการนำกลับมาใช้ใหม่โดยใช้ชื่อ Tvix [ 23 ]โดยมีเป้าหมายคือความเป็นโมดูลาร์ ความเข้ากันได้อย่างสมบูรณ์กับ Nixpkgs และประสิทธิภาพการประเมินที่ดีขึ้น ณ ปี 2024 Tvix มีตัวประเมิน[ 24 ]และการใช้งานร้านค้า[ 25 ]แม้ว่าผู้เขียนจะไม่ถือว่าโครงการนี้มีเสถียรภาพหรือพร้อมใช้งานในการผลิต[ 26 ] Tvix เขียนขึ้นโดยใช้Rust เป็น หลัก [ 27 ]
ในปี 2024 ทีมอาสาสมัครได้ปล่อย Lix เวอร์ชันแรก[ 28 ]ซึ่งเป็นการแยก Nix ออกมาโดยมุ่งเน้นที่ความถูกต้องและความเข้ากันได้ โดยใช้ ระบบอัตโนมัติการสร้าง Mesonโครงการนี้ตั้งใจที่จะค่อยๆ เขียนโค้ดบางส่วนใหม่ด้วย Rust [ 28 ]
ในเดือนมีนาคม พ.ศ. 2568 ได้มีการสร้างเวอร์ชันแยกของ Tvix ที่ชื่อว่า Snix ขึ้นมา[ 29 ]
ดูเพิ่มเติม
- GNU Guix : โปรแกรมจัดการแพ็กเกจแบบประกาศอีกตัวหนึ่ง และเป็นโปรแกรมที่พัฒนาต่อยอดมาจาก Nix ในยุคแรก โดยใช้GNU Guileสำหรับการกำหนดค่าและการปรับแต่ง
- Maak : เครื่องมือช่วยสร้างระบบอัตโนมัติคล้ายกับ make และเป็นต้นแบบแรกเริ่มของ Nix
- การทำงานอัตโนมัติของ Runbook
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ

- NixบนGitHub
- การสนทนาระหว่างนักพัฒนาใน รายชื่อผู้รับจดหมาย ของ Debian (ปี 2008)
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ Nix (โปรแกรมจัดการแพ็กเกจ)
Nix เป็น ตัวจัดการแพ็ก เกจข้ามแพลตฟอร์ม สำหรับ ระบบ ที่คล้าย Unix และเป็น ภาษาฟังก์ชัน สำหรับการกำหนดค่าระบบเหล่านั้น ซึ่งคิดค้นขึ้นในปี พ.ศ. 2546 [ 7 ] โดย Eelco Dolstra
เข้าใกล้
ตัวจัดการแพ็กเกจ Nix ใช้โมเดลที่แพ็กเกจซอฟต์แวร์แต่ละรายการจะถูกติดตั้งลงในไดเร็กทอรีที่ไม่ซ้ำกันซึ่งมีเนื้อหาที่ไม่สามารถเปลี่ยนแปลงได้ ชื่อไดเร็กทอรีเหล่านี้สอดคล้องกับ แฮชเข้ารหัสลับ ที่คำนึงถึงการพึ่งพาของแพ็กเกจทั้งหมด รวมถึงแพ็กเกจอื่นๆ ที่จัดการโดย Nix...
การดำเนินการ
สูตรแพ็กเกจสำหรับ Nix เขียนขึ้นใน "ภาษา Nix" ที่สร้างขึ้นโดยเฉพาะ ซึ่งเป็นภาษาการเขียนโปรแกรม แบบประกาศ ฟังก์ชันล้วน ประเมินแบบเลซี่ และกำหนด ประเภทแบบไดนามิก [ 9 ] คุณลักษณะเด่นของภาษา Nix ได้แก่ สตริงที่มี "บริบท" การแทรกสตริง เส้นทางระบบไฟล์ระดับเฟิร์สคลาส...
นิคแพ็คส์
Nixpkgs คือคลังแพ็กเกจที่สร้างขึ้นบนตัวจัดการแพ็กเกจ Nix ตามข้อมูลจาก Repology ณ เดือนมกราคม 2025 มีแพ็กเกจมากกว่า 122,000 รายการ [ 13 ] และมีจำนวนแพ็กเกจที่ทันสมัยมากกว่าคลังแพ็กเกจอื่นๆ [ 14 ] ระบบปฏิบัติการที่ Nixpkgs รองรับส่วนใหญ่คือ Linux และ Darwin...