所以,我对 rpmbuild 过程有些困惑。我现在正在维护以前创建的大量脚本,虽然大多数工作都是如此,但它们之间存在足够的差异,以至于找不到一致的方法。
有些在打包之前将文件单独复制(非常繁琐)到临时位置。
有些使用原作者的规范文件,我们只是修改配置或代码。
有些是自制的,但显然是在与我具有相同理解水平的情况下创建的!
具体来说,我很想拥有这种make; make install
方法,但是,虽然make
构建的软件很好,但make install
实际上将其安装在我的系统上。
我想做的是使用 make install,但为了打包程序的目的将其放置在工作目录中。我希望将软件安装在目标计算机上的/usr/bin
etc 中,但是当我运行 make install 时,我希望它转到/tempDir/usr/bin
-- 有意义吗?基本上,我只是想避免我正在打包的软件污染我的系统;全部插入似乎不对。一定是配置错误还是这是正常现象?
我正在使用的规范文件的摘录。将源文件复制到/usr/src/redhat/SOURCES
并使用rpmbuild -bb <specfilename>
.
BuildRoot: /var/tmp/%{name}-%{version}-root
Source0: %{name}-%{version}.tar.gz
%prep
%setup -q
%build
./configure <config opts>
make
%install
rm -rf $RPM_BUILD_ROOT
make install
答案1
要打包的文件需要安装/隔离到影子树中。
这通常是通过覆盖]DESTDIR 来完成的,例如
make DESTDIR=%{buildroot} install
在 %install 部分。