GNU Guix
| Tác giả gốc | Ludovic Courtès |
|---|---|
| Phát hành lần đầu | 18 tháng 1 năm 2013 |
| Phiên bản ổn định | 1.5.0
/ 22 tháng 1 năm 2026 |
| Kho mã nguồn | https://codeberg.org/guix/guix |
| Viết bằng | Guile Scheme, C++ |
| Nền tảng | x86-64, IA-32, ARM64 |
| Có hiệu lực trong | Tiếng Anh |
| Giấy phép | Giấy phép Công cộng GNU GPLv3+ |
| Website | https://guix.gnu.org |
GNU Guix là một trình quản lý gói theo hướng lập trình hàm và là một công cụ để tạo và quản lý các hệ điều hành tương tự Unix. Dự án lấy cảm hứng từ trình quản lý gói Nix. Các tùy chỉnh và các gói đều sử dụng ngôn ngữ Guile. GNU Guix là trình quản lý gói mặc định của hệ điều hành GNU Guix System.[1]
Khác với các trình quản lý gói phổ thông, Guix (giống như Nix) dùng mô hình phát triển theo hướng lập trình hàm thuần túy. Mỗi phần được xếp vào các thư mục riêng biệt được tạo thông qua hàm băm mật mã. Tất cả các gói phụ thuộc của từng phần mềm đều được thêm vào đầu vào của từng băm. Việc này nhằm giải quyết vấn đề mâu thuẫn gói[2], cho phép nhiều phiên bản của một phần mềm có mặt trên cùng một hệ thống, giúp cho các gói có tính tái tạo và di động.
Sự phát triển của GNU Guix đi song hành với GNU Guix System[3], một hệ điều hành dùng nhân Linux-libre và trình init GNU Shepherd.[4]
Tính năng
[sửa | sửa mã nguồn]Chức năng quay ngược của Guix được kế thừa từ Nix và khá hiếm gặp trong các trình quản lý gói khác, bởi vì nó yêu cầu một hướng tiếp cận khác về cách thức hoạt động của một hệ thống máy tính. Tuy nhiên, trình quản lý gói Guix, cũng như Nix, có thể được sử dụng trên các bản phân phối khác nhau như Debian hay Arch Linux. Điều này cho phép nhiều người dùng tải phần mềm an toàn trên cùng một hệ thống mà không cần quyền quản trị.
So với các trình quản lý gói phổ thông, một tập gói Guix có thể tăng việc chiếm dụng tài nguyên rất đáng kể, vì thế đòi hỏi băng thông cao. Tuy nhiên, khi so sánh với các phần mềm như Docker, thì Guix gọn gàng hơn và đi theo các nguyên lý lập trình chặt chẽ hơn, như "don't repeat yourself" hay "single source of truth". Nếu người dùng muốn biên dịch tất cả mọi thứ từ đầu, thì cần đến một lượng bộ nhớ và băng thông lớn hơn nữa.
Định nghĩa gói
[sửa | sửa mã nguồn]Các gói được định nghĩa bằng mã Guile. Người dùng có thể kiểm tra hoặc chỉnh sửa các định nghĩa gói một cách dễ dàng (ví dụ như guix edit hello), điều này giúp cho hệ thống hoạt động một cách minh bạch và rất dễ tùy chỉnh.
Ví dụ cho gói:
(use-modules
(guix packages)
(guix download)
(guix build-system gnu)
(guix licenses))
(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 an 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+)))
Lịch sử
[sửa | sửa mã nguồn]Dự án bắt đầu vào tháng 6 năm 2012 bởi Ludovic Courtès, một trong những nhà phát triển ngôn ngữ Guile.[5]
Vào tháng 11 năm 2012, GNU thông báo ra mắt phiên bản đầu tiên của GNU Guix, một trình quản lý gói lấy cảm hứng từ Nix.[6]
Dự án đã chuyển từ dịch vụ lưu trữ mã nguồn GNU Savannah sang Codeberg vào ngày 25 tháng 5 năm 2025.[7]
Tham khảo
[sửa | sửa mã nguồn]- ↑ "Functional Package Management with Guix - Wikisource, the free online library". en.wikisource.org (bằng tiếng Anh). Truy cập ngày 8 tháng 10 năm 2026.
- ↑ "Nix fixes dependency hell on all Linux distributions". Linux.com (bằng tiếng Anh). ngày 22 tháng 12 năm 2008. Truy cập ngày 8 tháng 10 năm 2026.
- ↑ "gnu-system-discuss (thread)". lists.gnu.org. Truy cập ngày 8 tháng 10 năm 2026.
- ↑ "Guix: A New Package Manager & GNU Distribution". www.phoronix.com (bằng tiếng Anh). Truy cập ngày 8 tháng 10 năm 2026.
- ↑ Stallman, Richard (ngày 5 tháng 6 năm 2012). "A GNU Distribution" (Danh sách thư). gnu-system-discuss.
- ↑ Courtès, Ludovic (ngày 23 tháng 11 năm 2012). "Introducing GNU Guix" (Danh sách thư). gnu-system-discuss.
- ↑ "Migrating to Codeberg". GNU Guix. ngày 11 tháng 5 năm 2025. Truy cập ngày 12 tháng 6 năm 2025.