Linux给所有用户安装node

背景

在A机器中安装了一个gitlab-runner程序, gitlab-runner程序会新建一个gitlab-runner用户

而我的gitlab-runner程序 主要用来跑node打包流程

我的解决方案有两个

  • 登录gitlab-runner用户, 在当前这个用户安装node
  • 给这个机器的所有用户都安装可使用的node

这里我采用的第二种解决方案

步骤

创建nvm所需目录

# 用来存放nvm安装不同版本的node程序
$ mkdir /usr/local/nvm
# 用来存放nvm本身的代码 
$ mkdir /opt/nvm

下载nvm代码

$ git clone https://github.com/nvm-sh/nvm.git /opt/nvm

nvm下载全局默认node

$ nvm install 10.18.1

新建每个用户登录脚本

$ vim /etc/profile.d/nvm.sh

内容如下

export NVM_DIR=/usr/local/nvm # 导出NVM_DIR 环境变量,让nvm 安装node到该目录
source /opt/nvm/nvm.sh # 执行nvm 的命令, 激活nvm 到系统shell 中
nvm use 10.18.1 # 用户进来使用的node版本

未解决问题

gitlab-runner登录后 nvm.sh报错

因为在profile.d/nvm.sh设置了每次登陆都激活nvmsource /opt/nvm/nvm.sh

但是su gitlab-runner 之后会报错如何

Error: EACCES: permission denied, scandir '/root'
TypeError: Cannot read property 'get' of undefined
    at errorMessage (/usr/local/nvm/versions/node/v10.18.1/lib/node_modules/npm/lib/utils/error-message.js:38:39)
    at errorHandler (/usr/local/nvm/versions/node/v10.18.1/lib/node_modules/npm/lib/utils/error-handler.js:201:13)
    at /usr/local/nvm/versions/node/v10.18.1/lib/node_modules/npm/bin/npm-cli.js:78:20
    at cb (/usr/local/nvm/versions/node/v10.18.1/lib/node_modules/npm/lib/npm.js:225:22)
    at /usr/local/nvm/versions/node/v10.18.1/lib/node_modules/npm/lib/npm.js:263:24
    at /usr/local/nvm/versions/node/v10.18.1/lib/node_modules/npm/lib/config/core.js:81:7
    at Array.forEach (<anonymous>)
    at /usr/local/nvm/versions/node/v10.18.1/lib/node_modules/npm/lib/config/core.js:80:13
    at f (/usr/local/nvm/versions/node/v10.18.1/lib/node_modules/npm/node_modules/once/once.js:25:25)
    at /usr/local/nvm/versions/node/v10.18.1/lib/node_modules/npm/lib/config/core.js:110:20
...

看上去是权限问题, 但是跑CI的时候没出现这个问题, 只有手动去机器登录gitlab-runner会出现这个问题, 所以先忽略, 这个机器的其他用户没这个问题

参考链接

© 404mzk all right reserved,powered by Gitbookhttp://blog.404mzk.com 该文件修订时间: 2020-01-16 15:34:15

results matching ""

    No results matching ""