GNU Guix

редактировать
чисто функциональный менеджер пакетов для системы GNU
GNU Guix
Guix logo.svg
Стабильный выпуск 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 вместе с членами сообщества.

Содержание
  • 1 Магазин
    • 1.1 Мусор коллекция
  • 2 Определения пакетов
  • 3 Транзакционные обновления
  • 4 Профиля
    • 4.1 Несколько профилей пользователей
  • 5 Откат
  • 6 Среда
    • 6.1 Постоянная среда разработки
  • 7 Pack
  • 8 График
  • 9 Система Guix (операционная система)
  • 10 История
  • 11 Релизы
  • 12 См. Также
  • 13 Ссылки
  • 14 Внешние ссылки
Магазин

Унаследовано от дизайна 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 в текущем каталоге (путем символической ссылки на элементы в магазине).

Pack

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

График

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

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

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

История

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

Releases

. У проекта нет фиксированного графика выпуска, и до сих пор он выпускался примерно каждые 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
См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-21 09:11:08
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте