Ubuntu非Root权限下如何使用gcc完成npm install?
问题描述
在Ubuntu服务器上使用无sudo权限的服务账户执行npm install时,遇到gcc权限问题:
执行
gcc --version时提示:-bash: /usr/bin/gcc: Permission denied查看gcc软链接信息:
ls -lah /usr/bin/gcc输出:
lrwxrwxrwx 1 root root 5 May 21 2019 /usr/bin/gcc -> gcc-7
可行解决方案(无需修改系统权限/赋予sudo)
以下方法均可在不改动系统权限、不获取sudo权限的前提下完成npm install:
1. 切换使用clang编译器(如果服务器已安装)
如果服务器上预安装了clang,可直接让npm用clang替代gcc:
- 先验证clang是否可用:
clang --version - 若能正常输出版本信息,设置环境变量后执行npm install:
export CC=clang CXX=clang++ npm install
2. 手动在用户目录编译/安装gcc
如果没有可用的clang,可将gcc编译安装到用户专属目录:
- 下载对应版本的gcc源码包(比如gcc-7.x)到用户主目录
- 创建编译目录并进入:
mkdir ~/gcc-build && cd ~/gcc-build - 配置编译路径为用户本地目录:
../gcc-7.x/configure --prefix=$HOME/local/gcc - 编译并安装(过程耗时较长):
make make install - 将本地gcc加入用户PATH:
export PATH=$HOME/local/gcc/bin:$PATH - 验证后执行npm install:
gcc --version npm install
3. 使用预编译的gcc二进制包
如果不想编译源码,可下载对应Ubuntu架构的gcc预编译二进制包:
- 解压包到用户主目录的
~/local文件夹 - 将二进制路径加入用户PATH:
export PATH=$HOME/local/gcc/bin:$PATH - 验证gcc可用后执行
npm install
内容的提问来源于stack exchange,提问作者jsonTD
相关产品推荐
相关产品推荐

