我有一个子目录my_sw,其中包含我要安装的图像:
my_sw/
usr/
bin/
foo
man/
man1/
foo.1
等等。我想必须有一个简单的方法来创建一个spec文件,并使用rpmbuild将其打包为RPM,以便其他用户可以安装它。我不关心rpm可以做的任何花哨的构建东西,我只是想要它安装那个目录树。 (我想我有点误用了rpm,但这样我的用户就会在他们的rpm数据库中跟踪我的文件,这是他们想要的。)
我已经尝试了各种各样的东西,但是rpm想要做的比我想要的更多,并且大多数项目都希望rpm能够做更多的事情(预建,构建,测试东西,剥离等)。有一个howto在哪里显示如何只是安装一个简单的rpm,只安装文件?
我在CentOS 5或6(或类似的RedHat)上这样做。
答案 0 :(得分:3)
是的,您可以根据您描述的文件系统映像创建RPM。这是RPM构建的一个简单案例,但您仍然需要使用这些工具。
步骤大致如下:
1)创建RPM构建环境(如果尚未创建)。在它的barest,这将是您的主目录下的子目录树,如下所示:
rpm/
BUILD/
RPMS/
x86_64/ (or whatever is the applicable arch)
SOURCES/
SPECS/
SRPMS/
2)创建图像的tarball,并将其放在SOURCES /目录中。
3)在SPEC /子目录中创建一个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.spec
5)二进制RPM将在RPMS /中。源RPM将在SRPMS /.
中我发现的最好的RPM建筑参考之一是Fedora项目的RPM指南:http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/index.html。特别参见第9章。