Состоялся (https://discourse.nixos.org/t/nixos-18-09-jellyfish-released...) выпуск дистрибутива NixOS 18.09 (http://nixos.org/), основанного на пакетном менеджере Nix (http://nixos.org/nix/) и предоставляющего ряд собственных разработок, упрощающих настройку и сопровождение системы. Например, в NixOS используется единый файл системной конфигурации (configuration.nix), предоставляется возможность быстрого отката обновлений, присутствует поддержка переключения между различными состояниями системы, поддерживается установка индивидуальных пакетов отдельными пользователями (пакет ставится в домашнюю директорию), возможна одновременная установка нескольких версий одной программы. Размер полного установочного образа (https://nixos.org/nixos/download.html) с KDE - 1 Гб, сокращённого консольного варианта - 430 Мб. Поддержка выпуска продлится до апреля 2019 года.Основные новшества (https://nixos.org/nixos/manual/release-notes.html#sec-releas...):
- Пакетный менеджер Nix обновлён до версии 2.1 (https://nixos.org/nix/manual/#ssec-relnotes-2.1), в котором появилась возможность применения режима многопользовательской установки в системах с systemd;
- Обновлены версии компонентов дистрибутива, в том числе задействованы ядро Linux 4.14, glibc 2.27, gcc 7 и systemd 239.
- Рабочий стол GNOME обновлён до выпуска 3.28, а KDE Plasma до 5.13;- Добавлена возможность запуска исполняемых файлов в изолированном режиме, создаваемом с использованием инструментария firejail (https://www.opennet.dev/opennews/art.shtml?num=45120);
-
Добавлено 56 новых сервисов, среди которых foundationdb, firejail, iftop, flatpak, zeitgeist, gitweb, weechat, freeradius, quagga, zeronet.
При использовании Nix пакеты устанавливаются в отдельное дерево директорий /nix/store или поддиректорию в каталоге пользователя. Например, пакет устанавливается как /nix/store/f3a5h95649f394359bh52d4vf7a0f3-firefox-62.0.3/, где "f3a4q8..." является уникальным идентификатором пакета, используемым для контроля зависимостей. Пакеты оформляются в виде контейнеров, содержащих необходимые для работы приложений компоненты.Между пакетами возможно определение зависимостей, при этом для поиска наличия уже установленных зависимостей используется сканирование хэшей-идентификаторов в директории установленных пакетов. Возможна как загрузка готовых бинарных пакетов из репозитория (при установке обновлений к бинарным пакетам загружаются только delta-изменения), так и сборка из исходных текстов со всеми зависимостями. Коллекция пакетов представлена в специальном репозитории Nixpkgs (http://nixos.org/nixpkgs/).
URL: https://discourse.nixos.org/t/nixos-18-09-jellyfish-released...
Новость: https://www.opennet.dev/opennews/art.shtml?num=49403
Хороший дистрибутив, но язык Nix всё портит.
Пришлось откатится обратно на Arch.
Обоснуй, расскажи, если есть время.
Во-первых не совсем понятная документация.
Что по дистрибутиву, что по языку Nix.
Многие вещи приходилось искать по чужим конфигурациям.
К примеру оверлеи. Штука классная, чтобы пересобирать пакеты.
Но об этом в доступном виде нигде не написано.
И в конфигах других пользователей частенько попадались другие варианты реализации оверлея.
Сборка софта на скриптовых языках тоже еще тот геморой.
Попытка собрать пакет Haraka (https://github.com/haraka/Haraka) успехом не увенчалась.
Может конечно руки не из того места, но в арче у меня проблем со сборкой пакетов не было.Во-вторых сам язык.
Я без понятия, кто и чем там вдохновлялся, но язык Nix это нечто.
За целый год так в него и не въехал.
И чтение документации по этому языку ситуацию не улучшило.
И даже чтение тонны статей на других ресурсах.В самом дистрибутиве очень много недоработок.
К примеру не хватает опций для пакетов, самих пакетов и т.д.
Я в целом мог бы этим занятся и дорабатывать это.
Но с таким языком мне не по пути с NixOS.Но это у меня так было. У кого-то возможно нет таких проблем.
Но как по мне, за 10 (или сколько там) лет существования дистрибутива могли бы и по-лучше сделать.
Т.к. даже с чтением документации и многолетним опытом пользования линукса порог вхождения высоковат.
В остальном же считаю NixOS вполне неплохим дистрибутивом.
Ждем-с когда допилят guix SD?
Не знаю. С Guix не работал.
Только бегло пару раз читал про него инфу.
Дистрибутив как раз хреновый, а вот Никс - отличный пакетный менеджер.В nixpkgs тоже много спорных решений.
Да, конечно. Nix плохой язык, не иметь никакого языка для декларативного описания системы много лучше.
Каждый мелкий пакетишко тащит 2+ Гб зависимостей. Это перебор всё-таки. Идея прекрасная, но хорошо было бы в её осуществлении "остановиться на предыдущем шаге".
Как и предыдущий комментатор, нашёл маловнятным язык описания пакетов. Не собирался gimp 2.10 из-за неуказанной зависимости, и найти место, где её можно добавить, "быстро" не удалось.
Репозитории пакетов плохо описаны. Где свежак, где для релиза -- понять трудно, и ещё труднее управлять установкой.
> Каждый мелкий пакетишко тащит 2+ Гб зависимостей.Это не проблема Никса, он просто хорошо делает свою работу по отслеживанию зависимостей. Это проблема авторов НиксОС и Никспэкагэс.
> Каждый мелкий пакетишко тащит 2+ Гб зависимостей.Надеюсь вы понимаете, что они не дублируются для каждого пакета отдельно? Если да, то я не понимаю в чём аргумент.
Если авторы пакета не указали рейндж версии, а указали точную версию, или если пакетный менеджер не смог оптимизировать общую установку, подобрав правильный набор версий, который может удовлетворять как можно больше зависимостей одновременно, то система выродится именно в то, что описано: каждый пакет имеет несовместимые с прочими зависимости и тянет за собой 2 гига.
Вы совсем не в теме. В Никсе нет версии, не говоря уже о диапазонах, но зависимость всегда очень и очень точная, определяется хэшем. Изменил один байт - получи новую " версию" (хэш). Старое остаётся на месте до ближайшей уборки мусора.
>> Каждый мелкий пакетишко тащит 2+ Гб зависимостей.
> Надеюсь вы понимаете, что они не дублируются для каждого пакета отдельно? Если
> да, то я не понимаю в чём аргумент.Не знаю, понимаю ли я, но в течении нескольких часов одного дня собирались приветмир и гимп (этот, как сказано -- не до конца), и сразу бросилась в глаза пересборка одного и того же bash (и binutils, и ещё чего-то), ну, и объёмчик занимаемый впечатлил тоже:
$ du -sh /d/nix/store
6.7G /d/nix/store
$ ls /d/nix/store | wc -l
4949Это приложение-то и от приложения хвостик?
Идея, повторюсь, правильная, и нечто похожее я когда-то "лепил на коленке", но здесь получается хорошей вещи слишком много. Или некачественны готовые изделия (то есть сетевые храны и сценарии в них).
/nix/store/f3a5h95649f394359bh52d4vf7a0f3-firefox-62.0.3/
/nix/store/firefox-62.0.3-f3a5h95649f394359bh52d4vf7a0f3/Зачем выбран 1й вариант?
Да, непонятно кто додумался сначала хэш поставить, а потом имя приложения..
Можно подумать что так проще хэш скриптами вырезать, но его так же было бы просто вырезать и с конца.. Сия задумка неведома.
Вы не знаете, как о откуда он вырезается. Если бы хэш был "в конце", вырезание было бы вообще невозможно.Хэш вырезается не скриптами, а из скриптов и бинарных файлов для автоматического отслеживания зависимостей.
То есть, нашли строку /nix/store/, значит за неё сразу хэш длиной столько-то, берём его.
А то, что вы предлагаете ("с конца") невозможно, потому что конца нет (мы шерстим произвольный бинарный файл).
Наркомания на марше. С конца они хэш вырезать не могут.
Глупый анонимус, нет никакой проблемы вырезать хэш, если дан путь, но это задача не стоит вообще. Задача - выделить пути из произвольного файла. На, вырезай, а потм представь, что у тебя, например, не "/nix/store/x6kpj7rpzpn80cf88gzx7aizs32ncnxf-fakeroot-1.22/bin/fakeroot", а "/nix/store/fakeroot-1.22-x6kpj7rpzpn80cf88gzx7aizs32ncnxf/bin/fakeroot":
#!/nix/store/8zkg9ac4s4alzyf4a8kfrig1j73z66dw-bash-4.4-p23/bin/bash
set -euo pipefail
umask 0077
/nix/store/x6kpj7rpzpn80cf88gzx7aizs32ncnxf-fakeroot-1.22/bin/fakeroot /nix/store/wr6v08dwg536lm0ig2379ndkja6cxng4-icinga2-2.9.1/bin/icinga2 api setup
/nix/store/x6kpj7rpzpn80cf88gzx7aizs32ncnxf-fakeroot-1.22/bin/fakeroot /nix/store/wr6v08dwg536lm0ig2379ndkja6cxng4-icinga2-2.9.1/bin/icinga2 feature enable checker
/nix/store/x6kpj7rpzpn80cf88gzx7aizs32ncnxf-fakeroot-1.22/bin/fakeroot /nix/store/wr6v08dwg536lm0ig2379ndkja6cxng4-icinga2-2.9.1/bin/icinga2 feature enable command
/nix/store/x6kpj7rpzpn80cf88gzx7aizs32ncnxf-fakeroot-1.22/bin/fakeroot /nix/store/wr6v08dwg536lm0ig2379ndkja6cxng4-icinga2-2.9.1/bin/icinga2 feature enable livestatus/nix/store/x6kpj7rpzpn80cf88gzx7aizs32ncnxf-fakeroot-1.22/bin/fakeroot /nix/store/wr6v08dwg536lm0ig2379ndkja6cxng4-icinga2-2.9.1/bin/icinga2 feature enable notification
pwd=''
printf 'const IdoDbPassword = "%s"\n' "$pwd" > '/run/icinga2/ido-password.conf'
printf 'const TicketSalt = "%s"\n' "$(/nix/store/w880cra01d25hhyx02ldangkzrbxxxb9-pwgen-2.08/bin/pwgen -1 -s 23)" \
> /icinga2/etc/icinga2/conf.d/ticketsalt.confif [ -e /icinga2/etc/icinga2/mutable.d/restart ]; then
rm /icinga2/etc/icinga2/mutable.d/restart
else
/nix/store/i76jkssfcvkpmjyy92c8ncdcas9ci2is-icinga-mutable-update || true
if ! /nix/store/wr6v08dwg536lm0ig2379ndkja6cxng4-icinga2-2.9.1/bin/icinga2 daemon -C -x critical -c /nix/store/iv52lm6vi25kj5n2bs6p6av8g17n75nb-icinga2.conf; then
rm -rf /icinga2/etc/icinga2/mutable.d
mkdir -p /icinga2/etc/icinga2/mutable.d
fi
fiexec /nix/store/wr6v08dwg536lm0ig2379ndkja6cxng4-icinga2-2.9.1/bin/icinga2 daemon -x notice -c /nix/store/iv52lm6vi25kj5n2bs6p6av8g17n75nb-icinga2.conf
Кто на ком стоял? Не понятно, что ты имеешь ввиду
Вероятно, потому, что система при рантайм разрешении зависимостей ищет их по этим же хэшам. Представь себе, что тебе нужно было бы в словаре искать слова не по первым буквам, а по последним.
Априори понятно, что хеши в путях так или иначе используются (иначе бы их не было).Даже не предполагал, что ответы будут из разряда "алгоритм Кнута-Морриса-Пратта понимают только Кнут, Моррис и Пратт".
Нет никакого "рантайм разрешения зависимостей". Билдтайм - есть.
А зачем второй? Ты же не будешь руками лезть в /nix/store/? Лучше бы они вообще не использовали имя в пути, не было бы лишних споров.
> А зачем второй? Ты же не будешь руками лезть в /nix/store/?Вот именно, что не буду: как увижу, так впадаю в ступор. "Что внутри, то и снаружи". До установки дело не доходит.
> Лучше
> бы они вообще не использовали имя в пути, не было бы
> лишних споров.Наверное.
> Зачем выбран 1й вариант?Все просто...
Понятно станет когда будете смотретьls /nix/store/
все будет очень красиво отформатировано, и все названия пакетов(их реальные имена) будут иметь одинаковое смещении от начало строки.
>> Зачем выбран 1й вариант?
> ls /nix/store/
> все будет очень красиво отформатировано, и все названия пакетов(их реальные имена) будут
> иметь одинаковое смещении от начало строки.Так, во втором варианте это точто так.
Нет не так.Если тут:
01gxz0kr1vw0wwix34a4wzbacxlkxiwf-libpng-1.6.34-apng.patch.gz.drv
01vamjy3a4ql8d0syh5b4raaw06652gz-gtk-doc-1.28.tar.xz.drv
033374d5p2fnv7w24d0zm0byppcpb4dh-m4-1.4.18.tar.bz2.drv
03gzan2g03vki14jlf0g5zr4ywz49jrz-xcb-proto-1.12.drv
03ix1p0c4a009f5l1rqmk7cyv64pwvlj-gnuplot-5.2.4
03yy2hmr1id53djlydksxi6id4a6qf42-xcb-util-wm-0.4.1.tar.bz2.drv
04gyl8ivy2d4gri4gn8rsiv9zfgrwv24-libXfont2-2.0.3.tar.bz2.drv
04p7zzghl7c9yhqd04mwgqyixjp69ljf-cln-1.3.4.tar.bz2.drv
059x3q97k49qlika2rhw68v4112jf7s7-hscolour-1.24.4.drv
05g5zv4i0cxnpv19rf5axagbdm2yc4w5-ghc-8.2.1-x86_64-deb8-linu
то второй вариант будет:
missing-includes.patch-00f7f6dbhd2rzbw3q7lixm55ccgl31vn
easy-file-0.2.2.drv-00km6fyhm5sd7mny598bbc5a73w0bgkq
hook-00ngkh3898nn72kgm2p6xkh2h82kw8z8
either-5.0.1.tar.gz.drv-00y0r6lzrlaqicnl6akki348z0rbnk3h
source.drv-0197ym4z8b5jqzgjcvhwcjkg1ks72njz
reload-container-01bmszganq6wbczbpc4vbz8mp2d5h1j1
libpng-1.6.34-apng.patch.gz.drv-01gxz0kr1vw0wwix34a4wzbacxlkxiwf
gtk-doc-1.28.tar.xz.drv-01vamjy3a4ql8d0syh5b4raaw06652gz
m4-1.4.18.tar.bz2.drv-033374d5p2fnv7w24d0zm0byppcpb4dh
xcb-proto-1.12.drv-03gzan2g03vki14jlf0g5zr4ywz49jrz
gnuplot-5.2.4-03ix1p0c4a009f5l1rqmk7cyv64pwvlj
xcb-util-wm-0.4.1.tar.bz2.drv-03yy2hmr1id53djlydksxi6id4a6qf42
libXfont2-2.0.3.tar.bz2.drv-04gyl8ivy2d4gri4gn8rsiv9zfgrwv24
cln-1.3.4.tar.bz2.drv-04p7zzghl7c9yhqd04mwgqyixjp69ljf
hscolour-1.24.4.drv-059x3q97k49qlika2rhw68v4112jf7s7
ghc-8.2.1-x86_64-deb8-linu-05g5zv4i0cxnpv19rf5axagbdm2yc4w5
Мне первый больше нравится, а вам? )
на минуточку, второй вариант будет выглядеть
cln-1.3.4.tar.bz2.drv-04p7zzghl7c9yhqd04mwgqyixjp69ljf
easy-file-0.2.2.drv-00km6fyhm5sd7mny598bbc5a73w0bgkq
either-5.0.1.tar.gz.drv-00y0r6lzrlaqicnl6akki348z0rbnk3h
ghc-8.2.1-x86_64-deb8-linu-05g5zv4i0cxnpv19rf5axagbdm2yc4w5
gnuplot-5.2.4-03ix1p0c4a009f5l1rqmk7cyv64pwvlj
gtk-doc-1.28.tar.xz.drv-01vamjy3a4ql8d0syh5b4raaw06652gz
hook-00ngkh3898nn72kgm2p6xkh2h82kw8z8
hscolour-1.24.4.drv-059x3q97k49qlika2rhw68v4112jf7s7
libXfont2-2.0.3.tar.bz2.drv-04gyl8ivy2d4gri4gn8rsiv9zfgrwv24
libpng-1.6.34-apng.patch.gz.drv-01gxz0kr1vw0wwix34a4wzbacxlkxiwf
m4-1.4.18.tar.bz2.drv-033374d5p2fnv7w24d0zm0byppcpb4dh
missing-includes.patch-00f7f6dbhd2rzbw3q7lixm55ccgl31vn
reload-container-01bmszganq6wbczbpc4vbz8mp2d5h1j1
source.drv-0197ym4z8b5jqzgjcvhwcjkg1ks72njz
xcb-proto-1.12.drv-03gzan2g03vki14jlf0g5zr4ywz49jrz
xcb-util-wm-0.4.1.tar.bz2.drv-03yy2hmr1id53djlydksxi6id4a6qf42
Да, и если установлено несколько версий одного пакета, то они окажутся рядышком. Если же версия одна, то в хеше нет необходимости.
> 05g5zv4i0cxnpv19rf5axagbdm2yc4w5-ghc-8.2.1-x86_64-deb8-linu
> ghc-8.2.1-x86_64-deb8-linu-05g5zv4i0cxnpv19rf5axagbdm2yc4w5…-ghc-8.2.1-x86_64-deb8-linu
> Мне первый больше нравится, а вам? )
Мне больше нравится "с точечками": http://www.opennet.dev/openforum/vsluhforumID3/112972.html#11
+ https://emacs-guix.gitlab.io/website/manual/latest/html_node... <<<= актуальная ссылка
+ https://github.com/alezost/pretty-sha-path.el <<<= или старо-отдельноНо вопрос-то был почему они выбрали.
Видимо, ваш ответ "мне нравится" следует читать "им (ему= Элько Дольстра) нравится". Вот и славно.
> Мне больше нравится "с точечками": http://www.opennet.dev/openforum/vsluhforumID3/112972.html#11
> + https://emacs-guix.gitlab.io/website/manual/latest/html_node...
> <<<= актуальная ссылкаТак редактор декорирует. ls покажет как есть.
В NTFS имеется такой неиспользуемый (и неподдерживаемый) тамошними приложениями функционал, как Alternative Data Streams (ADS).
То есть имя файла будет выглядеть следующим образом:
/nix/store/ghc-8.2.1-x86_64-deb8-linu:05g5zv4i0cxnpv19rf5axagbdm2yc4w5
если ADS один, то можно открывать файл по имени до двоеточия:
/nix/store/ghc-8.2.1-x86_64-deb8-linuПоскольку в таких каталогах хранятся различные версии одного приложения, по смыслу близки и напрашиваются подтома и их снимки (snapshot) btrfs. Если дальше развивать идею, при наличии должной поддержки со стороны ФС, вероятно, можно обойтись без хешей и ссылок, максимально сохранив привычную структуру каталогов.
> В NTFS имеется такой неиспользуемый (и неподдерживаемый) тамошними приложениями функционал,Гадость-то какая[I]!
> как
>> В NTFS имеется такой неиспользуемый (и неподдерживаемый) тамошними приложениями функционал,
> Гадость-то какая!Ну да. Сделали давно и не используют. Значит: чем дальше, тем меньше будут использовать. Такая там тенденция.
Но тут интересно, как дальше будет развиваться NixOS, и можно ли от хешей уйти.
>>> В NTFS имеется такой неиспользуемый (и неподдерживаемый) тамошними приложениями функционал,
>> Гадость-то какая!
> Ну да. Сделали давно и не используют. Значит: чем дальше, тем меньше
> будут использовать. Такая там тенденция.
> Но тут интересно, как дальше будет развиваться NixOS, и можно ли от
> хешей уйти.Визионер в треде! Все в машину.
Tiamat - VisionaireMusic: Edlund, Petersson; Lyrics: Edlund
With a solar knife I split the sky
And walk right in between
To search the answers to every "why?"
Where I have seen the unseenI stole the colour of night
To get out of your sight
I am the Visionaire
Источник teksty-pesenok.ru
Follow me if you dare...I count the stars in my hands
And dream myself strong
To watch them twinkle on my command
As once a year in midwinter songsI stole the colour of night
To get out of your sight
I am the Visionaire
Follow me if you dare...
> В NTFS имеется такой неиспользуемый (и неподдерживаемый) тамошними приложениями функционал,
> как Alternative Data Streams (ADS).Во многих (практически во всех основных) не-нт-фс реализованы "extended attributes":
https://www.lesbonscomptes.com/pages/extattrs.html
http://man7.org/linux/man-pages/man5/attr.5.htmlпричем уже давно (в полуоси еще лет 20 назад), но … не прижилось.
> Во многих (практически во всех основных) не-нт-фс реализованы "extended attributes":Ограничение по размеру, коих нет в ADS ("обычный файл" там является основным "стримом").
> ls /nix/store/
> все будет очень красиво отформатировано, и все названия пакетов(их реальные имена) будут
> иметь одинаковое смещении от начало строки.Спасибо. Разумное объяснение. Однако, отсортированный вывод привычнее.
Главное, не переоценивать Никс. Это прежде всего инструмент - мета-компилятор, который при фиксированном входе даёт фиксированный выход: файл, директорию, операционную систему. Результат не обязан всех устраивать или даже работать :) Фишка в том, что есть возможность так изменить входные данные, что выход будет вас устраивать, и вы всегда сможете его воспроизвести.
))) Даешь пакетный менеджер на блокчеине!
> ))) Даешь пакетный менеджер на блокчеине!И интерфейсе на электроне...
Пакетный менеджер на IPFS
> Добавлена возможность запуска исполняемых файлов в изолированном режиме, создаваемом с использованием инструментария firejail;Запускать через 'firejail firefox' можно в любом дистре. Тут же можно сделать так, что непосредствено комманда 'firefox' присутствующая в $PATH будет запускать firefox через firejail.
> поддерживается установка индивидуальных пакетов отдельными пользователями (пакет ставится
> в домашнюю директорию), возможна одновременная установка нескольких версий одной программы.В _домашнюю_ пользователя ничего (в норме -- не не-root установка) не ставится. Только симлинк на профиль (в /var?.. симлинком на "поколение" профиля в Store?), кажется (я не пользовал ни сабж, ни guix -- только на картинках видел).
"" Multi-user support
Starting at version 0.11, Nix has multi-user support. This means that non-privileged users can securely install software. Each user can have a different profile, a set of packages in the Nix store that appear in the user’s PATH. If a user installs a package that another user has already installed previously, the package won’t be built or downloaded a second time. At the same time, it is not possible for one user to inject a Trojan horse into a package that might be used by another user. "
> При использовании Nix пакеты устанавливаются в отдельное дерево директорий /nix/store
> или поддиректорию в каталоге пользователя."Многопользовательские" пакеты просто попадают в разные директории - с разными хешами, например. И в профили попадают соотв-но разные симлинки~~.
> зависимостей. Пакеты оформляются в виде контейнеров, содержащих необходимые для работы
> приложений компоненты.Вот слово "контейнер" здесь очень к месту. Как в "мусорный коньейнер". Или как "файлы изолируются в ФС в изолированные контейнеры -- директории".
Господа, давайте закроем тему, почему хэш перед именем, а не после, навсегда.Да, вы можете "вырезать" хэш с конца строки "/nix/store/foo-1.2.3-<hash>". Но такая задача не стоит вообще: не возникает необходимости этого делать.
Задача, которая реально стоит - это во время сборки найти в произвольном файле (во всех файлах) ссылки на другие пакеты.
Проще всего это продемонстировать на примере текстовых скриптов, но и бинарные файлы тоже ссылаются на другие пакеты, например:
objdump -p /nix/store/1pfwvyjl6rh57hbcj9w7yb16wb5djjx3-systemd-238/lib/systemd/systemd | grep -F RUNPATH
RUNPATH /nix/store/1pfwvyjl6rh57hbcj9w7yb16wb5djjx3-systemd-238/lib/systemd:/nix/store/hs26ajisl0xgb9ihvakmff7i0kjgzb7i-libseccomp-2.3.3-lib/lib:/nix/store/qd072spxcp4dqqjzwdybj59nna2adjmi-util-linux-2.32/lib:/nix/store/nazwqg290a3i5jrvwg8cqvqnh8n8pinf-audit-2.8.3/lib:/nix/store/9y8vpz8kdv463lz7qimapqiak4wh9vnk-kmod-25/lib:/nix/store/av4z4031zmss39xbzzfgkxjj5m7i420y-libapparmor-2.12.0/lib:/nix/store/nfh0wdwg24cf5xk0pw7n8w7m4d57wjs1-linux-pam-1.3.0/lib:/nix/store/93ljbaqhsipwamcn1acrv94jm6rjpcnd-acl-2.2.52/lib:/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/libВот ваша строка: /nix/store/1pfwvyjl6rh57hbcj9w7yb16wb5djjx3-systemd-238/lib/systemd:/nix/store/hs26ajisl0xgb9ihvakmff7i0kjgzb7i-libseccomp-2.3.3-lib/lib:/nix/store/qd072spxcp4dqqjzwdybj59nna2adjmi-util-linux-2.32/lib:/nix/store/nazwqg290a3i5jrvwg8cqvqnh8n8pinf-audit-2.8.3/lib:/nix/store/9y8vpz8kdv463lz7qimapqiak4wh9vnk-kmod-25/lib:/nix/store/av4z4031zmss39xbzzfgkxjj5m7i420y-libapparmor-2.12.0/lib:/nix/store/nfh0wdwg24cf5xk0pw7n8w7m4d57wjs1-linux-pam-1.3.0/lib:/nix/store/93ljbaqhsipwamcn1acrv94jm6rjpcnd-acl-2.2.52/lib:/nix/store/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib
Где здесь конец? Даже в этом простом случае "/83lrbvbmxrgv7iz49mgd42yvhi473xp6-glibc-2.27/lib" где конец? Если вы думаете про "первый слэш", подумайте еще: не все "пакеты" являются директориями, некоторые - простые файлы типа "/nix/store/830rbvbmxrgv7iz49mgd42yvhi473xp6-nginx.conf".
Короче, если ставить хэш "в конце", его просто не найти.
Если же хэш "в начале" (сразу после /nix/store), то всё значительно упрощается: нашли /nix/store, отсчитали n байт. Всё.Напоследок, вот как работает Никс:
Вход:
```
#!${pkgs.bash}/bin/bash${pkgs.coreutils}/bin/date -d now +%s
```
Выход:```
#!/nix/store/8zkg9ac4s4alzyf4a8kfrig1j73z66dw-bash-4.4-p23/bin/bash/nix/store/afd7zfah20ki5qxzic3z8sizgkmcjwnh-coreutils-8.27/bin/date -d now +%s
```
И, кстати, /nix/store - важный маркер ;) Или /guix/store. Но не /usr ;) То есть "пакеты" не должны быть установлены в стандартные места вроде /srv, /opt.
> И, кстати, /nix/store - важный маркер ;) Или /guix/store. Но не /usr
> ;) То есть "пакеты" не должны быть установлены в стандартные места
> вроде /srv, /opt.Не знаю, как Nix(*), а Guix позволяет оно двигать
http://git.savannah.gnu.org/cgit/guix.git/tree/configure.ac#n30
http://git.savannah.gnu.org/cgit/guix.git/tree/configure.ac#..., в т.ч. в ~user/.
И даже, говорят (сам-то я только на слайдах видел), когда-то можно было демона без рута в своём $HOME пускать. Сборка всего из исходников и потеря двоичных сборок с интернетов, развал/отмена изоляции демона-сборщика -- комплектом. И отсутствие поддержки таких "пользователей" -- становящихся "волшебно" сами себе девелоперами.
(*) а не, вот оно ж
https://github.com/NixOS/nix/blob/master/configure.ac#L143
[но без варнингов а-ля вторая ссылка наверху]Вот прочие изыски от сообщества -- как в ~/ без root-а:
https://nixos.wiki/wiki/Nix_Installation_Guide
> Не знаю, как Nix(*), а Guix позволяет оно двигать
> , в т.ч. в ~user/.
> И даже, говорят (сам-то я только на слайдах видел), когда-то можно было
> демона без рута в своём $HOME пускать. Сборка всего из_Кажется_, на простой запуск демона от юзера в Guix забили.
Теперь
. https://lists.gnu.org/archive/html/guix-devel/2018-10/msg000...
. . https://lists.gnu.org/archive/html/guix-devel/2018-05/msg001...
_играются_ с модными фичами -- user namespaces(*) в ядре и ‘guix pack --relocatable’.(*)
https://www.opennet.dev/opennews/art.shtml?num=46281
https://www.opennet.dev/opennews/art.shtml?num=46526
> Господа, давайте закроем тему, почему хэш перед именем, а не после, навсегда.
> Короче, если ставить хэш "в конце", его просто не найти.
> Если же хэш "в начале" (сразу после /nix/store), то всё значительно упрощается:
> нашли /nix/store, отсчитали n байт. Всё.И это тож. "Слегка" эффективнее. Может быть.
[В том же phd-thesis.pdf Автор [пишет о том, что] ищет просто 32 байта hex-а.]
И это:
https://nixos.wiki/wiki/FAQ#Why_.3Chash.3E-.3Cname.3E_instea...И это--^^ _всё_ пост-фактум. Почему Дольстра выбрал именно №1, а не №2 неизвестно. Пока?
Полистал phd-thesis.pdf -- там только про "уникально идентифицировать" и "избегать коллизий". Путь, включающий хеш, не важно _где_ - по №№1, 2 или 3(ниже), вполне отвечает Высоким Требованиям.
Вот, например, в Maak-е [того же автора] хеши "после" [или даже "в середине" -- давайте ещё №3 пообсуждаем--]:
"" The usual approach is to form an output name using a hash of the input attributes. For example, compileC (./foo.c) might yield a filename .maak_foo_305c.o, while compileC {in = ./foo.c, cflags = "-g"} would yield .maak_foo_54db.o; in actuality, we use longer hashes to decrease the probability of a collision. ""
--http://nixos.org/~eelco/pubs/iscsd-scm11-final.pdfМожно искать в источниках, можно г-на Дольстра при случае спросить, можно фантазировать (и меряться, кто выдумал Лучше!), факта это всё не меняет: с технической т.з. разницы _нет_ и [версия, что] выбор был сделан автором произвольно ничем не хуже прочих.
> с технической т.з. разницы _нет_Совершенно верно. Вне зависимости от содержимого phd-thesis.pdf (и хорошо, что согласуется с "Высокими Требованиями").
> и [версия, что] выбор был сделан
> автором произвольно ничем не хуже прочих.Именно потому, что в версии нет сомнений, и был задан вопрос.
И вопрос был не "почему?", а "зачем?" (что, в зависимости от точки зрения, можно трактовать и как "для чего?").> Можно искать в источниках, можно г-на Дольстра при случае спросить
Можно ещё и Юнга. Программы создаются не только для машин, но и для людей.
Хэш вначале ещё с точке зрения безопасности более оправдан. Некоторые ФС и архиваторы имеют ограничения на размер имени директории, что может теоретически использоваться для атак с использованием имён "очень_большое_имя-хэш", в которых хэш будет сдвинут за границу лимита, или подсовыванием спецсимволов в имя (типа "имя-фиктивный_хэш\0реальный_хэш").
There are only 10 types of people in the world: those who understand binary, and those who don't.