RPM打包教程
一、rpm是什么
rpm是一种安装包的格式。就像在Windows系统上我们常见的安装包格式是exe和msi一样,在linux上常见的安装包格式是deb和rpm。一般在红帽系列的系统上,不支持deb,所以我们需要将程序打包成rpm安装。
二、rpm的打包工具
rpm的打包,我们需要用到:rpmbuild 和 rpmdevtools
有的系统预装的 rpmbuild,这样我们就不需要安装这个了,可以用使用命令检查系统是否有安装 rpmbuild
# 检查是否有 rpmbuild rpmbuild --version # 安装 rpmbuild yum install rpm-build # 安装 rpmdevtools yum install rpmdevtools
三、创建打包文件夹
创建打包文件夹有两种方法:
方法一:使用命令 rpmdev-setuptree 来创建,但是创建的文件夹是在用户主目录(home),我们可以将rpmbuild整个文件夹拷贝到项目文件夹,这样可以方便我们项目管理。
方法二:手动的去创建文件夹,具体文件夹结构可以参考下面的目录树
# 方法一:使用命令创建 rpmdev-setuptree # 目录树 rpmbuild - BUILD // 编译时用到的暂存目录 - RPMS // 打包后生成的 rpm 包会放在这里 - SOURCES // 源码压缩包 - SPECS // 放 xx.spec 文件 - SRPMS // 打包后生成的 srpm 包会放在这里
四、创建 spec 文件
*:spec文件这个文件非常重要,控制整个rpm包安装卸载等全部过程
# 使用命令可以创建中 x.spec 文件模板
rpmdev-newspec eloam.spec
五、spec 文件详解
Name: 名称 Version: 版本号 Release: release版本 Summary: 对包的描述 License: 开源协议 URL: 项目主页 Source0: 源码包 # 没有用到,所以注释掉了 #BuildRequires: #Requires: %description # 详细描述,多行,每行小于等于80个字符,否则算新的一段 %prep # 静默模式解压,并进入解压后的目录,常用:%setup -q %build # 编译过程 %install # 安装过程 %files # 要打包的文件
六、打包
rpmbuild -bb SPECS/elaom.spec --define="_topdir `pwd`"
七、RPM 的安装 & 卸载
# rpm 安装 sudo rpm -ivh 包名 --nodeps # rpm 卸载 sudo rpm -e --nodeps 包名
# rpm 生成 rpmbuild -bb SPECS/elaom.spec --define="_topdir `pwd`"
八、 ** 特别重要 · 核心 **
2. 所有文件尽量不要使用记事本打开,可以使用 vi 来操作
3.我们的打包方法是将需要打包的文件,先打包成 tar.gz ,然后在使用 rpm 的打包工具对压缩包解压,解压后再次打成 rpm 包
4.压缩包的名称一定要和 spec 文件中名称(Source0)一致
5.rpm的打包过程中会遇到各种各样的问题,要看报错,慢慢分析,一步一个坑,习惯了就好,可以有效抑制头发生长
打压缩包 & 压缩包结构
# 打压缩包命令 tar -czvf eloamwss-1.0.tar.gz eloamwss-1.0 # 压缩包结构 eloamwss-1.0.tar.gz - eloamwss-1.0 - eloamwss.conf - eloamwss - doc - lib - eloamwss
eloam.spec 模板示例
Name: eloamwss Version: 1.0 Release: 1 Summary: web rpm package License: GPL URL: http://sdk.eloam.net Source0: %{name}-%{version}.tar.gz BuildRoot: %{mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXX} %description THIS IS A WEB ELOAM PACKAGE %prep #%setup -n %{name} %setup -q %build %install mkdir -p %{buildroot}/usr/local/lib mkdir -p %{buildroot}/etc/ld.so.conf.d/ mkdir -p %{buildroot}/etc/udev mkdir -p %{buildroot}/opt/eloamwss mkdir -p %{buildroot}/opt/eloamwss/lib mkdir -p %{buildroot}/opt/eloamwss/doc mkdir -p %{buildroot}/opt/eloamwss/Image mkdir -p %{buildroot}/opt/eloamwss/icon install eloamwss.conf %{buildroot}/etc/ld.so.conf.d/ install eloamwss/eloam.rules %{buildroot}/etc/udev install -m 0755 eloamwss/*.sh %{buildroot}/opt/eloamwss install -m 0755 eloamwss/eloamwss %{buildroot}/opt/eloamwss install eloamwss/lib/* %{buildroot}/opt/eloamwss/lib install eloamwss/doc/* %{buildroot}/opt/eloamwss/doc install eloamwss/icon/* %{buildroot}/opt/eloamwss/icon %define _unpackaged_files_terminate_build 0 %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) /opt/eloamwss/* /etc/ld.so.conf.d/eloamwss.conf /etc/udev/eloam.rules %post chmod 755 /opt/eloamwss/*.sh chmod 755 /opt/eloamwss/eloamwss ldconfig %preun /opt/eloamwss/shutdown.sh %define __debug_install_post \ %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\ %{nil}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析