1

我们正在尝试做的事情

我们在 GCP 上使用 Cloud Shell Editor (IDE)。
根据环境自定义脚本的文档

$HOME/.customize_environmen当您的实例启动时,Cloud Shell 会自动运行脚本 t。与 .profileor不同.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的文章:

这些答案似乎都不能解决我们的问题。

GCPnvm详细信息

Cloud Shell 预安装nvm(全球);它位于/usr/local/nvm/nvm.sh
没有~/.nvm文件夹。

我可以nvm直接从 Cloud Shell(命令行)运行而不会出现问题。
我无法nvm从 bash 文件运行(也无法使用 for 路径)。

最近的尝试

sudo运行以下命令很接近,但由于 Cloud Shell 限制,我受限于您无法使用的权限:

. /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)),即使谷歌的文档说我应该能够

设置 Cloud Shell 会话时,您会获得一个常规 Unix 用户帐户,其用户名基于您的电子邮件地址。使用此访问权限,您可以在分配的 VM 上拥有完全的 root 权限,甚至可以sudo在需要时运行命令。


问题

我们如何nvm在 GCP 的 Cloud Shell 中的 bash 脚本文件中使用?

4

1 回答 1

1

在@Kolban@HarshManvar的评论的帮助下,我设法解决了这个问题。

我认为此解决方案也适用于任何其他无法使用来自.customize_environment.

下面的示例受此处找到的答案的影响。该代码安装特定的节点版本。

注意:nvm默认情况下全局安装在 Cloud Shell 中。

#!/usr/bin/bash
sudo su -c '. /usr/local/nvm/nvm.sh && nvm install 14'
于 2021-02-05T15:08:52.233 回答