将tar包制作成RPM包,更简单,一本万利
安全扫描,需要把OpenSSH升级到 8.3 版本,和8.0还是有点区别的,下面记录一下。
还是使用rpmbuild将tar包打成rpm包,不喜欢编译升级的,又要开启、关闭telnet服务,麻烦。
各个目录的一般用途如下简介:
目录 | 用途 |
---|---|
BUILD | 构建过程使用的目录、编译rpm包的临时目录 |
RPMS | 存放构建好的rpm包、最终生成的可安装rpm包的所在目录 |
SOURCES | 存放用来构建的脚本和源代码、所有源代码和补丁文件的存放目录 |
SPECS | 存放xxx.spec文件、存放SPEC文件的目录(重要) |
SRPMS | 存放构建好的xxx.src.rpm文件,xxx.src.rpm包含 SOURCES和SPECS下的文件,可以使用这些文件自己构建,软件最终的rpm源码格式存放路径 |
BUILDROOT | 编译后生成的软件临时安装目录 |
开始制作:
#yum安装构建需要的工具
yum install rpm-build rpmdevtools zlib-devel openssl-devel gcc perl-devel pam-devel unzip -y
#创建rpmbuild所需要的目录
mkdir -p /root/rpmbuild/{SOURCES,SPECS}
#或者可以使用如下命令自动创建,该命令由rpmdevtools提供
rpmdev-setuptree #该命令可以创建目录~/rpmbuild和文件~/.rpmmacro
tree ~/rpmbuild #查看rpmbuild下面的文件结构
#进入该目录
cd /root/rpmbuild/SOURCES
#下载原材料tar包,以便于制作rpm包
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.3p1.tar.gz
wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz/8f2e41f3f7eaa8543a2440454637f3c3/x11-ssh-askpass-1.2.4.1.tar.gz
#解压tar包直接“自动制作”成spec文件
tar zxvf openssh-8.3p1.tar.gz openssh-8.3p1/contrib/redhat/openssh.spec
#移动spec文件到SPECS目录
mv openssh-8.3p1/contrib/redhat/openssh.spec ../SPECS/
#更改用户组所属权限
chown sshd:sshd /root/rpmbuild/SPECS/openssh.spec
#该文件做备份
cp /root/rpmbuild/SPECS/openssh.spec /root/rpmbuild/SPECS/openssh.spec_def
#修改参数openssh.spec的参数,将0修改成1
sed -i -e "s/%global no_gnome_askpass 0/%global no_gnome_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec
sed -i -e "s/%global no_x11_askpass 0/%global no_x11_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec
#进入SPECS目录
cd /root/rpmbuild/SPECS/
#使用rpmbuild工具构建
rpmbuild -ba openssh.spec
-bp 只作准备 (解压与打补丁)
-bc 准备并编译
-bi 编译并安装
-bl 检验文件是否齐全
-ba 编译后做成*.rpm和src.rpm
-bb 编译后做成*.rpm
-bs 只做成*.src.rpm
错误汇集:
---------------------------------------------------------------------------------------------------------
第一个报错:
构建依赖失败:openssl-devel < 1.1 被 openssh-8.3p1-1.el7.x86_64 需要
解决方法:
[root@localhost SPECS]# vim openssh.spec
注释掉 `BuildRequires: openssl-devel < 1.1` 这一行
---------------------------------------------------------------------------------------------------------
第二个报错:
RPM build errors:
Installed (but unpackaged) file(s) found:
RPM build errors:
Installed (but unpackaged) file(s) found:
/usr/libexec/openssh/ssh-sk-helper
/usr/share/man/man8/ssh-sk-helper.8.gz
解决方法:
vim /usr/lib/rpm/macros
#%__check_files %{_rpmconfigdir}/check-files %{buildroot}
注释该行,好像是在377行
打包成功