Bước tới nội dung

GNU Guix

Bách khoa toàn thư mở Wikipedia
GNU Guix
Tác giả gốcLudovic Courtès
Phát hành lần đầu18 tháng 1 năm 2013; 13 năm trước (2013-01-18)
Phiên bản ổn định
1.5.0 / 22 tháng 1 năm 2026; 9 tháng trước (2026-01-22)
Kho mã nguồnhttps://codeberg.org/guix/guix
Viết bằngGuile Scheme, C++
Nền tảngx86-64, IA-32, ARM64
Có hiệu lực trongTiếng Anh
Giấy phépGiấy phép Công cộng GNU GPLv3+
Websitehttps://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]
  1. ↑ "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.
  2. ↑ "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.
  3. ↑ "gnu-system-discuss (thread)". lists.gnu.org. Truy cập ngày 8 tháng 10 năm 2026.
  4. ↑ "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.
  5. ↑ Stallman, Richard (ngày 5 tháng 6 năm 2012). "A GNU Distribution" (Danh sách thư). gnu-system-discuss.
  6. ↑ Courtès, Ludovic (ngày 23 tháng 11 năm 2012). "Introducing GNU Guix" (Danh sách thư). gnu-system-discuss.
  7. ↑ "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.