⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0520rpm_and_srpm.htm

📁 鸟哥LINUX 学习课本
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head>   <meta http-equiv="Content-Type" content="text/html; ">   <meta name="Author" content="VBird">   <meta name="GENERATOR" content="Mozilla/4.5 [zh-TW] (WinNT; I) [Netscape]">   <title>鸟哥的 Linux 私房菜 -- RPM 与 SRPM 套件管理员</title><!-- saved from url=(0022)http://internet.e-mail --><style>   <!--   body{background-image=url(http://linux.vbird.org/VBirdLinux.jpg);background-ATTACHMENT=FIXED}   --></style></head><body nosave="" background="0520rpm_and_srpm_files/VBirdLinux.jpg"><center><center><b><font size="+2" color="#3333ff"><font face="SimSun">鸟哥的</font><font face="Times New Roman,Times"> Linux </font><font face="SimSun">与</font><font face="Times New Roman,Times"> ADSL </font><font face="SimSun">私房菜</font></font></b><br><a href="http://linux.vbird.org/" target="_top"><img src="0520rpm_and_srpm_files/VBirdTitle2.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_basic"><img src="0520rpm_and_srpm_files/icon_system.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_server"><img src="0520rpm_and_srpm_files/icon_server.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_security"><img src="0520rpm_and_srpm_files/icon_security.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://phorum.vbird.org/" target="_blank"><img src="0520rpm_and_srpm_files/icon_forums.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/adsl"><img src="0520rpm_and_srpm_files/icon_adsl.gif" nosave="" border="0" height="25" width="90"></a><br><hr width="100%"></center><font size="+2" color="#3333ff"><a href="http://linux.vbird.org//linux_basic/0520rpm_and_srpm.php" target="_self"><font face="Times New Roman,Times">RPM</font><font face="SimSun">与</font><font face="Times New Roman,Times">SRPM </font><font face="SimSun">套件管理员</font></a></font></center><div align="right"><font size="-1" color="#3333ff" face="SimSun">最近更新日期:2004/04/20</font></div><font size="-2" color="#3333ff" face="SimSun"> </font><table bgcolor="#ffcccc" border="1" cols="1" width="100%"><tbody><tr><td><font size="-1" color="#000099">在上一章当中,我们介绍了以 Tarball的方式来安装我们的套件,同时也说明了 Source code 与执行档之间的关系。不过,如果每次安装套件都需要进行编译的动作,那么实在很没效率!这个时候,由Red Hat 公司所开发出来的套件管理程序( Red Hat Package Manager, RPM )可就帮了大忙了!RPM除了可以用来安装套件之外,还可以进行查询、升级、反安装、以及其它验证等等的功能,这些功能让我们在管理系统的套件上,更显的方便呢!此外,我们也可以利用RPM 的原理来『自行创造自己的 RPM 档案』呢!</font><br><font size="-1" color="#000099"> </font><br><font size="-1" color="#000099">由于 RPM 实在是太好用了,目前主要的Linux distributions 都是使用 RPM 来管理他们的套件,例如 Mandrake 与 RedHat ,所以,您不能不知道 RPM 是什么东西?该如何利用他,以及熟悉相关的功能!赶紧来参详参详!</font></td></tr></tbody></table><font size="-2" color="#000099"> </font><br><font size="+1" color="#000099"><a href="#intro">前言</a>:</font><br><font color="#000099"><font size="+1">  :</font><a href="#intro_whatisrpm">什么是RPM 与 SRPM</a></font><br><font color="#000099"><font size="+1">  :</font><a href="#intro_i386586">什么是i386, i586, i686, noarch</a> ?</font><br><font color="#000099"><font size="+1">  :</font><a href="#intro_advance">RPM的优点</a></font><br><font color="#000099"><font size="+1">  :</font><a href="#intro_solution">RPM属性相依的克服方式</a></font><br><font size="+1" color="#000099"><a href="#rpmmanager">RPM 套件管理程序</a></font><br><font color="#000099"><font size="+1">  :</font><a href="#rpmmanager_dir">RPM预设安装的路径</a></font><br><font color="#000099"><font size="+1">  :</font><a href="#rpmmanager_install">RPM安装</a></font><br><font color="#000099"><font size="+1">  :</font><a href="#rpmmanager_update">RPM升级与更新</a></font><br><font color="#000099"><font size="+1">  :</font><a href="#rpmmanager_query">RPM查询</a></font><br><font color="#000099"><font size="+1">  :</font><a href="#rpmmanager_verify">RPM验证与数位签章</a></font><br><font color="#000099"><font size="+1">  :</font><a href="#rpmmanager_rebuild">RPM反安装与重建数据库</a></font><br><font size="+1" color="#000099"><a href="#srpmmanager">SRPM 的使用</a>:</font><br><font color="#000099"><font size="+1">  :</font><a href="#srpmmanager_rebuild">利用系统默认值安装SRPM 档案</a></font><br><font color="#000099"><font size="+1">  :</font><a href="#srpmmanager_dir">SRPM使用的路径与需要的套件</a></font><br><font color="#000099"><font size="+1">  :</font><a href="#srpmmanager_config">设定档的主要内容</a></font><br><font color="#000099"><font size="+1">  :</font><a href="#srpmmanager_command">SRPM的编译指令</a></font><br><font color="#000099"><font size="+1"><a href="#myself">一个打包自己套件的范例</a></font>:</font><br><font size="+1" color="#000099"><a href="#rpmortarball">要选择RPM 还是 Tarball</a>?</font><br><font size="+1" color="#000099"><a href="#important">重点回顾</a></font><br><font size="+1" color="#000099"><a href="#reference">参考资源</a></font><br><font size="+1" color="#000099"><a href="#FAQ">课后练习</a></font><br><hr width="100%"><a name="intro"></a><img src="0520rpm_and_srpm_files/penguin-m.gif" alt="" nosave="" align="middle" height="34" width="25"><font size="+1" color="#000099">前言</font><blockquote>在前一章我们提到以原始码的方式来安装套件,也就是利用厂商释出的Tarball 来进行套件与程序的安装。不过,您应该很容易发现,那就是每次安装套件都需要设定操作系统、设定编译参数、实际的编译、最后还要依据个人喜好的方式来安装套件到定位。这过程是真的很麻烦的,而且对于不熟整个系统的朋友来说,还真是累人啊!<br> <br>那有没有想过,如果我的 Linux系统与厂商的系统一模一样,那么在厂商的系统上面编译出来的执行档,自然也就可以在我的系统上面跑啰!也就是说,厂商先在他们的系统上面编译好了我们使用者所需要的套件,然后将这个编译好的可执行的套件直接释出给使用者来安装,如此一来,由于我们本来就使用厂商的Linux distribution ,所以当然系统是一样的,那么使用厂商提供的编译过的可执行档就没有问题啦!说的比较白话一些,那就是利用类似Windows 的安装方式,由程序开发者直接在已知的系统上面编译好,再将该程序直接给使用者来安装,如此而已。<br> <br>那么如果在安装的时候还可以加上一些与这些程序相关的信息,将他建立成为数据库,那不就可以进行安装、反安装、升级与验证等等的相关功能啰(类似 Windows 底下的『新增移除程序』 )?!确实如此,在 Linux 上面至少就有两种常见的这方面的套件管理员,分别是RPM 与 Debian 的 dpkg ,其中又以 RPM 更常见。所以底下我们就来介绍一下 RPM这个咚咚啰!<br> <br><hr width="100%"><a name="intro_whatisrpm"></a><img src="0520rpm_and_srpm_files/penguin-s.gif" nosave="" align="middle" height="23" width="17"><font color="#000099">什么是RPM 与 SRPM</font><blockquote>RPM 全名是『<font color="#000066"> RedHat Package Manager </font>』简称则为RPM 啦!顾名思义,当初这个套件管理的程序是由 Red Hat 这家公司发展出来的,但其实在很多的其它套件也有相类似的套件管理程序。不过由于RPM 使用上很方便,所以就成了目前最热门的套件管理程序啦!<br> <br>那么什么是 RPM 呢?说的简单一点, <font color="#000066">RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序</font>。他最大的特点就是将您要安装的套件先编译过(如果需要的话 )并且打包好了,透过包装好的套件里头预设的数据库记录,记录这个套件要安装的时候必须要的相依属性模块(就是你的 Linux 主机需要先存在的几个必须的套件 ),当安装在你的 Linux 主机时,RPM 会先依照套件里头的纪录数据查询 Linux 主机的相依属性套件是否满足,若满足则予以安装,若不满足则不予安装。那么安装的时候就将该套件的信息整个写入RPM 的数据库中,以便未来的查询、验证与反安装!这样一来的优点是:<ol><li><font color="#000066">由于已经编译完成并且打包完毕,所以安装上很方便( 不需要再重新编译);</font></li><li><font color="#000066">由于套件的信息都已经记录在 Linux 主机的数据库上,很方便查询、升级与反安装;</font></li></ol>但是这也造成很大的困扰,由于 RPM 程序是已经包装好的数据,也就是说,里面的数据已经都『编译完成』了!所以,<font color="#000066">安装的时候一定需要当初安装时的主机环境才能安装</font>,也就是说,当初建立这个套件的安装环境必须也要在你的主机上面出现才行!例如rp-pppoe 这个 ADSL 拨接套件,他必须要在 ppp 这个套件存在的环境下才能进行安装!如果你的主机并没有ppp 这个套件,那么很抱歉,除非您先安装 ppp 否则 rp-pppoe 就是不让你安装的(当然您可以强制安装,但是通常都会有点问题发生就是了! )。所以,<font color="#000066">通常不同的distribution 所释出的 RPM 档案,并不能用在其它的 distributions 里面</font>,举例来说,Red Hat 释出的 RPM 档案,通常无法直接在 Mandrake 上面进行安装的,更有甚者,不同版本之间也无法互通,例如Mandrake 9.0 的 RPM 档案就无法直接套用在 8.2 上面!因此,这样可以发现他的缺点是:<ol><li><font color="#000066">安装的环境必须与打包时的环境需求一致或相当;</font></li><li><font color="#000066">需要满足套件的相依属性需求;</font></li><li><font color="#000066">反安装时需要特别小心,最底层的套件不可先移除,否则可能造成整个系统的问题!</font></li></ol>那怎么办?呵呵!还好,还有 SRPM 这个东西! <font color="#000066">SRPM 是什么呢?顾名思义,他是Source RPM 的意思</font>,也就是<font color="#000066">这个 RPM 档案里面含有原始码(Source Code )哩</font>!特别注意的是,这个 <font color="#000066">SRPM 所提供的套件内容『并没有经过编译』</font>,他提供的是原始码喔!通常<font color="#000066">SRPM的附檔名是以 ***.src.rpm 这种格式来命名的</font>。不过,既然 SRPM 提供的是原始码,那么为什么我们不使用Tarball 直接来安装就好了?!这是因为 SRPM 虽然内容是原始码,但是他仍然含有该套件所需要的相依性套件说明、以及所有RPM 档案所提供的数据,同时,他与 RPM 不同的是,他也提供了参数设定档( 就是configure 与 makefile 啦! )。所以,如果我们下载的是 SRPM ,那么要安装该套件时,RPM套件管理员将会<font color="#000066">(1)先将该套件以 RPM 管理的方式编译,(2)然后将编译完成的RPM 档案安装到 Linux 系统当中</font>。与 RPM 档案相比, SRPM 多了一个重新编译的动作,而且<font color="#000066">SRPM 编译完成会产生 RPM 档案</font>。<br> <br>怪了,怎么 SRPM 这么麻烦吶!还要重新编译一次,那么我们直接使用 RPM来安装不就好了!?<font color="#000066">通常一个套件在释出的时候,都会同时释出该套件的RPM 与 SRPM 。我们现在知道 RPM 档案必须要在相同的 Linux 环境下才能够安装,而SRPM 既然是原始码的格式,自然我们就可以透过修改 SRPM 内的参数设定档,然后重新编译产生能适合我们Linux 环境的 RPM 档案,如此一来,不就可以将该套件安装到我们的系统当中,而不必与原作者打包的Linux 环境相同了</font>?这就是 SRPM 的用处了!</blockquote><hr width="100%"><a name="intro_i386586"></a><img src="0520rpm_and_srpm_files/penguin-s.gif" nosave="" align="middle" height="23" width="17"><font color="#000099">什么是i386, i586, i686, noarch</font><blockquote>好啦!现在我们已经知道 RPM 与 SRPM 的格式了,分别为:<br> <table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffff00"><b>xxxxxxxxx.rpm</b> </font><font color="#ccffff">&lt;==RPM 的格式,已经经过编译且包装完成的rpm 档案;</font></font><br><font size="-1" face="SimSun"><font color="#ffff00"><b>xxxxx.src.rpm</b> </font><font color="#ffccff">&lt;==SRPM的格式,包含未编译的原始码信息。</font></font></td></tr></tbody></table> <br>那么我们怎么知道这个套件的版本、适用的平台、打包的次数呢?呵呵!只要透过档名就可以知道了!例如<font face="SimSun"><font color="#000066">rp-pppoe-3.1-5.i386.rpm</font><font color="#000000">这的档案的意义为:</font></font><br> <table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr><td><b><font size="-1" color="#ffff00" face="SimSun">rp-pppoe -  3.1    -   5  .  i386    .rpm</font></b><br><font size="-1" color="#ffccff" face="SimSun">&#160;套件名称&#160; 套件的版本信息 &#160; 释出的次数 &#160; 适合的硬件平台  附文件名&#160;</font></td></tr></tbody></table> <br>除了后面适合的硬件平台与附文件名外,主要是以『-』来隔开各个部分,这样子可以很清楚的发现该套件的名称、版本信息、打包次数与操作的硬件平台!好了,来谈一谈每个不同的地方吧:<ul><li><font color="#000099">套件名称</font>:</li><br>当然就是每一个套件的名称了!上面的范例就是 rp-pppoe 。<br> <li><font color="#000099">版本信息</font>:</li><br>每一次更新版本就需要有一个版本的信息,否则如何知道这一版是新是旧?这里通常又分为主版本跟次版本,以上面为例,主版本为3 ,在主版本的架构下更动部分原始码内容,而释出一个新的版本,就是次版本啦!以上面为例,就是1 啰!<br> <li><font color="#000099">释出版本次数</font>:</li><br>也就是<font color="#000066">编译的次数</font>啦!那么为何需要重复的编译呢?这是由于同一版的套件中,可能由于有某些

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -