MeeGo handset 1.1开发环境[6]:封装*.src.rpm和*.rpm
在MeeGo handset 1.1开发环境[4][5]中,我们利用QtCreator工具生成了rpm包。我们去看linux的rpm包,对于某个软件包有两个rpm包,一个是*.rpm,一个是*.src.rpm,我们应当将源程序也进行打包,这样在代码管理上会好很多。此外,可能是习惯问题,如果可以脱离QtCreator,直接在linux的命令行中进行编译,打包,我觉得更加方便和自由。本次,我们将记录如何在命令行中将程序打成*.src.rpm和*.rpm包。
实际以前我们在moblin也探讨过这个问题,在MeeGo Handset SDK 1.1的环境中,利用rpmbuild,我们在作一次。我们还是利用rpmbuild的缺省目录~/rpmbuild。下面是相关的步骤。
步骤一:建立需打包的project小例子
利用mad建立我们的project,我们可以现查看一下mad可以创建那些类型的project,然后根据需要选择创建。
$ mad pscreate -l
TEMPLATE NAME TYPE DESCRIPTION
lib-simple lib Simple example for C/C++ library
python python Simple example for Python (Qt) application
qt-empty prog Empty project for Qt application
qt-lib-simple lib Simple example for Qt library
qt-simple qtprog Simple example for Qt application
simple prog Simple example for C/C++ application
$ mad -t meego-handset-ia32-1.1 pscreate -t qt-simple test-rpm-0.0.1
请注意这个project的名字,我们将version信息也加入,这也是rpm包命名的标准方式。在后面我们也会看到spec文件中对文件夹的缺省命名,提供version信息,可以是我们更好的管理不同版本当然源代码,同时也方便打patch。
$ cd test-rpm-0.0.1/
$ mad -t meego-handset-ia32-1.1 qmake
通过这一步,可以生成Makefile,打开Makefile文件,我们做一些小修改,将涉及绝对路径的修改为相对路径,例如该文件夹的绝对路径在/workspace/meego/test/qt/test-rpm-0.0.1,我们可以查询这个路径,或者查询install,是在target中install desktop文件时会写成绝对路径。因为我们将利用rpmbuild的缺省目录,而且不同环境,安装的绝对路径不一样,所以需要修改。
这是我们可以直接通过make命令来进行编译。由于是实验打包的情况,我只在*.desktop文件中修改了图标的描述名字,并将源文件中的Hello, World改为其他文字。
步骤二:打包
当我们确保编译没有出现问题,包括在target上调测后也没有问题,我们准备封装发布的rpm和src.rpm。采用make clean将所有编译内容清除后,将test-rpm-0.0.1/打包为test-rpm-0.0.1.tar.gz。接着我们编写rpm的spec文件,可以直接利用之前QtCreator编写的其他spec文件过来修改,spec文件可以参考:
- http://wiki.meego.com/Packaging/Guidelines
- Moblin:kernel编译和rpm打包(二):RPM打包
下面是这个例子的spec文件test-rpm.spec的内容
$ cat test-rpm.spec
# no post install
#%define __os_install_post %{nil}
# no strip
#%define __strip /bin/true
# no debug package
#%define debug_package %{nil}
# disable automatic dependency processing
#AutoReqProv: noName: test-rpm
Version: 0.0.1
Release: 1
License: GPL
Summary: Wei: Test for Meego handset 1.1 *.src.rpm and *.rpm
#Url: <insert url tag>
Group: Qt/Qt Mobility
Source0: %{name}-%{version}.tar.gz
#BuildRequires: pkgconfig(QtCore)
#BuildRequires: libqt-devel%description
Wei test for Meego handset SDK 1.1 for package *.src.rpm and *.rpm.%prep
%setup -q%build
# Add here commands to configure the package.
#%qmake
#qmake -makefile -nocache QMAKE_STRIP=: PREFIX=%{_prefix}# Add here commands to compile the package.
#make %{?jobs:-j%jobs}
#make %{?_smp_mflags}
make%install
# Add here commands to install the package.
#%qmake_install
make install INSTALL_ROOT=%{buildroot}%files
%defattr(-,root,root,-)
%{_prefix}/*
我们将在rmpbuild的标准目录下来进行,可以直接执行rpmbuild -ba test-rpm.spec,运行会报错,但是会生成正确的缺省路径~/rpmbuild,在该目录下会有以下的目录BUILD/ BUILDROOT/ RPMS/ SOURCES/ SPECS/ SRPMS/,我们将test-、rpm.0.0.1.tar.gz文件copy到SOURCES目录下,将test-rpm.spec文件copy到SPECS/下,进入~/rpmbuild/SPECS目录,执行命令rpmbuild -ba test-rpm.spec,则源文件解压后将存放在BUILD/路径下,在目标机的解压后的文件将在BUILDROOT/下,test-rpm-0.0.1-1.i386.rpm将存放在RPMS/i386/路径下,源文件rpm包test-rpm-0.0.1-1.src.rpm位于SRPMS/。
步骤三:检验
我们打开模拟器或者目标机,通过网络,将rpm传递上去
$ scp -P 6666 /home/wei/rpmbuild/RPMS/i386/test-rpm-0.0.1-1.i386.rpm meego@localhost:/home/meego
源文件rpm包用于归档保存,我们删除~/rpmbuild,然后在本地机器进行rpm -ivh xxxx.src.rpm后,我们看到在~/rpmbuild中相关源代码的恢复。我们通过ssh登录模拟器,在/home/meego下,以sudo的身份对rpm进行安装rpm -ivh test-rpm-0.0.1-1.i386.rpm,删除时只需要rpm -e test-rpm即可。安装之后我们可以看到桌面如下左图,点击图片,如右图:
相关链接:我的MeeGo/Moblin相关文章
MeeGo handset 1.1开发环境[6]:封装*.src.rpm和*.rpm相关推荐
- MeeGo handset 1.1开发环境[1]:安装MeeGo1.1
上周MeeGo发布了1.1的新版本,在netbook上安装看看.界面似乎没有什么修改.meego.com上发布的博客, http://meego.com/community/blogs/valhall ...
- MeeGo handset 1.1开发环境[5]:一个desktop小应用
在MeeGo handset 1.1 SDK上实现Hello World中,我们进一步讨论了如何使用ssh client和hanset runtime模拟器之间进行互动: 通过QT Creator作为 ...
- MeeGo handset 1.1开发环境[3]:直接使用Qemugl
在安装MeeGo 1.1 SDK中使用的是MeeGo 1.1新提供的工具mad-admin,从安装的过程可知,其依赖于qemugl.但是这个工具不能使用最新的img,runtimes已经限定,不能更换 ...
- MeeGo handset 1.1开发环境[2]:安装MeeGo 1.1 SDK
在安装MeeGo SDK 1.1,尤其是模拟器MeeGo SDK runtime的时候出现问题,搞得我都怀疑是否是我的Fedora或者阿土比MeeGo的指引要高,装机器都装了N次了,安装过程都没有发现 ...
- meego Java_meego 1.1 开发环境的搭建及问题解决方法
折腾了大半天终于把meego 1.1的开发环境安装在了ubuntu 10.10上了,这个过程的艰难也充分证明meego的道路可能还会很艰难. 1.meego SDK安装 (1),获取gpg key,不 ...
- axios请求封装与开发环境proxyTable代理
axios请求封装与开发环境proxyTable代理详解 一.axios请求封装 1. axios安装与使用 1.1 安装 1.2 引入 1.3 环境切换 1.4 设置请求超时 1.5 请求头设置 1 ...
- meego用linux软件下载,MeeGo移动应用程序开发入门
[IT168技术]我们曾经讲过"在QT SDK下构建MeeGo Touch开发环境",在Windows系统上运行MeeGo SDK,在主流linux系统上运行MeeGo SDK , ...
- Windows下Eclipse配置基于MinGW的C/C++开发环境
Eclipse安装CDT及其他插件的方法 1.搜索CDT线上安装地址 进入Ecllipse插件下载官网https://www.eclipse.org/cdt/downloads.php,在官网页面列表 ...
- 用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)
本文适合 Vue 的初学者,以及对 webpack 不熟悉的同学阅读.前提是你要会用基本的命令行. Node 和 NPM,以及掌握 ES2015 的基础知识.本文都是在 macOS 环境下运行,要求使 ...
最新文章
- 既往出现中性粒细胞减少的患者可以重新应用依那西普
- 计算机音乐刚好遇见你乐谱,刚好遇见你曲谱_刚好遇见你乐谱
- git bash 界面修改成linux界面
- 软件测试的缺陷管理系统有哪些,简述:一款优秀的缺陷管理系统有哪些功能特点!...
- 摇篮善良:仅添加包装用于战争
- Postgresql中的hybrid hash join(无状态机讲解)
- CentOS 7.3 系统安装配置图解教程
- 9206晚自习点歌功能拆解 图片加载 控件显示与隐藏等等
- Physically Based Specular for Artists
- office另存为pdf的加载项_Word怎样转换成PDF
- 蓝牙耳机自动接听软件_使用蓝牙耳机接听Skype呼叫
- Python学习手册-笔记2
- 在Ubuntu上使用MySQL设置远程数据库优化站点性能
- JConsole可视化工具介绍
- pyodbc 测试连接 SQL Server 数据库
- 第一门慕课计划——在广东海洋大学推广MOOC学习
- unbuntu16.4 64位安装spade+XMPP教程
- 使用 TestFight 构建 Beta 测试版本
- IPCamera WiFi配置方案
- Centos7系统下使用Docker部署SpringBoot项目及安装Mysql