逍遥一派 发表于 2015-1-14 20:18:48

带来一篇centos浅谈之rpm和rpmbuild

欢迎大家来到仓酷云论坛!1、简介


RPM(RedHatPackageManager)是用于Linux分发版(distribution)的最多见的软件保证理器。RPM包定名体例:name-version-release.architecture.rpm。RPM有五种基础的操纵功效:装置、卸载、晋级、查询和考证。这五种基础功效的完成仅仅必要用rpm+选项+rpm包就可以容易地完成。
假如想公布rpm格局的源码包大概是二进制包,就要利用rpmbuild工具(rpm最新打包工具)。rpmbuild依据当地源码包的乐成编译装置而写了spec文件(该文件要以.spec停止)。
2、详解

1、RPM

(1)rpm二进制包(.rpm文件)

经常使用下令组合:
viewplaincopy





[*]-ivh:装置显现装置进度--install--verbose--hash
[*]-Uvh:晋级软件包--Update;
[*]-qpl:列出RPM软件包内的文件信息;
[*]-qpi:列出RPM软件包的形貌信息;
[*]-qf:查找指定文件属于哪一个RPM软件包;
[*]-Va:校验一切的RPM软件包,查找丧失的文件;
[*]-e:删除包

1)装置:
rpm-iyour-package.rpm(your-package.rpm是rpm包的文件名),装置过程当中大概呈现上面的告诫大概提醒:..conflictwith...,则多是要装置的包里有一些文件大概会掩盖现有的文件,缺省时如许的情形下是没法准确装置的能够用rpm-i--force强迫装置便可。若呈现...isneededby...和...isnotinstalled...此包必要的一些软件你没有装置能够用rpm-i--nodeps能够疏忽一切依附干系和文件成绩,甚么包都能装置上,但这类强迫装置的软件包不克不及包管完整发扬功效。
2)查询:
rpm-qa将列出一切装置过的包,rpm-qa|grephttpd#[搜刮指定rpm包是不是装置]--all搜刮*httpd*
rpm-qlhttpd#[搜刮rpm包]--list一切文件装置目次
whichmysql#查找rpm包中的文件装置到那边往了
rpm-qpiLinux-1.4-6.i368.rpm #[检察rpm包]--query--package--installpackage信息
rpm-qpfLinux-1.4-6.i368.rpm #[检察rpm包]--file
rpm-qpRfile.rpm       #[检察包]依附干系
查找rpm中包括哪些文件:一个没有装置过的软件包,利用rpm-qlp*.rpm;一个已装置的软件包,可使用rpm-ql*.rpm。
猎取关于一个软件包的信息:一个没有装置过的软件包,利用rpm-qlp*.rpm;一个已装置过的软件包,利用rpm-qi*.rpm。
rpm-qf`which步伐名`前往软件包的全名
rpm-qif`which步伐名`前往软件包的有关信息
rpm-qlf`which步伐名`前往软件包的文件列表
起首取得这个步伐的完全路径,能够用whereis大概which,然后利用rpm-qf比方:
#whereisftptop
ftptop:/usr/bin/ftptop/usr/share/man/man1/ftptop.1.gz
#rpm-qf/usr/bin/ftptop
proftpd-1.2.8-1
#rpm-qf/usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt
proftpd-1.2.8-1
3)删除:
rpm-efile.rpm#[删除一个rpm包]--erase
偶然会呈现一些毛病大概告诫:...isneededby...这申明这个软件被其他软件必要,不克不及任意卸载,能够用rpm-e--nodeps强迫卸载。
4)晋级:
rpm-Uvhfile.rpm#[晋级一个rpm]--upgrade
5)考证:
rpm–Vfile.rpm。对已装置了的步伐举行考证。
(2)rpm源码包(.src.rpm文件)

.src.rpm开头的文件是由软件的源代码包装而成的,用户要装置这类RPM软件包,必需利用下令:
rpmbuild --recompile vim-4.6-4.src.rpm#这个下令会把源代码解包并编译、装置它,假如用户利用下令。
rpmbuild --rebuild vim-4.6-4.src.rpm  #在装置完成后,还会把编译天生的可实行文件从头包装成i386.rpm的RPM软件包。
一样平常会接纳的***:
1.实行rpm-iyou-package.src.rpm
2.cd/usr/src/redhat/SPECS
3.rpmbuild-bbyour-package.specs一个和你的软件包同名的specs文件,这时候在/usr/src/redhat/RPM/i386/(依据详细包的分歧,也多是i686,noarch等等)这个目次下,有一个新的rpm包,这个是编译好的二进制文件。
实行rpm-inew-package.rpm便可装置完成。
大概:
1.实行rpm-iyour-package.src.rpm
2.cd/usr/src/redhat/SPECS
3.rpmbuild-bpyour-package.specs一个和你的软件包同名的specs文件
4.cd/usr/src/redhat/BUILD/your-package/一个和你的软件包同名的目次
5../configure这一步和编译一般的源码软件一样,能够加上参数
6.make
7.makeinstall
(3)不装置猎取rpm包中的文件

利用工具rpm2cpio和cpio,下令格局:rpm2cpiofile.rpm|cpio-div
rpm2cpiofile.rpm|cpio-vi
rpm2cpiofile.rpm|cpio-idmv
rpm2cpiofile.rpm|cpio--extract--make-directories
个中参数i和extract不异,暗示提取文件;v暗示唆使实行历程;d和make-directory不异,暗示依据包中文件本来的路径创建目次;m暗示坚持文件的更新工夫。
一样合用于.src.rpm源码包。
(4)rpm的设置文件

RPM保证理的设置文件是rpmrc,能够在本人的体系中找到。
#locaterpmrc
/usr/lib/rpm/rpmrc
/usr/lib/rpm/redhat/rpmrc
也能够经由过程rpm--showrc。


2、RPMBUILD


它是用来唆使转换的源码编译成二进制文件的包,在centos下默许目次为以后用户下,如/root。由于体系有默许的rpm构建的目次,若要从头指定rpm构建的目次地位,必要在以后用户目次下建一个.rpmmacros文件,经由过程变动%_topdir设置来告知RPM查找和创立分歧目次会合的文件,如%_topdir/home/your_userid/rpm,然先手动创立如许一个完全的目次树:~/rpm~/rpm/SOURCES~/rpm/SPECS~/rpm/BUILD~/rpm/RPMS~/rpm/RPMS/i386~/rpm/SRPMS(也可运转时步伐主动创立,好比恣意实行个spec文件,rpmbuild-bpfile.spec固然实行失利但会创立目次)。
(1)目次

此次在以后root用户动手动创立目次,mkdir–p/root/rpmbuild,mkdir-pv~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}。




--BUILD#编译之前,如解压包后寄存的路径
--BUILDROOT#编译后寄存的路径
--RPMS#打包完成后rpm包寄存的路径
--SOURCES#源包所安排的路径
--SPECS#spec文档安排的路径
--SPRMS#源码rpm包安排的路径
注:一样平常我们都把源码打包成tar.gz格局然后寄存于SOURCES路径下(rpm-ivh+源码包,会主动解压到SOURCES目次下),而在SPECS路径下编写spec文档,经由过程下令打包后,默许会把打包后的rpm包放在RPMS下,而源码包会被安排在SRPMS下
(2)rpmbuild相干下令

基础格局:rpmbuild,以下顺次列出三种分歧文件
1.从spec文档创建有以下选项:
-bp#只实行spec的%pre段(解开源码包并打补钉,即只做筹办)
-bc#实行spec的%pre和%build段(筹办并编译)
-bi#实行spec中%pre,%build与%install(筹办,编译并装置)
-bl#反省spec中的%file段(检察文件是不是完全)
-ba#创建源码与二进制包(经常使用)
-bb#只创建二进制包(经常使用)
-bs#只创建源码包
2.从tarball包创建,与spec相似
-tp#对应-bp
-tc#对应-bc
-ti#对应-bi
-ta#对应-ba
-tb#对应-bb
-ts#对应-bs
3.从源码包创建
--rebuild#创建二进制包,通-bb
--recompile#同-bi
4.其他的一些选项
--buildroot=DIRECTORY#断定以root目次创建包
--clean#完成打包后扫除BUILD下的文件目次
--nobuild#不举行%build的阶段
--nodeps#不反省创建包时的联系关系文件
--nodirtokens
--rmsource#完成打包后扫除SOURCES
--rmspec#完成打包后扫除SPEC
--short-cricuit
--target=CPU-VENDOR-OS#断定包的终极利用平台

