当前位置: 首页 > news >正文

【linux】centos编译安装openssl1.1.1

文章目录

  • 背景
    • 用途
    • 编译安装openssl1.1.1d
    • 测试centos的python2 ssl模块是否正常
    • pyenv编译python3.10+需要配置环境变量(必须)
    • 编译python前记得安装依赖

背景

首先, centos7 通过yum安装的openssl-devel包是1.0.2k的,这玩意儿太老了。我们选择从源码安装openssl。
centos7内置了二进制文件/usr/bin/openssl, 版本为1.0.2k,编译新版后直接删掉就行。

用途

python 3.10 及以上, 源码安装时,需要openssl1.1.1+
pip install requests>2.26时, 需要openssl1.1.1+

编译安装openssl1.1.1d

先去掉旧版ssldev的包yum remove openssl-devel openssl
备份旧版opensslmv /usr/bin/openssl /usr/bin/openssl1.0.2(没有就跳过)

## 下载源码
wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1d.tar.gz## 编译 (很快,就几分钟ok)
tar -zxvf  openssl-1.1.1d.tar.gz
cd openssl-1.1.1d
mkdir -p /usr/local/openssl
./config --prefix=/usr/local/openssl no-zlib
make && make install## 动态库链接
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ## 配置ldconfig
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v

测试centos的python2 ssl模块是否正常

能正常输出html就ok。

import urllib2
import ssl
url = "https://example.com"
headers = {  'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'  }
request = urllib2.Request(url, headers=headers)
response = urllib2.urlopen(request, context=ssl.SSLContext(ssl.PROTOCOL_TLSv1))
html = response.read()
response.close()
print html

pyenv编译python3.10+需要配置环境变量(必须)

export CFLAGS="-I/usr/local/openssl/include"
export LDFLAGS="-L/usr/local/openssl/lib"
export PKG_CONFIG_PATH="/usr/local/openssl/lib/pkgconfig"

必须滴,不然会报错:
ModuleNotFoundError: No module named ‘_ssl’
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

编译python前记得安装依赖

sudo yum groupinstall "Development Tools"
sudo yum install bzip2-devel libffi-devel  zlib-devel readline-devel sqlite-devel  xz-devel tk-devel  gdbm-devel

相关文章:

【linux】centos编译安装openssl1.1.1

文章目录 背景用途编译安装openssl1.1.1d测试centos的python2 ssl模块是否正常pyenv编译python3.10需要配置环境变量(必须)编译python前记得安装依赖 背景 首先, centos7 通过yum安装的openssl-devel包是1.0.2k的,这玩意儿太老了。我们选择从源码安装op…...

SpringBoot环境下的学生请假管理平台开发

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...

基于Transformer的路径规划 - 第五篇 GPT生成策略_解码方法优化

上一篇:基于Transformer的路径规划 - 第四篇 GPT模型优化 在上一篇中,我尝试优化GPT路径生成模型,但没有成功。在随机生成的测试集上,路径规划成功率只有99%左右。而使用传统的路径规划算法,例如A*,路径规划…...

项目模块十三:Util模块

