代码之家  ›  专栏  ›  技术社区  ›  ctwheels

如何在GCP Cloud Shell中从bash文件运行npm命令?

  •  0
  • ctwheels  · 技术社区  · 5 年前

    我们要做的

    我们正在GCP上使用Cloud Shell Editor(IDE)。
    根据 documentation for Environment customization script :

    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脚本文件中( .定制环境 文件):

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

    GCP 非挥发性物质 细节

    云Shell预安装 非挥发性物质 (全球);它位于 /usr/local/nvm/nvm.sh .
    没有 ~/.nvm 文件夹

    我能跑 非挥发性物质 没有直接从Cloud Shell(命令行)发出的问题。
    我跑不了 非挥发性物质 (也不使用for路径)从bash文件。

    最近的尝试

    运行下面的程序很接近,但我的权限有限,你不能 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

    我不能 苏多 绕着它跑 usermod (例如:。 usermod -a -G staff $(whoami) )尽管 Google's documentation says I should be able to :

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


    问题

    我们如何使用 非挥发性物质 在GCP的Cloud Shell中的bash脚本文件中?

    0 回复  |  直到 5 年前
        1
  •  1
  •   ctwheels    5 年前

    我设法解决了这个问题,得到了 @Kolban @HarshManvar .

    我认为这个解决方案也适用于任何其他无法处理来自的直接调用的脚本 .customize_environment .

    下面的示例受 answer found here 。该代码将安装特定的节点版本。

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

    #!/usr/bin/bash
    sudo su -c '. /usr/local/nvm/nvm.sh && nvm install 14'
    
    推荐文章