Nix - ตัวจัดการแพ็คเกจที่ใช้งานได้จริงสำหรับ Linux
Nix คือระบบการจัดการแพ็คเกจที่มีประสิทธิภาพและใช้งานได้จริง ออกแบบมาเพื่อการจัดการแพ็คเกจที่เชื่อถือได้และทำซ้ำได้ ซึ่งเผยแพร่ภายใต้เงื่อนไขของ GNU LGPLv2.1 เป็นระบบการจัดการแพ็กเกจหลักใน NixOS ซึ่งเป็นระบบปฏิบัติการ Linux ที่ไม่ค่อยมีคนรู้จัก
Nix เสนอการอัพเกรดและการย้อนกลับแบบอะตอมมิก การติดตั้งแพ็คเกจหลายเวอร์ชัน การจัดการแพ็คเกจที่มีผู้ใช้หลายคน และการตั้งค่าสภาพแวดล้อมการสร้างสำหรับแพ็คเกจได้อย่างง่ายดาย ไม่ว่านักพัฒนาจะใช้ภาษาการเขียนโปรแกรมและเครื่องมือใด
ภายใต้ Nix แพ็คเกจถูกสร้างขึ้นจากภาษาแพ็คเกจที่ใช้งานได้เรียกว่า “Nix expressions ” แนวทางการทำงานในการจัดการแพ็คเกจนี้รับประกันว่าการติดตั้งหรืออัพเกรดแพ็คเกจหนึ่งจะไม่ทำให้แพ็คเกจอื่นเสียหาย
Nix ยังมีการสนับสนุนผู้ใช้หลายคน ซึ่งหมายความว่าผู้ใช้ระบบปกติ (หรือไม่มีสิทธิพิเศษ) สามารถติดตั้งแพ็คเกจได้อย่างปลอดภัย และผู้ใช้แต่ละคนจะถูกระบุโดยโปรไฟล์ (ชุดของแพ็คเกจในร้านค้า Nix ที่ปรากฏใน PATH ของผู้ใช้)
ในกรณีที่ผู้ใช้รายหนึ่งติดตั้งแพ็คเกจ หากผู้ใช้รายอื่นพยายามติดตั้งแพ็คเกจเดียวกัน แพ็คเกจนั้นจะไม่ถูกสร้างขึ้นหรือดาวน์โหลดเป็นครั้งที่สอง
ปัจจุบันรองรับ Linux (i686, x86_64) และ Mac OS X (x86_64) อย่างไรก็ตาม มันค่อนข้างพกพาได้ คุณสามารถลองใช้บนแพลตฟอร์มส่วนใหญ่ที่รองรับเธรด POSIX และมีคอมไพเลอร์ C++11
ในบทความนี้ เราจะแสดงวิธีการติดตั้ง (ในโหมดผู้ใช้หลายคน) และใช้ตัวจัดการแพ็คเกจ Nix ใน Linux เราจะหารือเกี่ยวกับงานการจัดการแพ็คเกจพื้นฐานบางส่วนที่เกี่ยวข้องกับเครื่องมือที่ใช้กันทั่วไป
วิธีการติดตั้ง Nix Package Manager ใน Linux
เราจะติดตั้ง Nix เวอร์ชันล่าสุด (v2.1.3 ณ เวลาที่เขียน) ในโหมดผู้ใช้หลายคน โชคดีที่มีสคริปต์การติดตั้งที่เตรียมไว้ซึ่งคุณสามารถเรียกใช้จากเชลล์ของคุณในฐานะผู้ใช้ทั่วไปโดยใช้คำสั่ง curl ต่อไปนี้บนระบบของคุณ
sh <(curl https://nixos.org/nix/install) --daemon
การรันคำสั่งด้านบนจะดาวน์โหลด nix binary tarball ล่าสุด และคุณจะเข้าสู่หน้าจอการติดตั้ง nix แบบผู้ใช้หลายคนดังที่แสดงในภาพหน้าจอ
หากต้องการดูรายละเอียดสิ่งที่จะเกิดขึ้นระหว่างขั้นตอนการติดตั้ง ให้พิมพ์ y
แล้วกด Enter หากคุณพอใจและพร้อมที่จะดำเนินการต่อ ให้พิมพ์ y
แล้วกด Enter
สคริปต์จะเรียกใช้คำสั่ง sudo หลายครั้งตามต้องการ คุณต้องอนุญาตให้ใช้ sudo โดยตอบ y
และกด Enter
โปรแกรมติดตั้งจะทำการทดสอบเล็กน้อยและสร้างรายงานการกำหนดค่า Nix สร้างผู้ใช้บิลด์ระหว่าง ID ผู้ใช้ 30001 และ 30032 และกลุ่มที่มี ID กลุ่ม 30000. ป้อน y
เพื่อดำเนินการต่อเมื่อได้รับแจ้ง มันจะตั้งค่ากลุ่มบิลด์สำหรับผู้ใช้บิลด์ที่แตกต่างกัน สร้างโครงสร้างไดเร็กทอรีพื้นฐานของ Nix
มันจะแก้ไขไฟล์ /etc/bashrc (และ /etc/zshrc สำหรับ zsh) หากมีอยู่ โปรดทราบว่าขั้นแรกจะสำรองข้อมูลไฟล์ดังกล่าวด้วยนามสกุล .backup-before-nix และตัวติดตั้งจะสร้างไฟล์ /etc/profile.d/nix.sh ด้วย
โปรแกรมติดตั้งจะตั้งค่าบริการ nix-daemon และบริการซ็อกเก็ต nix-daemon โหลดหน่วย systemd สำหรับ nix-daemon และเริ่มบริการทั้งสองที่กล่าวมาข้างต้น
เมื่อการติดตั้งเสร็จสมบูรณ์ คุณจะต้องเปิดหน้าต่างเทอร์มินัลใหม่เพื่อเริ่มใช้งาน Nix หรือปิดและเปิดเชลล์ของคุณใหม่เพื่อใช้การเปลี่ยนแปลงล่าสุด จากนั้นแหล่งที่มาของไฟล์ /etc/profile.d/nix.sh (เนื่องจากไม่ใช่ไฟล์เริ่มต้นเชลล์ การเปิดเชลล์ใหม่จึงไม่ใช่แหล่งที่มา)
source /etc/profile.d/nix.sh
จากนั้น เรียกใช้คำสั่งต่อไปนี้เพื่อดาวน์โหลดบางเส้นทางจากเว็บไซต์โครงการอย่างเป็นทางการ ซึ่งจำเป็นสำหรับ Nix เพื่อดำเนินการ หลังจากดาวน์โหลดพาธทั้งหมดและคัดลอกไปยังตำแหน่งที่ถูกต้องแล้ว คุณจะเห็นสรุปประเภทการติดตั้งระบบและ nix ดังที่แสดงในภาพหน้าจอ
nix-shell -p nix-info --run "nix-info -m"
วิธีใช้ Nix Package Manager ใน Linux
ภายใต้ Nix การจัดการแพ็คเกจจะดำเนินการโดยยูทิลิตี nix-env ใช้เพื่อติดตั้ง อัปเกรด และลบ/ลบแพ็คเกจ และเพื่อสอบถามแพ็คเกจที่ติดตั้งหรือพร้อมสำหรับการติดตั้ง
แพ็คเกจทั้งหมดอยู่ในช่อง Nix ซึ่งเป็น URL ที่ชี้ไปยังพื้นที่เก็บข้อมูลที่ประกอบด้วยคอลเลกชันของนิพจน์ Nix และตัวชี้ไปยังแคชไบนารี
ช่องเริ่มต้นคือ Nixpkgs และรายการช่องที่สมัครรับข้อมูลจะถูกเก็บไว้ใน ~/.nix-channels คุณสามารถแสดงรายการได้โดยใช้คำสั่งต่อไปนี้ (ไม่มีเอาต์พุตหมายความว่าไม่มีช่อง) .
nix-channel --list
หากต้องการเพิ่มช่อง Nix ให้ใช้คำสั่งต่อไปนี้
nix-channel --add https://nixos.org/channels/nixpkgs-unstable
ก่อนที่คุณจะติดตั้งแพ็คเกจใด ๆ ให้เริ่มต้นด้วยการอัพเดตช่อง Nix ซึ่งคล้ายกับการเรียกใช้ การอัปเดต apt ภายใต้ตัวจัดการแพ็คเกจ APT
nix-channel --update
คุณสามารถสอบถามว่ามีแพ็คเกจใดบ้างสำหรับการติดตั้งโดยใช้คำสั่งต่อไปนี้
nix-env -qa
ในตัวอย่างนี้ เราจะติดตั้งเซิร์ฟเวอร์ Apache Tomcat โดยใช้คำสั่งก่อนหน้าร่วมกับ grep เพื่อค้นหาแพ็คเกจที่พร้อมสำหรับการติดตั้งดังที่แสดง
nix-env -qa | grep "apache-tomcat"
หากต้องการติดตั้งแพ็คเกจ ให้ใช้คำสั่งต่อไปนี้โดยระบุเวอร์ชันของแพ็คเกจ เช่น apache-tomcat-9.0.2
nix-env -i apache-tomcat-9.0.2
ในระบบโลคัล Nix จะจัดเก็บแพ็กเกจไว้ใน Nix store ซึ่งเป็นค่าเริ่มต้นของไดเร็กทอรี /nix/store โดยที่แต่ละแพ็กเกจจะมีไดเร็กทอรีย่อยเฉพาะของตัวเอง ตัวอย่างเช่น แพ็คเกจ apache-tomcat จะถูกเก็บไว้ใน:
/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2
ในพาธนี้ อักขระสุ่ม 95gmgnxlrcpkhlm00fa5ax8kvd6189py เป็นตัวระบุที่ไม่ซ้ำกันสำหรับแพ็คเกจที่คำนึงถึงการขึ้นต่อกันทั้งหมด
คุณสามารถแสดงรายการแพ็คเกจที่ติดตั้งด้วยคำสั่งต่อไปนี้
nix-env -q
หากต้องการอัปเกรดแพ็คเกจ apache-tomcat คุณสามารถใช้สวิตช์อัปเกรด -u
ตามที่แสดง
nix-env -u apache-tomcat
หากคุณต้องการลบ/ลบ apache-tomcat ให้ใช้แฟล็ก -e
ในที่นี้ แพ็คเกจจะไม่ถูกลบออกจากระบบทันที แต่จะแสดงผลว่าไม่ได้ใช้เท่านั้น สิ่งนี้มีประโยชน์เนื่องจากคุณต้องการทำการย้อนกลับ หรืออาจอยู่ในโปรไฟล์ของผู้ใช้รายอื่น
nix-env -e apache-tomcat
หลังจากลบแพ็คเกจแล้ว คุณสามารถรวบรวมขยะด้วยยูทิลิตี nix-collect-garbage
nix-collect-garbage
วิธีลบ Nix Package Manager ใน Linux
หากต้องการถอนการติดตั้ง Nix ให้ลบไฟล์ที่เกี่ยวข้องกับ nix ทั้งหมดพร้อมกัน
sudo rm -rf /etc/profile/nix.sh /etc/nix /nix ~root/.nix-profile ~root/.nix-defexpr ~root/.nix-channels ~/.nix-profile ~/.nix-defexpr ~/.nix-channels
บนระบบที่มี systemd ให้รันคำสั่งต่อไปนี้เพื่อหยุดบริการที่เกี่ยวข้องกับ nix ทั้งหมดและปิดการใช้งาน
sudo systemctl stop nix-daemon.socket
sudo systemctl stop nix-daemon.service
sudo systemctl disable nix-daemon.socket
sudo systemctl disable nix-daemon.service
sudo systemctl daemon-reload
นอกจากนี้ คุณต้องลบการอ้างอิงถึง Nix ในไฟล์เหล่านี้: /etc/profile, /etc/bashrc และ /etc/zshrc .
สำหรับข้อมูลเพิ่มเติม โปรดดูหน้าคู่มือของยูทิลิตี้ด้านบนที่เราได้ดู
man nix-channel
man nix-env
คุณสามารถค้นหาเอกสาร Nix Package Manager ได้จากเว็บไซต์โครงการ: https://nixos.org/nix/
สรุป
Nix เป็นตัวจัดการแพ็คเกจที่ใช้งานได้จริง ออกแบบมาเพื่อการจัดการแพ็คเกจที่เชื่อถือได้และทำซ้ำได้ มันมีแนวคิดที่น่าสนใจเกี่ยวกับการจัดการแพ็คเกจ ซึ่งแตกต่างอย่างมากจากเครื่องมือที่ใช้กันทั่วไปใน Linux เช่น YUM, APT และอื่นๆ อีกมากมาย
ในบทความนี้ เราได้แสดงวิธีการติดตั้ง nix ในโหมดผู้ใช้หลายคน และหารือเกี่ยวกับวิธีการจัดการแพ็คเกจด้วย Nix แบ่งปันความคิดของคุณกับเราหรือถามคำถามใด ๆ ผ่านแบบฟอร์มความคิดเห็นด้านล่าง สุดท้ายนี้ เราจะอธิบายคำสั่งการจัดการแพ็คเกจ Nix เพิ่มเติม จนกว่าจะถึงตอนนั้น ให้เชื่อมต่ออยู่เสมอ