我有2个文件,包括要执行的shell命令,我有一个iptables-save
,其中包含需要安装的链
如何将spec文件写入:
iptables-restore < /home/iptables-save
P.S:我经历了这个方法。不幸的是,我是新手,我 无法找到解决方案。
答案 0 :(得分:6)
昨天必须这样做。
在家中创建您的构建目录,因为普通用户不使用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规范。这个示例spec文件将处理一个名为demo脚本的脚本,它的配置文件等等,以及第三个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
我发现的唯一的怪癖是我真的需要在tarball中压缩我的3个源文件,无论如何这似乎是一个好主意。
内容或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
这将创建arch rpms和srpms并将它们放在〜/ rpmbuild / RPMS和〜/ rpmbuild / SRPMS目录中。
答案 1 :(得分:0)
使用%post
和%preun
部分在安装之后和卸载之前运行操作,并将shell命令放在那里。