Linux 软件多版本管理问题:Fedora 29 使用 SCL (Software Collections);Ubuntu 使用 update-alternatives;
在社区中SCL 由Centos 项目进行维护,所以我们使用CentOS 7 SCL源。CentOS SCL中提供了devtoolset-7-gcc-c++,版本正好为 gcc version 7.3.1 20180303 (Red Hat 7.3.1-5) (GCC)
首先需要下载CentOS 7 SCL源CentOS-SCL-el7.tar.gz,这里提供百度云和Google Drive的地址。
下载后解压,将其中的repo文件和key文件复制到/etc/目录下:
sudo cp ./etc/* /etc -rf
安装devtoolset-7-gcc-c++:
sudo dnf install devtoolset-7-gcc-c++
安装完毕后,若要在当前控制台使用gcc 7.3,使用命令:
scl enable devtoolset-7 bash
更多关于scl的用法,可以参考 scl -help。若系统没有安装scl,使用 sudo dnf install scl即可
参考链接:
https://blog.csdn.net/u010158659/article/details/53608285
http://blog.51cto.com/hashlinux/1772066
https://www.softwarecollections.org/en/docs/
https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/
http://mirror.centos.org/centos/7/sclo/x86_64/rh/
## 2023年03月05日22:53:23 简记:
- Ubuntu 中多使用 update-alternatives 工具管理多版本软件;具体原理还没有了解,在这里简记一下;
- 个人实验过程中,还是使用重编译软件和环境变量进行管理;防止自己的环境被他人影响和影响他人的环境;
### 2023年03月05日23:13:18 原理补充:
update-alternatives 使用两层软链接来进行管理软件;但是其只是负责管理,具体安装还是依赖 apt 工具,这与 scl 的设计理念不同;scl我理解是 shell 级别的软件环境定制;
update-alternatives 系统层面的一种软件版本管理;
/usr/bin/名称 (软链接) | V /etc/alternatives/名称 (软链接) [每次更改就使它指向另一个程序的实际地址,并在配置文件中说明当前是自动还是手动] | V 程序实际路径
其配置文件,默认存储在;默认通过dpkg自动管理,一般还是不建议修改;我还是推荐使用环境变量单独管理软件版本。
/var/lib/dpkg/alternatives/名称
参考链接:
https://zhuanlan.zhihu.com/p/20797436
https://www.baeldung.com/linux/update-alternatives-command
https://man7.org/linux/man-pages/man1/update-alternatives.1.html
保持更新;