กลับไปหน้าบทความ

อ่าน 12 นาที

จีนู กุยซ์

GNU Guix ( / ɡ iː k s / ; [ 3 ] คำผสม ของ Guile และ Nix [ 4 ] ) เป็น ตัวจัดการแพ็กเกจ แบบข้ามแพลตฟอร์ม ที่ใช้การเขียนโปรแกรมเชิงฟังก์ชัน และเป็นเครื่องมือในการสร้างและจัดการ...

จีนู กุยซ์

จีนู กุยซ์
ผู้เขียนต้นฉบับลูโดวิค กูร์เตส
ปล่อย18 มกราคม 2556 ( 18 มกราคม 2013 )
เวอร์ชันเสถียร
1.5.0 [ 1 ] [ 2 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 22 มกราคม 2026 ( 22 มกราคม 2569 )
เขียนเป็นGuile Scheme , C++ ( แกนหลัก Nix )
แพลตฟอร์มx86-64 , IA-32
มีจำหน่ายในภาษาอังกฤษ
ใบอนุญาตจีพีแอลวี3+
เว็บไซต์guix.gnu.org/en
ที่เก็บข้อมูล
  • codeberg.org/guix/guix

GNU Guix ( / ɡ k s / ; [ 3 ]คำผสมของ Guile และ Nix [ 4 ] ) เป็นตัวจัดการแพ็กเกจแบบข้ามแพลตฟอร์มที่ใช้การเขียนโปรแกรมเชิงฟังก์ชันและเป็นเครื่องมือในการสร้างและจัดการระบบปฏิบัติการแบบ Unix ซึ่งได้รับแรงบันดาลใจจาก ตัวจัดการแพ็กเกจ Nixการกำหนดค่าและสูตรแพ็กเกจเขียนด้วยGuile Scheme GNU Guix เป็นตัวจัดการแพ็กเกจเริ่มต้นของการแจกจ่ายGNU Guix System [ 5 ]

Guix (เช่นเดียวกับ Nix) แตกต่างจากตัวจัดการแพ็กเกจ แบบดั้งเดิม โดยใช้ โมเดลการปรับใช้การเขียนโปรแกรมเชิงฟังก์ชันล้วนๆ โดยซอฟต์แวร์จะถูกติดตั้งลงในไดเร็กทอรีที่ไม่ซ้ำกันซึ่งสร้างขึ้นผ่าน ฟังก์ชันแฮชเข้ารหัสลับการพึ่งพาของซอฟต์แวร์แต่ละตัวจะรวมอยู่ในอินพุตของแฮชแต่ละตัว[ 6 ] [ 7 ]ซึ่งช่วยแก้ปัญหาเรื่อง" นรกแห่งการพึ่งพา" [ 8 ]ทำให้ซอฟต์แวร์เวอร์ชันต่างๆ สามารถอยู่ร่วมกันได้ ซึ่งทำให้แพ็กเกจพกพาได้และทำซ้ำได้ การดำเนินการคำนวณทางวิทยาศาสตร์ในระบบ Guix ได้รับการเสนอให้เป็นแนวทางแก้ไข วิกฤตการจำลองแบบที่น่าสนใจ[ 9 ] [ 10 ]

การพัฒนา GNU Guix เกี่ยวพันกับGNU Guix System [ 11 ]ซึ่ง เป็น ระบบปฏิบัติการแบบติดตั้งที่ใช้ เคอร์เนล Linux-libreและระบบinit ของ GNU Shepherd [ 12 ] [ 13 ] [ 14 ]

คุณลักษณะทั่วไป

แพ็กเกจ Guix ถูกกำหนดผ่าน API ของ Guile Schemeที่ออกแบบมาเพื่อการจัดการแพ็กเกจ การพึ่งพาจะถูกติดตามโดยตรงในภาษานี้ผ่านค่าพิเศษที่เรียกว่า "derivations" ซึ่งจะถูกประเมินโดย Guix daemon แบบไม่ทันที Guix จะติดตามการอ้างอิงเหล่านี้โดยอัตโนมัติ เพื่อให้แพ็กเกจที่ติดตั้งแล้วสามารถถูกเก็บกวาดโดยระบบจัดการหน่วยความจำได้เมื่อไม่มีแพ็กเกจอื่นพึ่งพาแพ็กเกจเหล่านั้น อย่างไรก็ตาม การอัปเกรดทั้งหมดใน Guix รับประกันว่าเป็นแบบอะตอมิกและสามารถย้อนกลับได้

คุณสมบัติ การย้อนกลับของ Guix ได้รับการสืบทอดมาจากการออกแบบของNixและแทบจะไม่พบในตัวจัดการแพ็กเกจอื่นๆ เนื่องจากต้องใช้วิธีการทำงานของระบบที่ไม่เป็นไปตามแบบแผน (ดูMicroOS ) อย่างไรก็ตาม ตัวจัดการแพ็กเกจ Guix เช่นเดียวกับNix [ 15 ] สามารถใช้งานได้บนระบบปฏิบัติการหลายระบบ เช่นDebianและParabola [ 16 ] [ 17 ]ซึ่งช่วยให้ผู้ใช้หลายคนสามารถติดตั้งซอฟต์แวร์บนระบบเดียวกันได้อย่างปลอดภัยโดยไม่ต้องมีสิทธิ์ผู้ดูแล ระบบ

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

ร้านค้า

ด้วยการออกแบบที่สืบทอดมาจาก Nix เนื้อหาส่วนใหญ่ของตัวจัดการแพ็กเกจจึงถูกเก็บไว้ในไดเร็กทอรี/gnu/storeซึ่งมีเพียง Guix daemon เท่านั้น ที่มีสิทธิ์ในการเขียน วิธีการนี้ทำได้โดยใช้bind mount แบบพิเศษ โดยที่ Store เป็นระบบไฟล์จะถูก mount ในโหมดอ่านอย่างเดียวป้องกันการแทรกแซงแม้กระทั่งจากผู้ใช้ root ในขณะที่ Guix daemon จะทำการ remount Store ในโหมดอ่าน/เขียนได้ใน namespace ส่วนตัวของมันเอง Guix จะสื่อสารกับ daemon นี้เพื่อสร้างสิ่งต่างๆ หรือดึงข้อมูลทดแทน ซึ่งทั้งหมดจะถูกเก็บไว้ใน store ผู้ใช้ไม่ควรแตะต้อง store ด้วยตนเองโดยการ remount ในโหมดเขียนได้ เนื่องจากจะทำให้จุดประสงค์ทั้งหมดของ store เสียไป

การเก็บขยะ

Guix - เช่นเดียวกับ Nix - มีระบบเก็บขยะในตัวเพื่อช่วยกำจัดรายการสินค้าที่ตายแล้ว และเก็บ รายการที่ยังมีชีวิตอยู่[ 18 ]

คำจำกัดความของแพ็กเกจ

นี่คือตัวอย่างการกำหนดแพ็กเกจสำหรับ hello-package:

( use-modules ( แพ็คเกจguix ) ( ดาวน์โหลดguix ) ( gnu ระบบสร้างguix ) ( ใบอนุญาตguix ))( define-public hello ( package ( name "hello" ) ( version "2.10" ) ( source ( origin ( method url-fetch ) ( uri ( string-append "mirror://gnu/hello/hello-" version ".tar.gz" )) ( sha256 ( base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i" )))) ( build-system gnu-build-system ) ( synopsis "Hello, GNU world: An example GNU package" ) ( description "GNU Hello prints the message \" Hello, world! \" and then exits. It serves as a example of standard GNU coding practices. As such, it supports command-line arguments, multiple languages, and so on." ) ( home-page "https://www.gnu.org/software/hello/" ) ( license gpl3+ )))

โปรแกรมนี้เขียนขึ้นโดยใช้ Guile สามารถตรวจสอบguix edit helloและแก้ไขสูตรการสร้างแพ็กเกจได้ง่ายๆ (เช่น การรันคำสั่ง `given`) ใน Guix ทำให้ระบบมีความโปร่งใสและแก้ไขได้ง่ายมาก

การอัปเกรดธุรกรรม

ด้วยการออกแบบที่สืบทอดมาจาก Nix การจัดการรายการในสโตร์ทั้งหมดจึงเป็นอิสระจากกัน และไดเร็กทอรีของสโตร์จะเริ่มต้นด้วยแฮชที่เข้ารหัสแบบ base32 ของซอร์สโค้ดของการสร้างพร้อมกับอินพุต

โปรไฟล์

แพ็กเกจ Guix ใช้โปรไฟล์รุ่นต่างๆ ซึ่งเป็นชุดของลิงก์สัญลักษณ์ (หรือที่เรียกว่า "symlink") ไปยังรายการจัดเก็บเฉพาะต่างๆ ที่ประกอบกันเป็นสิ่งที่ผู้ใช้ได้ติดตั้งไว้ในโปรไฟล์ ทุกครั้งที่มีการติดตั้งหรือลบแพ็กเกจ จะมีการสร้างโปรไฟล์รุ่นใหม่ขึ้น ตัวอย่างเช่น โปรไฟล์ของผู้ใช้ที่ติดตั้งเฉพาะ GNU Hello จะมีลิงก์ไปยังรายการจัดเก็บที่เก็บเวอร์ชันของ hello ที่ติดตั้งไว้กับ Guix ที่ใช้งานอยู่ในปัจจุบัน สำหรับเวอร์ชันc087a90e06d7b9451f802323e24deb1862a21e0fของ Guix รายการนี้จะตรงกับรายการ: /gnu/store/md2plii4g5sk66wg9cgwc964l3xwhrm9-hello-2.10(สร้างจากสูตรข้างต้น)

นอกจากลิงก์สัญลักษณ์แล้ว โปรไฟล์แต่ละอันที่ Guix สร้างขึ้นยังประกอบด้วยส่วนรวมของคู่มือข้อมูลหน้าคู่มือการใช้งานไอคอนฟอนต์ ฯลฯ เพื่อให้ผู้ใช้สามารถเรียกดูเอกสารและเข้าถึงไอคอนและฟอนต์ทั้งหมดที่ติดตั้งไว้ได้ ลิงก์สัญลักษณ์เริ่มต้นสำหรับการสร้างโปรไฟล์จะถูกจัดเก็บไว้ภายใต้/var/guix.

โปรไฟล์ผู้ใช้หลายโปรไฟล์

ผู้ใช้สามารถสร้างโปรไฟล์ได้ไม่จำกัดจำนวนโดยการเรียกใช้คำสั่ง จากนั้นระบบจะสร้างไดเร็กทอรีใหม่ที่มีชื่อโปรไฟล์และลิงก์สัญลักษณ์สำหรับการสร้างโปรไฟล์ในไดเร็กทอรีปัจจุบัน guix package -p PROFILE-NAME COMMAND

ย้อนกลับ

แพ็คเกจ Guix ช่วยให้สามารถย้อนกลับไปยังโปรไฟล์รุ่นก่อนหน้าได้ทันทีโดยการเปลี่ยนลิงก์สัญลักษณ์ไปยังโปรไฟล์รุ่นก่อนหน้า[ 19 ]โปรไฟล์จะถูกจัดเก็บไว้ในสโตร์ด้วย เช่น รายการนี้เป็นโปรไฟล์ที่มี hello ด้านบน: /gnu/store/b4wipjlsapvnijmbawl7sh76087vpl4n-profile (สร้างและเปิดใช้งานเมื่อรัน) guix install hello

สภาพแวดล้อมเชลล์

Guix shell ช่วยให้ผู้ใช้สามารถเข้าสู่สภาพแวดล้อมที่มีแพ็กเกจที่จำเป็นทั้งหมดสำหรับการพัฒนาซอฟต์แวร์ได้อย่างง่ายดาย โดยไม่ต้องทำให้โปรไฟล์เริ่มต้นของผู้ใช้เต็มไปด้วยการพึ่งพาสำหรับหลายโครงการ[ 20 ]

ตัวอย่างเช่น การรันคำสั่งนี้จะเข้าสู่สภาพแวดล้อมชั่วคราวที่มีทุกอย่างที่จำเป็นสำหรับการคอมไพล์helloบน Guix (เช่นGNU Compiler Collection (GCC), Guileเป็นต้น) guix shell --development hello

หากไม่มี แฟล็ก จะมีการติดตั้งเฉพาะแพ็กเกจ hello เท่านั้น และจะไม่ติดตั้งแพ็กเกจที่จำเป็นในการสร้าง ซึ่งจะแทนที่คำสั่งที่ติดตั้งแพ็กเกจที่จำเป็นโดยค่าเริ่มต้น เนื่องจากถือว่าการติดตั้งแพ็กเกจที่ระบุโดยค่าเริ่มต้นจะใช้งานง่ายกว่า และจะติดตั้งเฉพาะแพ็กเกจที่จำเป็นสำหรับการพัฒนาโดยใช้แฟล็กเท่านั้น[ 21 ]--developmentguix environment

สภาพแวดล้อมการพัฒนาอย่างต่อเนื่อง

หากผู้ใช้ต้องการสภาพแวดล้อมที่มีรูทแบบถาวรซึ่งจะไม่ถูกเก็บกวาดในรอบการทำงานครั้งถัดไปของตัวเก็บกวาดขยะของ Guix พวกเขาสามารถสร้างรูทได้ ตัวอย่างเช่น การรันคำสั่ง จะเข้าสู่สภาพแวดล้อมที่มีทุกสิ่งที่จำเป็นสำหรับการคอมไพล์ Guix อยู่และได้รับการลงทะเบียนเป็นรูทในไดเร็กทอรีปัจจุบัน (โดยการสร้างลิงก์สัญลักษณ์ไปยังรายการในที่เก็บข้อมูล) guix shell --root=hello-root --development hello

หีบห่อ

Guix pack ช่วยให้ผู้ใช้สามารถรวมรายการจัดเก็บเข้าด้วยกันและส่งออกเป็นอิมเมจไบนารีDocker , tarball ที่สามารถย้ายตำแหน่งได้ , ไฟล์แพ็คเกจ Debian , ไฟล์แพ็คเกจ RPM , AppImageหรือไบนารีSquashFS ได้ [ 22 ] [ 23 ] [ 24 ]

กราฟ

คุณสมบัติกราฟ Guix ช่วยให้ผู้ใช้สามารถดูกราฟต่างๆ ของแพ็กเกจและการพึ่งพาของแพ็กเกจเหล่านั้นได้[ 25 ]

ช่องทางของบุคคลที่สาม

Guix อนุญาตให้ผู้ใช้ระบุช่องทางเพิ่มเติมสำหรับคำจำกัดความของแพ็กเกจ[ 26 ]

คุณสมบัตินี้ยังสามารถใช้เพื่อติดตั้งซอฟต์แวร์และเฟิร์มแวร์ที่ไม่ใช่ซอฟต์แวร์เสรีที่ไม่สามารถบรรจุลงในโปรเจกต์หลักได้[ 27 ] [ 28 ]

ระบบปฏิบัติการ GNU Guix

ระบบ GNU Guix
ระบบ GNU Guix ที่ใช้งานXfce , GNU IceCatและGNU Emacs
นักพัฒนาโครงการ GNU [ 29 ] [ 30 ]
ตระกูลระบบปฏิบัติการเครื่องลิสป์ที่คล้ายยูนิก
สถานะการทำงานปัจจุบัน[ 31 ]
แบบจำลองแหล่งที่มาซอฟต์แวร์ฟรี , FSDG
รุ่นล่าสุด1.5.0 [ 32 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / ()
ที่เก็บข้อมูล
  • codeberg.org/guix/guix
กลุ่มเป้าหมายทางการตลาดเดสก์ท็อป
ตัวจัดการแพ็กเกจจีนู กุยซ์
แพลตฟอร์มที่รองรับx86-64 , i686 , AArch64 , armv7 , PowerPC64le
ประเภทเคอร์เนลโมโนลิธ: Linux-libre (ใช้งานได้แล้ว) ไมโครเคอร์เนล: GNU Hurd (อยู่ระหว่างการพัฒนา)
ดินแดนผู้ใช้จีเอ็นยู
ใบอนุญาตจีพีแอล
เว็บไซต์อย่างเป็นทางการguix.gnu.org

GNU Guix SystemหรือGuix System [ 33 ] [ 34 ] (เดิมชื่อGuixSD [ 35 ] ) เป็นระบบปฏิบัติการ Linuxแบบrolling release ฟรี และโอเพนซอร์ส ที่สร้างขึ้นบน Guix คล้ายกับที่NixOSสร้างขึ้นบนNix [ 36 ] [ 37 ] ช่วยให้สามารถกำหนดค่าระบบปฏิบัติการด้วยการเขียนโปรแกรมแบบประกาศ[ 38 ]และอนุญาตให้อัปเกรดระบบที่ผู้ใช้สามารถย้อนกลับได้ [ 39 ] ใช้ระบบ init ของ GNU Shepherd [ 40 ] [ 41 ]และเคอร์เนล Linux -libre โดย กำลังพัฒนาเคอร์เนลGNU Hurdเพื่อรองรับ[ 42 ]เมื่อวันที่ 3 กุมภาพันธ์ 2015 มูลนิธิซอฟต์แวร์เสรีได้เพิ่มระบบปฏิบัติการนี้ลงในรายการระบบปฏิบัติการ Linux ฟรีที่ได้รับการรับรอง[ 43 ]

การสนับสนุนด้านสถาปัตยกรรม

การสนับสนุนสถาปัตยกรรม หน่วยประมวลผลกลาง (CPU) ประกอบด้วย: [ 44 ]

บริการระบบ

บริการระบบ ซึ่งกำหนดไว้ใน Guile Scheme [ 48 ]ช่วยให้ผู้ใช้สามารถกำหนดค่าdaemonและบริการพื้นหลังได้อย่างชัดเจน และระบุการกำหนดค่าต่างๆ ซึ่งช่วยให้ผู้ใช้สามารถกำหนดค่าระบบปฏิบัติการทั้งหมด (เช่น มีพร็อกซีTor เซิร์ฟเวอร์ ssh และเว็บเซิร์ฟเวอร์ที่ให้บริการ guix-web ผ่านnginxบนพอร์ตเฉพาะเมื่อบูตเครื่อง ) ภายในไฟล์การกำหนดค่าเดียวหรือการกำหนดค่าแบบโมดูลาร์ ได้พวกเขาสามารถ: [ 49 ]

  • สร้างไฟล์ในระบบไฟล์ (จำเป็นสำหรับบางแอปพลิเคชัน เช่น ไฟล์ใน/etc )
  • เรียกใช้โค้ดใดๆ เพื่อตั้งค่าเดมอน
  • สร้างบัญชีผู้ใช้และกลุ่มเฉพาะ (เช่น ผู้ใช้ฐานข้อมูลสำหรับPostgreSQL )

ระบบเริ่มต้น GNU Shepherd

ระบบ GNU Guix ใช้GNU Daemon Shepherdซึ่งเดิมเรียกว่าDaemon managing Daemons (dmd) เป็น ระบบ เริ่มต้น (init system ) ซึ่งได้รับการพัฒนาควบคู่ไปกับ Guix และเขียนและกำหนดค่าได้ในGuile [ 50 ] ระบบ นี้ให้บริการฟังก์ชันการทำงานในพื้นที่ผู้ใช้แบบอะซิงโครนัสในรูปแบบของบริการ ซึ่งภายใต้ Shepherd บริการเหล่านี้คือฟังก์ชันทั่วไปและประเภทข้อมูลวัตถุ ที่ใช้ในการขยายระบบปฏิบัติการพื้นฐานในลักษณะที่กำหนดไว้ แตกต่างจากsystemd ตรงที่ กระบวนการ Shepherd ในพื้นที่ผู้ใช้จะทำงานในฐานะผู้ใช้ หัวใจสำคัญของแบบ จำลองการเริ่มต้น ในพื้นที่ผู้ใช้ของ Shepherdคือแนวคิดของการขยาย (extension)ซึ่งเป็นรูปแบบของการประกอบ (composability)ที่บริการได้รับการออกแบบให้ซ้อนทับกับบริการอื่นๆ เสริมด้วยพฤติกรรมที่ซับซ้อนหรือเฉพาะทางมากขึ้นตามต้องการ[ 51 ]สิ่งนี้แสดงถึงความสัมพันธ์การพึ่งพาตามอินสแตนซ์ที่พบในระบบ init สมัยใหม่หลายระบบ[ 52 ]ทำให้ระบบเป็นแบบโมดูลาร์ แต่ยังอนุญาตให้บริการต่างๆ โต้ตอบกับบริการอื่นๆ ในรูปแบบต่างๆ ได้ เช่น บริการที่ขยายบริการอื่นสองบริการโดยต้องการเพียงบริการเดียวที่มีอยู่ แต่สามารถขยายบริการที่สองได้อย่างง่ายดายหากมีการสร้างอินสแตนซ์ในภายหลังโดยไม่จำเป็นต้องมีการกำหนดค่าใหม่หรือการตั้งค่าเพิ่มเติมใดๆ

นอกจากนี้ Shepherd ยังให้บริการเสมือนที่อนุญาตให้ส่งแบบไดนามิกเหนือคลาสของวัตถุบริการที่เกี่ยวข้อง เช่น วัตถุทั้งหมดที่สร้างอินสแตนซ์ตัวแทนการถ่ายโอนอีเมล (MTA) สำหรับระบบ[ 53 ]ระบบที่ควบคุมผ่านเดมอน Shepherd สามารถแสดงพื้นที่ผู้ใช้เป็นกราฟแบบไม่มีวงจรที่มีทิศทางโดยมี "บริการระบบ" ซึ่งรับผิดชอบขั้นตอนแรก ๆ ของการบูตระบบและการเริ่มต้นระบบเป็นราก และบริการที่เริ่มต้นในภายหลังทั้งหมดเป็นส่วนขยายของฟังก์ชันการทำงานของบริการระบบ ไม่ว่าจะโดยตรงหรือโดยอ้อมผ่านบริการอื่น ๆ[ 51 ] [ 54 ]

ระบบนี้มีจุดประสงค์เพื่อให้ผู้ดูแลระบบ สามารถตั้งโปรแกรมได้สูง โดยใช้ Guile Scheme แต่ยังสามารถใช้จัดการโปรไฟล์ของผู้ใช้แต่ละรายสำหรับเดมอนและบริการที่ไม่มีสิทธิ์พิเศษได้อีกด้วย[ 55 ] บริการและการกำหนดค่าจะถูกจัดเก็บอย่างสม่ำเสมอในรูปแบบโค้ด Schemeเชิงวัตถุและในขณะที่ชุดบริการหลักมีให้พร้อมกับระบบ GNU Guix พื้นฐาน[ 56 ]บริการใหม่ ๆ สามารถประกาศได้อย่างยืดหยุ่น และผ่านระบบวัตถุ ของ Guile ที่เรียก ว่าGOOPSบริการที่มีอยู่สามารถกำหนดใหม่ได้ตามดุลยพินิจของผู้ใช้โดยการขอให้ Shepherd เขียนบริการใหม่แบบไดนามิกในลักษณะที่กำหนดเมื่อมีการสร้างอินสแตนซ์[ 57 ] [ 58 ]

GNU Shepherd เดิมทีได้รับการออกแบบให้ทำงานร่วมกับGNU Hurdและต่อมาได้รับการนำไปใช้โดย GNU Guix System [ 59 ]

ย้อนกลับ

เช่นเดียวกับฟีเจอร์ย้อนกลับของNixหากการอัปเดตระบบทำให้ระบบของผู้ใช้เสียหาย ผู้ใช้สามารถย้อนกลับแพ็กเกจแต่ละรายการรวมถึงสถานะระบบทั้งหมดได้ง่ายๆ ด้วยคำสั่งเดียว[ 60guix package --roll-back ] ซึ่งหมายความ ว่าช่องทางเสถียรแบบที่พบได้ทั่วไปในระบบปฏิบัติการ Linux อื่นๆ ไม่จำเป็นอีกต่อไปสำหรับผู้ใช้ที่ยินดีรายงานข้อบกพร่องและรอสักครู่เมื่อพยายามอัปเดตผ่านguix pull สิ่งนี้สำเร็จได้ด้วยการผสมผสานระหว่าง ตัวจัดการแพ็กเกจแบบฟังก์ชันของ Guix ซึ่งถือว่าแต่ละแพ็กเกจและการกำหนดค่าระบบเป็นเอนทิตีที่ไม่เปลี่ยนแปลงและทำซ้ำได้[ 61 ]และระบบรุ่นที่รักษาประวัติการกำหนดค่าระบบเป็น "รุ่น" รุ่นเหล่านี้จะถูกจัดเก็บเป็นโปรไฟล์แยกต่างหาก ซึ่งช่วยให้ผู้ใช้สามารถย้อนกลับไปยังการกำหนดค่าก่อนหน้าใดๆ ได้[ 62 ]และสามารถแสดงรุ่นเหล่านี้ได้guix package --list-generationsด้วย

แผนกต้อนรับ

Jesse Smith จากDistroWatch Weekly ได้รีวิว GNU Guix System 0.15.0 (ซึ่งในขณะนั้นมีชื่อว่า GuixSD) และกล่าวว่า "GuixSD มีตัวจัดการแพ็กเกจที่ฉันชอบ" แต่วิจารณ์การรองรับฮาร์ดแวร์ที่จำกัดและเอกสารประกอบที่จำกัด[ 63 ]ตั้งแต่นั้นมา เอกสารประกอบได้รับการขยายและปรับปรุงด้วยวิดีโอ[ 64 ]และตำราอาหาร[ 65 ]ในหกภาษาพร้อมบทช่วยสอน คู่มือวิธีการใช้งาน และตัวอย่าง

ขั้นตอนการทำงานทางวิทยาศาสตร์ที่สามารถทำซ้ำได้

หนึ่งในด้านที่ Guix มุ่งหวังที่จะปรับปรุงเหนือตัวจัดการแพ็กเกจแบบดั้งเดิมคือในด้านเวิร์กโฟลว์ทางวิทยาศาสตร์ที่สามารถทำซ้ำได้ โดยเฉพาะอย่างยิ่งในด้าน การ คำนวณประสิทธิภาพสูง[ 66 ]ด้วยวิธีนี้ Guix จะนำเสนอวิธีการแบ่งปันสภาพแวดล้อมการคำนวณที่สามารถทำซ้ำได้ กล่าวคือ Guix ที่ใช้สูตรสำหรับซอฟต์แวร์และสภาพแวดล้อมทางวิทยาศาสตร์ที่กำหนดจะให้ข้อมูลทั้งหมดที่จำเป็นในการอธิบายแผนผังการพึ่งพาเพื่อสร้างและเรียกใช้ซอฟต์แวร์นั้นได้อย่างเฉพาะเจาะจง[ 67 ]ตัวอย่างเช่น การทำเช่นนี้ไม่ใช่เรื่องง่ายในระบบผสมอื่นๆ ที่มีตัวจัดการแพ็กเกจหลายตัวสำหรับแต่ละภาษาการเขียนโปรแกรม อย่างไรก็ตาม นี่เป็นเพียงเงื่อนไขที่จำเป็นแต่ไม่เพียงพอสำหรับเวิร์กโฟลว์ทางวิทยาศาสตร์ที่จะทำซ้ำได้ เนื่องจากจำเป็นต้องรวมการรวบรวมและการประมวลผลข้อมูลเข้าไว้ในเวิร์กโฟลว์ หากเพิ่มสิ่งนี้เป็นส่วนหนึ่งของสูตร Guix ก็จะสามารถตอบสนองความต้องการการทำซ้ำที่เข้มงวดได้

ประวัติศาสตร์

โครงการนี้เริ่มต้นในเดือนมิถุนายน พ.ศ. 2555 โดย Ludovic Courtès หนึ่งในแฮกเกอร์ GNU Guile [ 68 ]

โครงการGNUประกาศในเดือนพฤศจิกายน 2012 การเปิดตัว GNU Guix ครั้งแรก ซึ่งเป็นตัวจัดการแพ็กเกจเชิงฟังก์ชันที่ได้รับแรงบันดาลใจจากNix ซึ่งมี อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน ( API ) ของ Guile Schemeเป็นต้น[ 69 ]

เมื่อวันที่ 20 สิงหาคม พ.ศ. 2558 มีการประกาศว่า Guix ได้รับการพอร์ตไปยังGNU Hurdแล้ว[ 70 ]

การเผยแพร่

โครงการนี้ไม่มีกำหนดการวางจำหน่ายที่แน่นอน และจนถึงปัจจุบันได้มีการวางจำหน่ายประมาณทุก 6 เดือน

โครงการได้ย้ายจากGNU SavannahไปยังCodebergเมื่อวันที่ 25 พฤษภาคม 2025 [ 71 ]

ประวัติเวอร์ชัน

เวอร์ชั่น ประกาศ สถาปัตยกรรมที่รองรับ แพ็คเกจ
0.1 (อัลฟา) คูร์แตส, ลูโดวิช (18 มกราคม 2556). "GNU Guix 0.1 เปิดตัว (อัลฟา) "
  • ไอ686
  • x86-64
~150
0.2 (อัลฟา) คูร์แตส, ลูโดวิช (12 พฤษภาคม 2556). "GNU Guix 0.2 เปิดตัว (อัลฟา) "~400
0.3 Courtès, Ludovic (17 กรกฎาคม 2013). "GNU Guix 0.3 เปิดตัวแล้ว "~430
0.4 Courtès, Ludovic (27 ก.ย. 2556). "GNU Guix 0.4 เปิดตัวแล้ว "~490
0.5 Courtès, Ludovic (11 ธันวาคม 2013). "GNU Guix 0.5 เปิดตัวแล้ว "~600
0.6 Courtès, Ludovic (9 เมษายน 2014). "GNU Guix 0.6 เปิดตัวแล้ว "~691
0.7 Courtès, ลูโดวิช (25 กรกฎาคม 2014). "GNU Guix 0.7 เปิดตัวแล้ว "~825
0.8 Courtès, ลูโดวิช (18 พ.ย. 2014). "GNU Guix 0.8 เปิดตัวแล้ว "
  • ไอ686
  • x86-64
  • มิปส์64เอล
~987
0.8.1 Courtès, Ludovic (29 ม.ค. 2558). "GNU Guix 0.8.1 เปิดตัวแล้ว "
  • ไอ686
  • x86-64
  • มิปส์64เอล
  • อาร์มวี7
~1,151
0.8.2 คูร์แตส, ลูโดวิช (14 พฤษภาคม 2558). "GNU Guix 0.8.2 เปิดตัว" .~1,869
0.8.3 Courtès, Ludovic (22 ก.ค. 2558). "GNU Guix 0.8.3 เปิดตัวแล้ว "~2,048
0.9.0 Courtès, Ludovic (5 พฤศจิกายน 2558). "GNU Guix 0.9.0 เปิดตัวแล้ว "~2,591
0.10.0 Courtès, ลูโดวิช (29 มี.ค. 2016). "GNU Guix & GuixSD 0.10.0 เปิดตัวแล้ว "~3,230
0.11.0 Courtès, Ludovic (3 ส.ค. 2559). "GNU Guix & GuixSD 0.11.0 เปิดตัวแล้ว "~3,714
0.12.0 วูร์มุส, ริคาร์โด้ (21 ธันวาคม 2559). "GNU Guix & GuixSD 0.12.0 เปิดตัวแล้ว "~4,567
0.13.0 คูร์แตส, ลูโดวิช (22 พฤษภาคม 2017). "GNU Guix & GuixSD 0.13.0 เปิดตัวแล้ว "
  • ไอ686
  • x86-64
  • มิปส์64เอล
  • อาร์มวี7
  • อาร์ช64
~5,407
0.14.0 Courtès, ลูโดวิช (7 ธันวาคม 2017). "GNU Guix & GuixSD 0.14.0 เปิดตัวแล้ว "~6,618
0.15.0 Courtès, ลูโดวิช (6 ก.ค. 2018). "GNU Guix & GuixSD 0.15.0 เปิดตัวแล้ว "~7,857
0.16.0 Courtès, ลูโดวิช (6 ธันวาคม 2018). "GNU Guix & GuixSD 0.16.0 เปิดตัวแล้ว "~8,715
1.0.0 Courtès, ลูโดวิช (2 พฤษภาคม 2019). "GNU Guix 1.0.0 เปิดตัวแล้ว "~9,712
1.0.1 คูร์แตส, ลูโดวิช (19 พฤษภาคม 2019). "GNU Guix 1.0.1 เปิดตัว" .~9,771
1.1.0 คูร์แตส, ลูโดวิช (15 เมษายน 2020). "GNU Guix 1.1.0 เปิดตัว" .
  • ไอ686
  • x86-64
  • อาร์มวี7
  • อาร์ช64
~13,161
1.2.0 คูร์แตส, ลูโดวิช (23 พฤศจิกายน 2020). "GNU Guix 1.2.0 เปิดตัว" .~15,333
1.3.0 คูร์แตส, ลูโดวิช (11 พฤษภาคม 2021). "GNU Guix 1.3.0 เปิดตัวแล้ว "
  • ไอ686
  • x86-64
  • พาวเวอร์พีซี64เล
  • อาร์มวี7
  • อาร์ช64
~17,262
1.4.0 คูร์แตส, ลูโดวิช (19 ธันวาคม 2565). "GNU Guix 1.4.0 เปิดตัวแล้ว "
  • ไอ686
  • x86-64
  • พาวเวอร์พีซี64เล
  • อาร์มวี7
  • อาร์ช64
~22,000
1.5.0 คูร์แตส, ลูโดวิช (23 มกราคม 2569). "GNU Guix 1.5.0 เปิดตัวแล้ว "
  • ไอ686
  • x86-64
  • พาวเวอร์พีซี64เล
  • อาร์มวี7
  • อาร์ช64
  • ริสซีวี64
~34,000

ดูเพิ่มเติม

  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
  • ระบบ GNU Guixที่DistroWatch
  • รายชื่อแพ็กเกจ Guix
  • guixบนCodeberg
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=GNU_Guix&oldid=1352986822 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ จีนู กุยซ์

GNU Guix ( / ɡ iː k s / ; [ 3 ] คำผสม ของ Guile และ Nix [ 4 ] ) เป็น ตัวจัดการแพ็กเกจ แบบข้ามแพลตฟอร์ม ที่ใช้การเขียนโปรแกรมเชิงฟังก์ชัน และเป็นเครื่องมือในการสร้างและจัดการ...

คุณลักษณะทั่วไป

แพ็กเกจ Guix ถูกกำหนดผ่าน API ของ Guile Scheme ที่ออกแบบมาเพื่อการจัดการแพ็กเกจ การพึ่งพาจะถูกติดตามโดยตรงในภาษานี้ผ่านค่าพิเศษที่เรียกว่า "derivations" ซึ่งจะถูกประเมินโดย Guix daemon แบบไม่ทันที Guix จะติดตามการอ้างอิงเหล่านี้โดยอัตโนมัติ...

ร้านค้า

ด้วยการออกแบบที่สืบทอดมาจาก Nix เนื้อหาส่วนใหญ่ของตัวจัดการแพ็กเกจจึงถูกเก็บไว้ในไดเร็กทอรี /gnu/store ซึ่งมีเพียง Guix daemon เท่านั้น ที่มีสิทธิ์ในการเขียน วิธีการนี้ทำได้โดยใช้ bind mount แบบพิเศษ โดยที่ Store เป็นระบบไฟล์จะถูก mount ใน โหมดอ่านอย่างเดียว...

การเก็บขยะ

Guix - เช่นเดียวกับ Nix - มีระบบเก็บขยะในตัวเพื่อช่วยกำจัดรายการสินค้า ที่ตายแล้ว และเก็บ รายการที่ ยังมีชีวิตอยู่ [ 18 ]