软件集Software Collections

一、SCL

1、SCL是什么

SCL项目主页:https://www.softwarecollections.org/

SCL(Software
Collections)可以让你在同一个操作系统上安装和使用多个版本的软件,而不会影响整个系统的安装包。

SCL为社区的以下需求而设计:

创建和使用软件集合生产系统、概念验证系统、开发测试平台。SCL目前已经支持Fedora和RHEL(衍生版本如CentOS也包含在内)。

SCL的创建就是为了给RHEL/CentOS用户提供一种以方便、安全地安装和使用应用程序和运行时环境的多个(而且可能是更新的)版本的方式,同时避免把系统搞乱。与之相对的是第三方源,它们可能会在已安装的包之间引起冲突。

现有软件选集:

现在有以下软件选集可供CentOS 6.5或以上版本应用

Ruby 1.9.3 (ruby193)
Python 2.7 (python27)
Python 3.3 (python33)
PHP 5.4 (php54)
Perl 5.16.3 (perl516)
Node.js 0.10 (nodejs010)
MariaDB 5.5 (mariadb55)
MySQL 5.5 (mysql55)
PostgreSQL 9.2 (postgresql92)

更多的软件集可参看这里:https://www.softwarecollections.org/en/scls/

2、安装SCL

在CentOS下使用 SCL,需要安装CentOS Software Collections。它是CentOS Extras软件库的一部份,并可通过以下指命进行安装

Centos 7:

[[email protected] ~]# yum install centos-release-scl

Dependencies Resolved

===================================================================================================================================
 Package                                Arch                    Version                              Repository               Size
===================================================================================================================================
Installing:
 centos-release-scl                     noarch                  10:7-3.el6.centos                    extras                   12 k
Installing for dependencies:
 centos-release-scl-rh                  noarch                  2-3.el6.centos                       extras                   12 k

Transaction Summary
===================================================================================================================================
Install       2 Package(s)

[[email protected] yum.repos.d]# rpm -ql centos-release-scl
/etc/pki/rpm-gpg
/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
/etc/yum.repos.d/CentOS-SCLo-scl.repo
/usr/share/doc/centos-release-scl/GPL

Centos 6:

[[email protected] ~]# yum install centos-release-SCL

Dependencies Resolved

============================================================================================================================================================================================
 Package                                               Arch                                   Version                                          Repository                              Size
============================================================================================================================================================================================
Installing:
 centos-release-scl-rh                                 noarch                                 2-3.el6.centos                                   extras                                  12 k

Transaction Summary
============================================================================================================================================================================================
Install       1 Package(s)

[[email protected] yum.repos.d]# rpm -ql centos-release-scl-rh
/etc/pki/rpm-gpg
/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
/etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
/usr/share/doc/centos-release-scl-rh/GPL

注意:Centos6和Centos7的包名是区分大小写的!

二、SCL的设置及启用

1、要启用和运行SCL中的应用,你还需要安装下列包:

[[email protected] ~]# yum install scl-utils scl-utils-build

2、SCL的设置及启用

SCL设置步骤非常简单

[[email protected] ~]# scl --help
usage: scl <action> [<collection>...] <command>
   or: scl -l|--list [<collection>...]
   or: scl register <path>
   or: scl deregister <collection> [--force]

Options:
    -l, --list            list installed Software Collections or packages
                          that belong to them
    -h, --help            display this help and exit

Actions:
    enable                calls enable script from Software Collection
                          (enables a Software Collection)
    <SCL script name>     calls arbitrary script from a Software Collection

Use ‘-‘ as <command> to read the command from standard input.

启用一个已经安装的SCL包

需要在每个命令中使用scl命令显式启用它(即想在哪条命令中使用SCL中的包,就得通过scl命令执行该命令)

$ scl enable <scl-package-name> <command>

如果想在启用的包时执行多条命令,你可以像下面那样创建一个启用SCL的bash会话

$ scl enable <scl-package-name> bash


三、SCL使用实例:CentOS下安装高版本GCC

