当前位置:  技术问答>linux和unix

Linux中应用程序(rpm)安装,删除及其它......

    来源: 互联网  发布时间:2014-11-15

    本文导语:  请教各位在linux中*.rmp的文件如何安装? 如要uninstall这些程序又该如何做? qt哪里有下载? | RPM的安装 用RPM包方式来发布软件变得越来越流行,主要的原因是这种软件发布方式很方便用户安...

请教各位在linux中*.rmp的文件如何安装?
如要uninstall这些程序又该如何做?
qt哪里有下载?

|
RPM的安装


用RPM包方式来发布软件变得越来越流行,主要的原因是这种软件发布方式很方便用户安装、升级和从系统中删除。除此之外,RPM还可以让你有更多的对系统安装的软件的管理性功能,例如可以查新系统有哪些已经安装的软件包,查看这些软件包分别安装了什么文件,这些文件又放在了什么地方等等。 

这里我给出一个简单的入门手册,供初学者查看参考,快速使用RPM。这些RPM命令都是最最常用的,更复杂的功能大家可以暂时不用管,等确实需要的时候再去查man手册。:) 

下面我们开始吧。安装一个RPM包的一般采用的命令格式如下: 

# rpm -ivh package.ix86.rpm 

在上面的命令中,package是个假定的名字,ix86是这个包为特定的CPU做了优化处理的意思。例如,package可能是ldconfig-1.9.5-14,而ix86是i386这样的。 

“-i”参数指明是要安装这个package,而“-v”这个参数则使输出信息增加,“-h”表示在安装过程中显示hashes作为在安装过程的一个进度条。 

上面就是所有的关于安装一个RPM包的内容,非常简单而好用吧。当然如果你安装过程中遇到了一些包依赖关系的问题那就稍微要麻烦一些了。包依赖关系问题就是说,你正在安装的包需要其他的包的支持才能正常工作。通常还有可能遇到的问题是所安装的包需要某个软件或者函数库的特定版本才能正常工作。这样的情况下,你可以安装或者升级依赖的软件包,然后继续安装你自己需要安装的软件包。 

下面我们来看其他的一些非常有用的rpm命令。 

如果你要看一个RPM包安装以后到底安装了那些文件,你可以使用这个命令: 

# rpm -ql packagename 

这个packagename就是你要查询的软件包的名字,例如ldconfig-1.9.5-14mdk;而“-p”参数表示查询软件包数据库,看这个软件包是否已经安装;“-l”参数表示列出所查询的包的所有安装了的文件的完整的路径。 
下面是一个例子: 

[wh@infonet wh]$ rpm -ql ldconfig-1.9.5-14mdk 
/sbin/ldconfig 
/usr/doc/ldconfig-1.9.5 
/usr/doc/ldconfig-1.9.5/README 

除了你查询某个软件包的信息这个实用功能外,还可以很方便的删除某个特定的RPM包软件。采用的命令参数是“-e“,格式如下: 

# rpm -e packagename 

“-e”就表示删除(erase)的意思,就是把特定的软件包(packagename)删除掉。 

值得注意的是,rpm管理机制不允许你删除某个软件包,如果这个软件包还被其他软件包所依赖。因为一旦你删除了这个软件包,其他依赖他才能运行的软件包也就不能正常使用了。 

已经学会了如何安装和如何删除一个rpm软件包,下面我们看看如何升级一个已经存在的rpm包软件。升级其实和安装类似,可以参考下面的命令: 

# rpm -Uvh package.ix86.rpm 

“-U“参数表示是升级(upgrade),参数“v”和“h”意义和前面一样的,这里不再赘述。 

到此,我们已经学会了,如何安装、删除和升级一个使用rpm发布的软件了。

|
RPM 的删除   
    看看应该对你有帮助的:)


