如何对程序进行rpm打包发布

原创 2013年12月02日 14:05:02

正如之前提到的,一般项目(程序)的目录包含pkg文件夹这个中应该编写与打包对应的例程,


例如我目录下结构为

[clouduser@blog /home/clouduser/ZK_Serviced]$ ls 

AUTHORS  bin  data  include  libs  logs  Makefile  pkg  README  scripts  src

pkg目录下包含两个文件:

ls pkg/
Makefile  ZK_Serviced.spec

这个Makefile其实就是遍历目录然后分别执行Makefile

cat Makefile
SUBDIRS := src

all:
    @for d in $(SUBDIRS); do \
                $(MAKE) -C $$d all; \
                done

clean:
    @for d in $(SUBDIRS); do \
                $(MAKE) -C $$d clean; \
                done


编写rpm打包程序关键在于写*.spec文件(如ZK_Serviced.spec),这个结构其实比较固定,例如我自己使用的结构内容如下示:

红色为描述性说明

绿色为生成目录与文件拷贝(打的包包含的内容)

蓝色为安装前,卸载前需要执行的脚本

cat ZK_Serviced.spec
%define debug_package %{nil}
%define __os_install_post %{nil}
%define _prefix /home/package/rpm/ZK_Serviced
%define srcname ZK_Serviced

summary: ZK_Serviced-daemon
name: ZK_Serviced
version: 1.0.0.1
release: 1%{?dist}
url: hao.360.cn
license: GPL
vendor: CloudUser<http://clouduser.cn>
group: Application/Internet
source: %{srcname}.tar.gz
#provides:
#requires:
#buildrequires:
buildroot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n)

%description
ZK_Serviced aim at supply a service which update sysinfo into zookeeper
if any question contact at clouduser@163.com

%prep
%setup -q -n %{srcname}

%build
# your package build steps
make

%install
rm -rf %{buildroot}
# your package install steps
# the compiled files dir: %{_builddir}/<package_source_dir> or $RPM_BUILD_DIR/<package_source_dir>
# the dest root dir: %{buildroot} or $RPM_BUILD_ROOT
mkdir -p %{buildroot}/%{_prefix}/
mkdir -p %{buildroot}/%{_prefix}/bin/
mkdir -p %{buildroot}/%{_prefix}/libs/
mkdir -p %{buildroot}/%{_prefix}/logs/
mkdir -p %{buildroot}/%{_sysconfdir}/
mkdir -p %{buildroot}/%{_sysconfdir}/cron.d/

pushd %{_builddir}/%{srcname}/
cp -rf bin %{buildroot}/%{_prefix}/
cp -rf libs %{buildroot}/%{_prefix}/
cp -rf scripts/ZK_Serviced_clean_crontab %{buildroot}/%{_sysconfdir}/cron.d/
popd

%files
#%defattr(-,search,search)
%defattr(-,root,root)
# list your package files here
# the list of the macros:
#   _prefix           /usr
#   _exec_prefix      %{_prefix}
#   _bindir           %{_exec_prefix}/bin
#   _libdir           %{_exec_prefix}/%{_lib}
#   _libexecdir       %{_exec_prefix}/libexec
#   _sbindir          %{_exec_prefix}/sbin
#   _includedir       %{_prefix}/include
#   _datadir          %{_prefix}/share
#   _sharedstatedir   %{_prefix}/com
#   _sysconfdir       /etc
#   _initrddir        %{_sysconfdir}/rc.d/init.d
#   _var              /var
%{_prefix}/bin
%{_prefix}/libs
%{_prefix}/logs

%defattr(-,root,root)
%{_sysconfdir}/cron.d/ZK_Serviced_clean_crontab

%pre
# pre-install scripts

%post
# post-install scripts

%preun
# pre-uninstall scripts
%{_prefix}/bin/stop.sh ZK_Serviced

%postun
# post-uninstall scripts


%clean
rm -rf %{buildroot}
# your package build clean up steps here

%changelog
# list your change log here


下面为百度百科对其的简单介绍,想具体了解学习的可以上网查一下各个字段是什么含义,如果只是使用的话,上面粘出来的这段完全够你小的应该测试使用


RPM

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。

1管理器

RPM软件包管理器
英文原义:Redhat Package Manager
中文释义:RPM软件包管理器
注解:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。与Dpkg类似。

简介

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。
RPM文件在Linux系统中的安装最为简便。以著名的图像处理软件XV为例,其RPM包xv-3.10a-13.i386.rpm可以在该程序的主页中下载取得。

一些相关操作应用命令

在Terminal中,基本的安装指令如下:
rpm -i xv-3.10a-13.i386.rpm
如果你的连网速度足够快,也可以直接从网络上安装应用软件,只需要在软件的文件名前加上适当的URL路径
作为一个软件包管理工具,RPM管理着系统已安装的所有RPM程序组件的资料。我们也可以使用RPM来卸载相关的应用程序。
rpm -e xv
RPM的常用参数还包括:
-vh:显示安装进度;
-U:升级软件包;
-qpl:列出RPM软件包内的文件信息;
-qpi:列出RPM软件包的描述信息;
-qf:查找指定文件属于哪个RPM软件包;
-Va:校验所有的RPM软件包,查找丢失的文件;
-qa: 查找相应文件,如 rpm -qa mysql

RPM主要功能(linux操作系统)

安装、卸载、升级和管理软件
组件查询功能
验证功能
软件包GPG和MD5数字签名的导入、验证和发布
软件包依赖处理
选择安装
网络远程安装功能
资源电源管理(Resource Power Manager)
RPM是高通专用的硬件引擎,用于管理共享的SoC(系统级芯片)相关资源,其中包括总线,时钟,电源轨等。RPM的目标是满足SoC的操作和性能要求的同时实现最大的功率节省。RPM接受多个RPM主控的资源请求。仲裁和聚合请求,并配置共享资源。RPM的主控方有应用处理器,调制解调处理器,以及一些硬件加速器。
RPM驱动提供了一个同RPM交互的API。内核代码调用RPM驱动来请求RPM管理和共享资源。内核代码也可以为RPM通知注册驱动,RPM通知在共享资源状态发生变化时发送。

硬件描述

RPM给每个RPM的主控方提供了一个单独的寄存器区域。一般情况下,每个寄存器代表了一些共享资源。通常情况下,主控方通过写寄存器来请求资源,然后产生一个中断给RPM。RPM处理请求,向寄存器中写确认信息,然后产生中断给主控方。
除了主控方特定区域,RPM也提供了一个共享区域,其中包含了共享资源的状态。只有RPM可以写状态区域,主控方只能够读取状态。
RPM包含内部逻辑,用来聚合和仲裁不同RPM主控方的请求。它同PMIC,总线仲裁模块,以及始终控制模块都有接口,以便配置共享资源。

软件描述

RPM驱动封装了低级RPM交互,就是依赖于读/写寄存器和产生/处理中断的交互;同时也提供了高级同步的set/clear/get接口。
大部分功能使用一个“ID值匹配队列”,ID表明了对应于某些RPM资源的RPM寄存器,这些值表明了新的资源值。
RPM驱动同步访问RPM,主要是为了保护多个任务,SMP内核,任务上下文和原子上下文同时访问。

相关文章推荐

在Linux(CentOS)上打包应用程序RPM

在制作RPM安装包的时候一般来讲有两种方式1.使用RPMBUILD 使用RPMBUILD需要自己编写*.spec文件 2.使用CMake自带的CPack工具 由于本人负责的项目都是使用CMake...

使用rpmbuild 进行rpm 打包

1.安装打包工具 Redhat 架构的 Linux 系统是通过 rpmbuild 命令来制作 RPM 安装包,而 Fedora14 默认情况下 是没有安装 rpmbuild 命令,只好手动安装。...

记录自己将Python程序打包成rpm包的过程

1.首先写好程序    ***.py 2. 打包成可执行文件 pyinstaller -F mycript.py 介绍一下  pyinstaller 的安装和使用 ...

如何使用installshield进行程序打包发布

1)首先下载installshield ,我下载的是installshield 2009,网上有破解版下,如果你没有序列号给我留言; 2)下面我们一步一步的的学习installShield如何进...

使用Flash Builder 4.5 对 Apple iOS设备的应用程序进行打包

Flash Builder 4.5 包含对 Google Android、Apple iOS和 BlackBerry Tablet OS设备的 Flex 和 ActionScript 应用程序进行打包...

Unity如何打包Android程序以及如何进行签名

Unity打包应用程序以及生成签名

如何使用vs对程序进行打包?怎么通过注册表获取安装路径?

打包需要连接的信息说多也不多,但是倘若前期不知道打包工具提供的功能,当用户需要更新时,我们只能采取先卸载再安装的笨方法,然而我们可以通过一种相对较为简便的方法来实现更新,那就是插件,那么我们要先知道软...
  • XBLYWL
  • XBLYWL
  • 2015年12月09日 22:12
  • 1864

使用 Qt InstallFramework 进行程序打包(一)

推广 欢迎加入上海Qt开发联盟 279906625 欢迎加入Qt&C++编程爱好者群 271251545 欢迎访问Qt社区 qtdream.com 百度Qt吧 前言最近在qt...

如何在macOS平台上利用mkbundle对.Net命令台程序进行打包?

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 个人网站: http://www.x86asm.org QQ交流: 643439947 编程生涯: 2001年~至今[共16年...

使用Ant对程序进行编译打包

因为项目中使用到了Ant,但是对这个不太了解,所以在网上搜了下资料,根据文档在本地写了个HelloWorld做了下测试。 首先必须要有Ant环境,好像值需要解压就行了。然后设置下环境变量,环境变量的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何对程序进行rpm打包发布
举报原因:
原因补充:

(最多只允许输入30个字)