The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск дистрибутива NixOS 18.09, использующего пакетный мене..."
Отправлено Аноним, 08-Окт-18 11:22 
Господа, давайте закроем тему, почему хэш перед именем, а не после, навсегда.

Да, вы можете "вырезать" хэш с конца строки "/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
```

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру