Linux Qt rpm包制作

前言

Linux系统的软件一般有.deb和.rpm格式的安装包,即Linux系统用的是"Red-Hat Package Manager"红帽软件包管理器,就可以打包.rpm的安装包,下面说的就是.rpm的制作。如需了解.deb包制作 ,点击"Debian Packager"软件包管理器

制作工具

制作前,系统环境中需要安装有rpm-build、rpmdevtools,可用下面命令安装:

yum install rpm-build
yum install rpmdevtools

制作rpm包

这里制作一个Qt开发软件的rpm包。该功能是开机启动显示当前时间的小程序。(底部有程序代码)

  • 1、首先执行 rpmdev-setuptree 生成 rpmbuild目录文件,如果没有安装rpmdevtools,
    不安装也可 mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
[root@localhost ~]# rpmdev-setuptree 
[root@localhost ~]# ls ~/rpmbuild/
BUILD  RPMS  SOURCES  SPECS  SRPMS
[root@localhost ~]# 
  • 2、将程序所在目录重命名为:xxx-xxx-1.0.0 (xxx-xxx是名字且不能是大写字母,1.0.0代表版本号);
  • 3、执行命令 tar -zcvf show-timer-1.0.0.tar.gz show-timer-1.0.0/ 将该文件压缩生成tar.gz的压缩包 ;
  • 4、将压缩文件移到至 ~/rpmbuild/SOURCES 即当前用户的rpmbuild/SOURCES下
[root@localhost 桌面]# tar -zcvf show-timer-1.0.0.tar.gz show-timer-1.0.0/
show-timer-1.0.0/
show-timer-1.0.0/showTime.pro.user
show-timer-1.0.0/showTime.desktop
show-timer-1.0.0/main.cpp
show-timer-1.0.0/widget.ui
show-timer-1.0.0/widget.cpp
show-timer-1.0.0/widget.h
show-timer-1.0.0/showTime.pro
show-timer-1.0.0/.qmake.stash
[root@localhost 桌面]# mv show-timer-1.0.0.tar.gz ~/rpmbuild/SOURCES/
[root@localhost 桌面]# ls ~/rpmbuild/SOURCES/
show-timer-1.0.0.tar.gz
[root@localhost 桌面]# 
  • 5、cd 到 ~/rpmbuild目录下,执行 rpmdev-newspec -o SPECS/show-timer.spec 生成.spec文件,
    没有rpmdev-newspec 这个命令,其实也可以复制其他包的.spec来改
[root@localhost rpmbuild]# cd ~/rpmbuild/
[root@localhost rpmbuild]# rpmdev-newspec -o SPECS/show-timer.spec
SPECS/show-timer.spec created; type minimal, rpm version >= 4.15.
[root@localhost rpmbuild]# ls SPECS/
show-timer.spec
[root@localhost rpmbuild]# 
  • 6、修改.spec文件
