如果你有几房姨太太的话,那么想让她们和平共处,多半是痴人说梦。对程序员而言,虽然他们不会有娶几个老婆的好运气,但是很可能会遇到在同一个系统里使用多个版本的软件的情况,一旦处理不好,同样会焦头烂额。
下面通过一个例子来说明如何解决多版本共存的问题:PHP 如果使用带有 PGO 功能的 gcc 编译的话,那么可以在不修改一行业务代码的情况下,获得 10% 左右的性能提升。不过这要求 gcc 的版本至少要 4.5,而我的 gcc 版本是 4.4,因为 gcc 是一个基础应用,所以我不敢贸然直接升级版本。于是乎解决方案就是:我需要在不影响旧版本的前提下再装一个新版本,不过自己手动编译的话无疑恨麻烦,好在有 SCL,通过它,我们可以实现在同一个系统里使用多个版本的软件:
Software Collections give you the power to build, install, and use multiple versions of software on the same system, without affecting system-wide installed packages.
以 CentOS 为例,看看如何通过 SCL 维护多版本的 gcc:
shell> yum install centos-release-scl
shell> yum install devtoolset-7
shell> gcc -v
gcc version 4.4.7 ***
shell> scl enable devtoolset-7 bash
shell> gcc -v
gcc version 7.2.1 ***
shell> exit
shell> gcc -v
gcc version 4.4.7 ***
注意:scl 激活 devtoolset 前后新旧 gcc 版本的变化。
最后,详细的版本库参考官网。