欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    何为RPM.docx

    • 资源ID:23974151       资源大小:27.64KB        全文页数:14页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    何为RPM.docx

    1、何为RPM何为RPM? RPM 是 Red Hat Package Manager 的缩写。由 Red Hat Linux 首先引入(显而易见;)),现在已经被一些主要的 Linux 发行商采用,如 SuSE、Caldera、Conectiva ,当然,还有 Mandrakesoft 。什么是Package?package就是归档包(archive):其中包含了属于该应用程序或程序库的所有文件。这有点类似于 ZIP 或 TAR 。但除了压缩功能,这个包里还有控制脚本(control scripts)。这些脚本可以被本地的安装程序读出,执行,并存储。可以进行安装、卸载、状态检查、依赖检查等。管理

    2、者通过一个说明文件(specfile:specification file)来控制软件包。这个说明文件明确了相应包中的文件将被安放到哪里,软件正确运行要依赖哪些其他程序,安装卸载前后要执行哪些程序,是谁在什么时候建立的这个包,还有一段包内容的描述,等等。为了有效地工作,RPM 需要记录系统都安装了哪些软件。这个资料库在/var/lib/rpm。通过这个资料库,您可以了解许多已安装的软件的信息。section index topRPM 能作什么? RPM 包及其维护者能完成下面的事情: 编译和修补程序源代码. 这对初学者来讲特别方便。编译源码并打补丁 需要更多的知识,although its b

    3、y no means black magic。如果觉得编译太枯燥,或者源码太多,甚至有点难以处理,RPM 是好帮手。 依赖处理. 不象有些系统铁板一块(如Windows),Linux 系统可以进行不同大小的安装,这取决于系统的用途、个人的喜好等。没有必要安装所有东西,您可以选择想要的文件、程序及程序库。当您安装新程序时,RPM 会检测您是否已安装新程序所依赖的软件。正是这种处理机制,能防止您意外删除一些其他软件包依赖的程序。 提供文件的状态信息. RPM 可以告诉您某个包是否已安装。在安装新的软件包前,您可以进行整合性检查,安装后可以瞧瞧是否正确安装。您还可以查看某个包是什么时候安装的,占了多

    4、大空间,包含哪些文档和配置文件,软件包维护者最近做了哪些改动,等等。 安全检查. RPM 提供了对软件进行 PGP 或 GPG 签名 的机制,这样可以保证软件包没有被篡改。 自动化. RPM 能在许多脚本中用作自动维护的任务。而且还是一些很好的 RPM 图形工具,一些扩展如rpmfind,及 Mandrake Linux 自己的urpmi系统的基础。 绿色卸载. 要卸载某 RPM 包,只需一个命令。该命令将删除 RPM 包,但保留一些改动过的文件(主要是一些配置文件和 spool 文件)。 保护配置文件. 软件包的维护者能选择如何处理旧版软件的配置文件。要么保留旧文件,将新版软件中的创建为rp

    5、mnew文件;要么告诉 RPM 将旧的配置文件重命名为rpmsave文件,并安放新的配置文件。 区分运行和编译时需要的文件. 软件包被分割为运行时(runtime)和编译时(compile time,devel)两种。如果您自己不编译源代码,那就不需要安装devel包。或者您也可以在编译软件时安装,完成后再删除。 网络功能. 只要您提供文件的完整路径,RPM 并不介意软件包是在本地系统,NFS,还是在 FTP 服务器上。 重建简单. 每个自由软件或开源软件的 RPM 包都源于Source RPM(即SRPM 或 src.rpm)。这些 SRPM 包能用来建立相应的 RPM 软件包。如果您想在编

    6、译时选不同的参数,或将该软件包移到特殊的系统环境(包括不同的系统、内核、库等的版本),或打补丁时,RPM 的这个特性会很有帮助。section index topRPM 不能作什么? 与其他工具一样,RPM 也有些不足: 无法自动解决依赖问题. RPM 会告诉您缺什么,但不能自己去抓取、安装。这个主要的不足基本上可以由一些其他工具来弥补,如 Mandrake Linux 的urpmi、脚本程序rpmfind。 没有交互式地配置. 软件包通常都包含配置文件和安装后可运行的脚本,但这种配置只能在安装后单独进行。 难以预防包中的错误. 每个人都会犯错误,包维护者也不例外。安装了说明文件有误的包,可能

    7、导致无法运行程序。甚至在理论上,可以通过 RPM 包安装,有目的地破坏系统(只有root才能安装 rpm 包)。所以,您最好从可信赖的地方获取包。 缺乏兼容性保证. 有很多 Linux 发行商和独立的个人在使用 RPM 。不同的打包策略可能导致软件包无法安装,或即使安装了也无法运行(比如将可执行的文件放到了其他目录下)。建议选用您系统的发行商的软件包。 最优化. 通过带合适的参数编译源程序,RPM 包可以在相应的处理器下的运行达到最优化。Mandrake Linux 针对奔腾级(Pentium-class,i586)处理器,正是用了这样的办法。但实际上,这些参数只是很多编译设置中的一小部分。通

    8、常,打包者会启用尽量多的参数,但这导致包变得更大,含的文件数也更多,有时也会受影响速度。当然,如果您想要最好的,就得 自己编译源码。尽管 RPM 不是最最佳的,但却是很实用的工具,urpmi作为 rpm 的扩展,提供了更多功能。预备(Preliminaries)图形软件包管理器(Graphical Package Managers)在这里,我不准备讨论如何运用图形软件包管理器,如 Mandrake Linux Software Manager 、GnoRPM 及 KPackage 。这些软件有各自的在线帮助,而且学会了RPM系统的基础,再用这些图形软件就能事半功倍。Linux Demo and

    9、 Tutorial Center 上有 KPackage 和 Software Manager 的动画教程。Mandrake Linux 的Installation and User Guide中,有一章专门介绍用 Software Manager 进行 软件包管理 。包的名称(Package Names)RPM 包的全名包含三部分:归档(archive)名称、归档版本号和包(package)的版本号。所以mc-4.5.51-7mdk.rpm表明:归档名是mc,版本号是 4.5.51 ,这是该包的第七个修正版。mdk是 Mandrake 的缩写,而不是 mandatory(命令的)。为何需要一

    10、个额外的包版本号(package version)呢?打包是个复杂的过程。有时打包者可能忽视了某些细节,所以只能再发布后继包,也可能是打包者发现了改进包的办法。因此,包版本号可以升级含有相同版本的归档(same version of an archive)的包。注意到包版本号可以有两部分,以点号(a full stop)作分割,如 gcc-2.96-0.76mdk ,这表示该包是由于安全原因升级。您会碰到这样的包名:mc-4.5.51-7mdk.src.rpm,这是 RPM 源码包。除非您知道其用途和处理方法,否则这类包对您来说没有用处。归档名还是文件名?RPM 区分已安装和未安装的包。对未安

    11、装包的操作需要完整的文件名作为 RPM 命令的参数,比如rpm -i mc-4.5.51-7mdk.rpm此命令在本地系统中安装mc-4.5.51-7mdk.rpm包。如果您想对一个已安装的包进行操作,这时要用归档名(archive name):rpm -e mc此命令将从系统中删除包含mc归档的包。这个办法之所以有效,是由于在同一系统中,您无法安装两个含相同归档名的 RPM 包。如果您试试下面的命令:rpm -e mc-4.5.51-7mdk.rpm 会有如下信息:error: package mc-4.5.51-7mdk.rpm is not installed事实上,您可能已经安装了这个

    12、包。section index top 一般操作 RPM有许多可选参数,幸好很容易从名称中联想到相应的用途。大多数参数都有两种名称(flavor):长名和短名。长名是两个连字符(hyphen),后跟参数的全名;短名只有一个连字符,后带一个字符(一般是全名的首字母)。当然,应用时您只需一种格式就够了,比如:rpm -install package或rpm -i package。如果RPM参数是文件名,您可以用 匹配模式 ,来指定多个文件,例如:rpm -i bla*该命令将安装所有当前目录下以字符串bla开头的包。模糊格式对要求归档名作参数的操作无效,例如:rpm -e *gtk* error:

    13、 package *gtk* is not installed 有一点请记住,RPM 并不介意将要安装的包是在本地文件系统,还是在远程 web 或 FTP 服务器上。只要给出完整的 URL,就能对安装包进行远程操作,比如:rpm -qpi ftp:/ 将获取在 的目录RPMS中,以bla开头的包的内容描述。安装,升级,卸载所有的这些命令需要root权限。 rpm -i package :安装(install)一个包, rpm -e archive :卸载(erase), rpm -U package :升级(upgrades)到新版本(包括安装新的包), rpm -F packages :更新

    14、(freshen)若干个包。先检查指定的包中哪些已安装,然后以合理的顺序更新这些包。 有两个特殊的修正(modifier)可以和上述参数连用:-test 、-verbose(或-v)。-test 只是以模拟(as if)的方式执行命令:您可以获得 RPM 执行时产生的所有信息,但是实际上命令没有真正执行,这个修正没有缩写形式。-verbose(-v) 会输出 RPM 运行时的冗余(verbose)信息。这一参数在检查错误或与-test连用时特别有用。添加另一个-v(-vv)能输出更多的冗余信息。查询该命令不需要root权限。请注意,当您查询一个未安装的包时,您需要将-p参数与-q连用。 rpm

    15、 -q archive :查询(query)包名和已安装包的版本号, rpm -q mcmc-4.5.51-7mdk rpm -qp package :同样是查询,但只针对未安装的包, rpm -qi archive :告知(inform)包的用途,由谁打包,何时、何地打包,这个包是什么时候安装的,包的大小,等等。要查询未安装的包,可运行 rpm -qpi package , rpm -ql archive :列出(list)已安装包中的所有文件, rpm -qd archive :列出所有已安装包中的所有文档(documentation)文件, rpm -qa :列出所有( all)已安装的

    16、包,经常与grep连用, rpm -qa -last :以安装日期为顺序列出所有包,最近安装的包在前, rpm -q -changelog archive :显示维护者对包的所有修改记录, rpm -qf file :显示该文件(file)属于哪个已安装的包。 section index top 高级查询 再配合使用一些其他的小工具,及有些笨拙的-queryformat可选项,您几乎可以在一个包,或本地 RPM 资料库中,查到所有可能的信息。找匹配的已安装包常见的问题:您想知道某个包是否已安装,但却记不清包的确切名称(或者是懒得敲入),可用:rpm -qa | grep -i pattern

    17、这里用了所谓的 管道(pipe) 和 grep 命令(i可选项使得搜索不区分大小写)。所以,这样的命令rpm -qa | grep -i xfree 将列出含有字符串xfree的已安装包,并且不区分大小写。在未安装的包中找一个文件另一个常见问题是:哪个包里有这个文件?将 Mandrake CD 放到光驱中(我们假设在mnt/cdrom目录下),键入for i in /mnt/cdrom/Mandrake/RPMS/*.rpm ; do rpm -qpli $i | grep filename & echo $i ; done 如果这个指定文件(filename)在其中的某个包中,这个 for-

    18、do 循环将返回其名称。这样做可能有些乏味,没关系,在下一篇中,我们将介绍的 Mandrake Linux 中的urpm,能漂亮地完成这一任务。将已安装的包按顺序列出如果您仔细阅读过第一篇中的介绍,就已经知道 RPM 工作要靠其说明文件。可选项-queryformat使您可以在给定的 RPM 中,根据说明文件中单独的某个域(field),按任何顺序进行查询。键入rpm -querytags 将列出所有可用的域,这种格式有些复杂,所以最好用例子来演示。假设您的硬盘空间紧张,想将已安装的包按大小列出,这样您就可以找出最好卸载哪个包,命令如下(在一行中):rpm -qa -queryformat %

    19、name %sizen | sort -n +1 | column -t是不是有点迷糊?;) 第一部分完成了所有工作:只按查询标签(querytags)name和size,对所有包进行查找,其中的标签格式是%tag。由于查询标签字符串中包含空格,所以要用单引号括起来。其中n在每行添加一个回车(line break)。sort命令将输出排序结果(大的在后),column将每行分成漂亮的两列:名称在左,比特为单位的大小在右。只要您记得这种特殊的查询标签格式,使用起来还是很不错的。您已经看到,RPM 可以做很多事情,但同时RPM语法可能变得复杂。而一些其他的功能,如自动解决依赖问题、匹配归档名,却完

    20、全丧失了。好了,现在是 Mandrake Linux 中urpm出场的时候了区别 RPM 与 SRPMS(ource)RPM 包里的是源代码,而不是编译好的程序。只有当您碰到不相容的情况,要再建(rebuild)一个 RPM 包时,才需要跟 SRPM 包打交道(下面有不相容的介绍)。SRPM 包以src.rpm为文件名的结尾。bla.rpm 与 bla-devel.rpm-devel-RPM 包中含有所谓的头文件,编译其他程序时可能会用到。Non-devel RPM 包里的是运行时需要的文件。除非您打算自己编译程序,否则一点也不需要-devel-RPM 包。安装与升级升级是代替原来的老版本,而

    21、安装则不会动以前的版本(如果可能)。当涉及到库(libraries)时,这点区别尤为重要,因为应用程序要依赖库中的代码。不同的程序可能依赖于同一种库的不同版本。升级将会影响依赖于旧版库的程序,RPM 自然不准这样做。但是,您可以在同一系统中,拥有同一种库的不同版本。.rpmnew 与 .rpmsave 文件两者都是配置文件。.rpmnew 是 RPM 包中的新文件,同时保留了旧文件。.rpmsave 是旧文件,原来的文件已经被 RPM 包中的新文件取代。section index top 如何 列出已安装的 RPM 包(根据安装日期和大小)?rpm -qa | less 由less程序显示所有

    22、已安装的 RPM 包。根据安装日期:rpm -qa -last | less 根据大小:rpm -qa -queryformat %name %sizen | sort -n +1 | column -t 列出所有可用 RPM 包?less /var/lib/urpmi/compss 在纯的 RPM 中,您可以将 RPM 输出 重定向 到一个文件,也就创建了 RPM 列表:rpm -qpi *.rpm /rpmlist.txt 找到含特定文件的 RPM 包?urpmf file 如果您不用urpm系统,可以用下面的命令:for i in *.rpm ; do rpm -qpli $i | gr

    23、ep file & echo $i ; done 您也可以用 或 RPM PBone Search 的搜索引擎,只需要输入您要找的文件名。当然,大多数 RPM 图形工具也都有搜索功能。从一个 RPM 包中析取若干个文件?一些文件管理器,如 Midnight Commander (mc),允许您象普通文件一样,浏览 RPM 包,并且可以将其中的某个文件复制到其他目录。您还可以用rpm2cpio命令,将 RPM 包转换到cpio归档中,然后您再用cpio命令对其进行操作。从一目录中只升级而不安装 RPM 包?rpm -F *.rpm 将根据当前目录内的新版软件,升级相应的 RPM 包。升级互相依赖

    24、的包?请看上一个条目。对非当前使用的 Linux 系统安装或升级 RPM 包?可用-root=dir可选项。假如启用 Mandrake Linux rescue system(急救系统),您可以将 RPM 包安装到挂在/mnt上的 Linux 系统:rpm -i -root=/mnt /path/package 请注意,这只能在本地机上有效,通过网络连接的就不行了。用旧版RPM包替换新版 RPM 包(降级)?rpm -U -oldpackage package 安装不相容的 RPM 包(可能由于不同版本的库,不同的路径等)?取得这个包的源码 RPM 包,通常是packagename.src.r

    25、pm的形式,然后用rpm-build包中的命令,重新编译和安装:rpmbuild -recompile SRPM 如果您希望 RPM 新建一个包,可用命令:rpmbuild -rebuild SRPM 请注意,这一过程通常需要先安装一些develRPM 包。您可以在/usr/src/RPM/RPMS/arch目录下找到这些再建(rebuild)的 RPM 包。如果 RPM 的不相容只是由于安装路径的不同,您可将其重定位(relocate):rpm -i -relocate oldpath=newpath 或者,在您安装之前,将 RPM 包的安装目录联接到您系统认可的地方,比如:ln -s /u

    26、sr /opt/kde 这个用于 SuSE 或 Caldera 中的 KDE 包。更多地输出 RPM 在执行过程中的信息?添加-hv参数,从而获得一个进度条。要更多文本输出的话,用-v,甚至-vv参数。排除一些可安装文件?rpm -i -excludepath path package将不安装所有名称以 path 开头的文件。rpm -i -excludedocs package 不安装文档文件。devel包中有许多文档,这时用该命令就很有效。但对有些 RPM 包,这个命令无法工作。 新建RPM包?这大概能再写一篇文章。;)RPM HOWTO 是不错的介绍,Maximum RPM 俨然还是这方

    27、面的权威。想了解出自 Mandrake 的说明,可以看一下 Mandrake RPM HOWTO 。section index top 如果 RPM 抱怨,和已安装 RPM 包中的文件冲突有时多个包中含有若干相同的文件。如果您想安装含已有文件的 RPM 包,可用rpm -i -replacefiles package RPM 抱怨,RPM 版本冲突(RPM 3、RPM 4)安装 Mandrake 7.2 中的 RPM 3.0.5,这是 RPM 3.x 与 4.x 的唯一过渡版本。Mandrake 8 用的是 RPM 4,可以向后兼容。 RPM 抱怨failing to open /var/li

    28、b/rpm/packages.rpm只有root才有权安装、升级或卸载包。先用命令 su 或 sudo 作切换。普通用户无法使用 urpmiurpme请注意:直到 Mandrake 8.0,才允许部分普通用户运行urpmi。在运行之前,您要加入到urpmi组中:将您的用户名加到/etc/groups合适的行,当然只有root才能做这个改动。urpme只能由root来运行。只有root能从非标准目录中,用urpmi命令安装 RPM 包。只能用自己编译的文件来解决依赖问题解决 RPM 包的依赖,RPM 要检查自己的资料库,但不是整个系统。所以,即使您自己编译安装了所有依赖的包,RPM 也无法通过依

    29、赖检查。(但我又听说新版的 RPM 可以检查整个安装系统,而不仅仅局限于自己的资料库。实际上,我也不很清楚。)有两种解决办法: 在/etc/目录下新建rpmrc文件,并按下面的格式,对该文件安装条目:Provides: file file 是自己编译文件的名称(比如,libguile.so.2)。这样之所以有效,是因为 RPM 依赖系统是建立在文件,而不是包的基础上。上述条目就使得 RPM 以为该项依赖已经解决,虽然这个文件并未在资料库中列出。 您可以让 RPM 忽略依赖检查:rpm -i -nodeps package 显然,这会忽略所有依赖检查,所以您肯定可以通过安装。但使用-nodeps

    30、(甚至-force),可能会破坏您的资料库。在正常情况下,绝对不需要使用这个参数。从我个人而言,几年内都不没有用过这个参数。再建 SRPM 包时,一下子就失败了,说是no such file or directory先安装 Mandrake Linux 光盘中的rpm-build包,然后再试试。再建来自 Cooker 的 SRPM 包时出错fg: no job control新建或再建 RPM 包时,用到了位于/usr/lib/rpm/arch-mandrake-linux/macros的命令宏(command macros)。由于不时会引入新的宏,当如果说明文件中有对某个宏的调用,而该宏又没有列在当前的宏文件中,shell 会试图解释这个宏,但结果往往显示上述错误信息。解决这个问题最直接的办法,是升级到最近的 RPM 版本(我不知道只替换宏文件是否有效,谁有这方面的经验?)。另一办法是通过/usr/src/RPM/SPECS说明文件编辑出错的宏,但是这样可能导致错误的 RPM 包。


    注意事项

    本文(何为RPM.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开