Стабильный выпуск | 1.1.0 / 15 апреля, 2020; 6 месяцев назад (2020-04-15) |
---|---|
Репозиторий | |
Написано на | Guile Scheme, C ++ (Nix core) |
Лицензия | GPLv3 + |
Веб-сайт | guix.gnu.org |
GNU Guix () - это кроссплатформенный менеджер пакетов и инструмент для создания и управления Unix-подобным операционных систем, основанных на менеджере пакетов Nix с схемой Guile API и специализирующейся на предоставлении исключительно бесплатного программного обеспечения. GNU Guix - это менеджер пакетов по умолчанию для GNU Guix System дистрибутив GNU / Linux.
В отличие от традиционных менеджеров пакетов, Guix (как и Nix) использует чисто функциональная модель развертывания, при которой программное обеспечение устанавливается в уникальные каталоги, созданные с помощью криптографических хэшей. Зависимости от каждого программного обеспечения включены в каждый хэш, решая проблему ада зависимостей. Такой подход к управлению пакетами обещает создать более надежные, воспроизводимые и переносимые пакеты.
Пакеты Guix определяются с помощью функциональных API-интерфейсов Guile Scheme, специально разработанных для управления пакетами. Зависимости отслеживаются непосредственно на этом языке с помощью специальных значений, называемых «производными», которые лениво оцениваются демоном Guix . Guix автоматически отслеживает эти ссылки, так что установленные пакеты можно собрать, когда от них не зависит ни один другой пакет. За счет увеличения требований к хранилищу все обновления в Guix гарантированно будут атомарными и будут иметь эффективный откат. Это также позволяет нескольким пользователям безопасно устанавливать программное обеспечение в одной системе без прав администратора. Дополнительные требования к хранилищу приводят к большему использованию полосы пропускания при загрузке двоичных заменителей по сравнению с такими дистрибутивами, как Debian. Если пользователь решит строить все из исходников, потребуется еще больше места для хранения и пропускной способности.
Разработка GNU Guix связана с GNU Guix System (до Guix 1.0: Guix System Distribution [GuixSD]), полной устанавливаемой системой GNU с использованием Linux-libre ядро и GNU Shepherd система инициализации.
Функция отката Guix унаследована от дизайна Nix и не встречается ни в одном из популярных дистрибутивов Linux, таких как Debian и его производные, Arch Linux и его производные, или в других основных дистрибутивах, таких как Fedora, CentOS или OpenSUSE.
Проект координируется через Интернет группой добровольцев и входит в состав французской некоммерческой организации Guix Europe вместе с членами сообщества.
Унаследовано от дизайна Nix, большая часть содержимого диспетчера пакетов хранится в каталоге / gnu / store, где только демон Guix имеет доступ для записи. Это достигается с помощью специализированных привязок, при которых Хранилище как файловая система монтируется только для чтения, запрещая вмешательство даже со стороны пользователя root, в то время как демон Guix повторно монтирует хранилище как доступное для чтения / записи в собственном частном пространстве имен.. Guix общается с этим демоном, чтобы построить что-то или получить заменители, которые все хранятся в магазине.
Guix, как и Nix, имеет встроенные средства сборки мусора, помогающие удалять мертвые элементы хранилища и сохранять живые.
Это пример определения пакета для hello-package:
(define-public hello (package (name "hello") (версия "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), GNU world: пример пакета GNU ") (описание" GNU Hello печатает сообщение \ "Hello, world! \", А затем закрывается. Он служит примером стандартной практики программирования GNU. Таким образом, он поддерживает аргументы командной строки, несколько языков и т. д. ") (домашняя страница" https://www.gnu.org/software/hello/ ") (лицензия gpl3 +)))
Написано с использованием Guile. Рецепты пакетов можно легко проверить (например, запустить guix edit hello) и изменить в Guix, что делает систему прозрачной и легко поддающейся взлому.
Унаследованные от дизайна Nix, все манипуляции с элементами магазина не зависят друг от друга, а каталоги магазина начинаются с хеш-кода в кодировке base32 исходного кода вывод вместе с его входами.
Пакет Guix использует генерацию профилей, которые представляют собой набор символических ссылок на определенные элементы магазина, вместе составляющие то, что пользователь установил в профиль. Каждый раз, когда пакет устанавливается или удаляется, создается новое поколение.
Например. профиль пользователя, который установил только GNU Hello, содержит ссылки на элемент магазина, который содержит версию hello, установленную с текущим используемым guix.
Например. в версии c087a90e06d7b9451f802323e24deb1862a21e0f guix это соответствует следующему элементу: /gnu/store/md2plii4g5sk66wg9cgwc964l3xwhrm9-hello-2.10 (создан по рецепту выше).
В дополнение к символическим ссылкам каждая сборка профиля guix также содержит объединение всех информационных руководств, справочных страниц, значков, шрифтов и т. Д., Чтобы пользователь мог просматривать документацию и иметь доступ ко всем значкам и шрифты установлены.
Символические ссылки по умолчанию на генерации профилей хранятся в / var / guix файловой системы.
Пользователь может создать любое количество профилей, вызвав пакет guix -p КОМАНДА ИМЯ ПРОФИЛЯ. После этого в текущем каталоге будет создан новый каталог с именем-профилем и символическими ссылками для создания профиля.
Пакет Guix позволяет мгновенно откатиться к предыдущему поколению профиля путем изменения символической ссылки на более раннее поколение профиля. Профили также хранятся в магазине, например. этот элемент представляет собой профиль, содержащий привет, указанный выше: / gnu / store / b4wipjlsapvnijmbawl7sh76087vpl4n-profile (создается и активируется при запуске guix install hello).
Среда Guix позволяет пользователю легко войти в среду, в которой присутствуют все необходимые пакеты для разработки программного обеспечения, не забивая профиль пользователя по умолчанию зависимостями для нескольких проектов.
Например запущенная среда guix hello попадает в среду для выбрасывания, где присутствует все необходимое для компиляции hello на guix (gcc, guile и т. д.).
Если вам нужна постоянная среда с root-доступом, которая не собирает мусор при следующем запуске guix gc, вы можете создать корневой каталог:
Например. запуск guix environment --root = hello-root hello входит в среду, где присутствует все необходимое для компиляции guix (gcc, guile и т. д.) и зарегистрировано как root в текущем каталоге (путем символической ссылки на элементы в магазине).
Пакет Guix позволяет пользователю объединять элементы хранилища и выводить их в виде двоичного образа докера, перемещаемого архива или двоичного файла squashfs.
График Guix позволяет пользователю просматривать различные графики пакетов и их зависимостей.
Система GNU Guix использует Guix в качестве диспетчера пакетов и системы конфигурации, аналогично тому, как NixOS использует Nix.
Проект GNU объявил в ноябре 2012 года о первом выпуске GNU Guix, функционального менеджера пакетов на основе на Nix, который, помимо прочего, предоставляет Guile Scheme API. Проект был запущен в июне 2012 года Людовиком Куртесом, одним из хакеров GNU Guile. 20 августа 2015 года было объявлено, что Guix был перенесен на GNU Hurd.
. У проекта нет фиксированного графика выпуска, и до сих пор он выпускался примерно каждые 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 |