Bri*_*ian 15 node.js npm post-install bower
我正在尝试找出全局安装StriderCD的最佳方法.我通过全局启用的nvm分支安装了node和npm ,并且所有路径都适用于其他构建,但是没有一个需要像这样的post安装.
我已经尝试了两者sudo npm install -g strider,也只是在没有sudo的情况下以root身份安装,但是我总是EACCESS在安装后步骤中遇到bower文件夹的.config和.cache文件夹错误:
> 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'
Run Code Online (Sandbox Code Playgroud)
作为root安装,root没有自己的$ HOME目录的权限,这是非常奇怪的,除非bower正在创建具有错误权限的dirs和文件.谁能解释一下:
> 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)
Run Code Online (Sandbox Code Playgroud)
使用sudo作为ubuntu用户并尝试chmod -R 777 $HOME/.config我得到相同的东西$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
Run Code Online (Sandbox Code Playgroud)
为什么bower坚持在$HOME/.config我使用时使用--global并使用sudo进行安装?有没有办法将此映射到不同的路径并使权限正确?当我su root -l安装时,为什么root没有权限访问文件或在自己的内部创建目录$HOME和/或$HOME/.config?很混乱.
这是一个全新更新的14.04 LTS AWS实例.这个错误的根本原因是什么?我的设置导致了bower或Strider部分的问题或错误的配置?
您的文件系统的权限看起来确实很奇怪,应该进行调查和修复。
也就是说,第一个堆栈跟踪的重要部分是configstore,它是一种用于将数据缓存或保存到磁盘的机器。不用说,它会尝试写入这些位置。这是一个起点。
较新的conf模块的常见问题解答中指出了权限问题,尽管它似乎不适用于Linux。
在configstore中,配置存储在所有系统上的~/.config(这主要是Linux约定)中,而conf将配置存储在系统默认用户配置目录中。事实证明, ~/.config 目录在 macOS 和 Windows 上经常具有不正确的权限,这给用户带来了很多痛苦。
切换可以conf解决问题吗?也许,也许不是。提出问题也没什么坏处。这是一个非常简单的替换。你当然可以在你的内部进行修改,node_modules以验证这是否可以解决你的问题。
configstore和conf都尊重XDG_CONFIG_HOME环境变量。然而,他们读取它的时间略有不同,前者在模块require()时,后者在实例化其类时。
我们还应该挑战以特定用户 ( ) 身份运行进程的假设root,因为 Node 程序可以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());
Run Code Online (Sandbox Code Playgroud)
这很有用,因为 或bower可能npm会在不方便的时间降级权限。或者也许npm run build脚本中的某些内容正在这样做。
如果您看到用户或组在程序的整个生命周期中发生变化,那么这是一个很容易出现错误的区域。仔细检查打印的用户或组是否具有对失败路径的完全访问权限。根据正在进行的具体活动,可能需要x对父目录(一直到文件系统的根目录)具有执行 () 权限。
| 归档时间: |
|
| 查看次数: |
610 次 |
| 最近记录: |