(3)spec文档的编写
Name:软件包的称号,前面可以使用%{name}的体例援用,详细下令需跟源包分歧
Summary:软件包的内容提要
Version:软件的实践版本号,详细下令需跟源包分歧
Release:公布序列号,详细下令需跟源包分歧
Group:软件分组,倡议利用尺度分组
-----------------------------------------
软件包所属种别,详细种别有:
Amusements/Games(文娱/游戏)
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(文档)
SystemEnvironment/Base(体系情况/基本)
SystemEnvironment/Daemons(体系情况/保卫)
SystemEnvironment/Kernel(体系情况/内核)
SystemEnvironment/Libraries(体系情况/函数库)
SystemEnvironment/Shells(体系情况/接口)
UserInte***ce/Desktops(用户界面/桌面)
UserInte***ce/X(用户界面/X窗口)
UserInte***ce/XHardwareSupport(用户界面/X硬件撑持)
----------------------------------------------------
License:软件受权体例,一般就是GPL
Source:源代码包,能够带多个用Source1、Source2等源,前面也能够用%{source1}、%{source2}援用
BuildRoot:这个是装置或编译时利用的“假造目次”,思索到多用户的情况,一样平常界说为:
%{_tmppath}/%{name}-%{version}-%{release}-root

%{_tmppath}/%{name}-%{version}-%{release}-buildroot-%(%{__id_u}-n}
该参数十分主要,由于在天生rpm的过程当中,实行makeinstall时就会把软件装置到上述的路径中,在打包的时分,一样依附“假造目次”为“根目次”举行操纵。
前面可以使用$RPM_BUILD_ROOT体例援用。
URL:软件的主页
Vendor:刊行商或打包构造的信息,比方RedFlagCo,Ltd
Disstribution:刊行版标识
Patch:补钉源码,可以使用Patch1、Patch2等标识多个补钉,利用%patch0或%{patch0}援用
Prefix:%{_prefix}这个次要是为懂得决从此装置rpm包时,其实不必定把软件装置到rpm中打包的目次的情形。如许,必需在这里界说该标识,并在编写%install剧本的时分援用,才干完成rpm装置时从头指定地位的功效
Prefix:%{_sysconfdir}这个缘故原由和下面的一样,但因为%{_prefix}指/usr,而关于其他的文件,比方/etc下的设置文件,则必要用%{_sysconfdir}标识
BuildArch:指编译的方针处置器架构,noarch标识不指定,但一般都是以/usr/lib/rpm/marcros中的内容为默许值
Requires:该rpm包所依附的软件包称号,能够用>=或<=暗示年夜于或小于某一特定版本,比方:
libpng-devel>=1.0.20zlib
※“>=”号双方需用空格离隔,而分歧软件称号也用空格分隔
另有比方PreReq、Requires(pre)、Requires(post)、Requires(preun)、Requires(postun)、BuildRequires等都是针对分歧阶段的依附指定
Provides:指明本软件一些特定的功效,以便其他rpm辨认
Packager:打包者的信息
%description软件的具体申明
#spec剧本主体
spec剧本的主体中也包含了良多关头字和形貌,上面会逐一枚举。我会把一些出格必要寄望的中央标注出来。
%prep预处置剧本
%setup-n%{name}-%{version}把源码包解压并放好
注:可依据你的源码的名字格局,来确认解压后名字的格局,不然大概招致install的时分找不到对应的目次
一般是从/usr/src/redhat/SOURCES里的包解压到/usr/src/redhat/BUILD/%{name}-%{version}中。
一样平常用%setup-c就能够了,但有两种情形:一就是同时编译多个源码包,二就是源码的tar包的称号与解压出来的目次纷歧致,此时,就必要利用-n参数指定一下了。
%patch打补钉
一般补钉城市一同在源码tar.gz包中,或放到SOURCES目次下。一样平常参数为:
%patch-p1利用后面界说的Patch补钉举行,-p1是疏忽patch的第一层目次
%Patch2-p1-b***.patch打上指定的补钉,-b是指天生备份文件
◎增补一下
%setup不加任何选项,仅将软件包翻开。
%setup-nnewdir将软件包解压在newdir目次。
%setup-c解紧缩之前先发生目次。
%setup-bnum将第num个source文件解紧缩。
%setup-T不利用default的解紧缩操纵。
%setup-T-b0将第0个源代码文件解紧缩。
%setup-c-nnewdir指定目次称号newdir,并在此目次发生rpm套件。
%patch最复杂的补钉体例,主动指定patchlevel。
%patch0利用第0个补钉文件,相称于%patch?p0。
%patch-s不显现打补钉时的信息。
%patch-T将一切打补钉时发生的输入文件删除。
%build入手下手构建包
在/usr/src/redhat/BUILD/%{name}-%{version}目次中举行make的事情,罕见写法:
make%{?_smp_mflags}OPTIMIZE="%{optflags}"
都是一些优化参数,界说在/usr/lib/rpm/marcros中
%install入手下手把软件装置到假造的根目次中
在/usr/src/redhat/BUILD/%{name}-%{version}目次中举行makeinstall的操纵。这个很主要,由于假如这里的路径不合错误的话,则上面%file中寻觅文件的时分就会失利。罕见内容有:
%makeinstall这不是关头字,而是rpm界说的尺度宏下令。也能够利用非尺度写法:
makeDESTDIR=$RPM_BUILD_ROOTinstall

