标签:href 其他 时间 决战 肩膀 超人 http ref com
1.因为打RPM包需要 rpmbuild 命令,所以需要先安装 rpmbuild 相应工具,安装过程可在网上查找;
2.输入命令 rpmbuild xx.spec 即可在自动当前用户的 $HOME 目录下创建 RPM 相关的文件夹,也可手动创建;
1 [xx@localhost ~]$ rpmbuild xx.spec
2 错误:stat ~/xx.spec 失败:没有那个文件或目录
3 [xx@localhost ~]$ tree ~/rpmbuild/
4 rpmbuild/
5 ├── BUILD
6 ├── BUILDROOT
7 ├── RPMS
8 ├── SOURCES
9 ├── SPECS
10 └── SRPMS
BUILD:源码包被解压至此,并在该目录的子目录完成编译,宏为 %_builddir
BUILDROOT:保存 %install 阶段安装的文件,宏为 %_buildrootdir
RPMS:生成/保存二进制 RPM 包,宏为 %_rpmdir
SOURCES:保存源码包(如 .tar 包)和所有 patch 补丁,宏为 %_sourcedir
SPECS:保存 RPM 包配置(.spec)文件,宏为 %_specdir
SRPMS:生成/保存源码 RPM 包(SRPM),宏为 %_srcrpmdir
~/rpmbuild 的宏为 %_topdir
1.创建 SPEC 文件如下所示:
[xxx@localhost rpmbuild]$ rpmdev-newspec xxx.spec
xxx.spec created; type minimal, rpm version >= 4.12.
2.将 SPEC 文件放在 ~rpmbuild/SPECS/ 下面,然后编辑 SPEC 文件,如下所示:
Name: Version: Release: Summary: License: URL: Source0:%description %prep
%build
%pre
%install
%post
%files %clean
%preun
%postun
%changelog * Fri Aug 7 2020 -
3.安装的各个阶段说明:
一般使用 %setup -c 或者 %setup -q 命令来解压源码包,直接会将文件解压到%{_builddir}
编译阶段,非 GNU configure 配置的程序可以不关注这个阶段
%pre阶段 - 安装前
%post阶段 - 安装后
%preun阶段 - 卸载前
%postun阶段 - 卸载后
这个阶段主要从 %{_builddir}
复制相关文件到 %{buildroot}
(虚拟根目录)目录,如下所示:
rm -rf $RPM_BUILD_ROOT
cp -rf xxx $RPM_BUILD_ROOT
%files阶段-列出被打包的文件和目录
首先要设定默认权限,同时要列出打包的目录和文件,设定默认权限的命令如下:
%defattr(<文件权限>, <用户>, <用户组>, <目录权限>)
第 4 个参数通常会省略。常规用法为 %defattr(-,root,root,-)
,其中 “-” 表示默认权限。
在列出文件的目录时,尽量使用内建宏来代替目录名,常用的内建宏如下所示:
%{_sysconfdir} /etc
%{_prefix} /usr
%{_exec_prefix} %{_prefix}
%{_bindir} %{_exec_prefix}/bin
%{_lib} lib (lib64 on 64bit systems)
%{_libdir} %{_exec_prefix}/%{_lib}
%{_libexecdir} %{_exec_prefix}/libexec
%{_sbindir} %{_exec_prefix}/sbin
%{_sharedstatedir} /var/lib
%{_datadir} %{_prefix}/share
%{_includedir} %{_prefix}/include
%{_oldincludedir} /usr/include
%{_infodir} /usr/share/info
%{_mandir} /usr/share/man
%{_localstatedir} /var
%{_initddir} %{_sysconfdir}/rc.d/init.d
%{_topdir} %{getenv:HOME}/rpmbuild
%{_builddir} %{_topdir}/BUILD
%{_rpmdir} %{_topdir}/RPMS
%{_sourcedir} %{_topdir}/SOURCES
%{_specdir} %{_topdir}/SPECS
%{_srcrpmdir} %{_topdir}/SRPMS
%{_buildrootdir} %{_topdir}/BUILDROOT
%{_var} /var
%{_tmppath} %{_var}/tmp
%{_usr} /usr
%{_usrsrc} %{_usr}/src
%{_docdir} %{_datadir}/doc
%{buildroot} %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}
$RPM_BUILD_ROOT %{buildroot}
主要是清理 %{_builddir}和%{_buildrootdir}两个目录里的中间文件
%changelog
* Fri Aug 7 2020 - Your Name <youremail@xxx.xxx> - Release
- Update log1
* Fri Aug 7 2020 - Your Name <youremail@xxx.xxx> - Release
- Update log2
在 SPEC 目录下执行 rpmbuild -xx xxx.spec 命令完整打包,rpmbuild 命令选项如下所示:
#rpmbuild
-bp 预处理
-bc 编译
-bi 编译并安装
-bl 检验文件是否齐全
-ba 编译后做成*.rpm和src.rpm
-bb 编译后做成*.rpm
-bs 只做成*.src.rpm
标签:href 其他 时间 决战 肩膀 超人 http ref com
原文地址:https://www.cnblogs.com/b1212hh/p/13462536.html