首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从子RPM创建RPM?

如何从子RPM创建RPM?
EN

Stack Overflow用户
提问于 2014-08-27 21:02:06
回答 1查看 728关注 0票数 0

我有一个subdir my_sw,它显示了我想要安装的内容:

代码语言:javascript
复制
my_sw/
  usr/
    bin/
       foo
    man/
       man1/
         foo.1

诸若此类。我认为必须有一种简单的方法来创建一个规范文件,并使用rpmbuild将其打包为一个RPM,以便其他用户可以安装它。我不管rpm能做什么,我只想让它安装dir树。(我想我有点滥用rpm,但这样我的用户就可以在他们的rpm数据库中跟踪我的文件了,这是他们想要的。)

我尝试过各种各样的事情,但是rpm想做的比我想做的要多,而且大多数项目也希望rpm做得更多(建筑前、建筑、测试、剥离等等)。有没有什么地方展示了如何把简单的rpm放在一起来安装文件呢?

我是在CentOS 5或6(或类似的RedHat)上这样做的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-27 21:44:26

是的,您可以根据您描述的文件系统映像创建RPM。对于RPM构建来说,这是比较容易的案例之一,但是您仍然需要使用这些工具。

这些步骤大致如下:

1)创建一个RPM建筑环境,如果您还没有这样做的话。最便宜的是主目录下的子目录树,如下所示:

代码语言:javascript
复制
rpm/
  BUILD/
  RPMS/
    x86_64/  (or whatever is the applicable arch)
  SOURCES/
  SPECS/
  SRPMS/

2)创建图像的tarball,并将其放到源文件/目录中。

3)在SPEC/子目录中创建一个spec文件。有一些工具可以帮助您创建规范文件框架。例如,如果"rpmdevtools“包对您可用(它适用于CentOS 5和6),那么您可以使用"rpmdev-newspec”。您需要填写一些字段并提供一些shell命令(在您的例子中是次要的)。其结果可能是这样的:

代码语言:javascript
复制
Name:    my_sw
Summary: Cool software
Version: 1.0
Release: 1
Group:   Applications
License: <license>
Source0: my_sw.tar.gz

%description
my_sw does awesome things that you'll really like.  If you have any need for
awesomeness, this is for you!

%prep
# different from the default:
%setup -q -c -T

%build
# nothing to do

%install
# Start clean
rm -rf %{buildroot}
mkdir -p %{buildroot}

# Put the files in the correct location relative to %{buildroot}
ln -s %{buildroot} ./my_sw
tar xzf %{S:0}

%files
%defattr(-,root,root,-)
%{_bindir}/foo
%{_mandir}/man1/foo.1

%changelog
* Wed Aug 27 2014 Gary O <garyo@gmail.com> 1.0-1
- Initial spec

其中一些进入了最终的RPM;其余的则告诉rpmbuild它需要做什么。

4)用rpmbuild构建它:

代码语言:javascript
复制
rpmbuild -ba SPECS/my_sw.spec

5)二进制RPM为RPM/。源RPM将在SRPMS/。

我发现的最好的RPM构建参考之一是Fedora的RPM指南:Guide/index.html。特别是见第九章。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25536873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档