如何解决如何从 GCP Cloud Shell 中的 bash 文件运行 nvm 命令全局安装? GCP nvm 详细信息最近的尝试
我们正在做的事情
我们在 GCP 上使用 Cloud Shell Editor (IDE)。
根据{{3}}:
Cloud Shell 自动运行脚本,
$HOME/.customize_environmen
t,当您的实例启动时。不像
.profile
或 .bashrc
,此脚本在 Cloud Shell 启动时运行一次
(而不是每次 shell 登录一次)。
此脚本以 root 身份运行,您可以安装任何软件包 希望使用 Debian 软件包存在于每个 Cloud Shell 会话中 管理命令。
例如,如果您想在 Cloud Shell 上安装 erlang,
您的 .customize_environment
文件将如下所示:
#!/bin/sh
apt-get update
apt-get -y install erlang
我们正在尝试使用 nvm
为我们的开发人员预安装节点版本和自动配置。
我们遇到的问题
我们已经研究了几篇关于从 bash 脚本文件(nvm
文件)中使 .customize_environment
可调用 的文章:
- documentation for Environment customization script
- nvm command not available in bash script
- Can't use nvm from bash script
这些答案似乎都不能解决我们的问题。
GCP nvm
详细信息
Cloud Shell 预安装 nvm
(全局);它位于/usr/local/nvm/nvm.sh
。
没有 ~/.nvm
文件夹。
我可以直接从 Cloud Shell(命令行)运行 nvm
而没有问题。
我无法从 bash 文件运行 nvm
(也不使用 for 路径)。
最近的尝试
运行以下内容很接近,但由于 Cloud Shell 限制,我的权限有限,您无法sudo
:
. /usr/local/nvm/nvm.sh
nvm install 14
结果:
Downloading and installing node v14.15.4...
mkdir: cannot create directory ‘/usr/local/nvm/.cache/bin/node-v14.15.4-linux-x64’: Permission denied
creating directory /usr/local/nvm/.cache/bin/node-v14.15.4-linux-x64/files failed
Downloading https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz...
Warning: Failed to create the file
Warning: /usr/local/nvm/.cache/bin/node-v14.15.4-linux-x64/node-v14.15.4-linux-
Warning: x64.tar.xz: No such file or directory
curl: (23) Failed writing body (0 != 966)
Binary download from https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz failed,trying source.
grep: /usr/local/nvm/.cache/bin/node-v14.15.4-linux-x64/node-v14.15.4-linux-x64.tar.xz: No such file or directory
Provided file to checksum does not exist.
Binary download failed,trying source.
Detected that you have 4 CPU core(s)
Running with 3 threads to speed up the build
mkdir: cannot create directory ‘/usr/local/nvm/.cache/src’: Permission denied
creating directory /usr/local/nvm/.cache/src/node-v14.15.4/files failed
Downloading https://nodejs.org/dist/v14.15.4/node-v14.15.4.tar.xz...
Warning: Failed to create the file
Warning: /usr/local/nvm/.cache/src/node-v14.15.4/node-v14.15.4.tar.xz: No such
Warning: file or directory
curl: (23) Failed writing body (0 != 965)
Binary download from https://nodejs.org/dist/v14.15.4/node-v14.15.4.tar.xz failed,trying source.
grep: /usr/local/nvm/.cache/src/node-v14.15.4/node-v14.15.4.tar.xz: No such file or directory
Provided file to checksum does not exist.
重要行:mkdir: cannot create directory ‘...’: Permission denied
我不能sudo
绕过它,运行usermod
(例如usermod -a -G staff $(whoami)
),即使Node Version Manager install - nvm command not found:
当您设置 Cloud Shell 会话时,您将获得一个常规 Unix 用户帐户,其用户名基于您的电子邮件地址。通过此访问权限,您在分配的 VM 上拥有完全 root 权限,甚至可以运行 sudo
命令(如果需要)。
问题
我们如何在 GCP 的 Cloud Shell 的 bash 脚本文件中使用 nvm
?
解决方法
借助 @Kolban 和 @HarshManvar 的评论,我设法解决了这个问题。
我认为此解决方案也适用于任何其他不支持来自 .customize_environment
的直接调用的脚本。
以下示例受 answer found here 的影响。代码安装特定的节点版本。
注意:nvm
默认情况下全局安装在 Cloud Shell 中。
#!/usr/bin/bash
sudo su -c '. /usr/local/nvm/nvm.sh && nvm install 14'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。