나는 rpm 파일을 빌드할 때 대부분이 /usr/src/redhat/RPMS/i386
32비트 빌드로 끝나는 것을 발견했습니다. 그러나 일부(우리가 내부적으로 배포하는 파일 포함)는 rpm 파일을 ./i386
...에 작성하므로 파일은 /usr/src/redhat/i386
. 문제의 원인을 볼 수 없습니다.
영향을 받지 않은 tarball을 에 복사합니다 /usr/src/redhat/SOURCES
.
건축과cd /usr/src/redhat; rpmbuild -bb ./SPECS/openssl.spec
내 사양 파일은 다음과 같습니다(지루한 빌드 및 설치 관련 부분 제외).
%define debug_package %{nil}
%define libmaj 1
%define libmin 0
%define librel 1
%define librev l
Release: 1
Summary: Secure Sockets Layer and cryptography libraries and tools
Name: openssl
Version: %{libmaj}.%{libmin}.%{librel}%{librev}
License: Freely distributable
Group: System Environment/Libraries
Source: %{name}-%{version}.tar.gz
URL: http://www.openssl.org/
Packager: Damien Miller <[email protected]>
BuildRoot: /var/tmp/%{name}-%{version}-root
AutoReqProv: yes
Provides: libcrypto.so.6 libssl.so.6
%description
blah blah
%prep
%setup
%build
./Configure --prefix=/usr threads shared linux-elf
LD_LIBRARY_PATH=`pwd` make depend
LD_LIBRARY_PATH=`pwd` make
%install
rm -rf $RPM_BUILD_ROOT
...
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-, root, root)
...
%pre
%post
/sbin/ldconfig
%postun
/sbin/ldconfig
답변1
RPM 변수를 정의하여 , 및 폴더를 기본 출력 폴더로 _topdir
이동할 수 있습니다 .BUILD
RPMS
SOURCES
SPECS
SRPMS
이를 정의하는 방법에는 두 가지가 있습니다.
.rpmmacros
폴더 생성 및 추가%_topdir /path
rpmbuild
추가를 호출할 때--define
:rpmbuild --define "_topdir /path" -bb $specfile