Linux|编译最新版的openssh-server-9.3的rpm包(一)
前言:
openssh服务的重要性不需要在这里废话了,而面对各种系统漏洞服务漏洞,我们最好的应对手段就是升级了,因此,我们的服务器很可能有升级内核的需求,以及升级系统内的重要服务的需求,而作为与服务器交互的服务sshd来说,漏洞也是非常多的,但该服务是基础服务,是不可能停止的,因此,我们需要升级它。
那么,如果只是单独的几个服务器,使用的是带有漏洞的低版本的sshd服务,手动的编译安装将该服务升级是可以实现的(通常,手工编译一个sshd服务也就最多半小时,包括测试环节),而如果有若干个服务器都需要升级,那么,显然手动编译升级的方式是不太现实的,太耗时费力了。
因此,在有大量的同一操作系统的服务器的情况下,显然编译一个适用于自身情况的sshd服务安装rpm包是比较合适的,可以节约大量的编译时间(一次编译,到处运行),并且可以结合脚本进行批量部署,从而提升运维的效率。
那么,本文将就如何在centos7下编译一个可用于centos7,升级sshd服务到最新版本的9.3做一个示例演示。
示例服务器的系统版本:
[root@k8s-node2 x86_64]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
####注:编译出来的rpm包适用于所有centos7或者redhat7以及等同于centos7的欧拉操作系统
一,
创建相关目录
这些目录主要是存放源码包和编译出来的rpm包
[root@k8s-node2 ~]# mkdir -p /root/rpmbuild/SOURCES
[root@k8s-node2 ~]# mkdir -p /root/rpmbuild/SPECS
[root@k8s-node2 ~]# cp openssh-9.3p1.tar.gz /root/rpmbuild/SOURCES/
二,
制作rpm的准备工作
#安装必要的包,关键的包是rpm-build, 其它的是依赖yum install rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel unzip libXt-devel imake gtk2-devel -y#解压tar包cd /root/rpmbuild/SOURCES/wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gztar -zxf openssh-9.3p1.tar.gz
#复制出官方提供的spec文件,rpm-build需要根据这个文件来制作rpm包cp openssh-9.3p1/contrib/redhat/openssh.spec .
#关掉no_gnome_askpass no_x11_askpass这两个参数sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" openssh.specsed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" openssh.spec
三,
开始rpm包的制作
主要命令是:
rpmbuild -ba openssh.spec
###由于编译工作可能会有非常多的错误,因此,本次编译工作使用试错法,也就是直接开始,有错就解决,直到编译工作完成。
####下面对编译中的错误做一个总结
错误1:
[root@k8s-node2 SOURCES]# rpmbuild -ba openssh.spec
error: File /root/rpmbuild/SOURCES/x11-ssh-askpass-1.2.4.1.tar.gz: No such file or directory
两个方案任选一个即可
解决方案1:
请前往网址:
https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz/
下载tar包然后手动上传到/root/rpmbuild/SOURCES/就可以了
不用wget的原因是wget下载的tar包在rpmbuild执行时解压会报错,下载后tar -zxf无法执行,只能手动下载然后上传
解决方案2:
屏蔽掉askpass,但还是需要下载x11-ssh-askpass-1.2.4.1.tar.gz在当前目录
sed -i -e "s/%global no_x11_askpass 0/%global no_x11_askpass 1/g" openssh.spec
wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz
错误2:
openssl开发包版本过高
[root@k8s-node2 SOURCES]# rpmbuild -ba openssh.spec
error: Failed build dependencies:openssl-devel < 1.1 is needed by openssh-9.3p1-1.el7.centos.x86_64
经检查,确实openssl的开发包版本过高,但卸载该包将会引起一些不必要的麻烦(openssl是一个比较重要的内置软件)
[root@k8s-node2 SOURCES]# rpm -qa |grep openssl
openssl-libs-1.0.2k-8.el7.x86_64
openssl-1.0.2k-8.el7.x86_64
xmlsec1-openssl-1.2.20-5.el7.x86_64
openssl-devel-1.0.2k-8.el7.x86_64
解决方案:
编译前忽略openssl开发包的检查,也就是注释检查行
sed -i '/openssl-devel < 1.1/s/^/#/' openssh.spec
编译是比较快的啊,啪的一下就好了,编译出来的rpm包在以下目录,以下rpm包拿到其它同操作系统的服务器就可以愉快的安装使用了:
[root@k8s-node2 SOURCES]# cd ../RPMS/x86_64/
[root@k8s-node2 x86_64]# ls
openssh-9.3p1-1.el7.centos.x86_64.rpm openssh-clients-9.3p1-1.el7.centos.x86_64.rpm openssh-server-9.3p1-1.el7.centos.x86_64.rpm
openssh-askpass-gnome-9.3p1-1.el7.centos.x86_64.rpm openssh-debuginfo-9.3p1-1.el7.centos.x86_64.rpm
正常的编译输出,尾部如下:
。。。。。。。。前面的略略略。。。。。。。。。。。
bpango-1.0.so.0()(64bit) libpangocairo-1.0.so.0()(64bit) libpangoft2-1.0.so.0()(64bit) libpthread.so.0()(64bit) rtld(GNU_HASH)
Obsoletes: ssh-extras
Processing files: openssh-debuginfo-9.3p1-1.el7.centos.x86_64
Provides: openssh-debuginfo = 9.3p1-1.el7.centos openssh-debuginfo(x86-64) = 9.3p1-1.el7.centos
Requires(rpmlib): rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1
Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/openssh-9.3p1-1.el7.centos.x86_64
Wrote: /root/rpmbuild/SRPMS/openssh-9.3p1-1.el7.centos.src.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssh-9.3p1-1.el7.centos.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssh-clients-9.3p1-1.el7.centos.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssh-server-9.3p1-1.el7.centos.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssh-askpass-gnome-9.3p1-1.el7.centos.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/openssh-debuginfo-9.3p1-1.el7.centos.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.JgTTnt
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd openssh-9.3p1
+ rm -rf /root/rpmbuild/BUILDROOT/openssh-9.3p1-1.el7.centos.x86_64
+ exit 0
Linux|编译最新版的openssh-server-9.3的rpm包(一)相关推荐
- OpenSSH升级8.5版本rpm包制作过程及安装。OpenSSH 命令注入漏洞
OpenSSH升级8.5版本 3月3日OpenSSH官方发布最新版OpenSSH8.5,此次更新修复了之前版本存在的注入漏洞.用源码编译的方式比较慢 而且需要相关的依赖特别的多,而且公司一般都是内网环 ...
- linux gcc、gcc-c++离线(内网)环境安装 附rpm包~
系统环境contos7 64位 最近在纯净版内网环境上部署项目,发现少了gcc编译环境,由于没有网络不能使用yum,所以只能通过rpm包方式安装,但是网上所有的gcc包都需要c币下载 也是走了不少弯路 ...
- linux 编译 freescale arm 的gdb server
一.gdb server 的生成 1.官网下载 gdb-7.8.tar.gz http://ftp.gnu.org/gnu/gdb 2.解压 $ tar zxf gdb-7.8.tar.gz 参考 g ...
- Linux中使用命令分类型统计系统光盘中rpm包数量
统计CentOS8光盘中Packages目录下各种版本rpm包的数量 使用wc查看rpm包总数 [21:11:06 root@C8-3-55 AppStream]#ls ./Packages/*.rp ...
- linux ssh.rpm包下载,openssh RPM包制作
openssh经常出现漏洞要补丁,然而一台的编译安装又太麻烦,如果能有rpm包进行升级安装就很轻松了.下面是参加一些前辈的经验制作rpm包的过程,请大家指正! 1.#依赖安装 yum install ...
- linux安装大批量rpm包,linux制作rpm安装包
linux制作rpm二进制安装包 有好多朋友问到怎么制作rpm包,可不可把其它服务器上编译好的软件目录复杂到其它服务器上直接应用等等.这里通过案例由简单到高级来一一讲解. 此方法是通过编写spec文件 ...
- 包区别 版本_详解Linux下二进制包、源代码包、rpm包区别与联系
概述 有时去官网下载文件,因为很多格式,有时总会混淆,不知道哪个是需要的包,今天抽空做个总结,区别一下Linux的二进制包.源代码包.rpm包. 1.二进制包介绍(bin) 二进制包里面包括了已经经过 ...
- Redhat linux 安装 gcc编译器,Gcc源码包,rpm包安装方法!
点评:分两种情况: 先看这篇转过来的文章,俺老孙懒得写了. Linux软件安装通用思路 在Linux系统中,软件安装程序比较纷繁复杂,不过最常见的有两种: 1)一种是软件的源代码,您需要自己动手编译它 ...
- linux apt install rpm,使用apt-rpm 简化你的redhat,fedora rpm包管理
一. 简介 redhat采用了RPM软件包管理系统,RPM软件包管理系统具有强大的编译安装功能,但是由于历史原因,RPM软件包管理系统对软件之间的依存关系没有内部定义,造成安装RPM软件时经常出现令人 ...
最新文章
- SDWebImage开源库阅读分析(全)
- qt无法找到动态链接库文件怎么办?
- Ubuntu、Windows双系统为Ubuntu增加磁盘空间
- yum更新php版本,CentOS 5.4 通过yum升级PHP到5.3版本的两种方法
- 多人协作代码--公共库的引用与业务约定
- 缕一缕c#可null类型
- web 项目集成福昕_项目学生:Web服务集成
- python 数据库模块
- 调用startactivityforresult后,onactivityresult立刻返回RESULT_CANCELED
- Activiti 基础概念
- 解决struts2标签在HTML中错位的问题
- animate.css 官方,animateCSS
- 智能交通中的若干科学和技术问题
- java编程300例:5.通过用户输入,友好打招呼
- 8、项目管理基础知识
- 用Python写一个简单的24点计算器
- 软件开发中的瀑布模型
- 【机器学习基础】Scipy(科学计算库) 手把手手把手
- IDEA中MAVEN项目Dependency not found 问题
- 1155低功耗cpu排行_比拼浮点运算速度,超算排行榜是这样“算”出来的