缘由

红帽企业版 linux(RHEL)和它的社区版分支——CentOS,都是众所周知的知名企业级发行版,特别是提供了10年的生命周期,这意味着有足足10年内你不需要为安全补丁担忧,但是RedHat系列的发行版是根据Release概念发行的,也就是说它是在内核版本上划分出一个稳定版本,然后开分支不断改进,好处是稳定,缺点就是运行时和编译环境的陈旧,例如 CentOS 6.5,它的生命周期结束时间是2020年11月30日,其所携带的gcc4.4.7已经十分陈旧,甚至不支持最新的C++11标准,这就导致了作为开发环境是很差的。另一方面,在 RHEL/CentOS 上试图手动升级开发工具链和运行时环境存在使系统崩溃的潜在可能,除非所有依赖都被正确解决。通常情况下,手动升级都是不推荐的,除非你知道你在干什么。
再比如说目前流行的Docker,官方的最低要求就是内核3.10以上,而CentOS6还是处于2.8时代。
许多开发人员对CentOS老旧的开发环境吐槽不少,在不少的回答里,都是推荐CentOS7作为开发环境,这确实是一种解决方法,但是其实红帽公司怎么可能没有考虑到工具链的陈旧问题呢,所以红帽早就推出了Devtoolset,目前有三个版本
RedHat发布过相应的升级包,叫做Devtoolset,有三个版本

  • devtoolset-1是gcc 4.7

  • devtoolset-2是gcc 4.8

  • devtoolset-3是gcc 4.9

如果是红帽公司订阅用户,可以直接从订阅管理器里直接下载,CentOS用户也不需要担忧,因为这套工具也是在开放源代码许可证下发布的,所以早就有社区将其编译成了二进制包。

DevtoolSet包含的组件

Package Name Description Installed Components
devtoolset-2-ide Integrated Development Environment Eclipse
devtoolset-2-perftools Performance monitoring tools SystemTap, Valgrind, OProfile, Dyninst
devtoolset-2-toolchain Development and debugging tools GCC, GDB, binutils, elfutils, dwz, memstomp, strace
devtoolset-2-vc Revision control systems Git

开源社区打包

目前Devtoolset最新的打包仓库是SoftwareCollection,所以我们直接根据它的官方指南做就行,RedHat订阅用户可以直接通过订阅管理器下载,这里就不再细说。

Step1:Install the Software Collections tools

yum install scl-utils

Step2:Download a package with repository for your system.

# (See the Yum Repositories section below. You can use `wget URL`.)

请注意,这里下载的 rpm 是从 softwarecollection 里下载的repo仓库,可以通过wget下载

Step3:Install the repo package

yum install rhscl-devtoolset-3-*.noarch.rpm

Step4:Install the collection

yum install devtoolset-3

这里建议只下载工具链,而不是所有devtoolset都全部下载,因为里面还带有许多不需要的组建,具体下载内容参考上一节的表格。

Step4:Start using software collections

scl enable devtoolset-3 bash

卸载Devtoolset

可能大家用完开发工具集后就会想要删除它,其实很简单,输入以下命令:

yum remove devtoolset-3\*

然后也可以删除SCL管理工具

yum remove scl-utils\*

最后如果精神洁癖,还可以删除掉SoftwareCollection这个repo仓库RPM

rpm -qa | grep rhscl
rpm -e XXXXXXX

最近softwarecollection网站还将自己的仓库rpm提交到了官方源中,这样只需要键入

yum install centos-release-scl-rh

非常轻松的就能搞定仓库的安装,但是众所周知,GFW城墙远大,但是万幸的是阿里云镜像已经提供了方便快捷的仓库源,只不过我们需要手动改一改配置文件,下面就是应当修改的配置文件

# CentOS-SCLo-rh.repo
#
# Please see http://wiki.centos.org/SpecialInterestGroup/SCLo for more
# information

[centos-sclo-rh]
name=CentOS-$releasever - SCLo rh
# baseurl=http://mirror.centos.org/centos/$releasever/sclo/$basearch/rh/
baseurl=http://mirrors.aliyun.com/centos/$releasever/sclo/$basearch/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

[centos-sclo-rh-testing]
name=CentOS-$releasever - SCLo rh Testing
baseurl=http://buildlogs.centos.org/centos/$releasever/sclo/$basearch/rh/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

恩,大概就是长这样的,其实这个东西对于Node.JS来说最重要,由于4.x系列使用了更新的v8引擎,所以无论是编译node还是安装C++模块,都需要C++11标准的编译器,这就需要这套开发组件了


山河永寂
2.4k 声望159 粉丝

引用和评论

0 条评论