配置本地yum源,把其他repo文件移动到bak目录
cd /etc/yum.repos.d/
mkdir bak
mv *.repo ./bak
vim local.repo
[local]
name=local
baseurl=file:///cdrom
enable=1
gpgcheck=0
挂载光盘ISO到cdrom
mount /dev/sr0 /cdrom
以制作openssh-9.0p1(el7)为例
yum install -y pam-devel rpm-build rpmdevtools zlib-devel openssl-devel krb5-devel gcc wget libx11-dev gtk2-devel libXt-devel imake
mkdir -p ~/rpmbuild/SOURCES && cd ~/rpmbuild/SOURCES
wget -c https://mirrors.tuna.tsinghua.edu.cn/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz --no-check-certificate
wget -c https://mirrors.tuna.tsinghua.edu.cn/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz.asc --no-check-certificate
wget -c https://mirrors.tuna.tsinghua.edu.cn/slackware/slackware64-current/source/xap/x11-ssh-askpass/x11-ssh-askpass-1.2.4.1.tar.gz --no-check-certificate
tar zxvf openssh-9.0p1.tar.gz
yes | cp /etc/pam.d/sshd openssh-9.0p1/contrib/redhat/sshd.pam
mv openssh-9.0p1.tar.gz{,.orig}
tar zcpf openssh-9.0p1.tar.gz openssh-9.0p1
cd
tar zxvf ~/rpmbuild/SOURCES/openssh-9.0p1.tar.gz openssh-9.0p1/contrib/redhat/openssh.spec
cd openssh-9.0p1/contrib/redhat/ && chown root.root openssh.spec
sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" openssh.spec
sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" openssh.spec
sed -i -e "s/BuildPreReq/BuildRequires/g" openssh.spec
sed -i -e "s/PreReq: initscripts >= 5.00/#PreReq: initscripts >= 5.00/g" openssh.spec
sed -i -e "s/BuildRequires: openssl-devel < 1.1/#BuildRequires: openssl-devel < 1.1/g" openssh.spec
sed -i -e "/check-files/ s/^#*/#/" /usr/lib/rpm/macros
rpmbuild -ba openssh.spec
cd /root/rpmbuild/RPMS/x86_64/
tar zcvf openssh-9.0p1-RPMs.el7.tar.gz openssh*
升级OpenSSH
chmod 600 /etc/ssh/ssh*
rpm -Uvh *.rpm