【发布时间】:2021-02-05 00:24:57
【问题描述】:
我们正在尝试做的事情
我们在 GCP 上使用 Cloud Shell Editor (IDE)。
根据documentation for Environment customization script:
Cloud Shell 自动运行脚本,
$HOME/.customize_environment,当您的实例启动时。不像.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 脚本文件(.customize_environment 文件)中使nvm可调用的文章:
- nvm command not available in bash script
- Can't use nvm from bash script
- Node Version Manager install - nvm command not found
这些答案似乎都不能解决我们的问题。
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)),即使Google's documentation says I should be able to:
当您设置 Cloud Shell 会话时,您会获得一个常规 Unix 用户帐户,其用户名基于您的电子邮件地址。通过此访问权限,您在分配的 VM 上拥有完全的 root 权限,甚至可以在需要时运行
sudo命令。
问题
我们如何在 GCP 的 Cloud Shell 的 bash 脚本文件中使用 nvm?
【问题讨论】:
-
我想我听说你不能在你的 cloud shell 环境中使用 sudo?当我尝试时,它有效。当我运行“sudo whoami”时,它会显示 root。你说什么?如果您运行“id”命令,您是否在响应中看到 27(sudo)?
-
sudo su你可以在cloud shell中运行并将用户更改为root。 -
@Kolban 谢谢,这绝对帮助我找到了解决方案!我的东西返回正确,只是在考虑解决方案。你给了我一个正确的方向。
-
@HarshManvar 谢谢你,使用
sudo su确实有效,我会发布我的解决方案并给你信用,因为我使用了你的建议。
标签: bash nvm google-cloud-shell google-cloud-shell-editor