免费注册 查看新帖 |

Chinaunix

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

rpm 安装 删除 查询 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-04 14:40 |只看该作者 |倒序浏览
安装软件包  
rpm  -i 包全名  
删除   
rpm -e name(不是包名)  
参数  
-ivh 获得一个详细的安装进程   
--nodeps 忽略依赖关系  
--force 强制安装  
-U 包名:升级安装  
-F 更新不管是什么直接覆盖  
--replacepkgs这样 RPM 将忽略该错误信息 -vih --replacepkgs  
-q name :查询  
-qa查询所有已安装的RPM  
-qi name 查询这个软件详细信息  
-ql 显示列表  
-qf path  :查询一个文件属于哪个包  
-qp 包名 :查文件是什么  
-qpl 包名 :针对一个没装过的包  
rpm -qc 配置文件  
效验 rpm  -Va   
rpm  -Vf /bin/ls  
rpm  -Vp 包名  
5 -- MD5 校验和   
S -- 文件长度   
L -- 符号链接   
T -- 文件修改日期   
D -- 设备   
U -- 用户   
G -- 用户组   
M -- 模式 (包含许可和文件类型)   
? -- 不可读文件  
详细课程  
使用 RPM  
RPM  有五个基本的操作 模式(不包括包的编译): 安装,卸载,升级,查询,校验。本节将对它们一一介绍。要了解完整的细节和选项,可以使用 rpm -- help, 或转到 the section called 其它 RPM 资源 得到更多关于 RPM 的信息。   
1 安装  
典型的 RPM 有着类似 foo-1.0-1.i386.rpm这样的名称, 其中指明了包名 (foo), 版本号 (1.0), 发行号 (1), 和硬件平台 (i386)。安装一个软件包只需简单的键入以下命令:   
# rpm -ivh foo-1.0-1.i386.rpm  
foo                      ####################################  
#  
      
正如您所看到的, RPM 将会打印出软件包的名字 ( 并不一定要与文件名相同, 可能是 1.rpm), 而后打印出一连串的 # 号以表示安装进度。   
请注意   
   尽管通常是使用 rpm -ivh foo-1.0-1.i386.rpm 来安装包, 但也可以用 rpm -Uvh foo-1.0- 1.i386.rpm 来替代。 -U 是包升级参数, 也可以用来安装新包。参看 升级 有关RPM 中 -U 参数的详细使用情况。  
软件包的安装设计非常简单, 但还是有可能发生以下错误:   
软件包已被安装  
如果软件包已被安装, 会出现以下信息:   
# rpm -ivh foo-1.0-1.i386.rpm  
foo                    package foo-1.0-1 is already installed  
error: foo-1.0-1.i386.rpm cannot be installed  
#  
如果仍要安装该包, 可以在命令行中使用 --replacepkgs 选项, 这样 RPM 将忽略该错误信息:   
# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm  
foo                      ####################################  
#  
   
文件冲突  
如果要安装的软件包中有一个文件已在安装其它包时被安装,会显示以下信息:   
# rpm -ivh foo-1.0-1.i386.rpm  
foo          /usr/bin/foo conflicts with file from bar-1.0-1  
error: foo-1.0-1.i386.rpm cannot be installed  
#  
        
要想让RPM 忽略该错误信息, 请使用 --replacefiles 命令行选项:   
# rpm -ivh --replacefiles foo-1.0-1.i386.rpm  
foo                      ####################################  
#  
  
未解决依赖关系  
一个 RPM 包可能会 "依赖" 其它软件包, 也就是说要求在安装了特定的软件包之后才能安装该软件包。 如果在安装这个软件包时未解决这种存在的依赖关系, 会看到:   
# rpm -ivh bar-1.0-1.i386.rpm  
failed dependencies:  
       foo is needed by bar-1.0-1  
#  
   
只有先安装完所依赖的软件包,才能解决这个问题。 如果想强制安装 (这不是个好办法,因为安装后的软件包未必能正常运行), 可以使用 --nodeps 命令行选项。   
3.2.2 卸载  
卸载软件包就象安装软件包时一样简单:   
# rpm -e foo  
#  
   
请注意   
  注意这里使用软件包的 名字 "foo" , 而不是原始软件包的 文件名 "foo-1.0-1.i386.rpm"。卸载软件包时, 需要用原始包的实际文件名替换 foo 包名。   
在卸载某个软件包时,可能会发生依赖关系错误,这说明其它包与此包之间有安装依赖关系。例如:   
# rpm -e foo  
removing these packages would break dependencies:  
       foo is needed by bar-1.0-1  
#  
     
