RPM打包技术与典型SPEC文件分析

合集下载

RPM详解——精选推荐

RPM详解——精选推荐

RPM详解概述RPM⽂件结构RPM包⽂件⼀般包含4部分:Lead、Signature、Header、Payloadlead----开头的标识部分,⽤于标识此份⽂件为⼀个RPM包Signature-----数字签名,通常包括针对头部的签名和针对载荷的签名Header--------头部,通常包括版权信息,版本号,包描述等信息;有时还包含⼀些特定的标签(Tag),⽐如PRE Tag就包含了rpm包在安装前需要执⾏的预安装脚本。

Payload-------载荷,包含实际安装的⽂件RPM命令安装及升级安装的⼀般步骤install a package, it goes through a number of steps:1.Checking the package and the files it wants to install2.Performing preinstallation tasks3.Uncompressing the files and placing them in the proper locations4.Performing post-processing tasks5.Updating the RPM DatabaseRPM数据库的相关⽂件位于/var/lib/rpm/⽬录下。

新安装@前⾯为⽤户名及密码,⽤户名uncljoe ,密码workers升级rpm -Uvh ⽆论软件包存在与否都执⾏升级或rpm -Fvh仅针对已安装的软件包进⾏升级升级时,RPM会对每个⽂件,⽐对三个版本的MD5校验值(old package file,current file,new package file)。

如果old package file与new package file的MD5校验值⼀样,但current file 不同,说明新⽼版本的⽂件是⼀样的,但管理员编辑过该⽂件(通常是⼀些配置⽂件),rpm 会保留current file(保留管理员的所做的配置),⽽不会⽤新包中的⽂件覆盖。

精通RPM之制作篇(中)

精通RPM之制作篇(中)

精通RPM之制作篇(中)一个RPM的软件包描述文件,可以仅生成一个父包或一个子包,也可以生成一个父包和多个子包。

通过设定子包选项,可以使生成的子包采用"软件名-子包名"的标准命名,也可使生成的子包采用自己的名字。

一个子包,通常是按照其包含的文件的用途或类型来归并文件进而打成包裹的。

象前面的LZE描述文件很简单,它将所有文件都包含进了父包中。

我们也可以将文件分类作成子软件包,如可分成执行程序子包(lze-bin),配置文件子包(lze-config)和说明文档包(lze-doc)。

我们还可以只分出一个配置文件子包(lze-config),其余文件均打入父包中(lze)。

通过这样详细地分类,有助于用户管理软件包,避免安装多余的东西,同时也有助于升级。

要想创建子软件包,必须描述以下内容:1. %package :用此段创建一个子包。

其名字由子包选项控制。

子包选项为"[-n] 子包名",不选-n时,生成的子包文件为"软件名-子包名-版本号-释出号.体系.rpm";选-n时,生成的子包文件为"子包名-版本号-释出号.体系.rpm"。

其应用格式为:2. Summary此域必须在%package下面,它定义子包功能简介(一句话说明)。

格式为:3. Group此域必须在%package下面,其定义子包所属软件类别(软件类别请参见<<精通RPM之五——查询篇>>)。

格式为:4. %description :此描述段的内容是较为详细的子包功能介绍,介绍为文本形式,格式不作要求,可任意换行或分段。

格式为:5. %files :此文件段的内容是子包所要包含的文件列表。

文件列表中,一个文件占用一行,还可使用多种文件修饰符。

(详见<<精通RPM之七——制作篇(上)>>)段名应用格式为:注意: 上述%description与%files段所用的子包选项形式,必须与%package所用的子包选项形式一致,否则的话,它们定义的不是同一个子包,RPM检查时将报错退出。

rpm打包整理

rpm打包整理

rpm打包整理最近在学习之余,学习了rpm打包,整理了一些资料(基于Qomo平台)首先介绍下RPMRPM 是 Red Hat Package Manager 的缩写,原意是Red Hat 软件包管理。

这里先介绍一下RPM的一些用法。

查询功能:1、对系统中已经安装的软件查询:rpm -q softwarename2、查询系统中已安装的包:rpm -qa [softwarename]3、查询已安装软件包都安装到何处:rpm -ql softwarename安装,删除 rpm -ivh softwarename.rpm rpm -e softwarename其余更多的用法参照man rpm打包前的工作:1、安装打包套件:$sudo yum install rpm-build2、建立打包的环境:不建议用 root 来打包套件,所以请改用一般的使用者身分来打包套件,首先要安装 fedora-rpmdevtools 这个套件.接著执行 fedora-buildrpmtree 来建立打包的环境:$sudo yum install fedora-rpmdevtools 执行完后,就会在HOME目录下生成rpmbuild目录在 rpmbuild 目录底下又有 BUILD RPMS SOURCES SPECS SRPMS 五个子目录也可以自己手动创建这五个目录:mkdir -p ~/{BUILD,RPMS,S{OURCE,PEC,RPM}S}这些目录的作用如下BUILD 编译时所用的暂存目录RPMS 放置打包好的套件SOURCES 放置套件的原始码及修补档等等SPECS 放置 .spec 档 SRPMS 放置 Source RPMS (.src.rpm)3、这里为了提高书写spec文件的效率,介绍几个vim的插件spec文件里面有Group和%Changelog书写比较麻烦,将rpmgroups文件放在/usr/share/vim/vim72/plugin/下,然后执行source /usr/share/vim/vim72/plugin/rpmgroups.vim在/etc/vimrc文件最后加上:letpackager="<********************>",“ ”中的是你的邮箱名。

RPM打包浅析

RPM打包浅析

RPM打包浅析RPM打包浅析0:需要储备的知识及其⽬的:需要要储备的知识对makefile有⼀定的了解。

C代码的编译及基本的C语法。

注:只需要能基本看懂第⼆节做好准备打包⼀个简单程序的内容即可。

教学⽬的能将⾃⼰编写的程序打包成RPM包,发布到⽹上供⼤家下载并安装使⽤。

⼀:RPM 基础知识若要构建⼀个标准的 RPM 包,您需要创建.spec⽂件,其中包含软件打包的全部信息。

然后,对此⽂件执⾏rpmbuild命令,经过这⼀步,系统会按照步骤⽣成最终的 RPM 包。

⼀般情况,您应该把源代码包,⽐如由开发者发布的以.tar.gz结尾的⽂件,放⼊~/rpmbuild/SOURCES⽬录。

将.spec⽂件放⼊~/rpmbuild/SPECS ⽬录,并命名为 "软件包名.spec" 。

当然,软件包名就是最终 RPM 包的名字。

为了创建⼆进制(Binary RPM)和源码软件包(SRPM),您需要将⽬录切换⾄~/rpmbuild/SPECS并执⾏:$ rpmbuild -ba NAME.spec当执⾏此命令时,rpmbuild会⾃动读取.spec⽂件并按照下表列出的步骤完成构建。

下表中,以%开头的语句为预定义宏,每个宏的作⽤如下:阶段读取的⽬录写⼊的⽬录具体动作%prep%_sourcedir%_builddir读取位于%_sourcedir⽬录的源代码和 patch 。

之后,解压源代码⾄%_builddir的⼦⽬录并应⽤所有 patch。

%build%_builddir%_builddir编译位于%_builddir构建⽬录下的⽂件。

通过执⾏类似 "./configure && make" 的命令实现。

%install%_builddir%_buildrootdir 读取位于%_builddir构建⽬录下的⽂件并将其安装⾄%_buildrootdir⽬录。

如何使用rpm打包文件

如何使用rpm打包文件

用Rpmbuild打包总结这些都是对这些软件简单的介绍,一些基本的信息!!Name: SipMonitorVersion: 1.0Release: 1%{?dist}Summary: for qt studyGroup: Development/ToolsLicense: GPLURL: /178926426Source0: %{name}-%{version}.tar.gzBuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root%descriptionThe GNU wget program downloads files from the Internet using the command-line.%prep //这个是编译之前预处理!一般就是解压,然后进入到解压文件夹下。

下面有一段文字对%prep与%setup的一些参数讲解很详细的文章%setup -q%build%install%{__rm} -rf %{buildroot}make#%makeinstallmake install%{__install} -d %{buildroot}%{_datadir}/SipMonitorcp -a ./* %{buildroot}%{_datadir}/SipMonitor%postcp %{_datadir}/SipMonitor/sip_monitor %{_bindir}ln -sf %{_datadir}/SipMonitor/sip_monitor /root/Desktop%postun%{__rm} -rf %{_bindir}/sip_monitor%{__rm} -rf /root/Desktop/sip_monitor%cleanrm -rf $RPM_BUILD_ROOT%files%{_datadir}/SipMonitor%changelog* Wed Sep 10 2008 Wangjun- Make the spec file,first%prep :此为预处理段,其内容为预处理脚本程序。

RPM打包技术和典型SPEC文件分析

RPM打包技术和典型SPEC文件分析
6 + umask 022
7 + cd /usr/src/dist/BUILD
生成的文件会在刚才建立的RPM目录下存在。
2)只生成src格式的rpm包
rpmbuild -bs xxx.spec
生成的文件会在刚才建立的SRPM目录下存在。
3) 只需要生成完整的源文件
rpmbuild -bp xxx.spec
二.典型spec文件分析
通过第一部分的介绍,我们对软件包的管理及spec文件的一些细节应该掌控的差不多了,接下来通过分析kaffeine.spec(kaffeine是linux平台下的媒体播放器)文件来让读者朋友实践一回spec文件的规范和书写。
Kaffeine.spec文件内容如下:
%define debug_package %
1) 只生成二进制格式的rpm包
rpmbuild -bb xxx.spec
用此命令生成软件包,执行后屏幕将显示如下信息:(每行开头为行号)
1 Executing: %prep
2 + umask 022
3 + cd /usr/src/dist/BUILD
4 + exit 0
5 Executing: %build
(3)build段
本段是建立段,所要执行的命令为生成软件包服务,如make 命令。
(4)%install段
本段是安装段,其中的命令在安装软件包时将执行,如make install命令。
(5)%files段
本段是文件段,用于定义软件包所包含的文件,分为三类--说明文件(doc),设置文件(config)及执行程式,还可定义文件存取权限,拥有者及组别。

Rpm打包原理详解

Rpm打包原理详解

Rpm打包原理详解Rpm打包原理详解为什么要打包?制作rpm 不仅仅是打包,更可以解决菜单创建、打补钉、完成大量预配置、与其他软件包互动等操作。

使用源代码安装要求用户了解基本的编译过程、能够应付各种不能编译的意外、必须自己完成抽象的配置、甚至懂得软件开发,能够自己打补钉,……对非计算机专业的用户而言简直就是天方夜谭。

这是把软件开发的最后一步抛给了用户,作为发行版,这是极不负责任的!也是不现实的,除非用lfs,但那是一本菜谱,不是真正的发行版。

软件作者发布源代码是正确的,负责的作者一般都同时提供rpm 和deb 包以及它们的源代码包。

除非他们不会制作。

愿意使用什么,那是个人的自由,但对外就不能只想到自己。

GNU 精神是一种公益精神,没有奉献精神,在自由软件领域是要遭唾弃的!直接使用其他发行版的rpm 常常是不行的。

不知道大家看没看“恼人的依赖关系”这个帖子。

可以在技术支持区搜索一下。

任何两个发行版本在二进制上都是不能兼容的!他们实际是不同的操作系统。

不仅使用的库文件不同,配置也迥异。

特别是同一个发行版的不同版本更不兼容。

任何包都必须在本地重新编译,而且不一定通得过,因为还有spec 宏的兼容问题!如果要在别的发行版上使用,必须用源码编译,这是常识。

