如何创建规范文件(RPM)

3

我有两个文件,其中包含需要执行的shell命令,并且我有一个iptables-save文件,其中包含需要安装的链。

如何编写spec文件以执行以下操作:

  1. 将我的两个shell文件复制到/etc/目录下
  2. 执行iptables-restore < /home/iptables-save

P.S:我阅读了这篇how-to文章。不幸的是,我是新手,找不到解决方案。

2个回答

7

昨天刚刚需要做这件事情。

作为普通用户在你的家目录中创建你的构建目录,不要使用root,这样更加明智。

mkdir -p ~/rpmbuild/BUILD
mkdir -p ~/rpmbuild/BUILDROOT
mkdir -p ~/rpmbuild/RPMS
mkdir -p ~/rpmbuild/SOURCES
mkdir -p ~/rpmbuild/SPECS
mkdir -p ~/rpmbuild/SRPMCS
mkdir -p ~/rpmbuild/tmp

接下来创建rpmmacros文件,以便rpmbuild知道在哪里构建软件包。~/.rpmmacros文件的内容应包含以下内容:

%packager Chris Hinshaw
%_topdir /home/chinshaw/rpmbuild
%_tmppath /home/chinshaw/rpmbuild/tmp

接下来创建位于~/rpmbuild/SPECS/目录下的rpm规范文件。这个示例规范文件将处理一个名为demo script的脚本,它的配置文件位于etc目录中,以及第三个cron脚本,用于每小时调度该脚本运行。

~/rpmbuild/SPECS/demoproject.spec

Name:   demoproject     
Version:    0.1 
Release:    1%{?dist}
Summary:    Demo script for doing something cool

Group:  DemoGroup
License:    GPL
Source0:    demoproject-0.1.tar.gz
BuildRoot:  %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)


%description
Demo project that does something interesting

%prep
%setup -q


%build


%install
install --directory $RPM_BUILD_ROOT/usr/sbin
install --directory $RPM_BUILD_ROOT/etc
install --directory $RPM_BUILD_ROOT/etc/cron.d/

install -m 0755 demoscript $RPM_BUILD_ROOT/usr/sbin
install -m 0744 demoscript.conf $RPM_BUILD_ROOT/etc
install -m 0744 cron/democronscript $RPM_BUILD_ROOT/etc/cron.d/

%clean
rm -rf $RPM_BUILD_ROOT


%files
/usr/sbin/demoscript
/etc/demoscript.conf
/etc/cron.d/democronscript


%changelog

我发现的唯一怪异之处是我真的需要把我的三个源文件打包成一个tar包,这似乎是个好主意。
rpmbuild/SOURCES目录的内容应该是这样的。
$ cd ~/rpmbuild/SOURCES
$ ls 
demoproject-0.1.tar.gz
$ tar -tvzf demoproject-0.1.tar.gz
demoproject-0.1/
demoproject-0.1/demoscript.conf
demoproject-0.1/demoscript
demoproject-0.1/cron/
demoproject-0.1/cron/democronscript

然后你所需要做的就是构建它 rpmbuild -ba ~/rpmbuild/SPECS/demoproject.spec

这将创建架构rpms和srpms并将它们放在~/rpmbuild/RPMS和~/rpmbuild/SRPMS目录中。


1
如果只有3个文件,您可以将这3个文件命名为源文件,并手动复制到需要它们的位置。但是对于30个文件来说,规范文件会变得有点混乱和杂乱无章... - glglgl

0
使用%post%preun部分来在安装后和卸载前运行操作,只需将您的shell命令放在那里即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接