要使 RPM 在卸载此包时忽略该错误 (这不是个好办法,因为卸载后,与它有依赖关系的软件包未必能正常运行), 使用 --nodeps 命令行选项。   
3.2.3 升级  
升级软件包和安装软件包十分类似。   
# rpm -Uvh foo-2.0-1.i386.rpm  
foo                      ####################################  
#  
     
RPM 将自动卸载已安装的老版本的 foo 软件包,用户无法看到有关信息。事实上用户可能总是使用 -U 来安装软件包, 因为即便以往未安装过该软件包,也能正常运行。   
因为 RPM 执行智能化的软件包升级,自动处理配置文件,会显示如下信息:   
saving /etc/foo.conf as /etc/foo.conf.rpmsave  
           
这表示用户对配置文件的修改,不一定能 "向上兼容" 该软件包中的配置文件。 因此,RPM 会备份原始的文件,再安装新文件。用户应当尽快解决这两个配置文件的不同之处,以便系统能持续正常运行。   
因为升级其实就是软件包的卸载与安装的综合,也可能会遇见那些操作中所可能发生的错误。 再有就是: 在使用 旧 版本的 RPM 软件包来升级新版本的软件时,会产生以下信息:   
# rpm -Uvh foo-1.0-1.i386.rpm  
foo   package foo-2.0-1 (which is newer) is already installed  
error: foo-1.0-1.i386.rpm cannot be installed  
#  
   
要使用 RPM 强行 "升级" , 请使用 --oldpackage 命令行参数:   
# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm  
foo                      ####################################  
#  
     
3.2.4 更新  
包的更新与包升级相似:   
# rpm -Fvh foo-1.2-1.i386.rpm  
foo                      ####################################  
#  
      
RPM  更新选项,是检查命令行中指明的包版本与安装在系统中的包版本是否一致。 当 RPM 更新选项处理完已安装包的新版本时,该包会升级到新版本。 但是, RPM 更新选项无法安装系统目前没有的软件包。 这与 RPM 升级不同,升级选项 能够 安装软件包,无论旧版本的包是否已安装。   
RPM 更新选项可以很好的更新一个软件包或一组软件包。 如果用户下载了大量的软件包,但只想升级系统中已有的包时,RPM 更新选项会非常有用。 使用 RPM 更新选项意味着你无需从下载的包中挑挑拣拣,也不用事先删除不要的包。   
这种情况下, 只需简单的键入:   
# rpm -Fvh *.rpm  
   
RPM 工具会自动升级那些已经安装好的包。   
3.2.5 查询  
使用命令 rpm -q来查询已安装软件包的数据库。简单的使用命令 rpm -q foo 会打印出foo软件包的包名、版本号和发行号:   
# rpm -q foo  
foo-2.0-1  
#   
校验所有已安装的软件包: rpm -Va
              
用 RPM 包文件校验已安装的软件包: rpm -Vp foo-1.0-1.i386.rpm
              
如果担心RPM数据库被破坏,就可以使用这种方式加以校验。
如 果校验结果一切正常,将不会产生任何输出。如果有不一致的地方,会显示出来。 输出格式是8位长字符串, "c" 用以指配置文件, 接着是文件名。8位 长字符,每个代表一个文件属性与RPM数据库中记录的属性相比较的结果。"." (点) 表示测试通过。 下面的字符代表某测试的失败:  
5 -- MD5 校验和  
S -- 文件长度  
L -- 符号链接  
T -- 文件修改日期  
D -- 设备  
U -- 用户  
G -- 用户组  
M -- 模式 (包含许可和文件类型)  
? -- 不可读文件  
如果有信息输出, 用户应当认真加以考虑,是该删除、重新安装、还是修正出现的问题。  
3.2 使用 RPM
RPM  有五个基本的操作 模式(不包括包的编译): 安装,卸载,升级,查询,校验。本节将对它们一一介绍。要了解完整的细节和选项,可以使用 rpm -- help, 或转到 the section called 其它 RPM 资源 得到更多关于 RPM 的信息。  
3.2.1 安装
典型的 RPM 有着类似 foo-1.0-1.i386.rpm这样的名称, 其中指明了包名 (foo), 版本号 (1.0), 发行号 (1), 和硬件平台 (i386)。安装一个软件包只需简单的键入以下命令:  
# rpm -ivh foo-1.0-1.i386.rpm
foo                      ####################################
#
     
