Windows10 WSL子系统安装CentOS7、OpenSSL-3.0.5 及 Python-3.10.7

本文版权归博主  惊梦无痕  所有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。原文地址

Linux小白一个,最近打算在 Linux 环境中学习 Python,但又不想安装双系统,最后选择了 Windows 子系统 WSL,安装了 CentOS7,又磕磕碰碰地花了几天时间来安装 Python-3.10.7,期间遇到各种报错,通过百度尝试了N种方法逐一解决,总算给安装成功了,这里整理并记录一下安装步骤及踩到的各种坑,希望对正在找如何解决问题的你有点帮助。 

 


 

一、Windows10 WSL子系统安装CentOS-7.9

1、安装前的准备工作

clipboard.png

也可以使用管理员权限打开 powershell,执行如下命令启用:

 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 

 

2、下载 CentOS 7.9版本

https://github.com/mishamosher/CentOS-WSL/releases/tag/7.9-2111

clipboard.png

 

3、安装CentOS7

clipboard.png

 

4、卸载CentOS7

要卸载它,请将 PowerShell 作为管理员切换到 CentOS 目录

 ./CentOS7.exe clean  

 

5、升级 Linux 版本

# 升级所有包,系统版本和内核,改变软件设置和系统设置

 yum -y update 

 


 

二、CenrOS7 源码安装 OpenSSL-3.0.5

1、安装环境所需依赖

 yum -y install gcc gcc-c++ openssl-devel bzip2-devel libffi-devel zlib-devel xz-devel 

 yum -y groupinstall "Development Tools" 

可以用rpm -q 来检查依赖是否安装成功,如:

rpm -q openssl-devel

clipboard.png

如果安装不成功,则可以等下面把openssl安装完后再来安装 openssl-devel:

clipboard.png

 

2、查看是否安装了 pip

 python -m pip --version 

clipboard.png

如以上提示,则表示未安装。

 

安装 Python3 对应的 pip:

 yum -y install epel-release 

 yum -y install python3-pip 

# 查看pip版本

 pip3 --version 

clipboard.png

 

3、安装 Python 3.10 必需的 openssl >= 1.1.1,此处安装 3.0.5 版本

# 下载目录

 cd /usr/local 

# 通过 wget 命令下载,没有就使用 yum -y install wget 安装 wget

 wget https://www.openssl.org/source/openssl-3.0.5.tar.gz 

# 解压安装包

 tar zxf openssl-3.0.5.tar.gz 

# 进入解压后的目录

 cd openssl-3.0.5 

# 执行配置命令,指定openssl环境的安装目录

# 注意:一定要加 shared zlib 否则后面会出问题,后面有写

 ./config --prefix=/usr/local/openssl-3.0.5 shared zlib 

此时可能出现错误如下:

clipboard.png

解决方法:

 yum -y install perl-IPC-Cmd 

再次执行:

 ./config --prefix=/usr/local/openssl-3.0.5 shared zlib 

clipboard.png

# 编译并安装

 make && make install 

 

4、添加OPENSSL的环境变量

# 在文件 profile 最后一行添加如下内容:

# export OPENSSL=/usr/local/openssl-3.0.5/bin

# export PATH=$OPENSSL:$PATH:$HOME/bin

# vim命令报错就使用 yum -y install vim 安装 vim

 vim /etc/profile 

clipboard.png

# 使用命令生效

 source /etc/profile 

 

查看安装结果:

clipboard.png

但是 openssl 还不能使用

clipboard.png

libssl.so.3 文件在/usr/local/openssl-3.0.5/lib64目录下面,需要配置到共享库中:

clipboard.png

解决方法:

# 换行添加 /usr/local/openssl-3.0.5/lib64

 vim /etc/ld.so.conf 

clipboard.png

上述操作也可以通过直接调用命令语句的方式将内容添加到 ld.so.conf 文件末尾

# 注意:路径最后不带“/”,否则报错

 echo "/usr/local/openssl-3.0.5/lib64" >> /etc/ld.so.conf 

# 加载生效

# 说明:ldconfig 命令用于在默认搜寻目录 /lib 和 /usr/lib 以及动态库配置文件 /etc/ld.so.conf 内所列的目录下,搜索出可共享的动态链接库。

 ldconfig 

# 再次进入 /usr/local/openssl-3.0.5/bin 目录下执行命令已经成功了

 ./openssl version 

clipboard.png

进入/usr/bin目录下,执行以下命令:

# 建立软链接,类似于Windows中的快捷方式: ln -s 源文件 目标文件

 ln -s /usr/local/openssl-3.0.5/bin/openssl /usr/bin/openssl3 

 ln -s /usr/local/openssl-3.0.5/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3 

 ln -s /usr/local/openssl-3.0.5/lib64/libssl.so.3 /usr/lib64/libssl.so.3 

 

之后就可以在任意地方执行openssl3命令

# 自己安装的 openssl3

 openssl3 version 

clipboard.png

# yum 安装自带的 openssl

 openssl version 

clipboard.png

 


 

三、CenrOS7 源码安装 Python 3.10.7

1、准备安装 Python 3.10.7

# 下载目录

 cd /usr/local 

