rpmbuild制作rpm 包
来源:互联网 发布:林业优化投资率 编辑:程序博客网 时间:2024/04/25 11:38
什么是rpm包?
rpm 相当于windows中的安装文件,它会自动处理软件包之间的依赖关系。
- rpm优点:
包管理系统简单,通过几个命令就可以实现包的安装、升级、卸载。
安装速度比源码包快的多。 - 缺点:
经过编译,不能看到源代码,功能选择不如源码灵活。依赖性强。
首先说一下流程:
打rpm 包需要的东西有 源码、spec文件(打rpm包的脚本)、rpmbuild工具。
1. 安装rpmbuild
$yum install rpmbuild$yum install rpmdevtools $rpmdev-setuptree
此时rpmbuild已经安装好了,可以查看一下
rpmbuild --showrc | grep topdir
进入rpmbuild 目录文件夹如下:
各个文件夹的用途:
2. 创建用户
此处建议创建一个用户,用于rpm的打包操作
1. #创建用户useradd rpmuser su - rpmuser 2. #定义工作目录(或车间)吧vi ~/.rpmmacros %_topdir /home/rpmuser/rpmbuild ##目录可以自定义 mkdir ~/rpmbuild 3. #在topdir下建立需要的目录cd ~/rpmbuild mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
3. 整理源码
rpmbuild安装完成以后我门就需要将我们的源码放到 SOURCE 文件夹下。我门的源码可能是一个tar.gz 的包、也可能是几个文件。
tar.gz源码包的名字格式应该为 helloword-1.0.0.tar.gz (其实就是名字-版本号.tar.gz)
4. 编写spec文件
在SPECS文件夹下新建 xxx.spec 打包脚本,其实也就是把我门的源码编译打包成rpm 的一个过程。
vi xxx.spec Name: hellorpm #名字为源码tar.gz 包的名字 Version: 1.0.0 #版本号,一定要与tar.gz包的一致哦 Release: 1%{?dist} #释出号,也就是第几次制作rpm Summary: helloword #软件包简介,最好不要超过50字符 License: GPL #许可,GPL还是BSD等 URL: #可以写一个网址 Packager: abel Source0: %{name}-%{version}.tar.gz #定义用到的source,也就是你的源码BuildRoot: %_topdir/BUILDROOT #这个是软件make install 的测试安装目录.BuildRequires: gcc,make #制作过程中用到的软件包 Requires: python-apscheduler >= 2.1.2-1.el7,python-daemon >= 1.6-1.el7 #软件运行依赖的软件包,也可以指定最低版本如 bash >= 1.1.1 %description #描述,随便写 %prep #打包开始 %setup -q #这个作用静默模式解压并cd %build #编译制作阶段,主要目的就是编译,如果不用编译就为空 ./configure \ %{?_smp_mflags} #make后面的意思是:如果就多处理器的话make时并行编译 %install #安装阶段 rm -rf %{buildroot} #先删除原来的安装的,如果你不是第一次安装的话 cp -rp %_topdir/BUILD/%{name}-%{version}/* $RPM_BUILD_ROOT #将需要需要打包的文件从BUILD 文件夹中拷贝到BUILDROOT文件夹下。#下面的几步pre、post、preun、postun 没必要可以不写 %pre #rpm安装前制行的脚本 %post #安装后执行的脚本 %preun #卸载前执行的脚本 %postun #卸载后执行的脚本 %clean #清理段,删除buildroot rm -rf %{buildroot} %files #rpm要包含的文件 %defattr (-,root,root,-) #设定默认权限,如果下面没有指定权限,则继承默认 /etc/hello/word/helloword.c #将你需要打包的文件或目录写下来### 7.chagelog section 改变日志段 %changelog
注意:
以上阶段如果没有操作的话,为空,但是不能有空行,例如build阶段为空应写为
%build %install xxxxxxxx 错误示例:%build %install xxxxxxxx
rpm包制作阶段
5. 打包
spec 文件编写好以后就可以进行打包了。
在SPECS文件夹下执行命令:
rpmbuild -bb xxx.spec
如果出错了可以通过 不同的命令来看是在打包的那一步出了问题。
rpmbuild -ba 既生成src.rpm又生成二进制rpm -bs 只生成src的rpm -bb 只生二进制的rpm -bp 执行到pre -bc 执行到 build段 -bi 执行install段 -bl 检测有文件没包含
可以先rpmbuild -bp ,再-bc 再-bi 如果没问题,rpmbuild -ba 生成src包与二进制包。
本文参考:
http://laoguang.blog.51cto.com/6013350/1103628/
http://blog.chinaunix.net/uid-23069658-id-3944462.html
阅读全文
0 0
- rpmbuild制作rpm包
- rpmbuild 制作rpm包
- rpmbuild制作rpm 包
- rpmbuild制作rpm安装包
- rpmbuild制作rpm安装包
- linux rpm 包制作 - 使用 rpmbuild
- linux rpm 包制作 - 使用 rpmbuild
- Centos下使用rpmbuild以及checkinstall制作RPM包
- RPM包rpmbuild SPEC文件
- RPM包rpmbuild SPEC文件
- 使用rpmbuild创建rpm包
- RPM包rpmbuild SPEC文件深度说明
- RPM包rpmbuild SPEC文件深度说明
- RPM包rpmbuild SPEC文件深度说明
- RPM包rpmbuild SPEC文件深度说明
- RPM包rpmbuild SPEC文件深度说明
- RPM包rpmbuild SPEC文件深度说明
- RPM包rpmbuild SPEC文件深度说明
- Linux常用的命令(一)
- HTTP协议详解(真的很经典)
- 阿里云windows server 2008 r2安装mysql失败
- 会议安排
- [实训]Java中的Serializable
- rpmbuild制作rpm 包
- 阅读笔记 >需求分析——检查需求内容
- WebView 笔记
- 【剑指offer-解题系列(58)】二叉树的下一个结点
- HTTP协议的头信息详解
- 人脸对齐之SDM论文解析
- 观察Linux行为
- Kotlin-05.包和导入(package & import)
- win10+Ubantu双系统