Re: Релиз Unit 1.6
Валентин Бартенев
vbart на nginx.com
Сб Ноя 17 15:03:25 UTC 2018
On Saturday, 17 November 2018 17:12:13 MSK Валентин Бартенев wrote:
> On Saturday, 17 November 2018 08:16:41 MSK Vadim A. Misbakh-Soloviov wrote:
> > Что-то я тут подебажил ещё, и заметил вообще страннейшую вещь:
> > нижеуказанная ошибка вываливается если использовать --local=/usr/lib64 и
> > export USER=root (потому что под ним и происходит install-фаза, просто
> > переменная пуста).
> >
> > > ```
> > > gyp WARN EACCES user "root" does not have permission to access the dev dir
> > > "/ var/tmp/portage/www-servers/nginx-unit-9999/homedir/.node-gyp/9.8.0" gyp
> > > cc1plus: error: /var/tmp/portage/www-servers/nginx-unit-9999/work/nginx-
> > > unit-9999/src: Permission denied
> > > ```
> >
> > Однако (!!!)
> > 1) не просто у юзера root есть права доступа в директории, на которые
> > ссылается билдлог, но и прямо даже из секции src_install (откуда потом
> > вызывается `make install`), непосредственно перед этим `make install`'ом я
> > прекрасно могу создать (touch'ем) файлы в указанных директориях...
> > Ну, точнее, первая не существует, но прекрасно создаётся `mkdir -p` (хотя это
> > и не помогает, а приводит к другой ошибке с правами), а вот во второй
> > прекрасно создаютмя любые файлы.
> >
> > А вот gyp почему-то выкабенивается...
>
>
> Я ровно это сейчас и наблюдаю, но только без --local:
>
> npm install -g /tmp/portage/www-servers/nginx-unit-9999/work/nginx-unit-9999/build/node-unit-http.tar.gz
>
> > unit-http на 1.0.0 install /tmp/portage/www-servers/nginx-unit-9999/image/usr/lib64/node_modules/unit-http
> > node-gyp configure build
>
> gyp WARN EACCES user "root" does not have permission to access the dev dir "/tmp/portage/www-servers/nginx-unit-9999/homedir/.node-gyp/8.12.0"
> gyp WARN EACCES attempting to reinstall using temporary dev dir "/tmp/portage/www-servers/nginx-unit-9999/image/usr/lib64/node_modules/unit-http/.node-gyp"
> gyp WARN install got an error, rolling back install
> gyp WARN install got an error, rolling back install
> gyp ERR! configure error
> gyp ERR! stack Error: EACCES: permission denied, mkdir '/tmp/portage/www-servers/nginx-unit-9999/image/usr/lib64/node_modules/unit-http/.node-gyp'
> gyp ERR! System Linux 4.14.81-gentoo
> gyp ERR! command "/usr/bin/node" "/usr/lib64/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "build"
>
>
> И пока непонятно, что с этим делать. Будем разбираться.
>
По всей видимости, опция USER влияет исключительно на вывод ошибки в логе,
а пользователь при этом остается тем, что был указан в конфигах npm, а по
умолчанию это "nobody". Очень удобно!
Если в npm install скормить явно --user=root, то всё успешно отрабатывает.
Похоже --unsafe-perm там необходим, иначе оно неработоспособно при таких сборках.
У меня установка (без опции --local) прошла успешно с таким патчем:
diff -r cb3595d83966 auto/modules/nodejs
--- a/auto/modules/nodejs Thu Nov 15 21:50:00 2018 +0300
+++ b/auto/modules/nodejs Sat Nov 17 17:21:05 2018 +0300
@@ -161,7 +161,7 @@ install: ${NXT_NODE}-$NXT_NODE_INSTALL
${NXT_NODE}-install: ${NXT_NODE_TARBALL} \
$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
${NXT_NODE_EXPORTS} && \\
- ${NXT_NPM} install -g ${PWD}/${NXT_NODE_TARBALL}
+ ${NXT_NPM} install -g --user=root ${PWD}/${NXT_NODE_TARBALL}
${NXT_NODE}-uninstall:
${NXT_NPM} uninstall -g unit-http
Либо с таким:
diff -r cb3595d83966 auto/modules/nodejs
--- a/auto/modules/nodejs Thu Nov 15 21:50:00 2018 +0300
+++ b/auto/modules/nodejs Sat Nov 17 17:21:05 2018 +0300
@@ -161,7 +161,7 @@ install: ${NXT_NODE}-$NXT_NODE_INSTALL
${NXT_NODE}-install: ${NXT_NODE_TARBALL} \
$NXT_BUILD_DIR/$NXT_LIB_UNIT_STATIC
${NXT_NODE_EXPORTS} && \\
- ${NXT_NPM} install -g ${PWD}/${NXT_NODE_TARBALL}
+ ${NXT_NPM} install -g --unsafe-perm ${PWD}/${NXT_NODE_TARBALL}
${NXT_NODE}-uninstall:
${NXT_NPM} uninstall -g unit-http
--
Валетин Бартенев
Подробная информация о списке рассылки nginx-ru