EACCES при установке композитора гиперледжера

У меня возникли трудности с локальной установкой компоновщика Hyperledger в системе Ubuntu согласно https://hyperledger.github.io/composer/installing/development-tools.html. Я думаю, что я выполнил все требования:

ibmadmin@pfuntner1:~/hyperledger-composer$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.2 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
ibmadmin@pfuntner1:~/hyperledger-composer$ docker --version
Docker version 17.03.1-ce, build c6d412e
ibmadmin@pfuntner1:~/hyperledger-composer$ docker-compose --version
docker-compose version 1.13.0, build 1719ceb
ibmadmin@pfuntner1:~/hyperledger-composer$ node --version
v6.10.3
ibmadmin@pfuntner1:~/hyperledger-composer$ npm --version
3.10.10
ibmadmin@pfuntner1:~/hyperledger-composer$ git --version
git version 2.7.4
ibmadmin@pfuntner1:~/hyperledger-composer$ python --version
Python 2.7.12
ibmadmin@pfuntner1:~/hyperledger-composer$ code --version
1.15.1
41abd21afdf7424c89319ee7cb0445cc6f376959
ibmadmin@pfuntner1:~/hyperledger-composer$

Конечно, в инструкциях говорится, что мне нужен git 2.9.x или выше, а у меня только git 2.7.4, но я не уверен, что это вызовет проблему или конкретную проблему, которую я вижу. Когда я пытаюсь установить composer-cli, я получаю:

ibmadmin@pfuntner1:~/hyperledger-composer$ npm install -g composer-cli
npm WARN deprecated [email protected]: Use mz or fs-extra^3.0 with Promise Support
npm WARN deprecated [email protected]: Use uuid module instead
npm WARN deprecated [email protected]: This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.
npm WARN deprecated [email protected]: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated [email protected]: Deprecated, use jstransformer
npm WARN deprecated [email protected]: All versions below 4.0.1 of Nodemailer are deprecated. See https://nodemailer.com/status/
npm WARN checkPermissions Missing write access to /usr/lib/node_modules
/usr/lib
+-- [email protected]
  +-- [email protected]
.
.
.
    +-- [email protected]
      +-- [email protected]

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/composer-cli/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! Linux 4.4.0-91-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "composer-cli"
npm ERR! node v6.10.3
npm ERR! npm  v3.10.10
npm ERR! path /usr/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/ibmadmin/hyperledger-composer/npm-debug.log
ibmadmin@pfuntner1:~/hyperledger-composer$

Я удалил большую часть вывода npm install, потому что я не думал, что это актуально, и это было довольно долго.

В соответствии с инструкциями я не работаю с правами root и не удивлен, что у меня нет доступа, который требуется для установки, к пути, например /usr/lib/node_modules. Я запускал из пустого каталога, и единственное, что было создано как npm-debug.log. Что я должен делать?


person John    schedule 23.08.2017    source источник
comment
Хотя вы не используете root, вы установили node как root (возможно, выполнив sudo apt-get install node?), поэтому он устанавливается в каталоги, к которым только root имеет доступ для записи, поэтому вы не можете устанавливать модули npm глобально, если вы не root или перенастройте npm для учета этого. В основном вам нужно убедиться, что вы устанавливаете узел под своим обычным идентификатором, и я бы рекомендовал использовать nvm для этого, так как это упрощает весь процесс.   -  person david_k    schedule 24.08.2017


Ответы (1)


Так что в основном это проблема npm. Но странно видеть это с вашей версией npm выше.

Обычный маршрут показан здесь https://docs.npmjs.com/getting-started/fixing-npm-permissions

В идеале, когда вы устанавливаете модули композитора глобально (например, composer-cli), вы должны устанавливать его, используя назначенного пользователя без полномочий root, как вы действительно пытались сделать. Если есть проблемы (например, в Ubuntu с разрешениями на запись/обновление каталогов узлов, расположенных в системных каталогах, таких как /usr/local) — одно решение (но см. ссылку выше) — выполнить установку npm в каталог, к которому у вас есть доступ — скорее чем прибегать к root или суперпользовательскому доступу, так как это не очень хорошая практика. Вот что нужно сделать, чтобы установить префикс npm для данного каталога,...

«Набор префикса конфигурации npm /home/myuser/»

В этом случае глобальные бинарники помещаются в /home/myuser/bin, который находится в вашем PATH, а модули помещаются в /home/myuser/lib...

person Paul O'Mahony    schedule 23.08.2017
comment
Спасибо, Пол. Это избавляет меня от проблемы, но, возможно, это еще одна причина, по которой Node.js не является моим самым любимым языком в мире. :) - person John; 23.08.2017