NVM:使用 nvm install 命令获取权限被拒绝

NVM: Getting Permission denied with nvm install command

我最近刚安装了 Ubuntu 21.04,想安装 nvm:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

然后关闭并重新打开终端。请求安装版本 12.16.3 时(也尝试过其他版本)。我收到以下错误:

nvm install 12.16.3
Downloading and installing node v12.16.3...
Downloading https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-x64.tar.xz...
Warning: Failed to create the file 
Warning: /home/sauronnikko/.nvm/.cache/bin/node-v12.16.3-linux-x64/node-v12.16.
Warning: 3-linux-x64.tar.xz: Permission denied
curl: (23) Failure writing output to destination

Binary download from https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-x64.tar.xz failed, trying source.
grep: /home/sauronnikko/.nvm/.cache/bin/node-v12.16.3-linux-x64/node-v12.16.3-linux-x64.tar.xz: No such file or directory
Provided file to checksum does not exist.
Binary download failed, trying source.
Downloading https://nodejs.org/dist/v12.16.3/node-v12.16.3.tar.xz...
Warning: Failed to create the file 
Warning: /home/sauronnikko/.nvm/.cache/src/node-v12.16.3/node-v12.16.3.tar.xz: 
Warning: Permission denied
curl: (23) Failure writing output to destination

Binary download from https://nodejs.org/dist/v12.16.3/node-v12.16.3.tar.xz failed, trying source.
grep: /home/sauronnikko/.nvm/.cache/src/node-v12.16.3/node-v12.16.3.tar.xz: No such file or directory
Provided file to checksum does not exist.

它说 Permission denied,用 sudo

尝试相同的命令

sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

我今天也遇到了完全相同的问题,我不确定这是 NVM 的问题还是只是我的 Linux 安装有问题,但我已经设法解决了它通过手动下载要安装的节点版本的 tar 文件,将其移动到 nvm 的缓存,然后再次 运行ning nvm install。我将在下面留下确切的步骤,如果我弄清楚为什么 curl 不想在 .nvm 目录中创建文件,我会尽量记住回来更新这个问题

我已经尝试了所有我能想到的尝试允许 curl 保存到 nvm 目录,使用 sudo 安装 nvm,chown 目录,为用户组添加完整的 rwx 权限,为目录添加其他权限,手动安装 nvm,没有什么对我有用,所以目前我最好的解决方案如下:)

解决问题(以 node v16.1.0 为例):

1 - 运行 curl 命令将你想要的节点版本下载到你的主目录中

curl https://nodejs.org/dist/v16.1.0/node-v16.1.0-linux-x64.tar.xz --output node-v16.1.0-linux-x64.tar.xz

2 - 将文件复制到 nvm 缓存

sudo mv node-v16.1.0-linux-x64.tar.xz ~/.nvm/.cache/bin/node-v16.1.0-linux-x64/node-v16.1.0-linux-x64.tar.xz

3 - 运行 再次安装 nvm

nvm install node (or whatever version you are trying to install)

我遇到了同样的问题。这是由于缺少“libssl-dev”。 运行 在开始 nvm 的安装过程之前执行以下命令

sudo apt-get install build-essential libssl-dev curl git-core

已将 issue 发布到 nvm 的存储库

原来问题出在 curl 上,我是用 snap 安装的,而不是常规的 apt install curl.

我遇到了同样的问题(之前安装了 curlsnap)。卸载 curl nvm 后按预期工作。

$ sudo snap remove curl

卸载 curl 安装 snap

sudo snap remove curl

apt

安装 curl
sudo apt install curl

有效

简而言之,我这样做了并且奏效了...

>snap list
>sudo snap remove curl

这将删除通过 snap 安装的 curl。 我们需要使用 apt

安装
>sudo apt-get install curl

现在我们需要使用 curl 安装 nvm

>curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

现在只需安装您想要的节点版本。

>nvm install v14.17.0

为了列出所有 nvm 版本,只需这样做。

>nvm ls

为了切换只需输入以下命令。

>nvm use v12.X.XX

检查一下你的NVM_DIR环境变量,我的是从老机器传过来的,设置不正确

您可以尝试创建文件夹并授予写入权限:

  1. 创建文件夹 mkdir ~/.nvm

  2. 授权例如: sudo chmod 777 ~/.nvm

注意:在我的例子中,我通过了这些步骤,但在使用 nvm 安装节点版本时出现另一个权限错误,并使用以下命令解决了这个问题: sudo chmod 777 /private/tmp

对我来说问题不同,解决方案是为 GitHub 创建一个 SSH 密钥并将其添加到我的个人资料中。

查看相关文档here