Ubuntu安装expo-cli时遭遇npm EACCES权限错误求助
解决expo-cli安装时的EACCES权限拒绝错误
看你在安装expo-cli的时候反复碰到权限拒绝的问题,已经手动修改了不少目录和文件的所有权,但还是卡在unlink '/usr/bin/expo'这个错误上。其实核心原因是:/usr/bin目录本身属于root用户,哪怕你把里面的软链接所有者改成自己,普通用户也没有权限删除该目录下的文件。结合你给出的权限信息和错误日志,我整理了几个针对性的解决步骤:
一、先确认当前冲突文件的细节
先执行命令查看/usr/bin/expo的详细权限,确认它的状态:
ls -l /usr/bin/expo
同时检查它指向的目标文件权限:
ls -l /usr/lib/node_modules/expo-cli/bin/expo.js
二、手动清理冲突的软链接
因为普通用户没法直接修改/usr/bin下的文件,所以用sudo来备份并清理现有冲突文件:
- 备份现有软链接(以防后续需要恢复):
sudo mv /usr/bin/expo /usr/bin/expo.bak sudo mv /usr/bin/expo-cli /usr/bin/expo-cli.bak
- 清理npm缓存,避免残留的安装信息干扰:
npm cache clean --force
三、用安全的方式重新安装expo-cli
不建议用root权限安装npm包(容易引发更多权限问题),更稳妥的是把全局包安装到用户专属目录:
方法1:临时指定用户目录安装
执行以下命令将expo-cli安装到用户目录下:
npm install -g expo-cli --prefix ~/.npm-global
然后把这个目录添加到环境变量,让系统能找到expo命令:
- 编辑你的shell配置文件(比如
~/.bashrc或~/.zshrc),添加一行:export PATH=~/.npm-global/bin:$PATH - 执行以下命令让配置生效:
source ~/.bashrc # 如果用的是bash # 或者 source ~/.zshrc 如果用的是zsh
方法2:修改npm全局默认路径(一劳永逸)
先创建用户专属的全局npm目录:
mkdir -p ~/.npm-global
然后配置npm默认使用这个路径:
npm config set prefix '~/.npm-global'
同样把这个路径添加到环境变量(步骤同方法1),之后所有全局npm包都会安装到这个目录,不会再碰到权限问题。
四、验证安装结果
完成上述步骤后,执行以下命令检查是否安装成功:
expo --version
如果能正常显示expo-cli的版本号,就说明问题解决了。
内容的提问来源于stack exchange,提问作者Anurag
相关产品推荐
相关产品推荐

