我试图在CircleCi上运行此命令:
sudo npm install -g --loglevel=warn @oresoftware/r2g
我得到这个错误:
#!/bin/bash -eo pipefail
sudo npm install -g --loglevel=warn @oresoftware/r2g
/usr/local/bin/r2g -> /usr/local/lib/node_modules/@oresoftware/r2g/cli/r2g.sh
/usr/local/bin/r2g_run -> /usr/local/lib/node_modules/@oresoftware/r2g/cli/r2g_run.sh
/usr/local/bin/r2g_copy_smoke_tester -> /usr/local/lib/node_modules/@oresoftware/r2g/assets/copy_smoke_tester.sh
> @oresoftware/r2g@0.0.132 postinstall /usr/local/lib/node_modules/@oresoftware/r2g
> ./assets/postinstall.sh
mkdir: cannot create directory â/rootâ: Permission denied
could not create directory => '/root/.r2g/temp/project'...
mkdir: cannot create directory â/rootâ: Permission denied
could not create oresoftware/bash dir.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @oresoftware/r2g@0.0.132 postinstall: `./assets/postinstall.sh`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @oresoftware/r2g@0.0.132 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-06-17T04_41_24_461Z-debug.log
Exited with code 1
这个问题并不是CircleCI特有的-这发生在Docker或设置了错误权限的任何地方。
我的问题是-如果我是根用户-我的
$HOME
是/root,运行时为什么会出现权限错误:
mkdir -p /root/.r2g/temp/project
如你所见,它在第一个目录失败了-我不能创建
/root
.即使它已经存在,几乎可以肯定,我应该是根用户,其中/root是我的
$主页
目录。
有人知道在Linux系统上是否有解决方法吗?是否有一些命令可以作为根目录运行以获取对自己主目录的权限?
我试图找到一个通用的、不具有强制性的解决方案。
我以前试过运行这个
npm install
命令:
sudo chown -R $(whoami) $HOME
那没做什么,同样的错误。
一个简单的2行dockerfile将产生同样的问题:
FROM node:10
RUN npm install -g @oresoftware/r2g
对于这三行Dockerfile,它也会出现同样的错误:
FROM node:10
RUN apt-get update && apt-get install -y sudo
RUN sudo npm install -g @oresoftware/r2g
这是
postinstall.sh script
.
我有
cross-posted this question
到Circleci帮助论坛。