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

基于CentOS7制作OpenSSL 1.1的RPM包

        背景:CentOS7 已经不再维护了,有时候需要升级某些组件,网上却没有相关的资源了。尤其是制作OpenSSH 9.6+ 的RPM包,就会要求OpenSSL为1.1的版本。基于此,还是自己制作吧,以下是踩坑过程。

        1、官网提供的源码包中没有包含spec文件,所以通过rpmbuild命令打包时,需要先自己构建一个openssl.rpm的文件,以下是具体内容:

Name: openssl
Version: 1.1.1w
Release: 1%{?dist}
Summary: Utilities from the general purpose cryptography library with TLS implementationGroup: System Environment/Libraries
License: OpenSSL
URL: http://www.openssl.org/
Source0: openssl-%{version}.tar.gzBuildRequires: make, gcc, coreutils, krb5-devel, perl, sed, zlib-devel, perl-WWW-Curl
Requires: coreutils, make
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
%global openssldir /usr/openssl%description
The OpenSSL toolkit provides support for secure communications between
machines. OpenSSL includes a certificate management tool and shared
libraries which provide various cryptographic algorithms and protocols.%package libs
Summary: Shared libraries for OpenSSL
Group: System Environment/Libraries
Requires: coreutils%description libs
Shared libraries (libcrypto and libssl) for OpenSSL.%package devel
Summary: Development files for programs which will use the openssl library
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}%description devel
OpenSSL RPM for version 1.1.1w on Centos (development package)%prep
%setup -q%build
./config --prefix=%{openssldir} --openssldir=%{openssldir} shared zlib -fPIC
make%install
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
%make_install# Create standard directories
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_libdir}
mkdir -p %{buildroot}%{_includedir}# Create symlinks for libraries in /usr/lib64
ln -sf %{openssldir}/lib/libssl.so.1.1 %{buildroot}%{_libdir}/libssl.so.1.1
ln -sf %{openssldir}/lib/libcrypto.so.1.1 %{buildroot}%{_libdir}/libcrypto.so.1.1
# Create development symlinks
ln -sf %{openssldir}/lib/libssl.so.1.1 %{buildroot}%{_libdir}/libssl.so
ln -sf %{openssldir}/lib/libcrypto.so.1.1 %{buildroot}%{_libdir}/libcrypto.so# Create symlink for binary
ln -sf %{openssldir}/bin/openssl %{buildroot}%{_bindir}/openssl# Ensure pkgconfig files are included
mkdir -p %{buildroot}%{_libdir}/pkgconfig
cp -p %{buildroot}%{openssldir}/lib/pkgconfig/*.pc %{buildroot}%{_libdir}/pkgconfig/%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}%files
%defattr(-,root,root)
%{_bindir}/openssl
%{openssldir}/bin/*
# Configuration files
%{openssldir}/ct_log_list.cnf
%{openssldir}/ct_log_list.cnf.dist
%{openssldir}/openssl.cnf
%{openssldir}/openssl.cnf.dist
# Misc scripts
%{openssldir}/misc/*
# Documentation
%{openssldir}/share/*%files libs
%defattr(-,root,root)
%{_libdir}/libcrypto.so.1.1
%{_libdir}/libssl.so.1.1
%{openssldir}/lib/engines-1.1/*.so
%{openssldir}/lib/pkgconfig/*.pc
# Libraries in openssldir
%{openssldir}/lib/libcrypto.so.1.1
%{openssldir}/lib/libssl.so.1.1%files devel
%defattr(-,root,root)
%{openssldir}/include/*
%{_libdir}/libcrypto.so
%{_libdir}/libssl.so
%{_libdir}/pkgconfig/*.pc
# Development libraries
%{openssldir}/lib/libcrypto.a
%{openssldir}/lib/libcrypto.so
%{openssldir}/lib/libssl.a
%{openssldir}/lib/libssl.so%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig

将openssl.spec文件放在/root/rpmbuild/SPECS目录下,然后执行如下命令:

rpmbuild -bb openssl.spec

3.如果出现如下错误:

[root@~ SPECS]# rpmbuild -bb openssl.spec
error: Failed build dependencies:perl-WWW-Curl is needed by openssl-1.1.1w-1.el7.centos.x86_64
[root@~ SPECS]#

则需要安装perl-WWW-Curl :

[root@~ SPECS]# yum install -y  perl-WWW-Curl

4. 重新执行命令:

rpmbuild -bb openssl.spec

如果不出意外,应该就能制作成功了。

        下面介绍下升级OpenSSL 1.1版本,以及制作OpenSSH 9.6+版本的RPM包时需要注意的问题 。

        之前的博客有介绍,如果OpenSSH 9.6+版本需要兼容老的客户端时,需要进行配置,同时,打包时,需要将with-ssl的开关打开,然后再进行编译,OpenSSH的spec文件,默认是不带openssl进行打包的。

        先升级OpenSSL到1.1.1的版本,因为机器上已经安装了OpenSSL 1.0,升级可能导致某些依赖组件不匹配。所以,只能采取强制升级的操作:

rpm -Uvh openssl* --nodeps --force

升级成功之后,如果打包OpenSSH时,遇到如下错误:

checking if getpgrp accepts zero args... yes
checking for openssl... /usr/bin/openssl
checking for openssl/opensslv.h... no
configure: error: *** OpenSSL headers missing - please install first or check config.log ***
error: Bad exit status from /var/tmp/rpm-tmp.t8CMn3 (%build)

则需要修改下OpenSSH.spec文件,使其打包时,读取的是1.1的OpenSSL,找到%build的位置,加入如下内容:

%build
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig
export LDFLAGS="-L/usr/lib64"
export CPPFLAGS="-I/usr/openssl/include"

然后再执行打包OpenSSH的命令:

rpmbuild -bb openssh.spec

如果没有其他错误,则会打包成功,且是携带OpenSSL的版本。 

 

 

 


 

 

相关文章:

基于CentOS7制作OpenSSL 1.1的RPM包

背景:CentOS7 已经不再维护了,有时候需要升级某些组件,网上却没有相关的资源了。尤其是制作OpenSSH 9.6 的RPM包,就会要求OpenSSL为1.1的版本。基于此,还是自己制作吧,以下是踩坑过程。 1、官网提供的源码包…...

数据分析_Python

1 分析内容 1.1 数据的整体概述 提供数据集的基本信息,包括数据量、时间跨度、地理范围和主要字段. import pandas as pd# 创建示例数据 data {姓名: [张三, 李四, 王五, 赵六, 钱七, 孙八, 周九, 吴十],年龄: [25, 30, 35, 40, 45, 50, 55, 60],性别: [男, 男, 女, 女, 男,…...

TCP/UDP协议原理和区别 笔记

从简单到难吧 区别就是TCP一般用于安全稳定的需求,UDP一般用于不那么需要完全数据的需求,比如说直播,视频等。 再然后就是TPC性能慢于UDP。 再然后我们看TCP的原理(三次握手,数据传输,四次挥手&#xff0…...

深入浅出:C++数据处理类与计算机网络的巧妙类比

深入浅出:C数据处理类与计算机网络的巧妙类比 引言 在计算机编程中,我们常常会遇到一些看似简单的代码结构,却能巧妙地映射到复杂的计算机网络概念中。本文将通过一个简单的C数据处理类,探讨其与计算机网络中硬件设备和协议的类…...

【滑动窗口】LeetCode 209题解 | 长度最小的子数组

长度最小的子数组 前言:滑动窗口一、题目链接二、题目三、算法原理解法一:暴力枚举解法二:利用单调性,用滑动窗口解决问题那么怎么用滑动窗口解决问题?分析滑动窗口的时间复杂度 四、编写代码 前言:滑动窗口…...

在RK3588上使用NCNN和Vulkan加速ResNet50推理全流程

在RK3588上使用NCNN和Vulkan加速ResNet50推理全流程 前言:为什么需要关注移动端AI推理一、环境准备与框架编译1.1 获取NCNN源码1.2 安装必要依赖1.3 编译NCNN二、模型导出与转换2.1 生成ONNX模型2.2 转换NCNN格式三、模型量化加速3.1 生成校准数据3.2 执行量化操作四、性能测试…...

【ant design】ant-design-vue 4.0实现主题色切换

官网&#xff1a;Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js 我图方便&#xff0c;直接在 app.vue 中加入的 <div class"app-content" v-bind:class"appOption.appContentClass"><a-config-provider…...

Android 图片自动拉伸不变形,点九

要让 UI 设计师 制作 Android 用的点九图&#xff08;.9.png&#xff09;&#xff0c;可以按照以下流程和要求进行&#xff1a; &#x1f9e9; 一、什么是点九图&#xff1f; 点九图&#xff08;NinePatch&#xff09;是一种特殊的 PNG 图像&#xff0c;用于在 Android 中根据…...

电子电路:什么是色环电阻器,怎么识别和计算阻值?

识别和计算色环电阻的阻值需要掌握颜色编码规则和基本步骤。以下是具体方法及窍门: 一、色环电阻的基本规则 色环数量: 4环电阻:前2环为有效数字,第3环为倍乘(10ⁿ),第4环为误差。5环电阻:前3环为有效数字,第4环为倍乘,第5环为误差。6环电阻(较少见):前3环为有效数…...

LeetCode Hot100刷题——轮转数组

56. 轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: …...

Python绘制南丁格尔玫瑰图:从入门到实战

Python绘制南丁格尔玫瑰图&#xff1a;从入门到实战 引言 南丁格尔玫瑰图&#xff08;Nightingale Rose Chart&#xff09;&#xff0c;也被称为极区图&#xff08;Polar Area Chart&#xff09;&#xff0c;是一种独特的数据可视化方式。这种图表由弗洛伦斯南丁格尔&#xff…...

概率与期望总结

一、概率 概念&#xff1a;无需多言&#xff1b;几个公式&#xff08; Ω \Omega Ω 表示整个样本空间&#xff09;&#xff1a; 以下公式均有 A , B ⊆ Ω , 且 P ( A ) , P ( B ) > 0. P ( A ∪ B ) P ( A ) P ( B ) − P ( A ∩ B ) , P ( A ∣ B ) P ( A B ) P ( B…...

炼丹学习笔记3---ubuntu2004部署运行openpcdet记录

前言 环境 cuda 11.3 python 3.8 ubuntu2004 一、cuda环境检测 ylhy:~/code_ws/OpenPCDet/tools$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Sun_Mar_21_19:15:46_PDT_2021 Cuda compilation tools, release 11.3…...

深入解析BGP路由反射器与联邦:突破IBGP全连接限制的两种方案

一、引言&#xff1a;大型BGP网络的挑战 在大型BGP网络架构中&#xff0c;传统的IBGP全连接架构会带来严重的扩展性问题。当网络中存在N台路由器时&#xff0c;需要维护N*(N-1)/2个IBGP连接&#xff0c;这对设备资源和运维管理都是巨大挑战。本文将深入解析两种主流解决方案&a…...

QT设置MySQL驱动

QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 第一步&#xff1a;下载MySQL https://dev.mysql.com/downloads/mysql/ 解压缩下载的安装包&#xff0c;其目录结构如下所示&#xff1a; 第二…...

String的一些固定程序函数

append reverse length toString...

3.2/Q2,Charls最新文章解读

文章题目&#xff1a;Transition of nighttime sleep duration and sleep quality with incident cardiovascular disease among middle-aged and older adults: results from a national cohort study DOI&#xff1a;10.1186/s13690-025-01577-5 中文标题&#xff1a;中老年人…...

大麦(Hordeum vulgare)中 BAHD 超家族酰基转移酶-文献精读129

Systematic identification and expression profiles of the BAHD superfamily acyltransferases in barley (Hordeum vulgare) 系统鉴定与大麦&#xff08;Hordeum vulgare&#xff09;中 BAHD 超家族酰基转移酶的表达谱分析 摘要 BAHD 超家族酰基转移酶在植物中催化和调控次…...

docker迅雷自定义端口号、登录用户名密码

在NAS上部署迅雷&#xff0c;确实会带来很大的方便。但是目前很多教程都是讲怎么部署docker迅雷&#xff0c;鲜有将自定义配置的方法。这里讲一下怎么部署&#xff0c;并重点讲一下支持的自定义参数。 一、部署docker 在其他教程中&#xff0c;都是介绍的如下命令&#xff0c…...

中国30米年度土地覆盖数据集及其动态变化(1985-2022年)

中文名称 中国30米年度土地覆盖数据集及其动态变化(1985-2022年) 英文名称&#xff1a;The 30 m annual land cover datasets and its dynamics in China from 1985 to 2022 CSTR:11738.11.NCDC.ZENODO.DB3943.2023 DOI 10.5281/zenodo.8176941 数据共享方式&#xff1a…...

3D个人简历网站 5.天空、鸟、飞机

1.显示天空 models下新建文件Sky.jsx Sky.jsx // 从 React 库中导入 useRef 钩子&#xff0c;用于创建可变的 ref 对象 import { useRef } from "react"; // 从 react-three/drei 库中导入 useGLTF 钩子&#xff0c;用于加载 GLTF 格式的 3D 模型 import { useGLT…...

STM32IIC实战-OLED模板

STM32IIC实战-OLED模板 一&#xff0c;SSD1306 控制芯片1&#xff0c; 主要特性2&#xff0c;I2C 通信协议3&#xff0c; 显示原理4&#xff0c; 控制流程5&#xff0c; 开发思路 二&#xff0c;HAL I2C API 解析I2C 相关 API1&#xff0c;2&#xff0c;3&#xff0c;4&#xf…...

Sparse4D运行笔记

Sparse4D有三个版本&#xff0c;其中V1和V2版本的官方文档中环境依赖写得比较模糊且依赖库有版本冲突。 1. Sparse4D V1 创建环境 conda create sparse4dv1 python3.8 激活环境 conda activate sparse4dv1 安装torch, torchvision, torchaudio pip install torch1.13.0c…...

Redis设计与实现——分布式Redis

Redis Sentinel&#xff08;哨兵&#xff09; Sentinel 的工作机制 故障检测&#xff08;Failure Detection&#xff09; 主观下线&#xff08;Subjective Down&#xff09;&#xff1a;单个 Sentinel 实例检测到主节点在30 秒内无响应&#xff0c;标记其为 SDOWN。 客观下线…...

多指标组合策略

该策略(MultiConditionStrategy)是一种基于多种技术指标和市场条件的交易策略。它通过综合考虑多个条件来生成交易信号,从而决定买入或卖出的时机。 以下是对该策略的详细分析: 交易逻辑思路 1. 条件1:星期几和价格变化判断 - 该条件根据当前日期是星期几以及价格的变化…...

c#车检车构客户管理系统软件车辆年审短信提醒软件

# CMS_VehicleInspection 车检车构客户管理系统软件车辆年审短信提醒软件 # 开发背景 软件是给泸州某公司开发的车检车构客户管理系统软件。用于在车检年审到期前一个月给客户发送车检短信提醒 # 功能描述 主要功能&#xff1a;车辆年审前一个月给客户发年审短信提醒&#xf…...

Java爬虫能处理京东商品数据吗?

Java爬虫完全可以处理京东商品数据。通过Java爬虫技术&#xff0c;可以高效地获取京东商品的详细信息&#xff0c;包括商品名称、价格、图片、描述等。这些信息对于市场分析、选品上架、库存管理和价格策略制定等方面具有重要价值。以下是一个完整的Java爬虫示例&#xff0c;展…...

通俗版解释CPU、核心、进程、线程、协程的定义及关系

通俗版解释&#xff08;比喻法&#xff09; 1. CPU 和核心 CPU 一个工厂&#xff08;负责干活的总部&#xff09;。核心 工厂里的车间&#xff08;比如工厂有4个车间&#xff0c;就能同时处理4个任务&#xff09;。 2. 进程 进程 一家独立运营的公司&#xff08;比如一家…...

大语言模型 11 - 从0开始训练GPT 0.25B参数量 MiniMind2 准备数据与训练模型 DPO直接偏好优化

写在前面 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是目前最广泛应用的大语言模型架构之一&#xff0c;其强大的自然语言理解与生成能力背后&#xff0c;是一个庞大而精细的训练流程。本文将从宏观到微观&#xff0c;系统讲解GPT的训练过程&#xff0c;…...

USRP 射频信号 采集 回放 系统

USRP 射频信号采集回放系统 也可以叫做&#xff1a; 利用宽带RF录制和回放系统实现6G技术研究超宽带射频信号采集回放系统使用NI USRP平台实现射频信号录制和回放操作演示USRP也能实现多通道宽带信号流盘回放了&#xff01; 对于最简单的实现方法就是使用LabVIEW进行实现 采…...