Anolis OS 8.4 上编译安装openssl生成rpm包

2024-08-26  本文已影响0人  前浪浪奔浪流

通过下载openssl源码,直接编译升级openssl,如下操作:

#!/bin/bash

echo -e "\033[33m--->开始安装openssl-1.1.1v<---\033[0m"
[ -d openssl-1.1.1v/ ] && rm -rf openssl-1.1.1v
if [ ! -f openssl-1.1.1v.tar.gz ]; then
    wget https://www.openssl.org/source/openssl-1.1.1v.tar.gz
    if [ $? -eq 0 ]; then
        echo -e "\033[33m--->openssl-1.1.1v.tar.gz下载完毕<---\033[0m"
    else
        echo -e "\033[33m--->openssl-1.1.1v.tar.gz下载失败<---\033[0m"
            exit 1
    fi
fi
if [ -f openssl-1.1.1v.tar.gz ]; then
    tar zxf openssl-1.1.1v.tar.gz && cd openssl-1.1.1v && ./config --prefix=/usr/local/openssl
    echo -e "\033[33m--->openssl configure完毕<---\033[0m"
    (make -j$cpu && make install) || (echo -e "\033[33m--->编译安装失败<---\033[0m" && exit 1)
    if [[ $(cat /etc/ld.so.conf | grep "openssl" | grep -Ev "^#" | wc -l ) == "1" ]]; then
        echo "\033[33m--->ld.so.conf中已配置openssl<---\033[0m"
    else
        sed -i "s/\/usr\/local\/openssl\/lib//g" /etc/ld.so.conf
        echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
    fi
    [[ -f /bin/openssl && -f /bin/openssl.old ]] && rm -rf /bin/openssl.old
    [[ -f /usr/bin/openssl && -f /usr/bin/openssl.old ]] && rm -rf /usr/bin/openssl.old
    [[ ! -L /bin/openssl && -f /usr/local/openssl/bin/openssl ]] && mv /bin/openssl /bin/openssl.old && ln -s /usr/local/openssl/bin/openssl /bin/openssl
    [[ ! -L /usr/bin/openssl && -f /usr/local/openssl/bin/openssl ]] && mv /usr/bin/openssl /usr/bin/openssl.old && ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
    [[ -d /usr/include/openssl/ && -d /usr/include/openssl.old/ ]] && rm -rf /usr/include/openssl.old
    [[ ! -L /usr/include/openssl && -d /usr/local/openssl/include/openssl/ ]] && mv /usr/include/openssl /usr/include/openssl.old && ln -s /usr/local/openssl/include/openssl /usr/include/openssl
    echo -e "\033[33m--->openssl旧文件移除&软链结创建完毕<---\033[0m"
    echo -e "\033[33m--->openssl版本信息<---\033[0m"
    openssl version -a
    echo -e "\033[33m--->openssl-1.1.1v安装完毕<---\033[0m"
    cd ..
else
    echo -e "\033[33m--->openssl-1.1.1v.tar.gz文件不存在,安装失败<---\033[0m"
    exit 1
fi

openssl官网
https://www.openssl.org
下载链接
https://github.com/openssl/openssl/tags

image.png
image.png

OpenSSL rpm builder for CentOS 7
https://github.com/philyuchkoff/openssl-RPM-Builder

下载openssl-RPM-Builder-master.zip
解压后上传到服务器上:

ll openssl-RPM-Builder
总用量 20
-rwxr-xr-x 1 root root 2361 8月  26 11:05 install-openssl_1.1.1.sh
-rwxr-xr-x 1 root root 2207 8月  26 11:53 install-openssl_3.sh
-rw-r--r-- 1 root root 1465 8月  26 11:05 openssl3.spec
-rw-r--r-- 1 root root 1473 8月  26 11:05 openssl.spec
-rw-r--r-- 1 root root 1611 8月  26 11:05 README.md

# 给shell脚本执行权限
chmod +x *.sh

可以直接执行install-openssl_3.sh脚本;
然后,可能遇到的问题
https://www.openssl.org/source/openssl-1.1.1w.tar.gz
https://www.openssl.org/source/openssl-3.3.1.tar.gz
无法正常下载完成,可以手动下载压缩包,然后上传到服务器对应目录下;
并且打开install-openssl_1.1.1.sh
注释掉

curl -O --silent https://www.openssl.org/source/openssl-1.1.1w.tar.gz

mv openssl-1.1.1w.tar.gz /root/rpmbuild/SOURCES

或者打开install-openssl_3.sh注释掉

curl -O --silent https://www.openssl.org/source/openssl-3.3.1.tar.gz

mv openssl-3.3.1.tar.gz /root/rpmbuild/SOURCES

保存后继续执行;

还可能会遇到

/sbin/ldconfig: Warning: ignoring configuration file that cannot be opened: /etc/ld.so.conf: No such file or directory

生成不了rpm包
参考文章:
https://blog.csdn.net/qq_41922018/article/details/103905243
然后确定/usr/lib/rpm/macros文件存在

ll /usr/lib/rpm/macros
-rw-r--r-- 1 root root 44163 8月  26 17:03 /usr/lib/rpm/macros

编辑/usr/lib/rpm/macros文件,并在末尾加入

%debug_package %{nil}

保存后退出,继续执行脚本。

Obsoletes: openssl <= 3.3.1
处理文件:openssl-devel-3.3.1-1.an8.x86_64
Provides: openssl-devel = 3.3.1-1.an8 openssl-devel(x86-64) = 3.3.1-1.an8
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
检查未打包文件:/usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/openssl-3.3.1-1.an8.x86_64
已写至:/root/rpmbuild/SRPMS/openssl-3.3.1-1.an8.src.rpm
已写至:/root/rpmbuild/RPMS/x86_64/openssl-3.3.1-1.an8.x86_64.rpm
已写至:/root/rpmbuild/RPMS/x86_64/openssl-devel-3.3.1-1.an8.x86_64.rpm
正在执行(%clean):/bin/sh -e /var/tmp/rpm-tmp.uNQtCC
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd openssl-3.3.1
+ '[' /root/rpmbuild/BUILDROOT/openssl-3.3.1-1.an8.x86_64 '!=' / ']'
+ /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/openssl-3.3.1-1.an8.x86_64
+ exit 0
[root@anolis8 openssl-RPM-Builder]# ll /root/rpmbuild/SRPMS/
总用量 17624
-rw-r--r-- 1 root root 18046037 8月  26 17:19 openssl-3.3.1-1.an8.src.rpm

openssl属于操作系统基础组件,不管使用哪种升级方式,都要在测试机上做全面充分的测试!!!

参考文档
https://www.jianshu.com/p/2512aa7f1c9f
rpmbuild打包遇到问题汇总
https://blog.csdn.net/u014007037/article/details/78727526

上一篇下一篇

猜你喜欢

热点阅读