【问题标题】:How to install NPM end-user packages on NixOS?如何在 NixOS 上安装 NPM 最终用户包?
【发布时间】:2019-06-28 21:17:53
【问题描述】:

有没有办法在 NixOS 上安装 NPM 命令行工具?

[root@ip-xxx-xxx-0-27:~/teros/ntrs-cli]# sudo npm i -g typescript
npm WARN checkPermissions Missing write access to /nix/store/rhikjv5vlpa6vq4qkrszinwsaz1mda7p-nodejs-8.15.1/lib/node_modules
npm ERR! path /nix/store/rhikjv5vlpa6vq4qkrszinwsaz1mda7p-nodejs-8.15.1/lib/node_modules
npm ERR! code EROFS
npm ERR! errno -30
npm ERR! syscall access
npm ERR! rofs EROFS: read-only file system, access '/nix/store/rhikjv5vlpa6vq4qkrszinwsaz1mda7p-nodejs-8.15.1/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.

我假设是因为它是只读的,因为我确实运行过:

chown -R `whoami` nix/store/rhikjv5vlpa6vq4qkrszinwsaz1mda7p-nodejs-8.15.1

顺便说一句,如果有人知道如何在 nixos 上安装 Node.js 版本 11 或 12,那就太好了。

【问题讨论】:

    标签: nix chown nixos


    【解决方案1】:

    首先,请撤消您所做的权限更改 (chown)。您永远不应该更改 Nix 商店 (/nix/store 中文件的权限。

    要在 NixOS 上安装 NPM 包,请使用相应的 Nix 包,而不是使用 npm -g ...。 NPM 包位于nodePackages“命名空间”下。

    例如,要安装 typescript (tsc) 编辑 /etc/nixos/configuration.nix:

    ...
    
    environment.systemPackages = with pkgs; [
      ...
    
      nodePackages.typescript;
    ]
    
    ...
    

    然后使用nixos-rebuild switch“安装”包。

    您可以使用相同的方式安装 Node.js。使用nix search nodejs 查看可以安装的各种版本。

    【讨论】:

    • 我尝试安装 browser-sync,但 nix 找不到...
    【解决方案2】:

    改为编辑~/.npmrc,让它告诉npm 在您的主文件夹而不是根目录中安装和查找“全局”包:

    prefix=~/.npm-packages
    

    现在,无论何时运行 npm i -g <some-package>,您都会看到它将安装在 ~/.npm-packages 内部。

    现在在您的 shell rc 文件(例如 .bashrc.zshrc 或类似文件)中,您需要更新您的 PATH 以包含来自新位置的可执行文件:

    ### Add NPM executables to your PATH so that they are available as commands:
    export PATH="$HOME/.npm-packages/bin:$PATH"
    

    通常在系统级包管理器之外管理临时依赖项更方便。

    如果您使用 nnvm 之类的东西来管理特定的节点版本,您可以通过在主文件夹中管理它们来做类似的事情。

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        您也可以使用通常的 npm -i... 安装它们,只是没有 -g(全局)参数。

        【讨论】:

          猜你喜欢
          • 2020-11-08
          • 2017-12-21
          • 2017-04-13
          • 2018-01-28
          • 1970-01-01
          • 2019-02-18
          • 1970-01-01
          • 2020-01-05
          • 1970-01-01
          相关资源
          最近更新 更多