GNU Guix - GNU Guix

GNU Guix
Guix logo.svg
Стабильный выпуск
1.2.0[1] / 23 ноября 2020 г.; 15 дней назад (2020-11-23)
Репозиторий Отредактируйте это в Викиданных
Написано вСхема хитрости, C ++ (Nix основной)
ЛицензияGPLv3 +
Интернет сайтGuix.gnu.org

GNU Guix (/ɡяks/[2]) является кроссплатформенным менеджер пакетов и инструмент для создания экземпляров и управления Unix-подобный операционные системы, основанные на Менеджер пакетов Nix с Схема хитрости API и специализируется на предоставлении исключительно бесплатно программное обеспечение.[3] GNU Guix - это менеджер пакетов по умолчанию для Система GNU Guix Дистрибутив GNU / Linux.

В отличие от традиционных менеджеры пакетов, Guix (как и Nix) использует чисто функциональный модель развертывания, при которой программное обеспечение устанавливается в уникальные каталоги, созданные с помощью криптографические хеши. Зависимости от каждого программного обеспечения включены в каждый хэш, решая проблему ад зависимости.[4] Такой подход к управлению пакетами обещает повысить надежность, воспроизводимый, и портативные пакеты.[5][6]

Пакеты Guix определяются через функциональный API-интерфейсы Guile Scheme, специально разработанные для управления пакетами. Зависимости отслеживаются непосредственно на этом языке с помощью специальных значений, называемых «производными», которые оцениваются демоном Guix. лениво. Guix автоматически отслеживает эти ссылки, так что установленные пакеты могут быть собран мусор когда никакой другой пакет не зависит от них. За счет увеличения требований к хранилищу все обновления Guix гарантированно будут атомный и качественно откатился. Это также позволяет нескольким пользователям безопасно устанавливать программное обеспечение в одной системе без прав администратора. Дополнительные требования к хранилищу приводят к большему использованию полосы пропускания при загрузке двоичных заменителей по сравнению с такими дистрибутивами, как Debian. Если пользователь решит строить все из исходников, потребуется еще больше места для хранения и пропускной способности.

Развитие GNU Guix переплетается с Система GNU Guix (до Guix 1.0: Guix System Distribution [GuixSD]),[7] полная устанавливаемая система GNU с использованием Linux-libre ядро и GNU Shepherd система инициализации.[8][9]

Функция отката Guix унаследована от дизайна Nix и не встречается ни в одном из популярных дистрибутивов Linux, таких как Debian и его производные, Arch Linux и его производные, или в других основных дистрибутивах, таких как Fedora, CentOS или OpenSUSE. .

Проект координируется через Интернет командой волонтеров и входит в состав французской некоммерческой организации Guix Europe вместе с членами сообщества.[10]

Магазин

Унаследованный от дизайна Nix, большая часть содержимого диспетчера пакетов хранится в каталоге / gnu / store где только демон Guix имеет доступ для записи. Это достигается с помощью специальных привязок, в которых монтируется Магазин как файловая система. только чтение, запрещая вмешательство даже со стороны пользователя root, в то время как демон Guix повторно монтирует Store как доступный для чтения / записи в своем собственном частном пространстве имен. Guix общается с этим демоном, чтобы построить что-то или получить заменители, которые все хранятся в магазине.

Вывоз мусора

Guix, как и Nix, имеет встроенные средства сбора мусора, помогающие сократить мертвых хранить предметы и хранить жить ед.[11]

Определения пакетов

Это пример определения пакета для hello-package:

