在NixOS/Nix中安装firebase工具(npm包)的正确方法是什么



我正在Firebase上观看这个Udemy课程。这门课程有点过时,最初制作于大约6年前。

在某个时刻,作者指示了如何使用firebase CLI,因此他指示了以下命令:

~/projects/chatlive]$ npm install -g firebase-tools

我添加了sudo以避免权限问题:

~/projects/chatlive]$ sudo npm install -g firebase-tools

不幸的是,检索到此错误消息:

npm WARN checkPermissions Missing write access to /nix/store/nm7vm9d7xbvibazz7kl7xkqgjddqgiby-nodejs-14.18.3/lib/node_modules
npm ERR! code EROFS
npm ERR! syscall access
npm ERR! path /nix/store/nm7vm9d7xbvibazz7kl7xkqgjddqgiby-nodejs-14.18.3/lib/node_modules
npm ERR! errno -30
npm ERR! rofs EROFS: read-only file system, access '/nix/store/nm7vm9d7xbvibazz7kl7xkqgjddqgiby-nodejs-14.18.3/lib/node_modules'
npm ERR! rofs Often virtualized file systems, or other file systems
npm ERR! rofs that don't support symlinks, give this error.
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2022-07-28T15_33_55_544Z-debug.log

我使用的是NixOS,这是我的配置文件。由于错误消息提到了nix/store,我认为它可能是相关的。

通常,我会在NixOS中安装一些东西来更改configuration.nix和执行sudo nixos-rebuild switch。但考虑到npm正在管理安装,我认为这样做是没有必要的。

在Nix软件包上搜索,我可以看到firebase-tools:链接。现在,调整配置文件似乎是一种方式。。。

在这种情况下,最佳做法是什么?

我应该强制尝试通过npm安装吗(如何?(?我应该仅仅因为这个软件包而选择新一代的NixOS和完整的系统重建吗?

还有其他可能的途径吗?我是不是错过了什么?

谢谢。

如果您只想在开发环境中使用firebase-tools,请在工作目录中创建一个shell.nix文件,并添加以下行:

{ pkgs ? import <nixpkgs> {}}:
pkgs.mkShell {
nativeBuildInputs = [ pkgs.nodePackages.firebase-tools ];
}

然后运行nix-shell以启动包含firebase-tools的shell。这被认为是本地开发环境的最佳实践,请参阅https://nixos.wiki/wiki/Development_environment_with_nix-shell。

如果你想试用不在nixpkgs repo中的软件包,你应该使用npm并在本地安装一个软件包(没有-g(。看见https://nixos.wiki/wiki/Node.js#Using_npm_install_-g_失败。

最新更新