zoukankan      html  css  js  c++  java
  • rpm包制作

    制作rpm包

    方法一:checkinstall

    方法二: rpmbuild

    • 安装rpm工具
    $ sudo yum install -y rpm-build.x86_64
    
    • 创建spec文件
    # 任意执行rpmbuild -bb等命令自动在HOME目录生成rpmbuild目录
    $ cd ~/rpmbuild/SPECS
    $ rpmdev-newspec package-name
    $ vi package-name.spec
    
    • 编写spec文件
    # 这个区域定义的Name、Version这些字段对应的值可以在后面通过%{name},%{version}这样的方式来引用,类似于C语言中的宏
    # Name制定了软件的名称,如果不是spec.in文件则使用具体软件名
    Name:       @PACKAGE@
    # 软件版本,如果不是spec.in文件则使用具体版本号
    Version:    @VERSION@
    # 释出号,也就是第几次制作rpm
    Release:    1%{?dist}
    # 软件的介绍,必须设置,最好不要超过50个字符
    Summary:    {根据实际情况填写}
    # 软件的分组,可以通过/usr/share/doc/rpm-4.8.0/GROUPS文件中选择,也可以
    # 在相应的分类下,自己创建一个新的类型
    Group:      Application/Server
    # 许可证类型
    License:    GPL
    # 软件的源站
    URL:        {根据实际情况填写}
    # 制作rpm包的人员信息
    Packager:   {根据实际情况填写}
    # 源码包的名称,在%_topdir/SOURCE下,如果有多个源码包的话,可以通过
    # Source1、Source2这样的字段来指定其他的源码包
    Source0:    %{name}-%{version}.tar.gz
    # BuildRoot指定了make install的测试安装目录,通过这个目录我们可以观察
    # 生成了哪些文件,方便些files区域。如果在files区域中写的一些文件报
    # 不存在的错误,可以查看%_topdir/BUILDROOT目录来检查有哪些文件。
    BuildRoot:  %_topdir/BUILDROOT
    # 指定安装的路径
    Prefix:     /usr/local/%{name}-%{version}
    # 制作过程需要的工具或软件包
    BuildRequires:  gcc,make
    # 安装时依赖的软件包
    Requires: {根据实际情况填写}
    # 软件的描述,这个可以尽情地写
    %description
    # %prep指定了在编译软件包之前的准备工作,这里的
    # setup宏的作用是静默模式解压并切换到源码目录中,
    # 当然你也可以使用tar命令来解压
    %prep
    %setup -q
    # 编译阶段,和直接编译源代码类似,具体的操作或指定的一些参数由configure文件决定。
    %build
    ./autogen.sh  --prefix=%{_prefix} --sysconfdir=%{_sysconfdir}
    # make后面的意思是:如果是多处理器,则并行编译
    make %{?_smp_mflags}
    # 安装阶段
    %install
    # 先删除原来的测试安装的,只有在制作失败了%{buildroot}目录才会有内容,
    # 如果成功的话,目录下会被清除。
    # %{buildroot}指向的目录不是BuildRoot(%_topdir/BUILDROOT)指定的目录,
    # 而是该目录下名称与生成的rpm包名称相同的子目录。
    # 指定安装目录,注意不是真实的安装目录,是在制作rpm包的时候指定的
    # 安装目录,如果不指定的话,默认就会安装到configure命令中指定的prefix路径,
    # 所以这里一定要指定DESTDIR
    rm -rf $RPM_BUILD_ROOT
    make install DESTDIR=$RPM_BUILD_ROOT
    # 安装前执行的脚本,语法和shell脚本的语法相同
    %pre
    # 安装后执行的脚本
    %post
    # 卸载前执行的脚本
    %preun
    # 卸载完成后执行的脚本
    %postun
    # 清理阶段,在制作完成后删除安装的内容
    %clean
    rm -rf $RPM_BUILD_ROOT
    #指定要包含的文件,先自己make install DESTDIR=XX到一个目录,根据实际情况填写要包含的文件
    %files
    #设置默认权限,如果没有指定,则继承默认的权限
    %defattr  (-,root,root,0755)
    %{prefix}
    
    • 编译rpm包
    # 制作源码包,automake的项目使用下面的命令生成源码包
    $ make dist
    $ cp package-name-version.tar.gz ~/rpmbuild/SOURCES
    $ rpmbuild -bb package-name.spec
    

    参考资料

    RPM 打包技术与典型 SPEC 文件分析
    RPM包rpmbuild SPEC文件深度说明
    How to create an RPM package
    Linux 的源码安装工具 CheckInstall
    linux-centos浅谈之rpm和rpmbuild
    在 Ubuntu 下直接将二进制文件制作成 rpm 包

  • 相关阅读:
    jQuery中 $ 符号的冲突问题
    典型用户,场景,用例图
    结对编程
    简易计算器
    对git的认识
    我的博客
    零基础免费搭建个人博客-hexo+github
    DTcmsV4.0分析学习——(3)URL重写
    DTcmsV4.0分析学习——(2)系统框架
    DTcmsV4.0分析学习——(1)数据库结构分析
  • 原文地址:https://www.cnblogs.com/silvermagic/p/7665950.html
Copyright © 2011-2022 走看看