安全地卸载 
RPM卸载软件包,并不是简单地将原来安装的文件逐个删除,那样做的话,可能会出现这样或那样的问题。如,A软件包依靠B软件包做某些工作,若B软件包卸载了,则A软件包就不能正常运行了。RPM为用户安全考虑,会做某些检查,尽可能排除出错的情况。 
RPM在卸载软件包时,分步骤进行如下操作: 
1. 检查依赖(Denpendency) 
检查依赖的目的,在于确保当前没有任何软件包依赖于当前要卸载的软件包。 
2. 执行卸载前触发脚本程序(Triggerun) 
3. 执行卸载前脚本程序(Preuninstall) 
本程序为软件包制作者设定,完成卸载前的一些工作,具体如,要卸载的软件包中某个 
程序当前正在运行时,脚本程序必须杀掉它,否则无法正确卸载。 
4. 检查配置文件(Configfiles) 
RPM卸载软件包前会检查包中的配置文件是否修改了,如果修改了,RPM要换个名字保存 
该文件,文件名一般是“原文件名+.rpmsave”。(这是RPM软件包管理的特色之一) 
5. 真正卸载 
即按照软件包中的文件列表,将文件逐个删除。要注意的是,如果其中有文件属于别的 
软件包(即两个软件包拥有一个名字相同的文件),则RPM并不删除。 
6. 执行卸载后脚本程序(Postuninstall) 
本程序主要是完成卸载的善后工作,如将系统配置文件inetd.conf修改一下,去掉安装 
时添加的东西等等。 
7. 更新RPM数据库 
卸载后,RPM删除该软件包在数据库中的所有信息。 
8. 执行卸载后触发脚本程序(Triggerpostun) 

命令格式 
卸载RPM格式的软件包,可使用如下命令格式: 
rpm -e [卸载选项1 卸载选项2...] [软件包标识1 软件包标识2...] 

注: 也可使用--erase代替-e,效果相同。 

软件包标识 
对于已安装的软件包,RPM使用如下格式来唯一标识它: 
Name[-Subname]-Version-Release 
其中: Name: 指软件名; 
Subname : 本项可选,指软件包子包的名字; 
Version : 指软件版本号。注意:其中不能含减号(-)字符; 
Release : 指软件释出号。 
例如: 包裹文件file-3.26-6.i386.rpm安装后,其软件包标识为file-3.26-6。可以用此标识卸载,查询,校验该软件包。在命令行上输入软件包标识时,可以写全,也可以采用简写的方式。如file-3.26-6,可仅输入file,或file-3.26,或输全。又如: 带有子包的软件包标识XFree86-devel-3.3.6-6,可仅输入XFree86-devel,或XFree86-devel-3.3.6,还可完全输入。 
注意: 软件包标识是大小写敏感的,即大写字母与小写字母表示不同的涵义。如bash-2.03-10标识不能输作Bash-2.03-10,也不能输作bAsh-2.03-10等等。 

选项列表 
 

选项详解 
通用选项的解释,请参见,本文不再赘述。 
下面对指定用选项做些解释: 
1. --test : 卸载测试 
RPM的卸载测试做些什么?主要是检查依赖关系,确保系统中没有软件包依赖于要卸载的软件包。如果还有软件包依赖要卸载的软件包,则RPM会提示依赖关系将中断的错误,例如: 
# rpm -e --test mktemp 
error: removing these packages would break dependencies: 
mktemp is needed by autoconf-2.13-5 
mktemp is needed by dev-2.7.7-4BP 
mktemp is needed by groff-1.11a-10BP 
mktemp is needed by gzip-1.2.4-15BP 
mktemp is needed by initscripts-4.16-3BP 
mktemp is needed by metamail-2.7-21BP 
mktemp is needed by rpm-3.0.3-4BP 
mktemp is needed by autofs-3.1.3-2 
/bin/mktemp is needed by apache-1.3.12-5BP 
/bin/mktemp is needed by linuxconf-1.16r1.3-4BP 



当然,我们通过浏览卸载测试时输出的调试信息就知道得更清楚了。 
# rpm -e --test -vv file | nl 
1 D: opening database mode 0x0 in //var/lib/rpm/ 
2 D: getting list of mounted filesystems 
3 + echo triggeruninstall 
4 triggeruninstall 
5 D: will remove files test = 1 
6 D:file: /usr/share/magic action: remove 
7 D:file: /usr/man/man4/magic.4 action: remove 
8 D:file: /usr/man/man1/file.1 action: remove 
9 D:file: /usr/bin/file action: remove 
10 + echo triggerpostuninstall 
11 triggerpostuninstall 
12 D: removing database entry 


