安装pouchdb-server时遇sqlite3权限问题陷入无限循环求助
解决PouchDB-Server安装时SQLite3权限导致的无限循环问题
我之前也踩过这个sqlite3权限引发的安装死循环坑,给你几个亲测有效的解决办法:
方法一:直接使用npm的unsafe-perm参数
这个是最快的临时解决办法,因为问题根源是npm在sudo模式下会自动降级权限运行包的安装脚本,导致sqlite3编译时无法访问必要目录,反复重试陷入循环。加上--unsafe-perm=true参数可以让npm保持root权限执行安装:
sudo npm install -g pouchdb-server --unsafe-perm=true
方法二:调整npm全局安装目录权限(推荐长期方案)
每次用sudo装包容易碰到权限问题,不如直接把npm的全局安装目录改成自己用户有权限的路径,以后就不用sudo了:
- 创建专属的npm全局目录:
mkdir ~/.npm-global - 配置npm使用这个目录作为全局安装路径:
npm config set prefix '~/.npm-global' - 把这个目录添加到系统PATH里(编辑
~/.bashrc或者~/.profile文件):echo "export PATH=~/.npm-global/bin:$PATH" >> ~/.bashrc - 刷新当前终端的环境变量:
source ~/.bashrc - 现在不用sudo就能正常安装了:
npm install -g pouchdb-server
方法三:手动安装依赖后强制从源码编译
如果上面两种方法都不行,先装sqlite3的系统级依赖,再强制从源码编译安装:
- 安装sqlite3和编译依赖:
sudo apt-get install -y sqlite3 libsqlite3-dev - 强制从源码编译安装pouchdb-server:
sudo npm install -g pouchdb-server --build-from-source
补充说明
你看到的gyp WARN EACCES警告,本质是npm的安全机制:当用root身份运行npm时,它会默认切换到一个非特权用户去执行包的安装脚本,但sqlite3编译需要访问系统级目录,权限不够就会失败,然后npm反复重试,就形成了无限循环。
内容的提问来源于stack exchange,提问作者cogitoergosum
相关产品推荐
相关产品推荐