有时编译需要用到4.8以上版本的GCC,由于CentOS源没有提供高版本的GCC rpm包,这时就不能通过yum方式安装。通常的解决方案就是通过编译安装高版本的GCC(需要很长时间)。

这里介绍一个更好用、更简单的方法来升级系统GCC。

查看旧版本的GCC相关包:

[[email protected] ~]# rpm -qa|grep gcc
libgcc-4.4.7-18.el6.x86_64
gcc-4.4.7-18.el6.x86_64
gcc-c++-4.4.7-18.el6.x86_64
gcc-gfortran-4.4.7-18.el6.x86_64

安装GCC 5:

[[email protected] ~]# yum list|grep devtoolset|grep gcc
Repository epel is listed more than once in the configuration
Repository epel-debuginfo is listed more than once in the configuration
Repository epel-source is listed more than once in the configuration
devtoolset-3-gcc.x86_64                    4.9.2-6.2.el6          centos-sclo-rh
devtoolset-3-gcc-c++.x86_64                4.9.2-6.2.el6          centos-sclo-rh
devtoolset-3-gcc-gfortran.x86_64           4.9.2-6.2.el6          centos-sclo-rh
devtoolset-3-gcc-plugin-devel.x86_64       4.9.2-6.2.el6          centos-sclo-rh
devtoolset-4-gcc.x86_64                    5.3.1-6.1.el6          centos-sclo-rh
devtoolset-4-gcc-c++.x86_64                5.3.1-6.1.el6          centos-sclo-rh
devtoolset-4-gcc-gdb-plugin.x86_64         5.3.1-6.1.el6          centos-sclo-rh
devtoolset-4-gcc-gfortran.x86_64           5.3.1-6.1.el6          centos-sclo-rh
devtoolset-4-gcc-plugin-devel.x86_64       5.3.1-6.1.el6          centos-sclo-rh
devtoolset-4-libgccjit.x86_64              5.3.1-6.1.el6          centos-sclo-rh
devtoolset-4-libgccjit-devel.x86_64        5.3.1-6.1.el6          centos-sclo-rh
devtoolset-4-libgccjit-docs.x86_64         5.3.1-6.1.el6          centos-sclo-rh
devtoolset-6-gcc.x86_64                    6.2.1-3.1.el6          centos-sclo-rh
devtoolset-6-gcc-c++.x86_64                6.2.1-3.1.el6          centos-sclo-rh
devtoolset-6-gcc-gdb-plugin.x86_64         6.2.1-3.1.el6          centos-sclo-rh
devtoolset-6-gcc-gfortran.x86_64           6.2.1-3.1.el6          centos-sclo-rh
devtoolset-6-gcc-plugin-devel.x86_64       6.2.1-3.1.el6          centos-sclo-rh
devtoolset-6-libgccjit.x86_64              6.2.1-3.1.el6          centos-sclo-rh
devtoolset-6-libgccjit-devel.x86_64        6.2.1-3.1.el6          centos-sclo-rh
devtoolset-6-libgccjit-docs.x86_64         6.2.1-3.1.el6          centos-sclo-rh

在centos6.5上安装devtoolset-3会报错,4和6的版本不会。

[[email protected] ~]# yum install devtoolset-4-gcc devtoolset-4-gcc-c++ devtoolset-4-gcc-gfortran

安装后:

[[email protected] ~]# rpm -qa|grep gcc
devtoolset-4-gcc-5.3.1-6.1.el6.x86_64
libgcc-4.4.7-18.el6.x86_64
gcc-4.4.7-18.el6.x86_64
gcc-c++-4.4.7-18.el6.x86_64
devtoolset-4-gcc-c++-5.3.1-6.1.el6.x86_64
gcc-gfortran-4.4.7-18.el6.x86_64
devtoolset-4-gcc-gfortran-5.3.1-6.1.el6.x86_64

启用高版本的GCC:

[[email protected] ~]# gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[[email protected] ~]# scl -l
devtoolset-4

启用SCL的方法:

1) scl enable 软件包名 bash   

     启用一个新的shell

[[email protected] ~]# scl enable devtoolset-4 bash  # 进入一个新shell

[[email protected] ~]# gcc --version
gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[[email protected] ~]# c++ --version
c++ (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[[email protected] ~]# g++ --version
g++ (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

2 )source /opt/rh/devtoolset-4/enable

在当前shell中生效

[[email protected] ~]# source /opt/rh/devtoolset-4/enable 
[[email protected] ~]# gcc --version
gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[[email protected] ~]# c++ --version
c++ (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[[email protected] ~]# g++ --version
g++ (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

如果我们需要开机设置GCC 5:

[[email protected] ~]# echo "source /opt/rh/devtoolset-4/enable" > /etc/profile.d/RK.sh

注意:

 通过devtoolset安装的gcc因为没有libstdc++包,没有生成libstdc++库文件,编译或运行程序时可能会遇到

类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found 的问题

[[email protected] ~]# rpm -qa|grep libstdc++    # 没有devtoolset-4-libstdc包
libstdc++-4.4.7-18.el6.x86_64
libstdc++-devel-4.4.7-18.el6.x86_64
devtoolset-4-libstdc++-devel-5.3.1-6.1.el6.x86_64

[[email protected] ~]# rpm -ql devtoolset-4-libstdc++-devel|grep libstdc++.so
[[email protected] ~]# rpm -ql libstdc++-devel|grep libstdc++.so
[[email protected] ~]# rpm -ql libstdc++|grep libstdc++.so
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.13
[[email protected] ~]# ls -l `rpm -ql libstdc++|grep libstdc++.so`
lrwxrwxrwx 1 root root     19 Jun  7 06:46 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13
-rwxr-xr-x 1 root root 987096 Mar 21 12:04 /usr/lib64/libstdc++.so.6.0.13

[[email protected] ~]# find / -name "libstdc++*"
/root/libstdc++-5.3.1-6.fc22.x86_64.rpm
/opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/libstdc++_nonshared.a
/opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/libstdc++.so
/opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/32/libstdc++_nonshared.a
/opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/32/libstdc++.so
/opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/32/libstdc++fs.a
/opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/32/libstdc++.a
/opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/libstdc++fs.a
/opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/libstdc++.a
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.13
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.py
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.pyo
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.pyc
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.py
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.pyo
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.pyc
/usr/share/doc/libstdc++-devel-4.4.7
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/32/libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/32/libstdc++.a
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/libstdc++.a
/usr/lib/vmware-tools/lib64/libstdc++.so.6
/usr/lib/vmware-tools/lib64/libstdc++.so.6/libstdc++.so.6
/usr/lib/vmware-tools/lib32/libstdc++.so.6
/usr/lib/vmware-tools/lib32/libstdc++.so.6/libstdc++.so.6

# devtoolset安装的gcc还是调用老的libstdc++动态库

[[email protected] ~]# vim /opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/libstdc++.so
[[email protected] ~]# vim /opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/32/libstdc++.so
[[email protected] ~]# strings /opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/32/libstdc++.so
/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf32-i386)
INPUT ( /usr/lib/libstdc++.so.6 -lstdc++_nonshared )
[[email protected] ~]# strings /opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/libstdc++.so
/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf64-x86-64)
INPUT ( /usr/lib64/libstdc++.so.6 -lstdc++_nonshared )

详见:http://xiexiaojun.blog.51cto.com/2305291/1934746

时间: 2024-12-20 10:41:25

软件集Software Collections的相关文章

Centos7升级gcc版本方法之一使用scl软件集

Centos7 gcc版本默认4.8.3,Red Hat 为了软件的稳定和版本支持,yum 上版本也是4.8.3,所以无法使用yum进行软件更新,所以使用scl. scl软件集(Software Collections),是为了给 RHEL/CentOS 用户提供一种以方便.安全地安装和使用应用程序和运行时环境的多个(而且可能是更新的)版本的方式,同时避免把系统搞乱. 使用scl升级gcc步骤: 1.安装scl源: yum install centos-release-scl scl-utils

软件磁盘阵列 (Software RAID)

什么是 RAID 磁盘阵列全名是『 Redundant Arrays of Inexpensive Disks, RAID 』,容错式廉价磁盘阵列. RAID 可以通过一些技术(软件或硬件),将多个较小的磁盘整合成为一个较大的磁盘设备: 而这个较大的磁盘功能可不止是储存而已,他还具有数据保护的功能呢.整个 RAID 由亍选择的等级 (level) 不同,而使得整合后的磁盘具有不同的功能, 基本常见的 level 有这几种(注1): RAID-0 (等量模式, stripe):效能最佳 这种模式如

我的Mac软件集

哥总算用上了mac,走上了小康了 phpstorm:个人工作中最常用的软件了 pycharm:这个写python的,和phpstorm是一家开发的 sourceTree:git 可视化工具 xcode:如果是你个开发并且用mac,那么你不知道这个软件就去一边凉快去 Sequel Pro:数据库管理工具 Audacity:这货基本不用,我在做一个项目用到了,就是通过手机发射红外波,需要看看其他软件发的波形,用这个录音(当然需要一个公对公的耳机线了) alfred:这个是mac下面的搜索利器,自带的

Ubuntu 16.04系统下软件中心Software闪退解决办法

按住Ctrl+Alt+T打开终端输入: sudo apt-get update //更新 sudo apt-get dist-upgrade //升级 sudo apt-get install --reinstall software-center //重新安装 重新打开软件中心Software即可解决闪退问题:

[软件版本贴]SD.TEAM软件集

手机轰炸机-版本:v2.1.下载地址:http://pan.baidu.com/1.zip! 营销软件盒-版本:v1.9.下载地址:http://pan.baidu.com/2.zip! 不加群提取群成员信息-版本:v2.1.下载地址:http://pan.baidu.com/3.zip! 自动换IP工具-版本:v1.6.下载地址:http://pan.baidu.com/4.zip! 竞争对手-版本:v2.1.下载地址:http://pan.baidu.com/5.zip! QQ临时会话-版本

[daily][toolchain] 我的日常软件集

序: 工欲善其事,必先利其器.针对各种各样的工作,我同样也在寻找各种各样的工具.记录以备忘,因为真的会忘... 已用的,在用的,就不记了.只记下新用的,其他的有时间慢慢补充进来. 文档编辑: MarkDown: 1. atom:有preview框. 2. typora: archlinucn源里边有.https://www.typora.io/

软件集

修改webstrom内存: vi /Applications/WebStorm.app/Contents/bin/   idea.vmoptions或者webstorm.vmoptions -Xms512m    最大可用内存 -Xmx2048m    促使内存 -XX:MaxPermSize=350m  设置持久代大小 -XX:ReservedCodeCacheSize=225m -XX:+UseCompressedOops JVM调优:http://unixboy.iteye.com/blo

CentOS下安装高版本GCC

CentOS下安装高版本GCC 微信分享: 有时编译需要用到4.8以上版本的GCC,由于CentOS源没有提供高版本的GCC安装包,这时就不能通过安装包安装.通常的解决方案就是通过编译安装高版本的GCC. 这里介绍一个更高级.更好用.更简单的方法来升级系统GCC,本文将介绍如何利用CentOS的新特性SCL进行高版本GCC的安装. 什么是SCL 请参考:如何在CentOS上启用软件集Software Collections一文 通过SCL安装GCC 官方SCL仓库 devtoolset-3: h

Deswik Software Suite v2.0 Win32_63 1CD(矿业软件)

Deswik产品: Deswik Software Suite v2.0 Win32_63 1CD(矿业软件)Deswik矿业顾问公司是一家提供创新的采矿工程和地质服务的国际性公司.我们还生产尖端矿山规划通过合并采矿技术领域的技能,从每个 部门,专门的编程知识和最新的软件开发技术,软件.我们的咨询作为研发我们的软件,我们的软件给我们的顾问和客户的竞争优势.该公 司成立于2008年,非洲计算机矿业服务私人有限公司(ACMS)最初开发了流行的号露天矿场4D矿山规划软件的创始人.也参与Deswik矿物