注: 本例进行file包的卸载测试,输出信息送管道交nl列出行号,现逐行解释。(行号后以D:开始的行输出的为调试信息) 
第1行: 打开/var/lib/rpm目录下的RPM数据库; 
第2行: 取已安装文件系统列表; 
第3行: 执行卸载前触发脚本程序; 
第4行: 这一行是卸载前触发脚本程序的执行结果; 
第5行: RPM提示将要删除文件,其中test=1表明为卸载测试,并非真正删除; 
第6-9行: 显示各文件的执行操作--删除; 
第10行: 执行卸载后触发脚本程序; 
第11行: 本行是卸载后触发脚本程序的执行结果; 
第12行: 删除软件包在数据库中的信息。 
2. --nodeps : 不检查依赖 
RPM管理软件包,不仅管理包中的所有文件,还同时管理着软件包之间的依赖关系。如A依赖于B运行,若B不存在了,则A也就运行不了了。RPM维护着这种关系,尽量避免破坏,以保证软件的正常运行。上例进行mktemp包的卸载测试时,RPM提示了中断依赖关系的错误。如果使用本选项,不检查依赖,则卸载测试会顺利完成。 
# rpm -e --test --nodeps mktemp 



需要说明的是,除非用户对软件包有足够了解,否则不要使用本选项,最好让RPM自动维护软件间的依赖关系,确保其能正常运行。 
3. --noscripts : 不执行脚本程序 
一个RPM软件包中可包含五种脚本程序,即:安装前脚本程序,安装后脚本程序,卸载前脚本程序,卸载后脚本程序和校验脚本程序。卸载时使用--noscripts选项,可禁止卸载前与卸载后脚本程序的执行。 
注意: 一般用户不要使用此选项。此选项主要提供给软件包制作者使用的。通过禁止执行脚本程序,可以防止因安装带有BUG的软件包而宕掉整个系统。当软件包去掉了BUG后,此选项就不必使用了。 
4. --notriggers : 不执行触发程序 
为了软件包间的交互控制,RPM设计了三种触发程序:安装时触发程序,卸载前触发程序和卸载后触发程序。为了防止因某一软件包的卸载而引发卸载前与卸载后触发程序的执行,可以使用--notriggers选项。通过比较下一例子与第1个选项介绍中的例子的输出,就可看到:选择--notriggers选项后,卸载前与卸载后触发程序都没有被触发执行。 
# rpm -e --test -vv --notriggers file | nl 
1 D: opening database mode 0x0 in //var/lib/rpm/ 
2 D: getting list of mounted filesystems 
3 D: will remove files test = 1 
4 D:file: /usr/share/magic action: remove 
5 D:file: /usr/man/man4/magic.4 action: remove 
6 D:file: /usr/man/man1/file.1 action: remove 
7 D:file: /usr/bin/file action: remove 
8 D: removing database entry 
5. --allmatches : 卸载所有匹配的包 


RPM可将同一软件的不同版本安装到系统中,这样如果想全部卸载掉,这时仅简单输软件名是不行的,将出现错误,如: 
# rpm -q foo 
foo-6.0-1 
foo-7.0-1 
# rpm -e foo 
error: "foo" specifies multiple packages 



注: 本例中先查询foo包,发现有6.0和7.0版两个版本,接着卸载foo包,出现错误: 有多个软件包的名字均为foo。 
怎样才能全部卸载呢? 
答案之一是一个一个卸载,卸载时输入软件包标识,因为软件名相同,所以最少再输个版本号,这种情况适用于软件版本少的时候。 
答案之二是使用--allmatches选项,仅输个软件名即可,指示RPM卸载所有匹配的包,比较方便。 
# rpm -e --allmatches foo 
# rpm -q foo 
package foo is not installed 



卸载过程没有出现错误,之后再查询foo包,RPM则提示软件包未安装。 
6. --justdb : 仅修改数据库 
使用本选项后,RPM将只更新其数据库,文件系统不更新,意即如果软件包安装有文件的话,卸载后这些文件照样存在。 
# rpm -ql file 
/usr/bin/file 
/usr/man/man1/file.1 
/usr/man/man4/magic.4 
/usr/share/magic 
# ls -l /usr/bin/file 
-rwxr-xr-x 1 root root23948 Mar 23 1999 /usr/bin/file 
# rpm -e --justdb file 
# ls -l /usr/bin/file 
-rwxr-xr-x 1 root root23948 Mar 23 1999 /usr/bin/file 



注: 本例先用rpm -ql查询得到file包的文件列表,再用ls命令列包中的一个文件/usr/bin/file,能列出信息,故文件存在。然后用rpm -e --justdb卸载file包但只更新数据库,而后再用ls命令列/usr/bin/file,可以看到该文件依然存在。 

    
 
 

