ค้นหาเว็บไซต์

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 เพิ่มเติม จนกว่าจะถึงตอนนั้น ให้เชื่อมต่ออยู่เสมอ