免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 926 | 回复: 0
打印 上一主题 下一主题

使用 RPM [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-17 08:07 |只看该作者 |倒序浏览

                32.2. 使用 RPM
        RPM 有五种基本操作模式(不包括软件包建构):安装、删除安装、升级、查询和校验。本章节包括对每一模式的总览。想了解完整的选项和细节,请使用
        rpm --help 命令,或阅读
第 32.5 节
中关于
        RPM 的信息。
      
32.2.1. 寻找 RPM 软件包
          在使用 RPM 之前,你必须知道要到哪里去寻找它们。在互联网上搜索会返回许多
          RPM 仓库,但是如果你要找的是由 Red Hat 建构的 RPM 软件包,你可以在下面几个地方找到它们:
          

        32.2.2. 安装
          典型的 RPM 软件包名称类似于
          foo-1.0-1.i386.rpm。该文件名包括软件包名称(foo)、版本(1.0)、发行版本(1)、以及体系(i386)。安装软件包简单之极,登录为根用户,然后在
          shell 提示下键入下面的命令:
       
rpm -Uvh foo-1.0-1.i386.rpm
          如果安装成功,你会看到如下所示的输出:
       
Preparing...                ########################################### [100%]
   1:foo                    ########################################### [100%]
          如上面所示,RPM 显示软件包的名称,然后在软件包被安装时在屏幕上打印井号来显示安装进度。
        
          从 RPM 版本 4.1 开始,在安装或升级软件包时会检查软件包的签名。如果签名校验失败,你就会看到如下所示的错误消息:
       
error: V3 DSA signature: BAD, key ID 0352860f
          如果它是新的、只针对文件头的签名,你会看到如下所示的错误消息:
       
error: Header V3 DSA signature: BAD, key ID 0352860f
          如果你没有安装合适的钥匙来校验签名,消息中就会包含
          NOKEY,如:
       
warning: V3 DSA signature: NOKEY, key ID 0352860f
          关于校验软件包签名的详细信息,请参阅
第 32.3 节

       

注记
            如果你要安装内核软件包,你应该使用 rpm
              -ivh。详情请参阅
第30章

          
          虽然安装软件包旨在简单易行,但是你有时也会看到错误。
        
32.2.2.1. 软件包已安装
            如果某软件包的同一版本已经安装,你就会看到:
         
Preparing...                ########################################### [100%]
package foo-1.0-1 is already installed
            如果你在软件包已安装的情况下仍打算安装同一版本的软件包,你可以使用 --replacepkgs
            选项,它告诉 RPM 来忽略这个错误:
         
rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
            如果从 RPM 安装的文件被删除了,或者你想安装 RPM 中的最初配置文件,该选项就会很有用。
          
32.2.2.2. 文件冲突
            如果你试图安装的软件包中包含已被另一个软件包或同一软件包的早期版本安装了的文件,你会看到:
         
Preparing...                ########################################### [100%]
file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package bar-2.0.20
            要使 RPM 忽略这个错误,使用
            --replacefiles 选项:
         
rpm -ivh --replacefiles foo-1.0-1.i386.rpm32.2.2.3. 未解决的依赖关系
            RPM 软件包可能“依赖”于其它软件包,这意味着它们需要安装其它软件包才能正确运行。如果你试图安装具有未解决依赖关系的软件包,你会看到:
         
Preparing...                ########################################### [100%]
error: Failed dependencies:
        bar.so.2 is needed by foo-1.0-1
    Suggested resolutions:
        bar-2.0.20-3.i386.rpm
            如果你安装的是 Red Hat,它通常会向你建议解决依赖关系所需的软件包。在
            Red Hat Linux 光盘或 Red Hat FTP 站点(或镜像)上找到这个软件包,使用以下命令来添加:
          
rpm -ivh foo-1.0-1.i386.rpm bar-2.0.20-3.i386.rpm
            如果这两个软件包都安装成功,你会看到:
          
Preparing...                ########################################### [100%]
   1:foo                    ########################################### [ 50%]
   2:bar                    ########################################### [100%]
            如果它不向你建议解决依赖关系所需的软件包,你可以试用
            --redhatprovides 选项来判定哪个软件包包含所需的文件。你需要安装
            rpmdb-redhat 软件包才能使用这个选项。
          
rpm -q --redhatprovides bar.so.2
            如果包含 bar.so.2 的软件包在来自
            rpmdb-redhat 软件包的安装了的数据库中,该软件包的名称就会被显示:
          
bar-2.0.20-3.i386.rpm
            如果你想强制安装(不是好办法,因为软件包可能不能够正确运行),使用
            --nodeps 选项。
         
32.2.3. 删除安装
          删除软件包和安装软件包一样简单。在 shell 提示下键入下面的命令:
        
rpm -e foo

注记
            注意,我们使用软件包名称
            foo,而不是原始的软件包文件
            foo-1.0-1.i386.rpm。要删除某软件包,你需要把 foo 换成原始软件包的实际名称。
          
          你在删除安装某软件包时也会遇到依赖关系错误,当另一个已安装的软件包依赖于你试图删除的软件包时,依赖关系错误就会发生。例如:
        
Preparing...                ########################################### [100%]
error: removing these packages would break dependencies:
        foo is needed by  bar-2.0.20-3.i386.rpm
          要使 RPM 忽略这个错误,并强制删除该软件包(不是个好办法,因为依赖于它的软件包可能无法正常运行),使用 --nodeps 选项。
        
32.2.4. 升级
          升级软件包和安装类似。在 shell 提示下键入以下命令:
        
rpm -Uvh foo-2.0-1.i386.rpm
          你在上面的例子里看不到的是,RPM
          自动删除 foo 软件包的任何老版本。事实上,你可能想一直使用
          -U 来安装软件包,因为即便没有安装软件包的任何先前版本,它也可以用来安装该软件包。
        
          因为 RPM 对软件包和配置文件执行智能升级,你可能会看到和下面相似的消息:
        
saving /etc/foo.conf as /etc/foo.conf.rpmsave
          这条消息意味着你对配置文件所作的改变可能不会和软件包中的新配置文件“前向兼容”,因此,RPM
          保存了你的原始文件,并安装了一个新文件。你应该调查一下这两个配置文件的区别,然后尽快地解决这些区别来确保系统继续正确运行。
        
          升级实际上是删除和安装的组合,因此,在
          RPM 升级中,你除了遇到删除和安装中会遇到的错误外,还会看到另一个错误。如果
          RPM 认为你试图升级到软件包的老版本,你会看到:
        
package foo-2.0-1 (which is newer than foo-1.0-1) is already installed
          要使 RPM 强制“升级”,使用
          --oldpackage 选项:
        
rpm -Uvh --oldpackage foo-1.0-1.i386.rpm32.2.5. 刷新
          刷新软件包和升级软件包相似。在 shell 提示下键入以下命令:
        
rpm -Fvh foo-1.2-1.i386.rpm
          RPM 的刷新选项比较在命令行上指定的软件包的版本和你的系统上已安装的版本。当
          RPM 的刷新选项处理的版本比你已安装的版本更新,它就会被升级到更新的版本。然而,如果某软件包先前没有安装,RPM
          的刷新选项将不会安装该软件包。这和 RPM
          的升级选项不同,因为不管该软件包的老版本是否已被安装,升级选项都会安装该软件包。
        
          RPM 的刷新选项可以用于单个软件包或一组软件包。如果你刚刚下载了大量不同的软件包,你只想升级那些已安装在你的系统上的软件包,刷新即可达到目的。如果使用刷新,你不必在使用
          RPM 前从下载的软件包组中删除不必要的软件包。
        
          在这种情况下,你单使用下面的命令就可以了:
        
rpm -Fvh *.rpm
          RPM 将只会自动升级那些已经在系统上安装的软件包。
        
32.2.6. 查询
          使用 rpm -q 命令来查询安装的软件包的数据库。rpm -q foo
          命令会显示安装的软件包 foo 的名称、版本、和发行号码:
        
foo-2.0-1

注记
            注意,我们使用的是软件包名称
            foo。要查询软件包,你需要把
            foo 换成实际软件包名称。
          
          与其指定软件包名称,你可以和 -q 一起使用下列选项来指定你要查询的软件包。它们叫做软件包指定选项。
        

  • -a 查询所有已安装的软件包。

  • -f
                  
                  会查询拥有
                  的软件包。当指定文件时,你必须指定文件的完整路径(如 /usr/bin/ls)。
                

  • -p
                   
                    查询软件包
                   
                

         指定被查询的软件包要显示哪些信息的方法多种多样。以下选项用来选择你要搜索的信息类型。它们叫做信息选择选项。
        

  • -i 显示软件包信息,包括名称、描述、发行版本、大小、制造日期、生产商,以及其它杂项。
                

  • -l 显示软件包所含的文件列表。
                

  • -s 显示软件包中所有文件的状态。
                

  • -d 显示被标记为文档(man 页、info 页、README 等等)的文件列表。
                

  • -c 显示被标记为配置文件的文件列表。你在安装后改变这些文件来使软件包适用于你的系统(譬如,sendmail.cf、passwd、inittab 等等)。
                

          对于用来显示文件列表的选项,你可以在命令后添加
          -v 来用你熟悉的 ls -l
          格式来显示文件列表。
        
32.2.7. 校验
          校验软件包比较从某软件包安装的文件和原始软件包中的同一文件的信息。它校验每个文件的大小、MD5 值、权限、类型、所有者、以及组群。
        
          rpm -V 命令校验软件包。你可以查询任何软件包选择选项列举的条目来指定要校验的软件包。校验的最简单用法是
          rpm -V foo,它校验所有在 foo 软件包内的文件是否和最初安装时一样。例如:
        

    要校验包含某一特定文件的软件包:
    rpm -Vf /bin/vi
    要校验所有安装了的软件包:
    rpm -Va
    要根据 RPM 软件包文件来校验安装了的软件包:
    rpm -Vp foo-1.0-1.i386.rpm
    如果你怀疑 RPM 数据库已被损坏,该命令就会很有用。
                

          如果一切都被校验正确,就不会有输出。如果出现矛盾,它们就会被显示。输出的格式为包括八个字符的字符串(c 代表配置文件),然后是文件名称。这八个字符的每个字符都代表一种文件属性的比较结果,所比较的是文件的属性和 RPM
          数据库中记录的属性。单用一个 .(点)意味着测试通过。下列字符代表某类测试失败:
        

  • 5 — MD5 校验和

  • S — 文件大小

  • L — 符号链接

  • T — 文件修改时间

  • D — 设备

  • U — 用户

  • G — 组群

  • M — 模式(包括权限和文件类型)

  • ? — 不可读文件

          如果你看到任何输出,最好开动脑筋来判断是应该删除还是重新安装该软件包,或用另一种方法来解决这个问题。
32.3. 检查软件包的签名
        如果你想校验某软件包是否被损坏或篡改过,只需检查
        md5sum。在 shell 提示下键入下面的命令(把
         coolapp 换成
        RPM 软件包的文件名):
      
rpm -K --nogpg
        你会看到消息“: md5
          OK”。这条消息意味着文件在下载中没有被损坏。要看到更详细的消息,把命令中的
        -K 换成 -Kvv。
      
        另一方面,创建软件包的开发者是不是值得信任?如果该软件包使用开发者的 GnuPG
        钥匙(key)被签名(signed),你就会知道这位开发者的身份确实如他们所言。
      
        RPM 软件包可以使用
        Gnu 隐私卫士(或称
        GnuPG)来签名,从而帮助你肯定下载软件包的可信任性。
      
        GnuPG 是安全通讯工具;它是 PGP(一种电子隐私程序)加密技术的完全和免费的替换品。使用
        GnuPG,你可以验证文档的有效性,在其它通讯者之间加密或解密数据。GnuPG 还具有解密和校验
        PGP 5.x 文件的能力。
      
        在 Red Hat Linux 的安装过程中,GnuPG 被默认安装。这样,你便可以立即开始使用 GnuPG
        来校验你从 Red Hat 收到的软件包。首先,你需要导入 Red Hat 的公钥。
      
32.3.1. 导入钥匙
          要校验 Red Hat 软件包,你必须导入 Red Hat GPG 公钥。要导入公钥,在 shell
          提示下执行以下命令:
       
rpm --import /usr/share/rhn/RPM-GPG-KEY
          要显示用来校验 RPM 而安装的钥匙列表,执行以下命令:
       
rpm -qa gpg-pubkey*
          对于 Red Hat 公钥而言,其输出应包括:
       
gpg-pubkey-db42a60e-37ea5438
          要显示关于某一指定钥匙的细节,使用rpm
          -qi,其后跟随前一命令的输出:
       
rpm -qi gpg-pubkey-db42a60e-37ea543832.3.2. 校验软件包的签名
          导入了建构者的 GnuPG 公钥后,要检查 RPM 文件的 GnuPG 签名,使用以下命令(把
           换成 RPM 软件包的名称):
       
rpm -K
          如果一切顺利,你会看到这条消息:md5 gpg
            OK。这意味着软件包的签名已被校验,该软件包没有被损坏。
32.4. 用 RPM 在朋友面前大显身手
        RPM 对于管理系统、诊断和修正问题都极有用途。要理解它的选项的最佳途径是通过示范。
      

  • 可能你不小心删除了一些文件,却不能肯定删除了哪些文件。如果你想校验整个系统来看一看缺少哪些文件,你可以试一试下面的命令:
             
    rpm -Va
    如果缺少某些文件或它们似乎被损坏,你可能应该重新安装该软件包或删除安装然后再重新安装该软件包。
             

  • 有时候,你可能会看到不认识的文件。要发现哪个软件包拥有它,你可以输入:
              
    rpm -qf /usr/X11R6/bin/ghostview
    它的输出和以下相似:
    gv-3.5.8-22

  • 我们可以在以下的假想情况下组合以上的两个例子。假设你的 /usr/bin/paste
              出了问题,你想校验拥有该程序的软件包,但是你不知道哪个软件包拥有
              paste。你只需输入以下命令就可以了:
              
    rpm -Vf /usr/bin/paste
    这样,适当的软件包就会被校验。

  • 你想知道关于某一特定的程序的详细信息吗?你可以试用下面的命令来查找拥有该程序的软件包所附带的文档:
             
    rpm -qdf /usr/bin/free
    它的输出和以下相似:
    /usr/share/doc/procps-2.0.11/BUGS
    /usr/share/doc/procps-2.0.11/NEWS
    /usr/share/doc/procps-2.0.11/TODO
    /usr/share/man/man1/free.1.gz
    /usr/share/man/man1/oldps.1.gz
    /usr/share/man/man1/pgrep.1.gz
    /usr/share/man/man1/pkill.1.gz
    /usr/share/man/man1/ps.1.gz
    /usr/share/man/man1/skill.1.gz
    /usr/share/man/man1/snice.1.gz
    /usr/share/man/man1/tload.1.gz
    /usr/share/man/man1/top.1.gz
    /usr/share/man/man1/uptime.1.gz
    /usr/share/man/man1/w.1.gz
    /usr/share/man/man1/watch.1.gz
    /usr/share/man/man5/sysctl.conf.5.gz
    /usr/share/man/man8/sysctl.8.gz
    /usr/share/man/man8/vmstat.8.gz

  • 你可能会发现一个新的 RPM,但是你不知道它的用途。要寻找关于它的信息,使用下面的命令:
             
    rpm -qip crontabs-1.10-5.noarch.rpm
    它的输出看起来和以下相似:
    Name        : crontabs                     Relocations: (not relocateable)
    Version     : 1.10                              Vendor: Red Hat, Inc.
    Release     : 5                             Build Date: Fri 07 Feb 2003 04:07:32 PM EST
    Install date: (not installed)               Build Host: porky.devel.redhat.com
    Group       : System Environment/Base       Source RPM: crontabs-1.10-5.src.rpm
    Size        : 1004                             License: Public Domain
    Signature   : DSA/SHA1, Tue 11 Feb 2003 01:46:46 PM EST, Key ID fd372689897da07a
    Packager    : Red Hat, Inc.
    Summary     : Root crontab files used to schedule the execution of programs.
    Description :
    The crontabs package contains root crontab files. Crontab is the
    program used to install, uninstall, or list the tables used to drive the
    cron daemon. The cron daemon checks the crontab files to see when
    particular commands are scheduled to be executed. If commands are
    scheduled, then it executes them.

  • 也许你想指定
                crontabs RPM 会安装哪些文件。你可以输入下面的命令:
             
    rpm -qlp crontabs-1.10-5.noarch.rpm
    它的输出看起来和下面相似:
    Name        : crontabs                     Relocations: (not relocateable)
    Version     : 1.10                              Vendor: Red Hat, Inc.
    Release     : 5                             Build Date: Fri 07 Feb 2003 04:07:32 PM EST
    Install date: (not installed)               Build Host: porky.devel.redhat.com
    Group       : System Environment/Base       Source RPM: crontabs-1.10-5.src.rpm
    Size        : 1004                             License: Public Domain
    Signature   : DSA/SHA1, Tue 11 Feb 2003 01:46:46 PM EST, Key ID fd372689897da07a
    Packager    : Red Hat, Inc.
    Summary     : Root crontab files used to schedule the execution of programs.
    Description :
    The crontabs package contains root crontab files. Crontab is the
    program used to install, uninstall, or list the tables used to drive the
    cron daemon. The cron daemon checks the crontab files to see when
    particular commands are scheduled to be executed. If commands are
    scheduled, then it executes them.

        以上不过是几个例子。随着你的使用经验的增加,你会发现更多 RPM 的用途。
      
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/46039/showart_1003449.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP