【linux升级ssh】 利用rpmbuild工具对ssh打包为rpm包进场安装升级
制作rpm包
rpmbuild命令用于创建软件的二进制包和源代码包。
官方文档:rpm.org - RPM Reference Manual rpmbuild 中文手册:rpmbuild 中文手册 [金步国]
使用rpmbuild将tar包打成rpm包
RPM打包使用的是rpmbuild命令,这个命令来自rpm-build包,这个是必装的。 #yum install rpm-build 当然也可以直接安装rpmdevtools,这个工具还包含一些其他的工具,同时它依赖rpm-build,所以直接安装的话会同时把rpm-build装上。 #yum install rpmdevtools 当然,根据不同的软件构建过程,还需要其他的编译打包工具,比如C语言的make、gcc,python的setuptools等,根据需要安装即可
执行如下命令来生成rpmbuild的工作目录
#rpmdev-setuptree 提示:rpmdev-setuptree命令默认将再当前用户主目录下创建一个RPM构建根目录结构,如果需要改变次默认位置,可以修改配置文件:~/.rpmmacros中变量_topdir对应的值即可。 rpmbuild/ ├── BUILD #打包过程中的工作目录 ├── BUILDROOT ├── RPMS #存放生成的二进制包 ├── SOURCES #放置打包资源,包括源码打包文件和补丁文件等 ├── SPECS #放置SPEC文档 └── SRPMS #存放生成的源码包
编辑SPEC文件
SPEC撰写是打包RPM的核心,也算是最难的一步,好在我们可以从参照一个简单的模板文件开始,在可以实现基本功能的基础上再一步一步的扩充文档内容,直至完全达到要求。下面是一个简单的SPEC文档,其中包括了一些说明信息(注:#后面的内容为说明信息),该SPEC文档是对一个测试的软件项目hellorpm写的,hellorpm软件包编译后仅有一个执行文件、一个手册文件和一个项目说文件。 Emacs 和 vi 的最新版本有 .spec 文件编辑模式,它会在创建新文件时打开一个类似的模板。所以可使用以下命令来自动使用模板文件:
#cd ~/rpmbuild/SPECS #vim hello.spec
相关资料:Redirect Notice How to create a GNU Hello RPM package/zh-cn - Fedora Project Wiki https://www.iteye.com/blog/hlee-3434994、构建RPM包
构建操作
开始构建操作,首先进入到当前用户的rpmbuild根目录
#cd ~/rpmbuild/ #rpmbuild -ba SPECS/*.spec 提示:-ba表示build all,即生成包括二进制包和源代码包的所有RPM包,如果正常的话,rpmbuild将正常退出,同时在RPMS目录和SRPMS目录中将生成对应的RPM包
openssh打包安装
安装服务和相关依赖
yum install zlib-devel openssl-devel gcc perl-devel pam-devel libXt-devel imake gtk2-devel -y yum install rpm-build yum install rpmdevtools
到官网上下载对应版本的源码包
创建所需目录
rpmdev-setuptree
把所需的包拷贝到该目录下面
cd /root/rpmbuild/ cp /root/openssh-8.8p1.tar.gz . cp /root/openssh-8.8p1.tar.gz SOURCES wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz cp x11-ssh-askpass-1.2.4.1.tar.gz SOURCES tar xf openssh-8.8p1.tar.gz #openssh会自带.spec文件可根据linunx版本选择配置文件 ./openssh-8.8p1/contrib/redhat/openssh.spec ./openssh-8.8p1/contrib/suse/openssh.spec
修改配置文件
sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" openssh.spec sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" openssh.spec
构建
rpmbuild -ba openssh.spec /root/rpmbuild/RPMS/x86_64下查看构建完成的rpm包
注:构建完成后在备用的机器上侧防止升级不成功导致无法登录
报错:
第一个报错
/usr/include/X11/Xlib.h error: Failed build dependencies: /usr/include/X11/Xlib.h is needed by openssh-8.8.p1-1.el7.x86_64libXt-devel is needed by openssh-8.8.p1-1.el7.x86_64imake is needed by openssh-8.8.p1-1.el7.x86_64gtk2-devel is needed by openssh-8.8.p1-1.el7.x86_64
解决办法
yum install libXt-devel imake gtk2-devel openssl-libs -y
第二个报错
openssl-devel < 1.1 被 openssh-8.8p1-1.el7.x86_64 需要 构建依赖失败:openssl-devel < 1.1 被 openssh-8.8p1-1.el7.x86_64 需要 解决方法: [root@localhost SPECS]# vim openssh.spec 注释掉 BuildRequires: openssl-devel < 1.1 这一行
第三个报错:
RPM build errors:Installed (but unpackaged) file(s) found:/usr/libexec/openssh/ssh-sk-helper/usr/share/man/man8/ssh-sk-helper.8.gz
解决方法:
vi /usr/lib/rpm/macros #%__check_files %{_rpmconfigdir}/check-files %{buildroot} 注释改行
第四个报错:
RPM build errors: Bad exit status from /var/tmp/rpm-tmp.85UQUm (%build)
解决方法:
可能是时间不对更新时间,再重新试。
打包成功
Wrote: /root/rpmbuild/SRPMS/openssh-8.8p1-1.el7.src.rpm Wrote: /root/rpmbuild/RPMS/x86_64/openssh-8.8p1-1.el7.x86_64.rpm Wrote: /root/rpmbuild/RPMS/x86_64/openssh-clients-8.8p1-1.el7.x86_64.rpm Wrote: /root/rpmbuild/RPMS/x86_64/openssh-server-8.8p1-1.el7.x86_64.rpm Wrote: /root/rpmbuild/RPMS/x86_64/openssh-askpass-8.8p1-1.el7.x86_64.rpm Wrote: /root/rpmbuild/RPMS/x86_64/openssh-askpass-gnome-8.8p1-1.el7.x86_64.rpm Wrote: /root/rpmbuild/RPMS/x86_64/openssh-debuginfo-8.8p1-1.el7.x86_64.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.DTNijH + umask 022 + cd /root/rpmbuild/BUILD + cd openssh-8.8p1 + rm -rf /root/rpmbuild/BUILDROOT/openssh-8.8p1-1.el7.x86_64 + exit 0
升级前的准备(一定要进行)
注:升级请做好备份,在备机上进行测试,查看构建的rpm包是否有问题
备份pam 文件
cp /etc/pam.d/{sshd,sshd.bak}
开始升级
yum install pango atk gtk2 libXt rpm -Uvh openssh-*
出现的问题
如出现安装完成后无法登录情况 检查/etc/ssh/下的文件或备份还原。 如出现安装完成自己跳出登录后无法登录的情况 请检查/root/rpmbuild/BUILD/openssh-8.8p1/sshd_config文件是否有问题(端口没开或禁止登录) 修改后重新构建rpm包,再进行升级。 sshd重启报错 修改sshd文件的权限 cd /etc/ssh/ chmod 400 ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key systemctl restart sshd
sshd 验证
ssh -V OpenSSH_8.8p1, OpenSSL 1.0.2k-fips 26 Jan 2017
相关文档:centos7 安装openssh8.3 - 简书
相关文章:

【linux升级ssh】 利用rpmbuild工具对ssh打包为rpm包进场安装升级
制作rpm包 rpmbuild命令用于创建软件的二进制包和源代码包。 官方文档:rpm.org - RPM Reference Manual rpmbuild 中文手册:rpmbuild 中文手册 [金步国] 使用rpmbuild将tar包打成rpm包 RPM打包使用的是rpmbuild命令,这个命令来自rpm-buil…...

UCloud上线可商用LLaMA2镜像,助力AGI应用发展
随着人工智能技术的快速发展,大模型应用在自然语言处理、图像识别、智能交互等领域展现出了巨大的潜力,为企业带来了更多创新和商机。众多企业纷纷将大模型应用于产品开发和业务优化中,希望通过提升智能化水平和用户体验来赢得竞争优势。近日…...

Linux推出Debian 12.1,并进行多方面系统修复
据了解,Debian是最古老的 GNU / Linux 发行版之一,也是许多其他基于 Linux 的操作系统的基础,包括 Ubuntu、Kali、MX 和树莓派 OS 等。 此外,该操作系统以稳定性为重,不追求花哨的新功能,因此新版本的发布…...

Spring 事务的使用、隔离级别、@Transactional的使用
Spring事务是Spring框架提供的一种机制,用于管理应用程序中的数据库事务。 事务是一组数据库操作的执行单元,要么全部成功提交,要么全部失败回滚,保证数据的一致性和完整性。 Spring事务提供了声明式事务和编程式事务两种方式&am…...

Top命令
Top top - 12:46:01 up 2 days, 11:10, 3 users, load average: 0.56, 0.59, 0.45系统基本信息:显示了系统运行时间、登录用户数和平均负载(load average)情况。平均负载是系统在特定时间范围内的平均活跃进程数,可以用来衡量系…...

(三)RabbitMQ七种模式介绍与代码演示
Lison <dreamlison163.com>, v1.0.0, 2023.06.22 七种模式介绍与代码演示 文章目录 七种模式介绍与代码演示四大交换机四种交换机介绍 工作模式简单模式(Hello World)工作队列模式(Work queues)订阅模式(Publis…...

ElasticSearch Java API 操作
1.idea创建Maven项目 2.添加依赖 修改 pom.xml 文件 <dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.8.0</version></dependency><!-- elasticsearch 的客户端 --…...

【Qt】QML-01:使用QtCreator10创建QML工程,并讲解第一个程序:Hello World
1、创建QML工程 1)新建工程 打开QtCreator10,依次点击“Create Project” --> “Application(Qt)” --> “Qt Quick Application(compat)” 注意:本人打算使用Qt5.15.2创建工程,而非Qt6,因此选择兼容低于Qt6版本的“Qt Quick Applicat…...

Docker的安装与部署
Docker 基本概念介绍 通俗理解:镜像是类,容器是对象实例 仓库 应用商店、镜像 下载的应用安装程序、容器 应用程序 镜像(Image) 这里面保存了应用和需要的依赖环境 为什么需要多个镜像?当开发、构建和运行容器化应用程序时,我们…...

【数据结构】实验四:循环链表
实验四 循环链表 一、实验目的与要求 1)熟悉循环链表的类型定义和基本操作; 2)灵活应用循环链表解决具体应用问题。 二、实验内容 题目一:有n个小孩围成一圈,给他们从1开始依次编号,从编号为1的小孩开…...

【FPGA/D7】
2023年7月26日 串口传图到RAM并TFT显示 视频25note要求:接收两个字节数据合并为一个16位数据并写入ram: FIFO模型与应用场景 视频26 串口传图到RAM并TFT显示 视频25 note 存储器的使用,在开始读写或者结束读写的位置非常容易出现数据错误或…...

Vue的下载以及MVVM分析
😀前言本片文章是vue系列第一篇整理了vue的基础和发展史 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉Ƕ…...

ElasticSearch学习--自动补全
目录 自定义分词器 介绍 配置自定义分词器 拼音分词器的问题编辑 总结 DSL自动补全查询 RestAPI实现自动补全 自定义分词器 介绍 自定义分词器只在当前库中有效 配置自定义分词器 拼音分词器的问题 总结 DSL自动补全查询 RestAPI实现自动补全...

【C++】多态,虚函数表相关问题解决
文章目录 多态概念及其触发条件重写和协变(考点1)(考点2) 虚函数表及其位置(考点3) 多继承中的虚函数表 多态概念及其触发条件 多态的概念:通俗来说,就是多种形态。具体点就是去完成…...

探索大型语言模型的开源人工智能基础设施:北京开源AI Meetup回顾
原文参见Explore open source AI Infra for Large Language Models: Highlights from the Open Source AI Meetup Beijing | Cloud Native Computing Foundation 背景介绍: 最近,在 ChatGPT 的成功推动下,大型语言模型及其应用程序的流行度激…...

