gpt4 book ai didi

linux - 在 RPM 规范文件中设置目标目录

转载 作者:太空狗 更新时间:2023-10-29 11:44:17 24 4
gpt4 key购买 nike

我有一个非常简单的 tar.gz 文件,其中包含我想使用 RPM 包安装的 Java 文件。我创建了这个规范文件:

Name:           test
Version: 1.0
Release: 1%{?dist}
Summary: test installation script

Group: Utilities
License: GPL
URL: http://oracle-base.com/articles/linux/linux-build-simple-rpm-packages.php
Source0: test-1.0.tar.gz
BuildArch: x86_64
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

#BuildRequires:
#Requires:

%description
test installation script

%prep
%setup -c /opt/test


%build
#%%configure
#make %{?_smp_mflags}


%install
rm -rf $RPM_BUILD_ROOT
#make install DESTDIR=$RPM_BUILD_ROOT

#install -d $RPM_BUILD_ROOT/opt/agent


%clean
rm -rf $RPM_BUILD_ROOT


%files
%defattr(-,root,root,-)
%doc

%changelog

我不太清楚如何配置目标文件应该被提取到的目标目录。你能告诉我我错过了什么吗?

最佳答案

RPM 包的构建过程应该完全在构建目录中运行,并且应该以任何方式接触主机系统。

所以 %setup -c/opt/test 是不正确的,因为它在主机系统中创建了一个目录。相反,您可能应该简单地使用 %setup -q 并让默认宏将您的源 tarball 提取到默认构建目录中。 (如果你的 tarball 不包含顶层目录,也就是说它是一个“tar-bomb”,那么你可以使用带有相对路径的 -c 标志来创建当前目录中的顶层目录目录。

如果您没有任何要构建的源代码,那么您根本不需要 %build 部分。

%install 部分用于将文件从本地构建目录复制到构建根目录下的最终目录。因此(如该链接指南中所述)它应该将文件复制到 $RPM_BUILD_ROOT/opt/test$RPM_BUILD_ROOT 下合适的任何其他路径。

那些路径(没有 $RPM_BUILD_ROOT 前缀)然后需要在 %files 部分中列出。

Fedora 项目有 some documentation关于构建可能对您有用的 RPM。 Maximum RPM这本书虽然很旧而且有些过时,但仍然是一个很好的信息来源。

关于linux - 在 RPM 规范文件中设置目标目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27672213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com