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를 사용하여 OpenSSL의 이 버전(1.0.0-10.el6)을 컴파일합니다.

답변1

일반적으로 변경이 필요할 때 시스템에 해석되지 않은 파일/바이너리가 없도록 자체 패키지를 만들고 설치하는 것을 선호합니다.

일반적으로 src.rpm 소스 패키지에서 패키지를 (재)빌드하기 위한 특정 단계가 있습니다.

프로세스는 대부분 자동화되어 있으므로 모든 패치를 수동으로 컴파일하거나 적용할 필요가 없습니다.

~에서CentOS - 소스 RPM 재구축

먼저 SRPM의 압축을 풀고 rpmbuild -ba를 사용하여 사양 파일에서 다시 빌드하는 것의 장점은 필요에 맞게 사양 파일을 수정할 수 있다는 것입니다(일부 패치를 추가하거나 소스 tarball을 업그레이드할 수도 있음). 이는 단순히 SRPM을 재구축하는 것보다 더 복잡한 상황입니다. 이 경로를 따라가려면 아래 설명된 대로 해당 주제에 대해 더 읽어야 하지만 프로세스는 다음과 같습니다.

CD ~/rpmbuild/사양/

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/사양/

mypackage.spec 파일을 편집하여 name_of_your_patch_file.patch 정의와 your_patch_file 애플리케이션을 추가하세요. 이 작업이 어떻게 수행되는지 보려면 파일을 살펴보세요.

rpmbuild -ba mypackage.spec

마지막으로 변경 사항이 포함된 패키지를 설치합니다.

rpm -i mypackage

OP 의견에 따르면 이미 패키지가 설치되어 있는 경우 다음을 사용하여 버전으로 업그레이드할 수 있습니다.

rpm -Uvh --force mypackage

관련 정보