我在VirtualBox中运行CentOS Linux release 7.9.2009 (Core)
,它是由Vagrant 2.2.19
构建的,Ansible 2.9.25
安装了所有依赖项。
gcc 9.3.0
python 3.6.8
node.js 16.13.1
npm 8.1.2
当ansible执行npm install
时,我在g++: error: unrecognized command line option ‘-std=gnu++14’
上出错。我在Stackoverflow上看到许多问题,其中的答案告诉我将gcc升级到版本〉= 4.9。但我已经有了,我仍然得到一个错误。
但是,有一个变通方法,它允许我运行npm install
:
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-9-gcc*
scl enable devtoolset-9 bash
npm install
但我必须在通过vagrant ssh
登录CentOS后手动运行此操作。我对此变通方案不满意,因为它是手动的,并且npm istall
必须通过编程运行,因此它不能解决我的问题。
我尝试从ansible playbook.yml
执行scl
内部的npm install
:
- name: Install centos-release-scl
shell: yum install -y centos-release-scl
become: yes
- name: Install devtoolset-9
shell: yum install -y devtoolset-9-gcc*
become: yes
- name: install packages based on package.json
shell: |
scl enable devtoolset-9 bash
npm install
become: yes
但没有成功。
有没有一种方法可以让ansible
以编程方式运行npm install
而不会出错?
2条答案
按热度按时间kmbjn2e31#
您可以继续使用gcc 4.8.5,但降级到NodeJS 14(如https://github.com/systemd/node-sd-notify/issues/29#issuecomment-1040909033中所指出的)。
注意:您可以在www.example.com下载NodeJS 14https://github.com/nodesource/distributions/blob/master/README.md#enterprise-linux-based-distributions
5n0oy7gb2#
对于CentOS,运行此命令。
yum install gcc-c++
然后安装cmake。
yum install cmake
那就跑。
yum install centos-release-scl
安装开发工具集。
yum install devtoolset-8-gcc devtoolset-8-gcc-c++
启用开发工具集。
scl enable devtoolset-8 -- bash