一、关于Software Collections简介
CentOS/RHEL Linux 发行版以稳定性著称,所有的软件都要尽可能 stable,导致的一个结果就是基础软件的版本非常的低,比如 CentOS 6.7(15年发布) 中 gcc 版本还是 4.4.7(12年的版本)。
这对开发来说就不是很友好,比如我们想用 C++ 11 中的某个特性,就必须自己编译一个高版本的 gcc 出来,但是这会有另外一个问题,开发环境不好维护,如果自己有多台电脑或者多个人合作的项目,每台机器上都要自己编一份,维护起来就比较麻烦。
本文将为你介绍如何在CentOS上启用软件集Software Collections(简称为SCL)的方法。
SCL(全称是Software Collections),它可以让你在同一个操作系统上安装和使用多个版本的软件,而不会影响整个系统的安装包。
SCL为社区的以下需求而设计:创建和使用软件集合生产系统、概念验证系统、开发测试平台。SCL目前已经支持Fedora和RHEL(衍生版本如CentOS也包含在内)。
SCL的创建就是为了给RHEL/CentOS用户提供一种以方便、安全地安装和使用应用程序和运行时环境的多个(而且可能是更新的)版本的方式,同时避免把系统搞乱。与之相对的是第三方源,它们可能会在已安装的包之间引起冲突。
SCL项目主页:https://www.softwarecollections.org
更多的软件集参看:https://www.softwarecollections.org/en/scls
二、安装使用
# yum install centos-release-scl
# yum install scl-utils scl-utils-build
# rpm -qa | grep scl
# rpm -ql centos-release-scl
# cat /etc/yum.repos.d/CentOS-SCLo-scl.repo
# scl --help
# yum list all --disablerepo="*" --enablerepo='centos-sclo-rh'
# yum list all --disablerepo="*" --enablerepo='centos-sclo-rh' | grep gcc
如果使用如下命令,会将installdevtoolset-7和llvm-toolset-7 下的软件包全部下载:
# yum -y installdevtoolset-7
# yum -y install llvm-toolset-7
我们一般选择性安装:
# yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++
# yum -y install llvm-toolset-7-cmake
那么,我怎么知道哪个包应该在哪个toolset下载?
# yum list all | grep gcc
# yum list all | grep gcc-c++
# yum list all | grep cmake
# scl --list
# ll /opt/rh/
# ll /opt/rh/devtoolset-7/
# ll /opt/rh/devtoolset-7/root/
# ll /opt/rh/llvm-toolset-7/root/
从上可以看出,安装devtoolset 相应的版本,会在 /opt/rh 下新增一个根,类似chroot技术,和原操作系统的根相对独立,供这个软件独立使用。
# scl enable devtoolset-7 bash
# gcc --version
# exit
# scl enable devtoolset-7 "gcc --version"
# scl enable llvm-toolset-7 bash
# cmake --version
# exit
# scl enable llvm-toolset-7 "cmake --version"
三、参考
Developer Toolset
https://linux.web.cern.ch/devtoolset
CentOS6 安装gcc4.8及以上版本
https://www.cnblogs.com/52fhy/p/12547521.html
Software Collections Quick Start
https://www.softwarecollections.org/en/docs
CentOS/RHEL 开发环境之 devtoolset
http://blog.fungo.me/2016/03/centos-development-env
软件集Software Collections
https://yq.aliyun.com/articles/523581
在CentOS上启用软件集Software Collections(SCL)
https://ywnz.com/linuxjc/2215.html
如何在CentOS7上安装python3
https://haoweisz.top/post/How%20to%20Install%20Python%203%20on%20CentOS%207.html
如何在 CentOS 上启用软件集 Software Collections
http://80imike.github.io/posts/62916.html
CentOS7 使用SCL(SoftwareCollections)
https://codeleading.com/article/80391033954/;jsessionid=9CF258B2E48773F30F3EDF8C2C01DAA1
在你准备升级GLIBC库之前,你要好好思考一下:
你真的要升级GLIBC么?
你知道你自己在做什么么?
glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。
总的来说,不说运行在Linux上的一些应用,或者你之前部署过的产品,就是很多linux的基本命令,比如cp, rm, ll之类,都得依赖于它
网上很多人有惨痛教训,甚至升级失败后系统退出后无法重新进入了!
CentOS下安装高版本GCC
https://www.cnblogs.com/zhming26/p/6691465.html
https://blog.csdn.net/fm0517/article/details/79077706
通过安装scl软件集,使用高版本gcc的方法
https://blog.51cto.com/lee90/2066799
CentOS6.5升级GCC
https://blog.51cto.com/xiexiaojun/1934746?spm=a2c4e.10696291.0.0.2a7819a4tk4tiy