(определить общественный Привет  (упаковка   (имя "Привет")   (версия "2.10")   (источник (источник            (метод url-выборка)            (ури (добавление строки "зеркало: // gnu / hello / hello-" версия                                ".tar.gz"))            (Sha256             (base32              "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))   (система сборки GNU-build-система)   (синопсис «Привет, мир GNU: пример пакета GNU»)   (описание    «GNU Hello печатает сообщение " Hello, world!  "И закрывается. служит примером стандартной практики кодирования GNU. Таким образом, он поддерживает аргументы командной строки, несколько языков и т. д. ")   (домашняя страница "https://www.gnu.org/software/hello/")   (лицензия gpl3 +)))

Написано с использованием Guile. Рецепты упаковки можно легко проверить (например, Guix Edit привет) и были изменены в Guix, что сделало систему прозрачной и легко взломанной.

Транзакционные обновления

Унаследованный от дизайна Nix, все манипуляции с элементами хранилища не зависят друг от друга, а каталоги хранилища начинаются с хеш-кода в кодировке base32 исходного кода производного вместе с его входными данными.

Профили

Пакет Guix использует генерацию профилей, которые представляют собой набор символических ссылок на определенные элементы магазина, вместе составляющие то, что пользователь установил в профиль. Каждый раз, когда пакет устанавливается или удаляется, создается новое поколение.

Например. профиль пользователя, который установил только GNU Hello, содержит ссылки на элемент магазина, который содержит версию hello, установленную с текущим используемым guix.

Например. в версии c087a90e06d7b9451f802323e24deb1862a21e0f guix это соответствует следующему элементу: /gnu/store/md2plii4g5sk66wg9cgwc964l3xwhrm9-hello-2.10 (построено по рецепту выше).

В дополнение к символическим ссылкам каждая сборка guix профиля также содержит объединение всех информационных руководств, страниц руководства, значков, шрифтов и т. Д., Чтобы пользователь мог просматривать документацию и иметь доступ ко всем установленным значкам и шрифтам.

Символические ссылки по умолчанию на поколения профилей хранятся в / var / guix в файловой системе.

Несколько профилей пользователей

Пользователь может создать любое количество профилей, вызвав guix package -p ИМЯ ПРОФИЛЯ КОМАНДА. После этого в текущем каталоге будет создан новый каталог с именем-профилем и символическими ссылками для создания профилей.

Откат

Пакет Guix обеспечивает мгновенный откат к предыдущему поколению профиля путем изменения символической ссылки на более раннее поколение профиля.[12] Профили также хранятся в магазине, например. этот элемент представляет собой профиль, содержащий приветствие выше: / gnu / store / b4wipjlsapvnijmbawl7sh76087vpl4n-profile (создается и активируется при запуске guix установить привет).

Среда

Среда Guix позволяет пользователю легко войти в среду, в которой присутствуют все необходимые пакеты для разработки программного обеспечения, не забивая профиль пользователя по умолчанию зависимостями для нескольких проектов.[13]

Например. Бег привет среда guix попадает в среду отбрасывания, где все необходимое для компиляции Привет на guix присутствует (gcc, guile и т.д.).

Постоянная среда разработки

Если вам нужна постоянная среда с корневым доступом gc, которая не будет собирать мусор при следующем запуске guix gc, вы можете создать корневой каталог:

Например. Бег окружение guix --root = hello-root hello входит в среду, в которой присутствует все необходимое для компиляции guix (gcc, guile и т. д.) и зарегистрировано как root в текущем каталоге (посредством символической ссылки на элементы в магазине).

Пакет

Пакет Guix позволяет пользователю объединять элементы хранилища и выводить их в виде двоичного образа докера, перемещаемого архива или двоичного файла squashfs.[14]

График

График Guix позволяет пользователю просматривать различные графики пакетов и их зависимостей.[15]

Guix System (операционная система)

Система GNU Guix использует Guix в качестве диспетчера пакетов и системы конфигурации, аналогично тому, как NixOS использует Nix, Debian использует APT, так далее.

История

В Проект GNU анонсировала в ноябре 2012 года первый выпуск GNU Guix, функционального менеджера пакетов, основанного на Nix что обеспечивает, среди прочего, Хитрость Схема API.[16] Проект был запущен в июне 2012 года Людовиком Куртесом, одним из хакеров GNU Guile.[17] 20 августа 2015 года было объявлено, что Guix был перенесен на GNU Hurd.[18]

Релизы

У проекта нет фиксированного графика выпуска, и до сих пор он выпускался примерно каждые 6 месяцев.

ВерсияОбъявлениеПоддерживаемые архитектурыПакеты
0,1 (альфа)Куртес, Людовик (18 января 2013 г.). "Выпущен GNU Guix 0.1 (альфа)".i686, x86_64~150
0,2 (альфа)Куртес, Людовик (12 мая 2013 г.). «Выпущен GNU Guix 0.2 (альфа)».~400
0.3Куртес, Людовик (17 июля 2013 г.). «Выпущен GNU Guix 0.3».~430
0.4Куртес, Людовик (27 сентября 2013 г.). «Выпущен GNU Guix 0.4».~490
0.5Куртес, Людовик (11 декабря 2013 г.). «Выпущен GNU Guix 0.5».~600
0.6Куртес, Людовик (9 апреля 2014 г.). «Выпущен GNU Guix 0.6».~691
0.7Куртес, Людовик (25 июля 2014 г.). «Выпущен GNU Guix 0.7».~825
0.8Куртес, Людовик (18 ноября 2014 г.). «Выпущен GNU Guix 0.8».i686, x86_64, mips64el~987
0.8.1Куртес, Людовик (29 января 2015 г.). «Выпущен GNU Guix 0.8.1».i686, x86_64, mips64el, armv7~1151
0.8.2Куртес, Людовик (14 мая 2015 г.). «Выпущен GNU Guix 0.8.2».~1869
0.8.3Куртес, Людовик (22 июля 2015 г.). «Выпущен GNU Guix 0.8.3».~2048
0.9.0Куртес, Людовик (5 ноября 2015 г.). «Выпущен GNU Guix 0.9.0».~2591
0.10.0Куртес, Людовик (29 марта 2016 г.). "Выпущен GNU Guix & GuixSD 0.10.0".~3230
0.11.0Куртес, Людовик (3 августа 2016 г.). "Выпущен GNU Guix & GuixSD 0.11.0".~3714
0.12.0Вурмус, Рикардо (21 декабря 2016 г.). "Выпущен GNU Guix & GuixSD 0.12.0".~4567
0.13.0Куртес, Людовик (22 мая 2017 г.). «Выпущен GNU Guix & GuixSD 0.13.0».i686, x86_64, mips64el, armv7, aarch64~5407
0.14.0Куртес, Людовик (7 декабря 2017 г.). «Выпущен GNU Guix & GuixSD 0.14.0».~6618
0.15.0Куртес, Людовик (6 июля 2018 г.). «Выпущен GNU Guix & GuixSD 0.15.0».~7857
0.16.0Куртес, Людовик (6 декабря 2018 г.). "Выпущен GNU Guix & GuixSD 0.16.0".~8715
1.0.0Куртес, Людовик (2 мая 2019 г.). «Выпущен GNU Guix 1.0.0».~9712
1.0.1Куртес, Людовик (19 мая 2019 г.). «Выпущен GNU Guix 1.0.1».~9771
1.1.0Куртес, Людовик (15 апреля 2020 г.). «Выпущен GNU Guix 1.1.0».i686, x86_64, armv7, aarch64~13161
1.2.0Куртес, Людовик (23 ноября 2020 г.). «Выпущен GNU Guix 1.2.0».i686, x86_64, armv7, aarch64~15333

Смотрите также

Рекомендации

  1. ^ Людовик Куртес (2020-11-23). «Выпущен GNU Guix 1.2.0». Получено 2020-11-24.
  2. ^ "Справочное руководство GNU Guix". www.gnu.org. Получено 23 апреля 2018.
  3. ^ Людовик Куртес (2013). «Функциональное управление пакетами с помощью Guix». Мадрид, Испания: Европейский симпозиум по Лисп.
  4. ^ Принс П., Суреш Дж. И Долстра Э., «Nix исправляет ад зависимостей во всех дистрибутивах Linux», В архиве 26 декабря 2008 г. Wayback Machine linux.com, 22 декабря 2008 г.
  5. ^ Долстра, Э., де Йонге, М. и Виссер, Э. «Nix: безопасная система без политик для развертывания программного обеспечения». В Damon, L. (ред.), 18-я конференция по администрированию крупных систем установки (LISA '04), страницы 79–92, Атланта, Джорджия, США. USENIX, ноябрь 2004 г.
  6. ^ Долстра, Э. Модель развертывания чисто функционального программного обеспечения. Кандидатская диссертация на факультете естественных наук, Утрехт, Нидерланды. Январь 2006 г. ISBN  90-393-4130-3.
  7. ^ "Как назвать Гикс?" (Список рассылки). gnu-system-обсудить. 2015-01-15.
  8. ^ Программный интерфейс (Справочное руководство GNU Guix)
  9. ^ Guix: новый менеджер пакетов и распространение GNU - Phoronix
  10. ^ "Guix-Europe". git.savannah.gnu.org. Получено 16 мая 2019.
  11. ^ "Вызов guix gc". gnu.org. Получено 16 мая 2019.
  12. ^ "Вызов пакета guix". gnu.org. Получено 16 мая 2019.
  13. ^ "Вызов среды guix". gnu.org. Получено 16 мая 2019.
  14. ^ "Вызов пакета guix". gnu.org. Получено 16 мая 2019.
  15. ^ "Вызов графа guix". gnu.org. Получено 16 мая 2019.
  16. ^ Куртес, Людовик (23 ноября 2012 г.). "Знакомство с GNU Guix" (Список рассылки). gnu-system-обсудить.
  17. ^ Столмен, Ричард (2012-06-05). "Распространение GNU" (Список рассылки). gnu-system-обсудить.
  18. ^ Рагкусис, Манолис (20 августа 2015 г.). "[Обновление GSoC] Перенос Guix на GNU / Hurd" (Список рассылки). Guix-devel. Получено 20 августа, 2015.
  19. ^ "О компании - GuixSD". www.gnu.org. Получено 2018-05-03.

внешняя ссылка