Jump to content

ГНУ Мел

ГНУ Мел
Стабильная версия
1.4.0 [1]  Отредактируйте это в Викиданных / 19 декабря 2022 г .; 18 месяцев назад ( 19 декабря 2022 г. )
Репозиторий
Написано в Guile Scheme , C++ ( Nix ) ядро
Лицензия GPLv3+
Веб-сайт мел .gnu .org /

GNU Chalk ( / ɡ 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

См. также [ править ]

Ссылки [ править ]

  1. ^ Людовик Куртес (19 декабря 2022 г.). «Выпущен GNU Guix 1.4.0» . Проверено 21 декабря 2022 г.
  2. ^ «Справочное руководство GNU Guix» . www.gnu.org . Проверено 23 апреля 2018 г.
  3. ^ Людовик Куртес (2013). Функциональное управление пакетами с помощью Guix . Мадрид , Испания : Европейский симпозиум по Lisp.
  4. ^ Долстра, Э., де Йонге, М. и Виссер, Э. «Никс: безопасная и свободная от политик система для развертывания программного обеспечения». Дэймон, Л. (ред.), 18-я конференция по администрированию больших инсталляционных систем (LISA '04) , стр. 79–92, Атланта, Джорджия, США. ЮСЕНИКС, ноябрь 2004 г.
  5. ^ Долстра, Э. Чисто функциональная модель развертывания программного обеспечения. Кандидатская диссертация, Факультет естественных наук, Утрехт, Нидерланды. Январь 2006 года. ISBN   90-393-4130-3 .
  6. Принс П., Суреш Дж. и Долстра Э., «Nix исправляет ад зависимостей во всех дистрибутивах Linux», Архивировано 26 декабря 2008 г., на Wayback Machine linux.com , 22 декабря 2008 г.
  7. ^ Хинсен, Конрад (июль 2020 г.). «Поэтапные вычисления: техника, о которой вы даже не подозревали» . Вычисления в науке и технике . 22 (4): 99–103. Бибкод : 2020CSE....22d..99H . дои : 10.1109/MCSE.2020.2985508 . ISSN   1558-366X . S2CID   219990590 . Проверено 4 ноября 2022 г. Значок открытого доступа
  8. ^ Валлет, Николас; Мишоно, Дэвид; Турнье, Симон (4 октября 2022 г.). «На пути к практическим, прозрачным, проверяемым и долгосрочным воспроизводимым исследованиям с использованием Guix» (PDF) . Научные данные . 9 (1): 597. Бибкод : 2022НатСД...9..597В . дои : 10.1038/s41597-022-01720-9 . ISSN   2052-4463 . ПМЦ   9532446 . ПМИД   36195618 . Проверено 4 ноября 2022 г. Значок открытого доступа
  9. ^ «Как называть Гикса?» (Список рассылки). gnu-система-обсудить. 15 января 2015 г.
  10. ^ Интерфейс программирования (Справочное руководство GNU Guix)
  11. ^ Guix: новый менеджер пакетов и дистрибутив GNU - Phoronix
  12. ^ "гикс-Европа" . git.savannah.gnu.org . Архивировано из оригинала 24 января 2021 года . Проверено 16 мая 2019 г.
  13. ^ «Guix — трекер пакетов Debian» .
  14. ^ «Parabola GNU/Linux-libre — Поиск пакетов» . www.parabola.nu . Проверено 14 сентября 2021 г.
  15. ^ «Вызов guix gc» . gnu.org . Проверено 16 мая 2019 г.
  16. ^ «Вызов пакета guix» . gnu.org . Проверено 16 мая 2019 г.
  17. ^ «Вызов оболочки guix» . gnu.org . Проверено 22 ноября 2023 г.
  18. ^ «От «среды guix» к «оболочке guix» » . gnu.org . Проверено 22 ноября 2023 г.
  19. ^ «Вызов пакета guix» . gnu.org . Проверено 16 мая 2019 г.
  20. ^ «Вызов графа guix» . gnu.org . Проверено 16 мая 2019 г.
  21. ^ Столлман, Ричард (5 июня 2012 г.). «Дистрибутив GNU» (список рассылки). gnu-система-обсудить.
  22. ^ Куртес, Людовик (23 ноября 2012 г.). «Представляем GNU Guix» (список рассылки). gnu-система-обсудить.
  23. ^ Рагкусис, Манолис (20 августа 2015 г.). «[Обновление GSoC] Портирование Guix на GNU/Hurd» (список рассылки). guix-devel . Проверено 20 августа 2015 г.
  24. ^ «О программе — GuixSD» . www.gnu.org . Проверено 3 мая 2018 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9e2f35eb17cee8f61bdb49d8dc62420a__1715860800
URL1:https://arc.ask3.ru/arc/aa/9e/0a/9e2f35eb17cee8f61bdb49d8dc62420a.html
Заголовок, (Title) документа по адресу, URL1:
GNU Guix - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)