Knight000's Blog

随缘写写,不定时更新

0%

在CentOS里升级到Python3.8

一切的开头

折腾了我这么多个小时…其实真的只是想试试Linux的编译安装…真的…折腾完后就把这些总结成这几个脚本

编译安装Python3.8.6

虽然上面说是3.8.6,但是只要把3.8.6替换成别的版本理论上也是可以的(当然下面的脚本也一样,记得替换完全),然后CentOS 7自带的gcc版本过低,会导致编译错误,升级gcc的脚本在下面,然后成功后发现pip3无法下载,上网查了之后发现是因为没有加上--with-ssl这个参数,为防止失效,请使用source而不是./来调用脚本,其实用./也可以但要手动输入一次source /etc/profile,因为在另一种情况下这行会失效。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 为防止失效,请使用source 而不是./来调用脚本,其实用./也可以但要手动输入一次source /etc/profile
# 安装依赖
yum -y install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
# 下载最新的Python源码
wget https://mirrors.huaweicloud.com/python/3.8.6/Python-3.8.6.tgz
tar -xvf Python-3.8.6.tgz
cd Python-3.8.6
# 编译安装
./configure prefix=/usr/local/python3 --with-ssl
make
make install
# 添加环境变量
echo "PATH=\$PATH:/usr/local/python3/bin" >> /etc/profile
echo "export PATH" >> /etc/profile
source /etc/profile

python3 -V

升级gcc到10.2.0

因为gcc版本过旧所以要升级,稍微修改了一下别人的脚本,但是没做错误退出,也就是说如果编译出错还是会执行下面的mvln,会导致再次运行脚本的时候会出错无法执行make && make install,所以不确定的时候请把mvln注释掉。

另外请注意,编译安装gcc的时间十分漫长,大概3~4小时(也有可能是本人虚拟机没设置好的问题),总之,请耐心等待。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
yum -y install perl wget
#修改自https://www.jianshu.com/p/89702b13bc51

wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz

#解压
tar -xvf gcc-10.2.0.tar.gz

cd gcc-10.2.0
./contrib/download_prerequisites
cd ..

#建立编译输出目录
mkdir gcc-build-10.2.0

#进入下面目录,执行命令,生成Makefile文件
cd gcc-build-10.2.0
../gcc-10.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

#执行命令进行编译,此处利用4个job,需编译时约40分钟,此值不宜设置过高
make -j4

#安装
make install

mv /usr/bin/gcc /usr/bin/gcc.old
mv /usr/bin/g++ /usr/bin/g++.old
mv /usr/bin/cpp /usr/bin/cpp.old
mv /usr/bin/c++ /usr/bin/c++.old
ln /usr/local/bin/gcc /usr/bin/gcc
ln /usr/local/bin/g++ /usr/bin/g++
ln /usr/local/bin/cpp /usr/bin/cpp
ln /usr/local/bin/c++ /usr/bin/c++

gcc -v

整合,同时升级gcc和python

rt,开头已预计安装一堆依赖。然后因为升级gcc要花费很多的时间…所以,耐心的等待吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#为防止失效,请使用source而不是./来调用脚本,其实用./也可以但要手动输入一次source /etc/profile
#安装依赖
yum -y install perl wget zlib-devel bzip2 bzip2-devel readline-devel sqlite
#Gcc升级部分修改自https://www.jianshu.com/p/89702b13bc51

wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz

#解压
tar -xvf gcc-10.2.0.tar.gz

cd gcc-10.2.0
./contrib/download_prerequisites
cd ..

#建立编译输出目录
mkdir gcc-build-10.2.0

#进入下面目录,执行命令,生成Makefile文件
cd gcc-build-10.2.0
../gcc-10.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

#执行命令进行编译,此处利用4个job,需编译时约40分钟,此值不宜设置过高
make -j4

#安装
make install

mv /usr/bin/gcc /usr/bin/gcc.old
mv /usr/bin/g++ /usr/bin/g++.old
mv /usr/bin/cpp /usr/bin/cpp.old
mv /usr/bin/c++ /usr/bin/c++.old
ln /usr/local/bin/gcc /usr/bin/gcc
ln /usr/local/bin/g++ /usr/bin/g++
ln /usr/local/bin/cpp /usr/bin/cpp
ln /usr/local/bin/c++ /usr/bin/c++

cd ..

#下载最新的Python源码
wget https://mirrors.huaweicloud.com/python/3.8.6/Python-3.8.6.tgz
tar -xvf Python-3.8.6.tgz
cd Python-3.8.6
#编译安装
./configure prefix=/usr/local/python3 --with-ssl
make
make install
#添加环境变量
echo "PATH=\$PATH:/usr/local/python3/bin" >> /etc/profile
echo "export PATH" >> /etc/profile
source /etc/profile

gcc -v
python3 -V

附赠编译升级openssl的脚本

顺手做了,升级至1_1_1h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#修改自https://www.cnblogs.com/cobcmw/p/11137712.html

yum -y install perl
wget https://github.com/openssl/openssl/archive/OpenSSL_1_1_1h.tar.gz
tar xzvf ./OpenSSL_1_1_1h.tar.gz
cd openssl-OpenSSL_1_1_1h/
./config
make
make install
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/

openssl version