一、项目设计思路 用于之后协议使用的工具类 二、静态成员函数 1、分割函数 static size_t Split(const string &src, const string &sep, vector<string> *array) string.find(const string &str, size_t pos 0) string.substr(size_t pos 0, size_t…...

10款舞台剧免费音频剪辑软件分享,你用过哪款?

在舞台剧的世界里&#xff0c;音乐是情感的传递者&#xff0c;是气氛的营造者。一个好的舞台剧&#xff0c;离不开精心剪辑的背景音乐。而选择合适的音频剪辑软件&#xff0c;就如同挑选舞台上的演员一样重要。今天&#xff0c;我们就从舞台剧音乐剪辑的角度&#xff0c;来聊聊…...

Redis常见面试题:ZSet底层数据结构,SDS、压缩列表ZipList、跳表SkipList

文章目录 一、Redis数据结构概述1.1 Redis有哪些数据类型1.2 Redis本质是哈希表1.3 Redis的哈希冲突与渐进式rehash1.4 数据结构底层1.4.1 简单动态字符串SDS1.4.2 双向链表&#xff08;后续已废弃&#xff09;1.4.3 压缩列表ZipList1.4.4 哈希表HashTable1.4.5 跳表SkipList1.…...

496.下一个更大元素Ⅰ

老样子&#xff0c;题目&#xff1a;496. 下一个更大元素 I - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a;代码随想录 AC代码&#xff1a; class Solution {public int[] nextGreaterElement(int[] nums1, int[] nums2) {Stack<Integer> stacknew Stack&l…...

C++类和对象上

1. 类的定义 1.1 类定义格式 • class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员&#xff1a;类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或者成员函数。…...

《图像边缘检测算法综述》

在当今的数字时代&#xff0c;图像处理技术在各个领域都发挥着至关重要的作用。其中&#xff0c;边缘检测作为图像处理中的一个关键任务&#xff0c;旨在识别图像中亮度变化显著的区域&#xff0c;进而提取出物体的轮廓和形状。边缘检测不仅是图像处理的基础技术&#xff0c;还…...

Git 使用指南:从基础到实战

Git 是目前最流行的分布式版本控制系统&#xff0c;广泛应用于软件开发、项目协作和版本管理。本文详细介绍 Git 的基础操作、工作流程、分支管理、常见问题解决方法以及进阶技巧&#xff0c;帮助开发者在日常工作中高效地使用 Git。 目录 一、Git 基础概念1.1 版本控制1.2 Git…...

新生代对象垃圾回收如何避免全堆扫描

新生代垃圾回收如何避免全堆扫描&#xff1a;通过卡表 写屏障避免全堆扫描 卡表&#xff1a; 在做YGC的时候&#xff0c;需要判断年轻代里面的对象哪些是垃圾&#xff0c;这些对象可能被老年代的对象引用&#xff0c; 这时候判断年轻代的某个对象是不是垃圾的时候&#xff0…...

[论文阅读] | 智能体长期记忆

更新记录&#xff1a; 2024.11.2 人大高瓴长期记忆综述 文章目录 人大高瓴长期记忆综述智能体与环境交互记忆的来源/形式/操作来源&#xff1a;(1)当前任务历史信息 (2)其他任务的信息 (3)外部知识形式&#xff1a;如何表达记忆的内容&#xff0c;通过(1)文本 (2)参数(训练到模…...

Vue2.0 通过vue-pdf-signature@4.2.7和pdfjs-dist@2.5.207实现PDF预览

1.安装依赖 npm install pdfjs-dist2.5.207 --savenpm install vue-pdf-signature4.2.7 --save2.在.vue文件中 script 部分引入 <script> import * as PDFJS from pdfjs-dist PDFJS.GlobalWorkerOptions.workerSrc require(pdfjs-dist/build/pdf.worker.js);//解决pdf…...

gradle的安装及其配置

1、下载网址 Gradle | Releases 2、 3、配置环境变量 4、 5、cmd输入gradle-v查看版本...

qt QImage详解

1、概述 QImage是Qt框架中用于处理图像数据的一个核心类。与QPixmap不同&#xff0c;QImage是在内存中直接存储图像像素数据的&#xff0c;这使得它适用于需要直接访问和修改像素的应用场景&#xff0c;比如图像处理算法、图像绘制以及图像分析等。QImage支持多种图像格式&…...

数据分析与效果评估的有效方法与实践探讨

内容概要 在现代社会中&#xff0c;数据分析与效果评估已成为各类项目管理和决策制定中的重要组成部分。首先&#xff0c;数据分析为我们提供了一种系统化的方法&#xff0c;以深入了解所收集数据的内涵与趋势。通过对数据进行整理、分类和分析&#xff0c;我们能够发现潜在的…...

Langchain调用模型使用FAISS

1.导包 from langchain_community.document_loaders import TextLoader from langchain_community.vectorstores import FAISS from langchain_openai.embeddings import OpenAIEmbeddings from langchain_text_splitters import RecursiveCharacterTextSplitter2.加载数据 l…...

双向链表的实现

一.概念与结构 双向链表区别于单链表不同的地方在于&#xff0c;双链表多出于一个指针能指向前面结点&#xff0c;使得整个链表得以首位相连。带头链表里的头结点称为哨兵位&#xff0c;哨兵位结点不储存任何有效元素&#xff0c;只是放哨功能。 二.实现双链表 2.1双链表结构…...

Charles简单压力测试

1.接口请求次数&#xff0c;并发量&#xff0c;请求延迟时间均可配置 1.1选中需要进行测试的接口&#xff0c;鼠标右键选中【repeat advance】 2.设置并发参数 下面的图中&#xff0c;选择了1个接口&#xff0c;每次迭代中1个接口同时请求&#xff0c;迭代1000次&#xff08;…...

MMSegmentation测试阶段推理速度非常慢的一种可能原因

问题背景 测试集约1000张图片。训练阶段在测试集上推理时&#xff0c;速度正常&#xff0c;推理速度约为30fps&#xff1b;而使用tools/test.py进行推理时&#xff0c;速度非常慢&#xff0c;推理速度不到0.1fps。 解决方案 检查配置文件中是否启用了visualizer&#xff0c;…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...