考虑文件布局和配置问题,有时直接编译也是不够的,必须修改spec,甚至自己打补丁。

如何创建rpm 包?rpm 建包原理其实不复杂。

写spec 相当于一种脚本编程,主要是在spec 里提供一些软件相关信息,以及安装、卸载前后要执行的脚本,然后展开压缩的源代码包,打上补丁,执行编译,然后利用make install 可以重新指定安装目的地的特性,把编译好的文件安装到指定的虚拟根目录下的指定位置里,一般是虚拟的/usr 里,然后把这些目录、信息和脚本打成一个压缩包,即rpm 包。

同时可选地生成源码包src.rpm。

当然有很多具体细节问题。

您应该首先阅读软件的readme 和INSTALL 文件。

8.6.2 编译RPM 包——spec 文件[共2页]

8.6.2 编译RPM 包——spec 文件[共2页]

130config.status: creating src/Makefileconfig.status: creating nano.specconfig.status: creating config.hconfig.status: executing depfiles commandsconfig.status: executing default-1 commandsconfig.status: creating po/POTFILESconfig.status: creating po/Makefileconfigure脚本会对系统环境进行检测,如果没有问题即可安装。

如果出问题可能是缺少开发用的某些软件或者版本不合适,以及可能是缺少相应的开发库(devel库)。

如果遇到这类问题,可以具体问题具体分析,此处只介绍配置无异常的情况。

编译和测试的指令分别为make和make test,二者可以一起执行make&&make test。

本例中nano没有为测试编写make test入口,因此只使用make进行编译,示例如下所示。

