linux - 如何创建规范文件 (RPM)

标签 linux shell rpm

<分区>

我有 2 个文件,其中包括要执行的 shell 命令,还有一个 iptables-save其中包括链需要安装

如何将规范文件写入:

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

P.S: I went through this how-to. Unfortunately I'm newbie in this, I couldn't find the solution.

最佳答案

就在昨天不得不这样做。

在您的家中创建您的构建目录,因为普通用户不要使用 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 规范。这个示例规范文件将处理一个名为演示脚本的脚本,它是进入等的配置文件和第三个 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

我发现的唯一怪癖是我真的需要将我的 3 个源文件打包成一个 tarball,无论如何这似乎是个好主意。

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 目录中。

关于linux - 如何创建规范文件 (RPM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15055841/

相关文章:

json - 如果键匹配,则从 bash 中的 json 中提取特定键值

linux - 为 RPM 创建规范文件

Java 运行 linux(raspbian) 命令(omxplayer) 并获得输出

node.js - 在 Node.js 脚本文件中无法访问环境变量

linux - 在 Linux 对话框文本框中显示差异

shell - 如何使用 SFTP 恢复失败/中断的下载?

python - 如何构建具有依赖项的 RPM 包?

linux - 我们可以在 %install 部分执行 unix 命令吗?

linux - 如果我在一个文件上连续调用 cat/dev/null 两次,第二次调用会是空操作吗?

linux - Jenkins 在重启电脑时丢失所有数据