# 下载Python-3.10.7版本

 wget https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tgz 

# 解压安装包

 tar zxf Python-3.10.7.tgz 

# 进入解压后的目录

 cd Python-3.10.7 

 

2、修改OpenSSL编译的路径

注意非常重要,关系到后续是否能够安装成功):

# 安装前必须先配置如下文件:

# 这是血的教训,就因为没提前配置,后续安装出现异常,怎么安装都成功不了,

# 最终只能把 Python-3.10.7 文件夹整个删除再重新按步骤安装才成功

# 文件路径:/usr/local/Python-3.10.7/Modules/Setup

 vim ./Modules/Setup 

原文件(用 vi 命令打开的):

clipboard.png

改为如下:

clipboard.png

这里说明一下,因为没有提前修改配置导致后续的安装失败,但是在网上找了很久都没有成功解决安装报错的问题,基本上所有的安装教程都只是或多或少简单地描述了一下,即把 SSL=/usr/local/ssl 及以下三行注释去掉就能安装成功。然而我尝试了N多次都没有成功过,后来还是自己无意中搜索到 https://www.likecs.com/show-305386216.html 这个网页才找到了些许线索,最终摸索着才解决掉这个问题的,实际这个配置是和安装版本有很大关系的,需要根据各自安装的文件来作修改

1、如果需要可以把 _socket socketmodule.c 注释也去掉吧

2、在Python-3.10.7这个版本中这里的 SSL 已经改成 OPENSSL 了,千万不要找错地方了(可以用 /OPENSSL 进行搜索)

3、OPENSSL对应的路径要特别注意,它指向的是 OpenSSL 的安装目录,网上很多安装教程都没有说明

4、 _ssl 路径中的 OPENSSL 就是你安装完 OpenSSL 后注册的环境变量 OPENSSL,另外要注意的是实际安装目录下是没有 lib 文件夹的,所以要把 -L$(OPENSSL)/lib 改为 -L$(OPENSSL)/lib64

 

好了,现在已经完成安装文件的配置了,那么就继续往下安装吧!

# 执行配置命令,指定Python环境的安装目录

# 说明:

# 标志(enable-optimizations)启用Profile引导优化(PGO)和链路时间优化(LTO)

# 设置 OpenSSL 库的运行时库目录(rpath)。auto:根据 --with-openssl 和 pkg-config 自动检测 rpath

 ./configure --enable-optimizations --with-openssl=/usr/local/openssl-3.0.5 --with-openssl-rpath=auto 

# altinstall跳过创建python链接和手册页链接的操作,防止多版本并存的冲突

 make altinstall 

 

如果出现如下错误:

clipboard.png

解决方法:

# 从错误信息分析,就是缺少了zlib的解压缩类库,安装即可

 yum -y install zlib* 

# 重新安装

 make altinstall 

 

如果出现以下错误:

clipboard.png

大致意思:以“root”用户运行pip可能导致权限中断,并与系统包管理器的行为冲突。建议使用虚拟环境。导致了更新或者下载pip时候下载失败。

解决方案:

a、创建虚拟环境

# 创建Python3(可以根据实际使用版本进行切换)的虚拟环境,正常不显示回显

 python3 -m venv tutorial-env 

# 激活虚拟环境,正常不显示回显

 source tutorial-env/bin/activate 

# 退出虚拟环境命令:

 deactivate 

clipboard.png

# 如果想重新创建一个新的虚拟环境,可以先删除原虚拟环境

 rm -rf tutorial-env 

 

b、在虚拟环境中重新安装python模块包,会提示再次更新

 python -m pip install novas 

clipboard.png

提示更新后即成功:

 pip install --upgrade pip 

 

3、配置Python的环境变量

配置环境变量主要是能快速使用pip3安装命令。

# 在文件 bash_profile 最后一行添加如下内容:

# export PYTHON_HOME=/root/training/Python-3.6.5 # export PATH=$PYTHON_HOME/bin:$PATH

 vi ~/.bash_profile 

clipboard.png

# 使配置生效

 source ~/.bash_profile 

 

4、创建新版本的软链接

# 备份旧版本(看实际情况,可以不动默认链接,改用 python3 或 pip3 命名的软链接,这里采用替换默认链接的方式)

 mv /usr/bin/python /usr/bin/python_bak mv /usr/bin/pip /usr/bin/pip_bak 

# 创建新版本的软链接

 ln -s /usr/local/bin/python3.10 /usr/bin/python ln -s /usr/local/bin/pip3.10 /usr/bin/pip 

clipboard.png

验证 ssl 已安装成功:

clipboard.png

 

5、修改 yum

由于 yum 是 Python2 写的,所以更新到Python3 版本后,yum 可能会出现错误,需要修改配置文件:

 vi /usr/bin/yum  

将第一行:

clipboard.png

改为:

clipboard.png

 

 vi /usr/libexec/urlgrabber-ext-down 

将第一行:

clipboard.png

改为:

clipboard.png

  

至此 CentOS7、OpenSSL-3.0.5 和 Python-3.10.7 安装成功!

 

posted @ 2022-10-01 16:31  惊梦无痕  阅读(2293)  评论(0编辑  收藏  举报