[root@localhost nano-2.3.1]# makemake all-recursivemake[1]: Entering directory '/root/nano-2.3.1'Making all in docmake[2]: Entering directory '/root/nano-2.3.1/doc'Making all in manmake[3]: Entering directory '/root/nano-2.3.1/doc/man'make all-recursivemake[4]: Entering directory '/root/nano-2.3.1/doc/man'Making all in frmake[5]: Entering directory '/root/nano-2.3.1/doc/man/fr'make all-ammake[6]: Entering directory '/root/nano-2.3.1/doc/man/fr'//以下省略若干内容...mv -f .deps/winio.Tpo .deps/winio.Pogcc -g -O2 -o nano browser.o chars.o color.o cut.o files.o global.o help.o move.o nano.o prompt.o rcfile.o search.o text.o utils.o winio.o -lncurseswmake[2]: Leaving directory '/root/nano-2.3.1/src'make[2]: Entering directory '/root/nano-2.3.1'make[2]: Leaving directory '/root/nano-2.3.1'make[1]: Leaving directory '/root/nano-2.3.1'如果编译顺利结束(无错误或致命错误),并且测试通过(如果有测试)则可以安装。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.c
Amusements/Graphics Applications/Archiving Applications/Communications Applications/Databases Applications/Editors Applications/Emulators Applications/Engineering Applications/File Applications/Internet Applications/Multimedia Applications/Productivity Applications/Publishing Applications/System Applications/Text Development/Debuggers Development/Languages Development/Libraries Development/System Development/Tools Documentation System Environment/Base System Environment/Daemons
linux
o
m
w
w
w
w
PD
F -X C h a n ge
PD
F -X C h a n ge
O W !
N
y
bu
to
k
lic
C
m
C
lic
k
to
bu
y
N
.c
O W !
w
.d o
w
பைடு நூலகம்
o
.d o
c u -tr a c k
c u -tr a c k
.c
Source1: logo.png Source2: icon.tgz Source3: kaffeine.desktop Source4: codecs.tgz Patch: kaffeine-0.4.3-fix-hide-crash.patch Patch1:kaffeine-0.4.3-without-wizard.patch BuildRoot: /var/tmp/kaffeine-root %description Kaffeine is a xine based media player for KDE3. It plays back CDs, DVDs, and VCDs. It also decodes multimedia files like AVI, MOV, WMV, and MP3 from local disk drives, and displays multimedia streamed over the Internet. It interprets many of the most common multimedia formats available - and some of the most uncommon formats, too. Additionally, Kaffeine is fully integrated in KDE3, it supports Drag and Drop and provides an editable playlist, a bookmark system, a Konqueror plugin, a Mozilla plugin, OSD an much more.
rpm -ivh
rpm -Uvh 4 rpm -q ( or --query) options -qpi 5 rpm -V ( or --verify, or -y) options ok 3 spec rpm RPM Linux rpm
Linux RPM
RPM
SPEC
o
m
w
w
w
w
PD
F -X C h a n ge
o
m
w
w
w
w
PD
F -X C h a n ge
PD
F -X C h a n ge
O W !
N
y
bu
to
k
lic
C
m
C
lic
k
to
bu
y
N
.c
O W !
w
.d o
w
o
.d o
c u -tr a c k
c u -tr a c k
.c
rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine-pause.png rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine-play.png rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine-record.png mkdir -p $RPM_BUILD_ROOT/usr/share/icons/crystalsvg tar zxvf % -C $RPM_BUILD_ROOT/usr/share/icons/crystalsvg mkdir -p $RPM_BUILD_ROOT/usr/share/applnk/App/Multimedia cp -r % $RPM_BUILD_ROOT/usr/share/applnk/App/Multimedia mkdir -p $RPM_BUILD_ROOT/usr/lib/win32 tar zxvf % -C $RPM_BUILD_ROOT/usr/lib/win32 %clean rm -rf $RPM_BUILD_ROOT %post ln -s /dev/cdrom /dev/dvd ln -s /dev/cdrom /dev/rdvd %files %defattr(-,root,root) /usr
4 rpmbuild -ba xxx.spec
rpm RPM spec spec kaffeine.spec kaffeine spec Kaffeine.spec %define debug_package % Name: kaffeine Version: 0.4.3 Release: 25 Summary: A xine-based Media Player for KDE Group: Applications/Multimedia License: GPL URL: / Source0: kaffeine-0.4.3.tar.bz2
patch
%prep %setup -q %patch -p1
o
m
w
w
w
w
PD
F -X C h a n ge
PD
F -X C h a n ge
O W !
N
y
bu
to
k
lic
C
m
C
lic
k
to
bu
y
N
.c
O W !
w
.d o
w
o
.d o
c u -tr a c k
c u -tr a c k
.c
%patch1 -p1 %Build make -f admin/mon cvs ./configure --prefix=/usr make #for mo files pushd po rm *.gmo make popd %install mkdir -p $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/usr/share/services cp $RPM_BUILD_ROOT/usr/share/apps/kaffeine/mms.protocol $RPM_BUILD_ROOT/usr/share/services cp $RPM_BUILD_ROOT/usr/share/apps/kaffeine/rtsp.protocol $RPM_BUILD_ROOT/usr/share/services #mkdir -p $RPM_BUILD_ROOT/usr/lib/firefox/plugins #cp $RPM_BUILD_ROOT/usr/lib/kaffeineplugin/kaffeineplugin.so $RPM_BUILD_ROOT/usr/lib/firefox/plugins cp % $RPM_BUILD_ROOT/usr/share/apps/kaffeine rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine.png
rpmbuild rpm 1. RPM Linux RPM UNIX RPM RPM Red Hat Package Manager Red Hat
MAN
Red Hat Linux redhat GPL RPM RPM RPM
Linux RPM RPM
RPM RPM
RPM
RPM RPM
RPM rpm
Distributable GPL Group
Amusements/Games
o
m
w
w
w
w
PD
F -X C h a n ge
PD
F -X C h a n ge
O W !
N
y
bu
to
k
lic
C
m
C
lic
k
to
bu
y
N
.c
O W !
w
.d o
w
o
.d o
c u -tr a c k
c u -tr a c k
spec
相关文档
最新文档