Re: Релиз Unit 1.6

Валентин Бартенев vbart на nginx.com
Чт Ноя 15 21:11:47 UTC 2018


On Thursday, 15 November 2018 23:46:33 MSK Vadim A. Misbakh-Soloviov wrote:
> В письме от пятница, 16 ноября 2018 г. 3:32:03 +07 пользователь Валентин 
> Бартенев написал:
> > А make install делается из под рута?  
> да
> Но в sandbox (который пресекает попытки вылезти куда не следует) и, возможно, 
> с fakeroot (завтра поконкретнее подебажу, используется ли он именно на этой 
> стадии).
> > Если не была задана опция --local,
> > то npm будет пытаеться установить модуль в систему глобально, а для этого
> > нужны соответсвующие привилегии.  Если нужно поместить модуль в отдельную
> > директорию, то следует указать опцию --local, либо использовать
> > make node-local-install с соответсвующим DESTDIR.
> Опция --local задана не была, но была задана переменная DESTDIR, а, согласно 
> содержимому auto/modules/nodejs этого, вроде как, достаточно для того чтобы 
> вызывался node-local-install. И, он, собственно, и вызывается. Но потом 
[..]

Опция --local устанавливает NXT_NODE_LOCAL.

        --local=*)      NXT_NODE_LOCAL="$value"                             ;;

иначе тот пустой:

NXT_NODE_LOCAL=${NXT_NODE_LOCAL=}

а далее проверка и если он пустой, то будет использоваться node-install
и только если не пустой, то node-local-install:

if [ -n "$NXT_NODE_LOCAL" ]; then
    NXT_NODE_INSTALL=local-install
else
    NXT_NODE_INSTALL=install
fi

install: ${NXT_NODE}-$NXT_NODE_INSTALL

ну и судя по тому, что было приведено в предыдущем письме, npm install
вызывается с флагом -g, а это установка в глобальную директорию npm в
системе.



> случается непонятно что и происходит бесконечный цикл про права доступа, хотя 
> `id` и возвращает "root". Я даже пробовал объявить в стадии src_install'а 
> переменную USER (которая и в самом деле пуста), но не помогало. Помог только 
> --unsafe...

sandbox скорее всего мешает npm поставить в свою глобальную директорию
модулей в системе и от этого все приключения.

Подозреваю, что сам npm при этом на DESTDIR не смотрит или делает как-то
странно.


> > Или я неправильно понял проблему?  Тогда хотелось бы подробностей,
> > что за система и с какими опциями зовут ./configure, make и т.д.?
> 1) Gentoo,
> 2) как-то вот так:

Ok, посмотрю на это повнимательнее.

Последний раз, когда я пытался поставить в Gentoo, то обнаружил
из коробки сломанный npm:


% npm -v
fs.js:1657
      binding.lstat(baseLong);
              ^

Error: ENOENT: no such file or directory, lstat '/lib64/node_modules'
    at Object.realpathSync (fs.js:1657:15)
    at toRealPath (module.js:164:13)
    at Function.Module._findPath (module.js:213:22)
    at Function.Module._resolveFilename (module.js:546:25)
    at Function.Module._load (module.js:475:25)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3


и сходу не смог это побороть.

--
Валентин Бартенев


Подробная информация о списке рассылки nginx-ru