标签:
制作RPM包,可以方便日后的维护。统一了标准
yum install rpmdevtools
安装后,使用 rpmdev-setuptree命令创建rpm包的目录结构。默认是在$HOME下rmpbuild下,也可以通过~/.rpmmacros配置。
新建一个 .spec 文件 现在,您需要在 ~/rpmbuild/SPECS 目录下,新建一个 SPEC 文件。文件应命名为 "软件包名.spec"。名称根据软件包名或通用名填写即可。但是,必须要遵守 软件包命名规定。 模板和实例 模板 如果您首次创建 .spec 文件,vim 或 emacs 会自动生成模板: $ cd ~/rpmbuild/SPECS $ vim program.spec 示例(仅供参考): Name: Version: Release: 1%{?dist} Summary: Group: License: URL: Source0: BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: Requires: %description %prep %setup -q %build %configure make %{?_smp_mflags} %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} %clean rm -rf %{buildroot} %files %defattr(-,root,root,-) %doc %changelog
"#
" 字符表示注释,但需要避免注释宏(以 %
开头),因为它们会首先被替换展开。使用 %%
注释宏。另外,还要避免在脚本命令的相同行中使用行内注释。
以下介绍了主要的标签。注意 %{name}
,%{version}
和 %{release}
代表 Name, Version 和 Release 这三个标签。只要更改标签,宏就会使用新值。
yy.mm[dd]
(例如 2008-05-01
可变为 8.05
) 格式作为版本号。1%{?dist}
。每次制作新包时,请递增该数字。当上游发布新版本时,请修改 Version 标签并重置 Release 的数字为 1
。具体参考打包规定中的 Release 标签部分,以及 Dist tag。less /usr/share/doc/rpm-*/GROUPS
" 查看完整的组列表。任何包含文档的子软件包,使用 "Documentation" 组(如 kernel-doc
)。注意 Fedora 17+ 后已废除此标签。Spec 文件参考手册 有介绍GPLv2+
")并且描述明确(如, "GPLv2+
" 表示 GPL 2 及后续版本,而不是 "GPL
" 或 "GPLv2
" 这种不准确的写法)。参考 Licensing 和 Licensing Guidelines。如果一个软件采用多个协议,可以使用 "and
" 和 "or
"(例如 "GPLv2 and BSD
")来描述。Source
" 与 "Source0
" 相同。强烈建议提供完整 URL 地址,文件名用于查找 SOURCES
目录。如果可能,建议使用 %{name}
和 %{version}
替换 URL 中的名称/版本,这样更新时就会自动对应。下载源码包时,需要 保留时间戳。如果有多个源码包,请用Source1
,Source2
等依次列出。如果你需要添加额外文件,请将它们列在后面。更多特殊案例(如 revision control),请参考 Source URL。~/rpmbuild/SOURCES
目录下。一个 Patch 应该只做一种修改,所以可能会包含多个 patch 文件。BuildArch: noarch
"。RPM 架构会变成 "noarch
"。%{_topdir}/BUILDROOT/
"。gcc
。如果有必要,你可以指定需要的最低版本(例:"ocaml >= 3.08
")。如果你需要找到包含 /EGGS
文件的软件包,可执行 "rpm -qf /EGGS
"。如果你需要找到包含 EGGS
程序的软件包,可执行 "rpm -qf `which EGGS`
"。请保持最小依赖(例如,如果你不需要 perl 的功能,可使用 sed
代替),但请注意,如果不包含相关依赖,某些程序会禁用一些功能;此时,你需要添加这些依赖。auto-buildrequires
软件包可能会有帮助。rpmbuild
会自动探测依赖,所以可能不需要 Requires 标签。然而,你也可以明确标明需要哪些软件包,或由于未自动探测所需依赖而需要手动标明。%autosetup
";如果源码包需要解压并切换至 NAME
目录,则输入 "%autosetup -n NAME
"。查看 %prep 部分了解更多信息。%{_builddir}
目录安装至 %{buildroot}
目录。查看 %install 部分了解更多信息。make test
" 或 "make check
" 命令。此阶段要与 %build 分开,以便在需要时忽略测试。rm -rf %{buildroot}
把一个名为devrpm-0.0.1.tar.gz
的源码压缩文件放到rpmbuild
根目录下的SOURCES目录下(注,确保此归档文件解压后的目录为devrpm-0.0.1,否则会有问题)。
到此一个完整的rpm打包环境已经构建完成,下面我们就可以开始构建二进制和源代码RPM包。
构建RPM包是有命令rpmbuild在SPEC的指导下完成。
开始构建操作,首先进入到当前用户的rpmbuild根目录(即上面提到的目录环境)。
#cd ~/rpmbuild/
执行如何命令,-ba表示build all,即生成包括二进制包和源代码包的所有RPM包,下来如果正常的话,rpmbuild将正常退出,同时在RPMS目录和SRPMS目录中将生成对应的RPM包。
#rpmbuild -ba SPECS/hellorpm.spec
以上参考:https://fedoraproject.org/wiki/How_to_create_an_RPM_package/zh-cn#.E6.A8.A1.E6.9D.BF.E5.92.8C.E5.AE.9E.E4.BE.8B
http://segmentfault.com/a/1190000002539129
标签:
原文地址:http://www.cnblogs.com/-Doraemon/p/4769552.html