目前在 Redhat 系列系统上,默认装的是 python2,在 RHEL8 及以上系统可以使用 yum 命令直接进行 rpm 包的安装。为了能够在 CentOS 上进行 Python 解释器多版本共存,就需要编译安装了。这里我结合了自身的经验,总结了一下 Python3 的编译安装。
首先要解决依赖关系。
1 | yum -y install zlib zlib-devel bzip2 bzip2-devel ncurses ncurses-devel readline readline-devel openssl openssl-devel openssl-static xz lzma xz-devel sqlite sqlite-devel gdbm gdbm-devel tk tk-devel libffi-devel |
下载源码包解压并安装。为了方便以后能将编译好的解释器程序移植到其他机器,我的编译安装目录选择在 opt
下。
1 | cd /opt/ |
使用绝对路径执行 python3
有可能会提示无法加载动态库,这是因为上面指定了安装目录,编译后的库也在安装目录下而不是系统的库目录。手动创建一个动态库加载路径的配置文件即可。
1 | [root@m1 ~]# echo /opt/Python-3.7.3/lib/ > /etc/ld.so.conf.d/python-3.7.3.conf |
每次执行 python3
都用绝对路径会非常不人性化,因此做个软连接。
1 | [root@m1 ~]# ln -sv /opt/Python-3.7.3/bin/python3 /usr/bin/python3 |
如果要查看 man
文档,需要使用 man
命令及其 -M
选项指定 manpath
。
1 | [root@m1 ~]# man -M /opt/Python-3.7.3/share/man/ python3 |
如果你不想这样做,也可以通过修改 /etc/man_db.conf
或者拷贝安装目录中的 man
文件到系统的 man
目录下。
在 m1
机器上编译安装一次之后,在其他机器(例如 m2
机器)就不需要再次编译安装了,在 m1
上把编译好的文件压缩打包,直接拷贝到 m2
上然后做几步配置即可。
1 | [root@m1 ~]# cd /opt/ |
在 m2
机器上的安装
1 | [root@m2 ~]# cd /opt/ |
如果在后期出现了更新的版本,我们可以在 m1
上按照上述方法再次进行新版本的编译安装,这样就可以达到多版本共存的效果了。