[root@localhost rpmbuild]#  vim ~/rpmbuild/SPECS/show-timer.spec
[root@localhost rpmbuild]#  cat ~/rpmbuild/SPECS/show-timer.spec
%global debug_package  %{nil}
#软件包名
Name:           show-timer
#版本号
Version:        1.0.0
#软件包的发行号
Release:        1%{?dist}
#概述
Summary:        show-timer
#软件授权方式,通常是GPL(自由软件)或GPLv2,BSD
License:        LGPLv2+ and GPLv2+
#源码压缩包名字
Source0:        show-timer-1.0.0.tar.gz
#构建编译依赖,如果你写多了,本来没用上但是你写了,那你就得装,不装就编译不过;
#如果写少了,当前编译环境上有还是可以编过,没有就编译不过。所以依赖最好还是写清楚。
BuildRequires: qt5-qtbase-devel,qt5-qtx11extras-devel,qt5-qttools-devel,qt5-qtsvg-devel,lightdm-qt5-devel
#描述
%description
show-timer
#安装前执行
%prep
%autosetup
#编译软件包所要执行的命令, 这一节一般由多个make命令组成。
%build
qmake-qt5
make
#定义在安装软件包时将执行命令,类似于make install命令。用于定义在软件安装完成后的所需执行的配置工作。
%install
mkdir -p  %{buildroot}/usr/bin/
install -m 755 showTime %{buildroot}/usr/bin/
mkdir -p  %{buildroot}/etc/xdg/autostart/
install -m 755 showTime.desktop %{buildroot}/etc/xdg/autostart/
mkdir -p  %{buildroot}/usr/share/applications/
install -m 755 showTime.desktop %{buildroot}/usr/share/applications/
#定义软件包所包含的文件
#%{_bindir}是宏定义 这里是 /usr/bin ;%{_sysconfdir} 是/etc ;%{_datadir} 是 /usr/share
#所有的宏都可以在 /usr/lib/rpm/macros 里找到
%files
%{_bindir}/showTime
%{_sysconfdir}/xdg/autostart/showTime.desktop
%{_datadir}/applications/showTime.desktop
#每次软件的更新内容可以记录在此到这里,保存到发布的软件包中,以便查询之用。
%changelog
* Thu Dec 16 2021 kuangchunhua <kuangchunhua@kylinos.cn> - 1.0.0
- show-timer
[root@localhost rpmbuild]# 
  • 7、执行rpmbuild -ba SPECS/show-timer.spec 生成rpm二进制包和src源码包
[root@localhost rpmbuild]# ls SRPMS
show-timer-1.0.0-1.src.rpm
[root@localhost rpmbuild]# ls RPMS/x86_64/
show-timer-1.0.0-1.x86_64.rpm
[root@localhost rpmbuild]# 

rpm常用命令

  • rpm -ivh show-timer-1.0.0-1.x86_64.rpm 安装

  • rpm -e show-timer-1.0.0-1.x86_64.rpm 卸载

  • rpm -ivh show-timer-1.0.0-1.src.rpm 会生成 ~/rpmbuild/SPEC/show-timer.spec,
    再执行rpmbuild -bp ~/rpmbuild/SPEC/show-timer.spec 会生成 ~/rpmbuild/BUILD/show-timer-1.0.0,
    即程序源码

  • rpmbuild -bb ~/rpmbuild/SPEC/show-timer.spec 只生成二进制 即show-timer-1.0.0-1.x86_64.rpm包

  • rpmbuild -bs ~/rpmbuild/SPEC/show-timer.spec 只生成源码包 即show-timer-1.0.0-1.src.rpm源码包

  • rpmbuild -ba ~/rpmbuild/SPEC/show-timer.spec 生成二进制和源码包

rpmbuild目录介绍

[root@localhost rpmbuild]# ls
BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS
[root@localhost rpmbuild]# 
  • BUILD:执行 rpmbuild -bp ~/rpmbuild/SPEC/show-timer.spec 生成的源码在此目录下

  • BUILDROOT:这是临时构建目录,可以不管

  • RPMS:生成的二进制包在此目录下

  • SOURCES:压缩源码包和其他源文件在此目录下

  • SPECS:.spec配置文件在此目录下

  • SRPMS:生成的源码包在此目录下

spec文件参数介绍

上面只用简单标注了一下对应参数的说明,有兴趣可以网上查RPM构建 - SPEC文件参数解析

desktop文件参数介绍

  • 这是本程序中用到的showTime.desktop
kch@kch:~/showTime/show-timer-1.0.0$ cat showTime.desktop 
[Desktop Entry]
Name=showTimer
Name[zh_CN]=当前时间
Comment=显示当前时间
Comment[zh_CN]=显示当前时间
Exec=/usr/bin/showTime
Terminal=false
Type=Application
NoDisplay=false              
kch@kch:~/showTime/show-timer-1.0.0$ 
  • 该文件是桌面入口文件,下面是关于其参数介绍
    在这里插入图片描述

测试程序代码

git clone 地址 https://gitee.com/kchmmd/qt-test.git
如何配置使用git

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值