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 mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru