什么选项指定了生成的 RPM 的位置?

什么选项指定了生成的 RPM 的位置?

我注意到,在构建 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移动BUILDRPMSSOURCES和文件夹SPECS的默认输出文件夹SRPMS

有两种方法可以定义它:

  1. .rpmmacros在您的文件夹中创建并添加%_topdir /path

  2. 当您调用rpmbuildadd 时--define

    • rpmbuild --define "_topdir /path" -bb $specfile

相关内容