![什么选项指定了生成的 RPM 的位置?](https://linux22.com/image/46831/%E4%BB%80%E4%B9%88%E9%80%89%E9%A1%B9%E6%8C%87%E5%AE%9A%E4%BA%86%E7%94%9F%E6%88%90%E7%9A%84%20RPM%20%E7%9A%84%E4%BD%8D%E7%BD%AE%EF%BC%9F.png)
我注意到,在构建 rpm 文件时,大多数最终都会出现/usr/src/redhat/RPMS/i386
(构建 32 位)。不过,有些(包括我们内部推出的)将 rpm 文件写入./i386
...,因此文件最终会以/usr/src/redhat/i386
.我已将标准规范文件(这是 openssl 给我带来了麻烦)与我们的进行了比较,但我看不出是什么导致了问题。
未受影响的 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
add 时--define
:rpmbuild --define "_topdir /path" -bb $specfile