如何使用 src.rpm 中的 -DPURIFY 編譯 OpenSSL
我正在嘗試在 Valgrind 下執行一個使用 OpenSSL 的程序,但 OpenSSL 做了一些有趣的事情,導致很多“誤報”,所以經過一番搜尋後,我發現我需要使用 -DPURIFY 選項編譯 OpenSSL。
因此,我從 RedHat 伺服器 (openssl-1.0.0-10.el6.src.rpm) 下載了與系統目前使用的相同版本的 OpenSSL(舊系統)。然後我嘗試以下命令:
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
但是make會拋出一個
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
我在提取 src.rpm 文件時看到了很多更新檔文件,我想我需要手動應用這些文件(如何以及以什麼順序?)還是我做錯了什麼?
目標:使用 -DPURIFY 編譯 OpenSSL 的這個版本(1.0.0-10.el6)
通常,當我需要更改時,我更喜歡建構和安裝自己的軟體包,因為這樣,您的系統中就沒有未計入的文件/二進製文件。
從 src.rpm 源包(重新)建構包通常有特定的步驟。
該過程大部分是自動化的,您不需要手動編譯或應用所有更新檔。
首先解壓 SRPM,然後使用 rpmbuild -ba 從規範文件重建它的優點是您可以修改規範文件(可能添加一些更新檔甚至升級源 tarball)以滿足您的需要。這是一個比僅僅重建 SRPM 更複雜的情況,但是,如果您沿著這條路線走,您可能應該閱讀更多關於該主題的內容,如下所述,但過程如下:
cd ~/rpmbuild/SPECS/
rpmbuild -bp mypackage.spec
cd ~/rpmbuild/BUILD/
cp existing_directory existing_directory.orig
cd 現有目錄
找到您要更改的文件,修改它。
cd ~/rpmbuild/BUILD/
diff -Npru existing_directory.orig existing_directory > name_of_your_patch_file.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