makeprefix=$RPM_BUILD_ROOTinstall
必要申明的是,这里的%install次要就是为了前面的%file办事的。以是,还可使用惯例的体系下令:
install-d$RPM_BUILD_ROOT/#创建目次
cp-a*$RPM_BUILD_ROOT/
%clean清算一时文件
一般内容为:
援用
["$RPM_BUILD_ROOT"!="/"]&&rm-rf"$RPM_BUILD_ROOT"
rm-rf$RPM_BUILD_DIR/%{name}-%{version}
※注重辨别$RPM_BUILD_ROOT和$RPM_BUILD_DIR:
$RPM_BUILD_ROOT是指开首界说的BuildRoot,而$RPM_BUILD_DIR一般就是指/usr/src/redhat/BUILD,个中,后面的才是%file必要的。
%prerpm装置前实行的剧本
%postrpm装置后实行的剧本
%preunrpm卸载前实行的剧本
%postunrpm卸载后实行的剧本
%preun%postun的区分是甚么呢?
前者在晋级的时分会实行,后者在晋级rpm包的时分不会实行
%files界说那些文件或目次会放进rpm中
这里会在假造根目次下举行,万万不要写相对路径,而使用宏或变量暗示绝对路径。假如形貌为目次,暗示目次中除%exclude外的一切文件。
%defattr(-,root,root)指定包装文件的属性,分离是(mode,owner,group),-暗示默许值,对文本文件是0644,可实行文件是0755
%exclude列出不想打包到rpm中的文件
※当心,假如%exclude指定的文件不存在,也会堕落的。
%changelog变动日记
(4)spec文档中经常使用的几个宏(变量)

1.RPM_BUILD_DIR:/usr/src/redhat/BUILD
2.RPM_BUILD_ROOT:/usr/src/redhat/BUILDROOT
3.%{_sysconfdir}:/etc
4.%{_sbindir}:/usr/sbin
5.%{_bindir}:/usr/bin
6.%{_datadir}:/usr/share
7.%{_mandir}:/usr/share/man
8.%{_libdir}:/usr/lib64
9.%{_prefix}:/usr
10.%{_localstatedir}:/usr/var(5)创立RPM包的例子

要创立的rpm包为:test-1.0.1-1.el6.i686.rpm,打包的紧缩文件为:test-1.0.1.tar.gz。
1.把test-1.0.1.tar.gz拷贝到SOURCE目次底下。2.转至SPECS目次底下,编写test.spec形貌文件,这个文件是创立rpm包最主要的局部,它会制订rpm包里的软件的装置目次,和装置软件前后要注重的成绩,软件的依附及体系请求。
3.编译RPM,实行下令:rpmbuild&ndash;batest.spec。如许今后,就入手下手创立rpm包。
4.实行rpmbuild&ndash;batest.spec后,会起首把test-1.0.1.tar.gz解紧缩到BUILD目次,BUILDROOT这个目次用来寄存实行时寄存的一时文件夹,这个目次也很主要,必要把在此目次创建相干目次和拷贝相干文件信息的剧本写进test.spec文件里,以防编译堕落,没法天生RPM包。乐成实行完成以后,会在RPMS这个目次天生i686/test-1.0.1-1.el6.i686.rpm文件。
以下图:



(6)附加SPEC文件