Langchain 的 Conversation buffer window memory
Langchain 的 Conversation buffer window memory ConversationBufferWindowMemory 保存一段时间内对话交互的列表。它仅使用最后 K 个交互。这对于保持最近交互的滑动窗口非常有用,因此缓冲区不会变得太大。 我们首先来探讨一下这种存储器的基本功能。 示例代码&…...

电流源电路
3.3.3电流源电路 镜像电流源 电路 分析 仿真 比例电流源 电路 分析 仿真 加射极输出器的电流源1 电路 分析 仿真 加射极输出器的电流源2 电路 分析 仿真 威尔逊电流源 电路 分析 仿真...

iOS开发-CMMotionManager传感器陀螺仪
iOS开发-CMMotionManager传感器陀螺仪 之前开发中遇到需要使用陀螺仪判断是否拍照时候水平判断,如果没有水平拍照,则给出提示。方便用户拍照合适的题目图片。 一、CMMotionManager CMMotionManager是什么 CMMotionManager 是 Core Motion 库的核心类&…...

影刀下载,插件安装
1、下载 在影刀官网下载:www.yingdao.com 2、谷歌插件安装 参考: 影刀插件安装各种方式 浏览器安装插件说明 - 影刀帮助中心 安装说明:驱动外置 Chrome 需要安装插件,并且保证此插件处于开启状态 方式一:用户头…...

