我有一个subdir my_sw,它显示了我想要安装的内容:
my_sw/
usr/
bin/
foo
man/
man1/
foo.1诸若此类。我认为必须有一种简单的方法来创建一个规范文件,并使用rpmbuild将其打包为一个RPM,以便其他用户可以安装它。我不管rpm能做什么,我只想让它安装dir树。(我想我有点滥用rpm,但这样我的用户就可以在他们的rpm数据库中跟踪我的文件了,这是他们想要的。)
我尝试过各种各样的事情,但是rpm想做的比我想做的要多,而且大多数项目也希望rpm做得更多(建筑前、建筑、测试、剥离等等)。有没有什么地方展示了如何把简单的rpm放在一起来安装文件呢?
我是在CentOS 5或6(或类似的RedHat)上这样做的。
发布于 2014-08-27 21:44:26
是的,您可以根据您描述的文件系统映像创建RPM。对于RPM构建来说,这是比较容易的案例之一,但是您仍然需要使用这些工具。
这些步骤大致如下:
1)创建一个RPM建筑环境,如果您还没有这样做的话。最便宜的是主目录下的子目录树,如下所示:
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命令(在您的例子中是次要的)。其结果可能是这样的:
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构建它:
rpmbuild -ba SPECS/my_sw.spec5)二进制RPM为RPM/。源RPM将在SRPMS/。
我发现的最好的RPM构建参考之一是Fedora的RPM指南:Guide/index.html。特别是见第九章。
https://stackoverflow.com/questions/25536873
复制相似问题