文件是官方公布的anaconda.spec,Anaconda是RedHat、CentOS、Fedora等Linux的装置办理步伐,今后另有很主要的使用。剖析该文件对体系的定制很有匡助,因文件内容太长,删除前面不太主要的日记局部。

<divclass="dp-highlighterbg_cpp"style="font-family:Consolas,CourierNew,Courier,mono,serif;width:700.90625px;overflow:auto;padding-top:1px;color:rgb(51,51,51);line-height:26px;margin:18px0px!important;background-color:rgb(231,229,220);">viewplaincopy




<olclass="dp-cpp"start="1"style="padding-right:0px;padding-left:0px;border:none;list-style-position:initial;list-style-image:initial;color:rgb(92,92,92);margin:0px0px1px45px!important;background-color:rgb(255,255,255);"><liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">%definelivearches%{ix86}x86_64ppcppc64<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">%define_libdir%{_prefix}/lib<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;"><listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">Summary:Graphicalsysteminstaller<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">Name:anaconda<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">Version:13.21.176<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">Release:1%{?dist}<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">License:GPLv2+<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">Group:Applications/System<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">URL:http://fedoraproject.org/wiki/Anaconda<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;"><listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">#TogenerateSource0do:<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">#gitclonehttp://git.fedorahosted.org/git/anaconda.git<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">#gitcheckout-barchive-branchanaconda-%{version}-%{release}<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">#./autogen.sh<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">#./configure<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">#makedist<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">Source0:%{name}-%{version}.tar.bz2<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">Patch1000:anaconda-centos-installclass.patch<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">Patch1001:anaconda-centos-upgrade-from-centos.patch<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">Patch1002:anaconda-centos-droprepos.patch<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);"><liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u}-n)<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);"><liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">#Versionsofrequiredcomponents(donesowemakesurethebuildrequires<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">#matchtherequiresversionsofthings).<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">%definedmver1.02.17-6<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">%definegettextver0.11<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">%definegenisoimagever1.1.9-4<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">%defineintltoolver0.31.2-3<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">%definelibnlver1.0<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">%definelibselinuxver1.6<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">%definepykickstartver1.74.8<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">%definerpmpythonver4.2-0.61<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">%defineslangver2.0.6-2<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">%defineyumver2.9.2<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">%definepartedver1.8.1<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">%definepypartedver3.0<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">%definesyscfgdatever1.9.48<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">%definepythonpyblockver0.45-2<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">%definee2fsver1.41.0<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">%definenmver1:0.7.1-3.git20090414<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">%definedbusver1.2.3<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">%definecreaterepover0.4.7<liclass="alt"style="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;color:inherit;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;">%defineyumutilsver1.1.11-3<listyle="border-style:nonenonenonesolid;border-left-width:3px;border-left-color:rgb(108,226,108);list-style:decimal-leading-zerooutside;line-height:18px;margin:0px!important;padding:0px3px0px10px!important;background-color:rgb(248,248,248);">%defineiscsiver6.2.0.870-3

分手快乐 发表于 2015-1-15 20:53:00

带来一篇centos浅谈之rpm和rpmbuild

老实说,第一个程序是在C中编译好的,调试好了才在Linux下运行,感觉用vi比较麻烦,因为有错了不能调试,只是提示错误。

愤怒的大鸟 发表于 2015-1-20 12:34:35

然我们对Linux的学习首先是通过对它的产生,发展,到今天仍然在不断完善开始的。

因胸联盟 发表于 2015-1-29 07:11:09

熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。

活着的死人 发表于 2015-2-6 02:12:19

笔者五分钟后就给出了解决方法: “首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini,最后重启动计算机

柔情似水 发表于 2015-2-15 07:45:38

Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问。

再见西城 发表于 2015-3-4 11:34:10

Linux只是个内核!这点很重要,你必须理解这一点。只有一个内核是不能构成一个操作系统的。

若天明 发表于 2015-3-11 19:21:58

随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。

爱飞 发表于 2015-3-19 12:17:05

其实老师让写心得我也没怎么找资料应付,自己想到什么就写些什么,所以不免有些凌乱;很少提到编程,因为那些在实验报告里已经说了,这里再写就多余了。

山那边是海 发表于 2015-3-28 13:46:06

如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。
页: [1]
查看完整版本: 带来一篇centos浅谈之rpm和rpmbuild