在Android的Termux中安装Firebase遇EACCES错误,求解决
解决Termux中全局安装Firebase Tools的EACCES权限问题
问题重现
执行npm install -g firebase或npm install -g firebase-tools时触发EACCES权限错误,提示缓存文件夹存在root权限文件,执行推荐的sudo chown -R 10121:10121 "/data/data/com.termux/files/home/.npm"后问题仍存在。错误日志如下:
~ $ npm install -g firebase npm ERR! code EACCES npm ERR! syscall link npm ERR! path /data/data/com.termux/files/home/.npm/_cacache/tmp/23cecbe7 npm ERR! dest /data/data/com.termux/files/home/.npm/_cacache/content-v2/sha512/a4/3d/598b266209821efebe25e609909ad2caceed2b3f8a7b74a75da07d88c6a9c4801e9e995ddb32695d72d767abfce727bd9a38c3a5470372fffa175a6f9e93 npm ERR! errno EACCES npm ERR! npm ERR! Your cache folder contains root-owned files, due to a bug in npm ERR! previous versions of npm which has since been addressed. npm ERR! npm ERR! To permanently fix this problem, please run: npm ERR! sudo chown -R 10121:10121 "/data/data/com.termux/files/home/.npm" npm ERR! A complete log of this run can be found in: npm ERR! /data/data/com.termux/files/home/.npm/_logs/2022-11-11T18_19_15_987Z-debug-0.log ~ $
解决步骤
1. 彻底清理npm缓存目录
直接删除存在权限问题的缓存目录,避免残留错误:
rm -rf ~/.npm
2. 配置npm全局安装目录为用户可写路径
Termux中默认全局安装目录可能存在权限限制,手动指定用户目录下的全局安装路径:
- 创建全局安装目录:
mkdir -p ~/.npm-global
- 配置npm使用该目录作为全局前缀:
npm config set prefix '~/.npm-global'
- 将全局目录加入系统PATH,确保安装的命令能被直接调用:
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
- 刷新当前shell的环境变量:
source ~/.bashrc
3. 重新安装Firebase Tools
注意:firebase包并非官方CLI工具,正确的Firebase命令行工具是firebase-tools,执行以下命令安装:
npm install -g firebase-tools
4. 检查并修复其他目录权限
如果仍有问题,检查是否存在其他root权限的用户目录,比如.config目录:
ls -ld ~/.config
若输出显示所有者为root,执行以下命令修复权限:
chown -R $USER:$USER ~/.config
内容的提问来源于stack exchange,提问作者Zebron
相关产品推荐
相关产品推荐

