Linux教程之CentOS体系下软件包的制造***和历程
欢迎大家来到仓酷云论坛!总的情形下Linux下软件装置次要有三种体例:一种是源码装置,必要用户本人手动编译
另外一种是RPM包(RedHatLinuxPacketManager),经由过程RPM下令就能够完成装置
另有一种为*.bin文件,装置***与Windows下的装置历程相似
一般情形下Linux装置软件次要经由过程以下两种体例
①文件名形如***.i386.rpm,软件包以二进制情势公布.
②文件名形如***.tar.gz,软件包多以源码的情势公布.
Linux软件保证理能够分为三类:二进制包的办理,源代码包的办理,剧本装置
别的值得注重的是今朝存在各类Linux的刊行版猎取和装置软件的体例也有良多比方
【】redhat/centos的yum装置(有专门的镜像源)
【】Ubuntu/Fedora/Debian的sudoapt-get合用于deb包举行办理装置
【】也有的软件是经由过程刻盘加密的情势然落后行装置的(比方cnyunwei)
【】在体系运维办理职员方面也有经由过程ssh、C/C++言语大概py实行的一些软件下令举行主动化办理的使用,这里就不做具体先容了。
上面有一张图能够明晰地暗示linux软件使用的架构干系:
在Linux启动的时分。起首会启动内核(kernel),内核是一段盘算机步伐,这个步伐间接办理办理硬件,包含CPU、内存空间、硬盘接口、收集接口等等。一切的盘算机操纵都要经由过程内核传送给硬件。我们能够看到,Linux使用kernel完成软硬件的对话。经由过程体系挪用的这个主要的接口,Linux将下层的使用与上层的kernel完整分别开,为步伐员埋没了底层的庞大性(响应的,也进步了下层使用的可移植性)。当我们在晋级kernel的时分,也能够坚持体系挪用的语句稳定,从而让下层使用不感觉到上层的改动。库函数使用体系挪用制造出模块化的功效,而shell则供应了一个用户界面,并让我们能够使用shell的语法编写剧本,以整合步伐。有了这些头脑我们能够疾速地懂得linux的软件使用的装置和事情道理,也因而为了便利和猎取更多企业使用我们必要在linux体系上开辟而且经由过程源码编译的体例制造各类软件包从而为信息化时期办事。
本文次要先容源码装置与RPM包的装置
源码包和贸易软件包依据各个公司或作者的实践情形动身(能够是tar等格局的紧缩包,也能够是bin的源步伐,能够是已编译好了的间接拿来运转的文件,也能够是光盘假造化文件等其他介质来制造公布的iso文件等)封装成一种特定的格局公布从而举行响应的软件办事。实在经由过程yum大概makeinstall下令装置的软件在体系城市主动天生rpm包(只是参数和功效模块差别和松散的)
简介:
RPM(RedHatPackageManager,红帽子软件保证理器)用于软件包的装置、查询、晋级、校验、卸载,和天生.rpm格局的软件包RPM的利用前
挂载linux体系(centos4为例)的装置光盘,固然也可在网高低载收费的RPM包.
#mount/dev/cdrom---挂载光盘
#cd/media/cdrom/CentOS/RPMS---进进光盘中RPM包的目次(能够经由过程#mount下令来检察光盘的挂载点一样平常会在最初一行显现)
#ls
1、源码包装置
1、*.src.rpm情势的源代码软件包
用法:
装置:rpmCrebuild*.src.rpm
cd/usr/src/dist/RPMS
RpmCivh*.rpm
卸载:rpmCepackagename
2、.tar.gz,*.tgz,*.bz2情势软件包的装置
起首举行解压,下令以下
tarzxvf*.tar.gz
tarxvfz*.tgz
tarxvfj*.tar.bz2
解压以后进进解压目次,然落后行以下操纵(一样平常情形,详细看软件包的文件名)
设置:./configure
编译:make
装置:makeinstall
卸载:makeuninstall
源码装置有必定的难度,分歧的软件大概有分歧的装置,一样平常在解压以后应当先浏览申明文档,依照申明举行装置,下面说的只是一样平常情形。
2、RPM包装置
RPM装置包格局是由Redhat公司提出的,年夜年夜的简化了Linux下软件的装置,起首先容一下通用选项。
-v:显现附加信息
-vv:显现调试信息
--rootdirectory:让RPM以directory作为根目次,如许预装置步伐和后装置步伐城市装置到这个目次下。
1、装置:rpmCi<options>file.rpm
Options:
h:装置时输入hash暗号
test:只对装置举行测试,不真正装置
--persent:以百分比情势显现装置进度
--excludedocs:不装置软件包中的文档
--replacepkgs:强迫从头装置
--replacefiles:交换属于别的软件包的文件
--force:疏忽软件包及文档抵触
--ignorearch:不校验软件包布局
--ignoreos:不反省软件包运转的操纵体系
--nodeps:不反省依附性干系
--noscripts:不运转预装置和后装置剧本步伐
2、删除 rpmCe<option>pkgname
Option:
--test:只做删除测试,不真正删除
--noscripts:不运转预装置和后装置剧本步伐
--nodeps:不反省依附性
注重:pkgname是软件包的名字,不是rpm包名字,而是装置后软件包的名字,能够用查询下令来查询软件包名。
3、晋级 rpmCU(大概―upgrade)<option>file.rpm
Option:
基础与装置时的option一样,有几个特别的:
--oldpackage:同意一个旧版本
4、查询 rpmCq(大概--query)<option>
Option:
-pPACKAGE_FILE:查询软件包的文件
-fFIEL:查询FILE属于哪一个软件包
-a:查询一切装置的软件包
-g group:查询属于group组的软件包
--whatproVidesCAPABILITY:查询供应了CAPABILITY功效的软件包
--whatrequiresCAPABILITY:查询一切必要CAPABILITY功效的软件包
-i:显现软件包的提要信息
-l:显现软件包中的文件列表
-c:显现设置文件列表
-s:显现文件列表
-scripts:显现装置、卸载,校验剧本
--qf:以用户指定的体例查询
--dump:显现每一个文件的校验信息
--proVides:显现软件包供应的功效
-R:显现软件包必要的功效
5、校验已装置的软件包rpmCV(orCverify,orCy)<option>
Option选项与别的下令的相似
6、校验软件包中的文件rpmCK(orCchecksig)<option>file.rpm
Option:
-v:显现版本信息
-vv:显现调试信息
--rcfile FILELIST:设置rpmrc文件为FILELIST
7、别的RPM选项
--rebuilddb:重修RPM材料库
--initdb:创立一个新的RPM材料库
--quiet:尽量地削减输入
--help:显现匡助文件
--version:显现RPM以后版本
下面只是对经常使用选项的总结,详细另有甚么成绩,能够用manrpm下令举行检察,官方文件永久最好的先生。
3、*.bin格局装置文件的装置
只需双击或单击*.bin文件就能够依据提醒装置了,不再敷述。
要想制造一个RPM格局的软件包,必要编写软件包形貌文件。其尺度定名格局为:软件名-版本号-释出号.spec(如今年夜多情形下都是间接用:软件名.spec),这个文件,具体形貌了有关该软件包的诸多信息,如软件名,版本,种别,申明择要,创立时要实行甚么指令,装置时要实行甚么操纵,和软件包所要包括的文件等等。有了这个文件,RPM就能够制造出响应的包裹文件来。固然如今也有比方Sourcerpm如许开源的包制造帮助工具只需一个步伐源便可经由过程导游下一步便可制造。
复杂的一个制造例子:
实在最好的举措是做个软件包。我记得rpm和debian都有疾速打包的开源软件能够间接拿来利用便可。
eg>>将nginx的tar包制造为RPM包
1.下载nginx的源码包
2.将文件放到/usr/src/redhat/SOURCES/目次下
3.编写SPEC文件
#vinginx-0.8.35.spec
Summary:thefirstrpmpackage
Name:nginx
Version:0.8
Release:35
Vendor:chenwei01@corp.the9.com
License:Share
Group:Applications/Text
Source0:nginx-0.8.35.tar.gz
%description
mytestnginx
%prep
tar-zxvf$RPM_SOURCES_DIR/nginx-0.8.35.tar.gz
%build
cd$RPM_BUILD_DIR/nginx-0.8.35
./configure
make
%install
cd$RPM_BUILD_DIR/nginx-0.8.35
makeinstall
%clean
rm-rf$RPM_BUILD_DIR/nginx-0.8.35
%files
%defattr(-,root,root)
/usr/local/nginx/sbin/nginx
%doc$RPM_BUILD_DIR/nginx-0.8.35/README
4.制造RPM包
#rpmbuild-banginx-0.8.35.spec
若运转没有毛病,则发生/usr/src/redhat/RPMS/i386/nginx-0.8-35.i386.rpm和/usr/src/redhat/SRPMS/nginx-0.8-35.src.rpm两个文件。
总结:rpm包怎样制造之团体履历
一RPM先容
RPM前是RedHatPackageManager的缩写,本意是RedHat软件保证理,望文生义是RedHat奉献出来的软件保证理;如今应为RPMPackageManager的缩写。在Fedora、Redhat、Mandriva、SuSE、YellowDog等支流刊行版本,和在这些版本基本上二次开辟出来的刊行版接纳;RPM包中除包含步伐运转时所必要的文件,也有别的的文件;一个RPM包中的使用步伐,偶然除本身所带的附加文件包管其一般之外,还必要别的特定版本文件,这就是软件包的依附干系。
RPM可让用户间接以binary体例装置软件包,而且可替用户查询是不是已装置了有关的库文件;在用RPM删除步伐时,它又会伶俐地扣问用户是不是要删除有关的步伐。假如利用RPM来晋级软件,RPM会保存本来的设置文件,如许用户就不必从头设置新的软件了。RPM保存一个数据库,这个数据库中包括了一切的软件包的材料,经由过程这个数据库,用户能够举行软件包的查询。RPM固然是为Linux而计划的,可是它已移值到SunOS、Solaris、AIX、Irix等别的UNIX体系上了。RPM遵守GPL版权协定,用户能够在切合GPL协定的前提下自在利用及传布RPM。
二RPM包分类
我团体以为rpm分为两年夜类,
1二进制类包,包含rpm装置包(一样平常分为i386和x86等几种)和调式信息包等。
2源码类包,源码包和开辟包应当回位此类。
它们之间的干系是,开始我们按rpm打包请求改革软件项目源码,当切合请求以后就能够利用rpmbuild下令来天生分歧的rpm包,同时天生的包之间版本是间接对应的,好比不异的源码包将天生完整不异的二进制rpm包。当你在网上查找rpm包时,一样平常你能够在RPMS目次中找到预编译的二进制包,而源码包则会在SRPMS目次内。
我们这里提到的RPM制造就是指改革软件源代码使之切合RPM打包请求的历程,这也能够等价为RPM源码包的制造历程,由于当你有了源码包就能够间接编译失掉二进制装置包和其他恣意包。
三RPM包制造先容
RPM包的制造,便是RPM源码包的制造。
这里我想说说RPM包事情的道理,这将有助于周全的懂得RPM保证理体系的常识。
RPM是为办理源码包不容易装置(必要编译)和软件包互相之间依附(是RPM保证理器能够必定水平办理依附成绩)成绩,它经由过程在探测源码包在build和install阶段的举措取得终极天生的必要装置的体系里的文件,并纪录下一些需要的操纵(好比装置完成后实行某项操纵),然后把此构成为一个全体,当在用户装置此包时把后面取得的一切成绩和纪录的一切操纵原底本本的感化的实践体系上。
为一个一般的源码打RPM包,必要上面一些操纵,起首必要对项目标Makefile作需要的改革以撑持RPM打包操纵(实践上此操纵不是相对的,SPEC文档和Makefile的是和谐一致事情的,只需他们之间共同好了其他都无所谓,我们一样平常只是保举人人只管按行业尺度标准操纵罢了);其次是针对以后项目撰写SPEC文档,SPEC文档包含了RPM打包历程的操纵内容和重生成的RPM包的基础信息等,它的感化工具是打包步伐rpmbuild。
四RPM包制造历程
1筹办打包情况
fedora体系下利用以下下令装置rpmbuild
#yuminstallrpmbuild
rpmbuild的事情目次以下,
~/rpmbuild
~/rpmbuild/SOURCES
~/rpmbuild/SPECS
~/rpmbuild/BUILD
~/rpmbuild/RPMS
~/rpmbuild/RPMS/i386
~/rpmbuild/SRPMS
假如你的用户目次主目次下没有相似目次布局,你能够经由过程一个工具软件来主动设置和天生,以下。
#yuminstallrpmdevtools
下了运转主动设置下令主动天生如上目次,并设置一些需要操纵。
#rpmdev-setuptree
rpmdev-setuptree下令默许将再以后用户主目次下创立一个RPM构建根目次布局,
假如必要改动次默许地位,能够修正设置文件:~/.rpmmacros中变量_topdir对应的值便可。
一样平常rpmbuild会在以后用户的主目次下主动创建如上目次布局,假如在你对使用户的构建目次中没有主动创建如上目次,你能够经由过程手动体例创建。下面目次的利用是如许分派的,SOURCES安排打包资本,包含源码打包文件和补钉文件等;SPECS目次安排SPEC文档;BUILD打包过程当中的事情目次;RPMS目次寄存天生的二进制包,RPM包依据硬件平台分歧分类,i386暗示天生i386布局的包将寄存在该目次下;SRPMS目次寄存天生的源码包。
2撰写SPEC文档
SPEC撰写是打包RPM的中心,也算是最难的一步,幸亏我们能够从参照一个复杂的模板文件入手下手,在能够完成基础功效的基本上再一步一步的扩大文档内容,直至完整到达请求。上面是一个复杂的SPEC文档,个中包含了一些申明信息(注:#前面的内容为申明信息),该SPEC文档是对一个测试的软件项目hellorpm写的,hellorpm软件包编译后唯一一个实行文件、一个手册文件和一个项目说文件。
hellorpm.spec文档的内容以下:
-----------------------------------------------------------------------------
#软件包扼要先容
Summary:hellorpmisatestprogram。
#软件包的名字
Name:hellorpm
#软件包的主版本号
Version:2.2.6
#软件包的次版本号
Release:1
#源代码包,默许将在下面提到的SOURCES目次中寻觅
Source0:%{name}-%{version}.tar.gz
#受权协定
License:GPL
#界说一时构建目次,这个地点将作为一时装置目次在前面援用
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
#软件分类
Group:Development/Tools
#软件包的内容先容
%description
Thehellorpmprogramisatest.
#暗示预操纵字段,前面的下令将在源码代码BUILD前实行
%prep
#构建BUILD情况,将解压源码紧缩包到BUILD目次
%setup-q
#BUILD字段,将经由过程间接挪用源码目次中主动构建工具完成源码编译操纵
%build
#挪用源码目次中的configure下令
./configure
#在源码目次中实行主动构建下令make
make
#装置字段
%install
#挪用源码中装置实行剧本
makeDESTDIR=$RPM_BUILD_ROOTinstall
#文件申明字段,声明过剩大概短少都将大概堕落
%files
#设置文件权限属性
%defattr(-,root,root)
#声明/usr/local/bin/hellorpm将呈现在软件包中
/usr/local/bin/hellorpm
#声明并设置文件属性
%doc%attr(0444,root,root)/usr/local/man/man1/hellorpm.1
#同上,声明文档文件
%docREADME
-------------------------------------------------------------------------------
这个文档必要申明的一点:
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
下面BuildRoot变量暗示的是源码的一时依照目次,rpmbuild就是经由过程次目次取得将要依照到体系中的一切文件,而在SPEC文档前面makeinstall下令中的参数DESTDIR=$RPM_BUILD_ROOT便是对该参数的援用,这个参数将传给Makefile文件一告知主动构建工具应当装置文件那边(实践上我再前文提到过的Makefile必要作一些改革以顺应RPM的构建就包含此操纵,你的Makefile文件中最少要晓得在RPM构建过程当中援用此参数的值往把持装置操纵的方针)。
如上一个复杂的SPEC文档撰写完成,上面把一个名为hellorpm-2.2.6.tar.gz的源码紧缩文件放到
rpmbuild根目次下的SOURCES目次下(注,确保此回档文件解压后的目次为hellorpm-2.2.6,不然会有成绩)。
到此一个完全的rpm打包情况已构建完成,上面我们就能够入手下手构建二进制和源代码RPM包。
3构建RPM包
构建RPM包是有下令rpmbuild在SPEC的引导下完成。
入手下手构建操纵,起首进进到以后用户的rpmbuild根目次(即下面提到的目次情况)。
#cd~/rpmbuild/
实行怎样下令,-ba暗示buildall,即天生包含二进制包和源代码包的一切RPM包,上去假如一般的话,rpmbuild将一般加入,同时在RPMS目次和SRPMS目次中将天生对应的RPM包。
#rpmbuild-baSPECS/hellorpm.spec
这里仅仅先容了一个最复杂软件的最复杂的RPM的打包操纵历程,诸如带有同享文件的必要举行庞大设置的具有庞大依附干系的等等的项目标打包和前期的保护,包含补钉的制造我将鄙人来的工夫完成增补更新,明天工夫不早了,该歇息了!
注:费了泰半夜的工夫,弄出这么个使人不中意的文档,我思索着,如许做有几意义呢?不敢反复创造轮子的,站到伟人的肩膀你才干看得更远,是如许吗?是否是下周入手下手立个企图,每周最少翻译三篇fedora官网的文档给本人练练手。
[参考材料]
http://www.linuxsir.org/main/?q=node/50RPM的先容和使用(北南兄)
http://www.ckuyun.com/developerworks/cn/linux/management/package/rpm/part3/用RPM打包软件
http://hlee.javaeye.com/blog/343499RPM包rpmbuildSPEC文件深度申明(保举扫瞄进修)
http://bbs.51cto.com/thread-921627-1.htmlrpm包的制造复杂化
http://www.ckuyun.com/Quains/archive/2012/01/03/2311049.htmlLinux软件保证理案例
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!
Linux教程之CentOS体系下软件包的制造***和历程
写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。 写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。 尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。 学习Linux,应该怎样学,主要学些什么,一位Linux热心学习者,一段学习Linux的风云经验,历时十二个小时的思考总结,近十位网络Linux学习者权威肯定,为您学习Linux指明方向。 工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。 任何人都可以根据自己的喜好来定制适合自己的操作系统,Linux?是抢占式多任务多用户操作系统. 生成新的unispimsp.ksc。”另外得到回复后如果问题解决,向帮助过你的人发个说明,让他们知道问题是怎样解决的。 对于英语不是很好的读者红旗 Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。 学习Linux应具备的。[书籍+网络资源]
页:
[1]