StriderCD全局安装后安装失败,访问$ HOME / .config $ HOME / .cache

我正在试图找出在全球安装StriderCD的最佳方法。 我通过全局启用的nvm fork来安装node和npm,并且所有的path对于其他的构build都可以正常工作,但是没有一个需要像这样的post安装。

我已经尝试了sudo npm install -g strider ,也只是以root用户身份安装而没有安装sudo,但是我总是在post安装步骤中遇到了.config和.cache文件夹中的EACCESS错误。

 > strider@1.6.6 postinstall /usr/local/lib/node_modules/strider > bower install --allow-root && npm run build /usr/local/lib/node_modules/strider/node_modules/bower/node_modules/mkdirp/index.js:89 throw err0; ^ Error: EACCES, permission denied '/home/ubuntu/.config' 

以root用户身份安装,root用户没有其自己的$ HOME目录的权限,这是非常奇怪的,除非bower用错误的权限创build目录和文件。 任何人都可以解释一下

 > strider@1.6.6 postinstall /usr/local/lib/node_modules/strider > bower install --allow-root && npm run build /usr/local/lib/node_modules/strider/node_modules/bower/node_modules/configstore/index.js:56 throw err; ^ Error: EACCES, permission denied '/root/.config/configstore/bower-github.yml' You don't have access to this file. at Error (native) at Object.fs.openSync (evalmachine.<anonymous>:500:18) at Object.fs.readFileSync (evalmachine.<anonymous>:352:15) at Object.create.all.get (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/configstore/index.js:34:29) at Object.Configstore (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/configstore/index.js:27:44) at readCachedConfig (/usr/local/lib/node_modules/strider/node_modules/bower/lib/config.js:22:23) at defaultConfig (/usr/local/lib/node_modules/strider/node_modules/bower/lib/config.js:11:24) at Object.<anonymous> (/usr/local/lib/node_modules/strider/node_modules/bower/lib/index.js:40:32) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) 

使用sudo作为ubuntu用户,并尝试chmod -R 777 $HOME/.config我在$HOME/.cache上得到了同样的$HOME/.cache ! 叹。

 > strider@1.6.6 postinstall /usr/local/lib/node_modules/strider > bower install --allow-root && npm run build bower EACCES EACCES, permission denied '/home/ubuntu/.cache/bower/registry/bower.herokuapp.com/lookup' Stack trace: Error: EACCES, permission denied '/home/ubuntu/.cache/bower/registry/bower.herokuapp.com/lookup' at Error (native) at Object.fs.mkdirSync (fs.js:747:18) at Function.sync (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/node_modules/mkdirp/index.js:55:12) at new Cache (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/lib/util/Cache.js:21:16) at RegistryClient.<anonymous> (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/lib/lookup.js:163:35) at Array.forEach (native) at RegistryClient.initCache (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/lib/lookup.js:150:34) at RegistryClient._initCache (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/Client.js:62:27) at new RegistryClient (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/Client.js:16:10) at new PackageRepository (/usr/local/lib/node_modules/strider/node_modules/bower/lib/core/PackageRepository.js:17:28) Console trace: Error at StandardRenderer.error (/usr/local/lib/node_modules/strider/node_modules/bower/lib/renderers/StandardRenderer.js:82:37) at Logger.<anonymous> (/usr/local/lib/node_modules/strider/node_modules/bower/bin/bower:110:22) at Logger.emit (events.js:107:17) at Logger.emit (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-logger/lib/Logger.js:29:39) at /usr/local/lib/node_modules/strider/node_modules/bower/lib/commands/index.js:45:20 at _rejected (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/q/q.js:844:24) at /usr/local/lib/node_modules/strider/node_modules/bower/node_modules/q/q.js:870:30 at Promise.when (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/q/q.js:1122:31) at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/q/q.js:788:41) at /usr/local/lib/node_modules/strider/node_modules/bower/node_modules/q/q.js:556:49 System info: Bower version: 1.4.1 Node version: 0.12.4 OS: Linux 3.13.0-48-generic x64 

为什么凉亭坚持使用$HOME/.config当我使用 – --global和也使用sudo安装? 有没有办法将这个映射到不同的path,并使权限适当? 当我用su root -l来安装时,为什么root没有访问文件的权限,或者在它自己的$HOME和/或$HOME/.config里面创builddir? 很混乱。

这是全新更新的14.04 LTS AWS实例。 这个错误的根本原因是什么,它是我的安装程序导致问题或不良configuration在鲍尔或Strider的一部分?

你的文件系统的权限似乎很奇怪,应该调查和修复。

也就是说,第一个堆栈跟踪的重要部分是configstore ,这是一种用于将数据caching或保存到磁盘的机器。 不用说,它会尝试写入这些地点。 那是一个开始的地方。

权限问题在较新的conf模块的FAQ中被调用,尽pipe它似乎不适用于Linux。

在configstore中,configuration文件存储在所有系统上的〜/ .config文件(主要是一个Linux协议),而conf则将configuration文件保存在系统默认的用户configuration文件目录中。 事实certificate,〜/ .config目录经常在macOS和Windows上有一个不正确的权限,这给用户造成了很多的痛苦。

切换到conf解决这个问题? 也许,也许不是。 不能伤害提出问题 。 这是一个很小的替代品。 而且你肯定可以在你的node_modules里面进行node_modules来validation是否为你修复了这个问题。

configstore和conf都尊重XDG_CONFIG_HOME环境variables。 然而,它们在稍微不同的时间读取它,前者在模块中require()时间,后者在其类被实例化时。

我们还应该挑战以特定用户( root )运行的进程的假设,因为节点程序可以process.setuid() ,这在命令行工具中是相对常见的。

我会修改正在运行的各种node_modules文件,并在一些…

 console.log('User:', process.getuid()); console.log('Group:', process.getgid()); console.log('Effective user:', process.geteuid()); console.log('Effective group:', process.getegid()); 

这很有用,因为bowernpm可能会在不方便的时间降级权限。 或者也许在npm run build脚本中是这样做的。

如果您看到用户或组在整个程序生命周期内都在变化,那么这是一个高度潜在的漏洞领域。 仔细检查打印的用户或组是否可以完全访问失败的path。 根据正在进行的确切活动,可能需要对父目录具有执行( x )权限,一直到文件系统的根目录。

Interesting Posts