这是我首次尝试创建Linux RPM,并且正在探索将其作为分发包含文件和某些配置的软件包的解决方案。
我已经阅读了一些文档,但是我觉得构建系统和目标安装系统之间的某些部分模棱两可。
我已经为rpmbuild编写了一个SPEC文件,它可以构建RPM,但是当我在本地系统上安装它时似乎什么也没做。它只是说它已安装。
我已经删除了几乎所有方面,并且正在尝试使RPM创建目录。尚未创建。
我在这里做错什么了吗?
%define _topdir /sourcecode/agent/rpm/
%define name agent
%define release 0
%define version 0.1a
%define buildroot %{_topdir}/BUILD
BuildRoot: %{buildroot}
Summary: agent
License: GNU
Name: %{name}
Version: %{version}
Release: %{release}
Source0: hello.sh
Prefix: /opt
Group: PhysicalEdge
%prep
%build
%install
mkdir -p /opt/edgeagent
cp %{SOURCE0} /opt/edgeagent/hello.sh
%files
%defattr(-,root,root)
我的另一个问题是要包含文件,我已经在Source的文件中列出了它们(Source0:hello.sh)。是否将它们在%files指令中列出,它们在源系统上开始或在目标系统上结束?
我现在正在尝试将hello.sh文件放入目标系统上的/ opt / agent /中。
谢谢!
答案 0 :(得分:2)
这是错误的:
cp %{SOURCE0} /opt/edgeagent/hello.sh
您不应永远以root用户身份构建RPM!此命令应该失败。
您想要的是:
mkdir -p %{buildroot}/opt/edgeagent/
cp %{SOURCE0} %{buildroot}/opt/edgeagent/hello.sh
然后根据您的推测将/opt/edgeagent/hello.sh
添加到%files
部分。