您可能感兴趣的文章:

  • 怎样开发在LINUX 上运行的应用程序,像WINDOWS桌面应用程序一样
  • linux开发的应用程序部署到其他linux的问题
  • 新手提问:在REDHAT LINUX 下开发应用程序,用什么工具好,除了 LINUX C以外
  • 菜鸟求助:Linux 应用程序后台启动后关闭窗口程序退出
  • 学了linux程序设计后能不能编写出应用程序
  • 请问能否在linux实现一个应用程序访问另外一个程序的内存数据?
  • 几个Linux应用程序开发的问题请教LINUX程序员!
  • linux 桌面应用程序和web应用程序编写常用的语言
  • Linux应用程序启动器 Kupfer
  • 使用linux内核+qt开发的应用程序需要开源吗
  • linux驱动程序是怎样通过内核和应用程序通信,还有是怎样和硬件通信,跪求求解,谢谢高手留言。
  • 求教:Linux下Java应用程序的重启脚本
  • [求助]如何在linux下运行windows应用程序????
  • 用SecureCRT或Putty 远程启动linux服务器上的一个应用程序,但是当我关掉SecureCRT的时候,应用程序也被关掉了,怎么能够做到我关闭客户
  • 在Linux应用程序模式下如何设置中断!!!
  • 如何获取应用程序的当前路径(Linux)
  • 怎样设置应用程序随linux启动而启动!
  • linux 驱动中想用 kobject_uevent 和应用程序通讯. 但不知如何用?
  • 哪位大哥知道?我怎样知道LINUX redhat 7.2下声音设备由哪个应用程序占用?
  • 嵌入式Linux换了内核后,运行应用程序显示Killed
  • 请问:linux中的软件包安装后,怎么删除呀,直接删除吗?
  • linux 变量内容删除 中有关“最短数据删除”的意思
  • Linux 删除命令关于删除系统打不出的乱码文件名
  • 在linux下删除文件夹的时候总提示Device or resuource busy,请问有没有强行删除的办法?
  • 如何将LINUX的分区删除
  • 我装了WINDOWS和LINUX双系统,现在怎么把LINUX删除了?
  • 在linux在如何保护正在使用的文件不被删除
  • linux系统怎么删除????
  • linux下删除文件原理
  • LINUX 下如何实现删除文件进度条
  • 怎样删除LINUX
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下curl的下载,安装以及curl命令的详细参数,用法介绍
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux/centos下安装nginx(rpm安装和源码安装)详细步骤
  • 在windowsxp安装完vm后,想安装linux(作为guest os),是不是需要linux安装盘?
  • linux/centos安装nginx常见错误及解决办法
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 先安装了redhat linux ,后来安装了windows,如何恢复redhat linux ?
  • Linux下通过rpm安装软件详细介绍以及如何将软件安装到指定目录
  • 我C盘安装win2k,在E盘安装linux。安装后,如何进入linux系统?
  • Linux下c/c++ boost安装及并发编程库mpi介绍
  • 我没有linux安装光盘!可不可以通过网络在我的电脑上安装一个linux操作系统!
  • 在linux下面怎么安程序啊?我刚裝了一个 linux,下了一个迅雷安装程序,可是不知道怎么安装啊?真心请教。
  • 我安装linux时 为什么直接按Enter后就 linux text 安装?
  • 听说安装linux要很小的空间,我在网上看到,安装linux要3张光盘啊!
  • 请问在vmstation下怎么安装linux??但不想从头安装linux,不知在windows下怎么办?
  • 安装LINUX时,GRUB没有安装到主MBR,而是安装到了hdb7(/boot分区)上,请问怎样才能进入LINUX
  • linux安装nagios,安装nrpe时候,先安装了openssl再从安装nrpe出错。
  • Red Hat linux如何 安装,当我要划分区来安装的时候,提示我说要划和""linux根区,才可以继续安装.请问如何处理?
  • 在已经安装了windows2000server的机器上安装红旗linux时,如何配置引导记录安装位置?急
  • 请问如何安装一个LINUX内核到我的电脑上,成为一个系统比如安装linux-2.2.16-高分
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • secureCRT下Linux终端汉字乱码解决方法
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • Linux c字符串中不可打印字符转换成16进制
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3