ГНУ Мел
![]() | |
Стабильная версия | 1.4.0 [1] ![]() |
---|---|
Репозиторий | |
Написано в | Guile Scheme , C++ ( Nix ) ядро |
Лицензия | GPLv3+ |
Веб-сайт | мел |
GNU Chalk ( / ɡ iː k s / [2] ) — функциональный кроссплатформенный менеджер пакетов и инструмент для создания экземпляров Unix-подобных операционных систем и управления ими, основанный на менеджере пакетов Nix . Рецепты конфигурации и пакетов написаны на Guile Scheme . GNU Guix — это менеджер пакетов по умолчанию в системы GNU Guix дистрибутиве . [3]
В отличие от традиционных менеджеров пакетов , Guix (как и Nix) использует чисто функциональную модель развертывания, при которой программное обеспечение устанавливается в уникальные каталоги, генерируемые посредством криптографических хэшей . Все зависимости для каждого программного обеспечения включены в каждый хэш. [4] [5] Это решает проблему ада зависимости , [6] позволяет сосуществовать нескольким версиям одного и того же программного обеспечения и делает пакеты переносимыми и воспроизводимыми . Выполнение научных вычислений на установке Guix было предложено в качестве многообещающего ответа на кризис репликации . [7] [8]
Разработка GNU Guix переплетается с системой GNU Guix . [9] устанавливаемый дистрибутив операционной системы, использующий ядро Linux-libre и GNU Shepherd . систему инициализации [10] [11] [12]
Общие характеристики [ править ]
Пакеты Guix определяются с помощью функциональных API-интерфейсов Guile Scheme, специально разработанных для управления пакетами. оцениваются демоном Guix Зависимости отслеживаются непосредственно в этом языке с помощью специальных значений, называемых «деривациями», которые лениво . Guix автоматически отслеживает эти ссылки, чтобы установленные пакеты можно было собирать мусором , когда от них не зависит ни один другой пакет - за счет увеличения требований к объему памяти все обновления в Guix гарантированно будут атомарными и могут быть отменены.
Функция отката Guix унаследована от конструкции Nix и редко встречается в других операционных системах , поскольку требует нестандартного подхода к тому, как должна функционировать система (см. MicroOS ). Однако менеджер пакетов Guix, такой как Nix , можно использовать во многих дистрибутивах, таких как Debian и Parabola . [13] [14] Это также позволяет нескольким пользователям безопасно устанавливать программное обеспечение в одной системе без прав администратора.
По сравнению с традиционными менеджерами пакетов хранилища пакетов Guix могут вырасти значительно больше и, следовательно, требовать большей пропускной способности; хотя по сравнению с контейнерными решениями (такими как Docker ), которые также часто используются для решения ада зависимостей, Guix более компактен и соответствует таким практикам, как «Не повторяйся» и «Единый источник истины» . Если пользователь решит собрать все из исходного кода, потребуется еще больше места для хранения и пропускной способности.
Магазин [ править ]
Унаследованная от Nix конструкция, большая часть содержимого менеджера пакетов хранится в каталоге /gnu/store Guix , где только демон имеет доступ на запись. Это достигается с помощью специализированного монтирования привязки, при котором Store как файловая система монтируется только для чтения , что запрещает вмешательство даже со стороны пользователя root, в то время как демон Guix перемонтирует Store как доступный для чтения/записи в его собственном частном пространстве имен. Guix разговаривает с этим демоном, чтобы создать вещи или получить заменители, которые все хранятся в магазине. Пользователям не рекомендуется когда-либо прикасаться к хранилищу вручную, повторно монтируя его как доступное для записи, поскольку это противоречит всей цели хранилища.
Сбор мусора [ править ]
Guix, как и Nix, имеет встроенные средства сбора мусора, которые помогают удалять мертвые предметы из магазина и сохранять живые . [15]
Определения пакетов [ править ]
Это пример определения пакета hello-package:
(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+)))
Написано с использованием Guile. Рецепты пакетов можно легко просмотреть (запустив, например, guix edit hello ) и изменить в Guix, что делает систему прозрачной и ее очень легко модифицировать.
Транзакционные обновления [ править ]
Унаследованные от конструкции Nix, все манипуляции с элементами хранилища независимы друг от друга, а каталоги хранилища начинаются с хеша исходного кода в кодировке Base32 вместе с его входными данными.
Профили [ править ]
Пакет Guix использует генерации профилей, которые представляют собой набор символических ссылок на определенные элементы магазина, вместе составляющие то, что пользователь установил в профиль. Каждый раз, когда пакет устанавливается или удаляется, создается новое поколение.
Например, профиль пользователя, который установил только GNU Hello, содержит ссылки на элемент магазина, который содержит версию hello, установленную с используемым в данный момент графическим интерфейсом.
Например, в версии c087a90e06d7b9451f802323e24deb1862a21e0f guix это соответствует следующему элементу: /gnu/store/md2plii4g5sk66wg9cgwc964l3xwhrm9-hello-2.10 (собран по рецепту выше).
Помимо символических ссылок, каждая сборка профиля также содержит объединение всех информационных руководств, страниц руководства, значков, шрифтов и т. д., чтобы пользователь мог просматривать документацию и иметь доступ ко всем установленным значкам и шрифтам.
Символические ссылки по умолчанию на генерации профилей хранятся в /var/guix файловой системы.
Несколько профилей пользователей [ править ]
Пользователь может создать любое количество профилей, вызвав guix package -p PROFILE-NAME COMMAND. В текущем каталоге будет создан новый каталог с именем профиля, а также символическими ссылками на создание профиля.
Откат [ править ]
Пакет Guix обеспечивает мгновенный откат к предыдущему поколению профиля путем изменения символической ссылки на предыдущее поколение профиля. [16] Профили также хранятся в магазине, например, этот элемент представляет собой профиль, содержащий указанный выше hello: /gnu/store/b4wipjlsapvnijmbawl7sh76087vpl4n-profile (создается и активируется при запуске guix install hello ).
Оболочка среды [ править ]
Оболочка Guix позволяет пользователю легко войти в среду, в которой присутствуют все необходимые пакеты для разработки программного обеспечения, не засоряя профиль пользователя по умолчанию зависимостями для нескольких проектов. [17]
Например, бег guix shell --development hello попадает в одноразовую среду, где все необходимое для компиляции hello присутствует on guix (gcc, guile и т. д.).
Без --development только пакет hello флаг, будет установлен , а не его зависимости от сборки. Это заменяет guix environment команда, которая устанавливает зависимости пакета по умолчанию, поскольку считалось более интуитивно понятным, что команда устанавливает указанные пакеты по умолчанию и устанавливает только зависимости разработки с флагом. [18]
Постоянная среда разработки [ править ]
Если вам нужна постоянная среда с корнем gc, которая не будет собирать мусор при следующем запуске guix gc, вы можете создать корень:
Например, бег guix shell --root=hello-root --development hello входит в среду, где присутствует все необходимое для компиляции guix (gcc, guile и т. д.) и зарегистрировано как root в текущем каталоге (путем создания символических ссылок на элементы в магазине).
Пакет [ править ]
Пакет Guix позволяет пользователю объединять элементы хранилища и выводить их в виде двоичного образа Docker, перемещаемого архива или двоичного файла sqashfs . [19]
График [ править ]
График Guix позволяет пользователю просматривать различные графики пакетов и их зависимостей. [20]
Guix System (операционная система) [ править ]
Система GNU Guix использует Guix в качестве менеджера пакетов и системы конфигурации, аналогично тому, как NixOS использует Nix .
История [ править ]
Проект был запущен в июне 2012 года Людовиком Куртесом, одним из хакеров GNU Guile. [21]
Проект GNU объявил в ноябре 2012 года о первом выпуске GNU Guix, функционального менеджера пакетов на основе Nix , который, помимо прочего, предоставляет Guile Scheme API-интерфейсы . [22]
20 августа 2015 года было объявлено, что Guix портирован на GNU Hurd . [23]
Релизы [ править ]
У проекта нет фиксированного графика выпуска, и до сих пор он выпускался примерно каждые 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» . | ~15333 | |
1.3.0 | Куртес, Людовик (11 мая 2021 г.). «Выпущен GNU Guix 1.3.0» . | i686, x86_64, powerpc64le, Armv7, aarch64 | ~17262 |
1.4.0 | Куртес, Людовик (19 декабря 2022 г.). «Выпущен GNU Guix 1.4.0» . | i686, x86_64, powerpc64le, Armv7, aarch64 | ~22000 |
См. также [ править ]
- GNU Guix System — операционная система, основанная на менеджере пакетов Guix.
- Debian GNU/Хёрд
- NixOS – аналогичная операционная система, вдохновившая GNU Guix. [24]
- Сравнение дистрибутивов Linux
Ссылки [ править ]
- ^ Людовик Куртес (19 декабря 2022 г.). «Выпущен GNU Guix 1.4.0» . Проверено 21 декабря 2022 г.
- ^ «Справочное руководство GNU Guix» . www.gnu.org . Проверено 23 апреля 2018 г.
- ^ Людовик Куртес (2013). Функциональное управление пакетами с помощью Guix . Мадрид , Испания : Европейский симпозиум по Lisp.
- ^ Долстра, Э., де Йонге, М. и Виссер, Э. «Никс: безопасная и свободная от политик система для развертывания программного обеспечения». Дэймон, Л. (ред.), 18-я конференция по администрированию больших инсталляционных систем (LISA '04) , стр. 79–92, Атланта, Джорджия, США. ЮСЕНИКС, ноябрь 2004 г.
- ^ Долстра, Э. Чисто функциональная модель развертывания программного обеспечения. Кандидатская диссертация, Факультет естественных наук, Утрехт, Нидерланды. Январь 2006 года. ISBN 90-393-4130-3 .
- ↑ Принс П., Суреш Дж. и Долстра Э., «Nix исправляет ад зависимостей во всех дистрибутивах Linux», Архивировано 26 декабря 2008 г., на Wayback Machine linux.com , 22 декабря 2008 г.
- ^
Хинсен, Конрад (июль 2020 г.). «Поэтапные вычисления: техника, о которой вы даже не подозревали» . Вычисления в науке и технике . 22 (4): 99–103. Бибкод : 2020CSE....22d..99H . дои : 10.1109/MCSE.2020.2985508 . ISSN 1558-366X . S2CID 219990590 . Проверено 4 ноября 2022 г.
- ^
Валлет, Николас; Мишоно, Дэвид; Турнье, Симон (4 октября 2022 г.). «На пути к практическим, прозрачным, проверяемым и долгосрочным воспроизводимым исследованиям с использованием Guix» (PDF) . Научные данные . 9 (1): 597. Бибкод : 2022НатСД...9..597В . дои : 10.1038/s41597-022-01720-9 . ISSN 2052-4463 . ПМЦ 9532446 . ПМИД 36195618 . Проверено 4 ноября 2022 г.
- ^ «Как называть Гикса?» (Список рассылки). gnu-система-обсудить. 15 января 2015 г.
- ^ Интерфейс программирования (Справочное руководство GNU Guix)
- ^ Guix: новый менеджер пакетов и дистрибутив GNU - Phoronix
- ^ "гикс-Европа" . git.savannah.gnu.org . Архивировано из оригинала 24 января 2021 года . Проверено 16 мая 2019 г.
- ^ «Guix — трекер пакетов Debian» .
- ^ «Parabola GNU/Linux-libre — Поиск пакетов» . www.parabola.nu . Проверено 14 сентября 2021 г.
- ^ «Вызов guix gc» . gnu.org . Проверено 16 мая 2019 г.
- ^ «Вызов пакета guix» . gnu.org . Проверено 16 мая 2019 г.
- ^ «Вызов оболочки guix» . gnu.org . Проверено 22 ноября 2023 г.
- ^ «От «среды guix» к «оболочке guix» » . gnu.org . Проверено 22 ноября 2023 г.
- ^ «Вызов пакета guix» . gnu.org . Проверено 16 мая 2019 г.
- ^ «Вызов графа guix» . gnu.org . Проверено 16 мая 2019 г.
- ^ Столлман, Ричард (5 июня 2012 г.). «Дистрибутив GNU» (список рассылки). gnu-система-обсудить.
- ^ Куртес, Людовик (23 ноября 2012 г.). «Представляем GNU Guix» (список рассылки). gnu-система-обсудить.
- ^ Рагкусис, Манолис (20 августа 2015 г.). «[Обновление GSoC] Портирование Guix на GNU/Hurd» (список рассылки). guix-devel . Проверено 20 августа 2015 г.
- ^ «О программе — GuixSD» . www.gnu.org . Проверено 3 мая 2018 г.
Внешние ссылки [ править ]
- программное обеспечение 2013 года
- Бесплатные системы управления пакетами
- Бесплатное программное обеспечение, написанное на Лиспе.
- Функциональное программирование
- Программное обеспечение проекта GNU
- Программное обеспечение для управления пакетами Linux
- Программное обеспечение, использующее лицензию GPL