如何使用 src.rpm 中的 -DPURIFY 编译 OpenSSL

如何使用 src.rpm 中的 -DPURIFY 编译 OpenSSL

我正在尝试在 Valgrind 下运行一个使用 OpenSSL 的程序,但是 OpenSSL 做了一些有趣的事情,导致了很多“误报”,所以经过一番搜索后,我发现我需要使用 -DPURIFY 选项来编译 OpenSSL。

因此,我从 RedHat 服务器下载了与当前系统(旧系统)相同的 OpenSSL 版本(openssl-1.0.0-10.el6.src.rpm)。然后我尝试以下命令:

rpm2cpio openssl-1.0.0-10.el6.src.rpm | cpio -idmv
tar -xvf openssl-1.0.0-usa.tar.bz2
cd openssl-1.0.0
./config
make

但品牌抛出了一个error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token

当我提取 src.rpm 文件时,我看到了很多补丁文件,我想我需要手动应用这些文件(如何以及以什么顺序?)或者我做错了什么?

目标:使用 -DPURIFY 编译此版本 (1.0.0-10.el6) 的 OpenSSL

答案1

通常,当我需要更改时,我更喜欢构建和安装自己的软件包,这样,您的系统中就不会有未解释的文件/二进制文件。

从 src.rpm 源包(重新)构建包通常有特定的步骤。

该过程大部分是自动化的,您不需要手动编译或应用所有补丁。

CentOS - 重建源 RPM

首先解压 SRPM,然后使用 rpmbuild -ba 从spec文件重建它的优点是您可以修改spec文件(并且可能添加一些补丁,甚至升级源tarball)以满足您的需要。不过,这是一个比仅仅重建 SRPM 更复杂的情况,如果您要沿着这条路线走下去,您可能应该阅读有关该主题的更多内容,如下所述,但过程如下:

cd ~/rpmbuild/SPECS/

rpmbuild -bp mypackage.spec

cd ~/rpmbuild/BUILD/

cp 现有目录 现有目录.orig

cd 现有目录

找到你要修改的文件,修改它。

cd ~/rpmbuild/BUILD/

diff -Npru 现有目录.orig 现有目录 > 你的补丁文件名称.patch

cp name_of_your_patch_file.patch ~/rpmbuild/SOURCES/

cd ~/rpmbuild/SPECS/

编辑 mypackage.spec 文件以添加 name_of_your_patch_file.patch 的定义和 your_patch_file 的应用程序 - 请查看该文件以了解这是如何完成的。

rpmbuild -ba mypackage.spec

最后,安装包含更改的软件包:

rpm -i mypackage

根据OP评论,如果您已经安装了该软件包,则可以使用以下命令升级到您的版本:

rpm -Uvh --force mypackage

相关内容