Linux的tcpdump命令详解
tcpdump 一款sniffer工具,是Linux上的抓包工具,嗅探器 补充说明 tcpdump命令 是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。…...

springboot运行报错Failed to load ApplicationContext for xxx
Failed to load ApplicationContext for报错解决方法 报错Failed to load ApplicationContext for 报错Failed to load ApplicationContext for 网上找了一堆方法都尝试了还是没用 包括添加mapperScan,添加配置类 配置pom文件 [外链图片转存失败,源站可能有防盗链机…...

[SQL挖掘机] - 内连接: inner join
介绍: 内连接是一种多表连接方式,用于将两个或多个表中的数据通过共同的列值进行匹配,并返回满足连接条件的匹配行。简单来说,内连接能够将相关联的数据组合在一起,以便进行更复杂和全面的数据分析。 内连接的工作原理如下&…...

mysql(四)数据备份
目录 前言 一、概述 二、备份的类型 (一)物理与逻辑角度 (二)数据库备份策略角度 三、常见的备份方法 四、完整备份 (一)打包数据库文件备份 (二)备份工具备份 五、增量备份 六、操…...

Spring 拦截器
上篇博客链接:SpringAOP详解 上篇博客我们提到使用AOP的环绕通知来完成统一的用户登陆验证虽然方便了许多,但随之而来也带来了新的问题: HttpSession不知道如何去获取,获取困难登录和注册的方法并不需要拦截,使用切点没办法定义哪…...

【libevent】http客户端3:简单封装
LibEventHttp: 适用于简单的http请求 LibEventHttp/* Copyright (c) MediaArea.net SARL. All Rights Reserved.** Use of this source code is governed by a BSD-style license that can* be found in the License.html file in the root of the source tree.*///--------…...

JavaScript的函数中this的指向
JavaScript的函数中this的指向 JavaScript 语言之所以有 this 的设计,跟内存里面的数据结构有关系。 以下例子来简单描述this在不同情况下所指向的对象。 var obj {aa: function(){console.log(this.num)},num: 5 };var aa obj.aa; var num 10;obj.aa(); // …...

Caddy 中实现自动 HTTPS
要在 Caddy 中实现自动 HTTPS,您可以按照以下步骤进行操作: 步骤 1:安装 Caddy 首先,您需要安装 Caddy 服务器。您可以从 Caddy 的官方网站(https://caddyserver.com/)下载适用于您的操作系统的最新版本。…...

SK5代理(socks5代理)在网络安全与爬虫应用中的优势与编写指南
一、SK5代理(socks5代理)的基本概念 SK5代理是一种网络代理协议,它允许客户端通过代理服务器与目标服务器进行通信。相较于HTTP代理,SK5代理在传输数据时更加高效且安全,它支持TCP和UDP协议,并且能够实现数…...

【LeetCode-简单】剑指 Offer 06. 从尾到头打印链表(详解)
题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 题目地址:剑指 Offer 06. 从尾到头打印链表 - 力扣(LeetCode) 方法1:栈 思路 题目要求我们将链表的从尾到投打印一…...

【LeetCode】114.二叉树展开为链表
题目 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1&…...