为什么执行 'apt-get install nodejs -y' 不能安装npm?

4
我有以下的bitbucket.pipelines.yml文件:
image: python:3.5.1

pipelines:
  branches:
    master:
      - step:
          script:
            - apt-get update
            - apt-get install nodejs -y
            - npm install
            - npm run build
            - python get-pip.py
            - pip install boto3==1.3.0
            - python s3_upload.py io-master.fromthiscomesthat.co.uk dist io-master

安装了Node后,构建过程在尝试运行npm时失败了。
+ npm install
bash: npm: command not found

我想这是因为npm不在路径中。或者别的什么原因,我的Ubuntu/UNIX技能不是很好。

我该如何将安装程序添加到路径中?

更新

好的,在大量摆弄之后,我的YAML现在看起来像这样:

image: python:3.5.1

pipelines:
  branches:
    master:
      - step:
          script:
            - apt-get update
            - apt-get install lsb-release -y
            - curl --silent https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
            - VERSION=node_5.x
            - DISTRO="$(lsb-release -s -c)" # <--- error here
            - echo "deb https://deb.nodesource.com/$VERSION $DISTRO main" | tee /etc/apt/sources.list.d/nodesource.list
            - echo "deb-src https://deb.nodesource.com/$VERSION $DISTRO main" | tee -a /etc/apt/sources.list.d/nodesource.list
            - apt-get update
            - apt-get install nodejs -y
            - npm install
            - npm run build
            - python get-pip.py
            - pip install boto3==1.3.0
            - python s3_upload.py io-master.fromthiscomesthat.co.uk dist io-master

现在我有一个更小的问题。尽管安装程序正确安装了lsb-release,但找不到它。这是路径问题吗?当我不知道它被安装到哪里时,我该如何执行它呢?由于它在Bitbucket上运行在docker实例中,所以很难调试。

1个回答

10

Ubuntu默认仓库中包含一个可以使用的Node.js版本,但仅包括node二进制文件。如果您想安装npm,只需输入以下命令即可:

apt-get install npm

然而,我建议您添加由NodeSource维护的PPA(个人软件包存档)。这将可能比官方Ubuntu仓库提供更为更新的Node.js版本。

您需要安装PPA以访问其内容,之后可以按照与上面相同的方式安装nodejs软件包。

curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install nodejs
使用此选项,nodejs软件包包含了nodejs二进制文件以及npm,因此您无需单独安装npm。

使用此选项,nodejs软件包包含了nodejs二进制文件以及npm,因此您无需单独安装npm。


太好了,谢谢;不过我还有一个问题,我已经在上面描述了。有什么想法吗? - serlingpa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接