正如您所看到的, RPM 将会打印出软件包的名字 ( 并不一定要与文件名相同, 可能是 1.rpm), 而后打印出一连串的 # 号以表示安装进度。  
请注意  
   尽管通常是使用 rpm -ivh foo-1.0-1.i386.rpm 来安装包, 但也可以用 rpm -Uvh foo-1.0- 1.i386.rpm 来替代。 -U 是包升级参数, 也可以用来安装新包。参看 升级一节 有关RPM 中 -U 参数的详细使用情况。
软件包的安装设计非常简单, 但还是有可能发生以下错误:  
软件包已被安装
如果软件包已被安装, 会出现以下信息:  
# rpm -ivh foo-1.0-1.i386.rpm
foo                    package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
         
如果仍要安装该包, 可以在命令行中使用 --replacepkgs 选项, 这样 RPM 将忽略该错误信息:  
# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
foo                      ####################################
#
            
文件冲突
如果要安装的软件包中有一个文件已在安装其它包时被安装,会显示以下信息:  
# rpm -ivh foo-1.0-1.i386.rpm
foo          /usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1.i386.rpm cannot be installed
#
      
要想让RPM 忽略该错误信息, 请使用 --replacefiles 命令行选项:  
# rpm -ivh --replacefiles foo-1.0-1.i386.rpm
foo                      ####################################
#
      
未解决依赖关系
一个 RPM 包可能会 "依赖" 其它软件包, 也就是说要求在安装了特定的软件包之后才能安装该软件包。 如果在安装这个软件包时未解决这种存在的依赖关系, 会看到:  
# rpm -ivh bar-1.0-1.i386.rpm
failed dependencies:
       foo is needed by bar-1.0-1
#
         
只有先安装完所依赖的软件包,才能解决这个问题。 如果想强制安装 (这不是个好办法,因为安装后的软件包未必能正常运行), 可以使用 --nodeps 命令行选项。  
3.2.2 卸载
卸载软件包就象安装软件包时一样简单:  
# rpm -e foo
#
     
请注意  
  注意这里使用软件包的 名字 "foo" , 而不是原始软件包的 文件名 "foo-1.0-1.i386.rpm"。卸载软件包时, 需要用原始包的实际文件名替换 foo 包名。  
在卸载某个软件包时,可能会发生依赖关系错误,这说明其它包与此包之间有安装依赖关系。例如:  
# rpm -e foo
removing these packages would break dependencies:
       foo is needed by bar-1.0-1
#
     
要使 RPM 在卸载此包时忽略该错误 (这不是个好办法,因为卸载后,与它有依赖关系的软件包未必能正常运行), 使用 --nodeps 命令行选项。  
3.2.3 升级
升级软件包和安装软件包十分类似。  
# rpm -Uvh foo-2.0-1.i386.rpm
foo                      ####################################
#
     
RPM 将自动卸载已安装的老版本的 foo 软件包,用户无法看到有关信息。事实上用户可能总是使用 -U 来安装软件包, 因为即便以往未安装过该软件包,也能正常运行。  
因为 RPM 执行智能化的软件包升级,自动处理配置文件,会显示如下信息:  
saving /etc/foo.conf as /etc/foo.conf.rpmsave
         
这表示用户对配置文件的修改,不一定能 "向上兼容" 该软件包中的配置文件。 因此,RPM 会备份原始的文件,再安装新文件。用户应当尽快解决这两个配置文件的不同之处,以便系统能持续正常运行。  
因为升级其实就是软件包的卸载与安装的综合,也可能会遇见那些操作中所可能发生的错误。 再有就是: 在使用 旧 版本的 RPM 软件包来升级新版本的软件时,会产生以下信息:  
# rpm -Uvh foo-1.0-1.i386.rpm
foo   package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
     
要使用 RPM 强行 "升级" , 请使用 --oldpackage 命令行参数:  
# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm
foo                      ####################################
#
     
3.2.4 更新
包的更新与包升级相似:  
# rpm -Fvh foo-1.2-1.i386.rpm
foo                      ####################################
#
     
RPM  更新选项,是检查命令行中指明的包版本与安装在系统中的包版本是否一致。 当 RPM 更新选项处理完已安装包的新版本时,该包会升级到新版本。 但是, RPM 更新选项无法安装系统目前没有的软件包。 这与 RPM 升级不同,升级选项 能够 安装软件包,无论旧版本的包是否已安装。  
RPM 更新选项可以很好的更新一个软件包或一组软件包。 如果用户下载了大量的软件包,但只想升级系统中已有的包时,RPM 更新选项会非常有用。 使用 RPM 更新选项意味着你无需从下载的包中挑挑拣拣,也不用事先删除不要的包。  
这种情况下, 只需简单的键入:  
# rpm -Fvh *.rpm
     
RPM 工具会自动升级那些已经安装好的包。

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP