ДоступСн ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ GNU Guix 1.3 ΠΈ дистрибутив Π½Π° Π΅Π³ΠΎ основС

Бостоялся Ρ€Π΅Π»ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° GNU Guix 1.3 ΠΈ построСнного Π½Π° Π΅Π³ΠΎ основС дистрибутива GNU/Linux. Для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сформированы ΠΎΠ±Ρ€Π°Π·Ρ‹ для установки Π½Π° USB Flash (610 ΠœΠ‘) ΠΈ использования Π² систСмах Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (972 ΠœΠ‘). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… i686, x86_64, Power9, armv7 ΠΈ aarch64.

Дистрибутив допускаСт установку ΠΊΠ°ΠΊ Π² качСствС обособлСнной ОБ Π² систСмах Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… ΠΈ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ запуск Π² ΡƒΠΆΠ΅ установлСнных дистрибутивах GNU/Linux, выступая Π² Ρ€ΠΎΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для развёртывания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΡƒΡ‡Ρ‘Ρ‚ зависимостСй, повторяСмыС сборки, Ρ€Π°Π±ΠΎΡ‚Π° Π±Π΅Π· root, ΠΎΡ‚ΠΊΠ°Ρ‚ Π½Π° ΠΏΡ€ΠΎΡˆΠ»Ρ‹Π΅ вСрсии Π² случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ, ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ (созданиС Ρ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ окруТСния Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…) ΠΈ Ρ‚.ΠΏ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ POWER9 (powerpc64le-linux).
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° развёртывания, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ вмСсто сСрии ΠΊΠΎΠΌΠ°Π½Π΄ «guix install» ΠΈ «guix remove» запускаСтся ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° «guix package —manifest=manifest.scm» с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ manifest.scm всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ трСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ манифСста Π½Π° основС ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ профиля установки Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ «guix package» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ «—export-manifest» ΠΈ «—export-channels».
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция трансформации ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² «—with-latest», полСзная для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ самыС свСТиС вСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π΄Π°ΠΆΠ΅ Ссли для прилоТСния Π΅Ρ‰Ρ‘ Π½Π΅ сформирован Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ для Guix. Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «—with-patch» для сборки сСрии ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² c ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ‚Ρ‡Π° ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ»ΠΈ нСскольким ΠΈΠ· Π½ΠΈΡ….
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… «guix» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π²Ρ‹Π²ΠΎΠ΄ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ Π² случаС ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ наличия Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄. $ guix package —export-manifests guix package: error: export-manifests: unrecognized option hint: Did you mean `export-manifest’?
  • Π’ «guix refresh» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ с хостинга SourceForge, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΆΠΈΠΌ generic-html для получСния обновлСния с домашнСй страницы ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая ΠΊΠΎΠΌΠ°Π½Π΄Π° «guix import go» для рСкурсивного ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° языкС Go с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ зависимостСй. Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ «guix import opam» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Coq. Π’ «guix import crate» обСспСчСн ΡƒΡ‡Ρ‘Ρ‚ сСмантичСского вСрсионирования Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ рСкурсивной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π£Π΄Π°Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° «guix import nix».
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация установки ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ собранных Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (substitute) ΠΈ ускорСна Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «guix system init».
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «guix environment» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «—profile».
  • Π’ guix-daemon Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «—discover» для обнаруТСния Π² локальной сСти сСрвСров, ΠΎΡ‚Π΄Π°ΡŽΡ‰ΠΈΡ… собранныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (substitute), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ mDNS/DNS-SD. Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ анонсов с сСрвСров Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «guix publish» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «—advertise».
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Zstd для сТатия ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
  • Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ «—verbosity=1» ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Ρ‘Π½ Π²Ρ‹Π²ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… URL.
  • ВмСсто ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄ «disk-image» ΠΈ «vm-image» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° общая ΠΊΠΎΠΌΠ°Π½Π΄Π° «guix system image».
  • Π’ ΠΎΠ±Ρ€Π°Π·Π΅ дистрибутива для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° SPICE.
  • Π’ установочный скрипт Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ автоматичСской инсталляции.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ сСрвис lvm-device-mapping для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Ρ‚ΠΎΠΌΠΎΠ² LVM (Linux Logical Volumne Manager).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ «guix system image -t rock64-raw» для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² дистрибутива для ΠΏΠ»Π°Ρ‚ Rock64.
  • Π’ initrd ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° bcachefs.
  • Π’ сСрвСрС ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ CUPS ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ сСрвис «brlaser» для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠ² Brother.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ систСмныС сСрвисы agate, cuirass-remote-worker, ipfs, keepalived, laminar, radicale, syncthing, transmission-daemon, wireguard, xorg-server.
  • ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ вСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² 3100 ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 2009 Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π’ Ρ‚ΠΎΠΌ числС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ вСрсии gcc 10.3.0, glibc 2.31, GNOME 3.34.5, gnupg 2.2.27, go 1.14.15, guile 3.0.5, icecat 78.10.0-guix0-preview1, icedtea 3.7.0, inkscape 1.0.2, julia 1.5.3, libreoffice 6.4.7.2, linux-libre 5.11.15, ocaml 4.11.1, octave 6.2.0, openjdk 14.0, python 3.8.2, racket 8.0, rust 1.51.0, r 4.0.4, sbcl 2.1.3, Xfce 4.16.0 ΠΈ xorg-server 1.20.10.
  • УстранСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ CVE-2021-27851 Π² guix-daemon, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ свои ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π² систСмС. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΎ врСмя выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «guix build» сборочный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ оставался доступСн всСм Π½Π° запись ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΆΡ‘ΡΡ‚ΠΊΡƒΡŽ ссылку Π½Π° Ρ„Π°ΠΉΠ», ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ root ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ Π²Π½Π΅ сборочного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, «/etc/shadow». Если ΠΏΡ€ΠΈ сборкС Π±Ρ‹Π»Π° ΡƒΠΊΠ°Π·Π°Π½Π° опция «—keep-failed» Ρ‚ΠΎ Π² случаС сбоя guix-daemon мСнял Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° для всСго сборочного Π΄Π΅Ρ€Π΅Π²Π° Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ТёсткиС ссылки.

Напомним, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ GNU Guix основан Π½Π° Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Nix ΠΈ ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ возмоТности, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ, Ρ€Π°Π±ΠΎΡ‚Π° Π±Π΅Π· получСния ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° привязанных ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ установки Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… вСрсий ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, срСдства ΡƒΠ±ΠΎΡ€ΠΊΠΈ мусора (выявлСниС ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… вСрсий ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²). Для опрСдСлСния сцСнариСв сборки ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ» формирования ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² прСдлагаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСциализированный высокоуровнСвый ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Guile Scheme API, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ языкС программирования Scheme.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… для ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Nix ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Nixpkgs. ΠšΡ€ΠΎΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ созданиС сцСнариСв для управлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΈ сборкС ΠΏΠ°ΠΊΠ΅Ρ‚Π° автоматичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ всС связанныС с Π½ΠΈΠΌ зависимости. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΠ· рСпозитория, Ρ‚Π°ΠΊ ΠΈ сборка ΠΈΠ· исходных тСкстов со всСми зависимостями. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ срСдства для поддСрТания вСрсий установлСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ установки ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΈΠ· внСшнСго рСпозитория.

Π‘Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ для ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² формируСтся Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, содСрТащСго всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ позволяСт ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², способный Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· оглядки Π½Π° состав Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ систСмного окруТСния дистрибутива, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Guix ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС надстройки. ΠœΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Guix Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ зависимостСй, ΠΏΡ€ΠΈ этом для поиска наличия ΡƒΠΆΠ΅ установлСнных зависимостСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сканированиС Ρ…ΡΡˆΠ΅ΠΉ-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ установлСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ сосущСствованиС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… дистрибутивов. НапримСр, ΠΏΠ°ΠΊΠ΅Ρ‚ устанавливаСтся ΠΊΠ°ΠΊ /nix/store/452a5978f3b0b426064a2b64a0c6f41-firefox-88.0.0/, Π³Π΄Π΅ «452a59…» являСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ для контроля зависимостСй.

Дистрибутив Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свободныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ поставляСтся с ядром GNU Linux-Libre, ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌ ΠΎΡ‚ нСсвободных элСмСнтов Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ. Для сборки примСняСтся GCC 9.3. Π’ качСствС систСмы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сСрвисный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ GNU Shepherd (Π±Ρ‹Π²ΡˆΠΈΠΉ dmd), Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° SysV-init с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ зависимостСй. Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄Π΅ΠΌΠΎΠ½ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Shepherd написаны Π½Π° языкС Guile (ΠΎΠ΄Π½Π° ΠΈΠ· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ языка Scheme), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ для опрСдСлСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запуска сСрвисов. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² консольном Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π½ΠΎ для установки ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΎ 17243 Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ графичСского стСка Π½Π° Π±Π°Π·Π΅ X.Org, ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ dwm ΠΈ ratpoison, Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол Xfce, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