虽然现在很多人都使用yum去替代rpm了,但是rpm在一些特殊场合下还是有其作用的,比如查询跟验证已安装的rpm包,rpm全称Redhat Package Manager,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,与Dpkg类似。
     rpm的常用功能分两大块:
    (1)查询/核实软件包是否被安装:rpm {-q|--query} [select-options] [query-options]         (用的多)
                                                        rpm {-V|--verify} [select-options] [verify-options]
    (2)安装/升级/删除本地软件包: rpm {-i|--install} [install-options] PACKAGE_FILE ...
                                                        rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
                                                        rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...         

    select-options
    [PACKAGE_NAME] [-a,--all] [-f,--file FILE]
    [-g,--group GROUP] {-p,--package PACKAGE_FILE]
    [--fileid ID] [--hdrid SHA1] [--pkgid MD5] [--tid TID]
    [--querybynumber HDRNUM] [--triggeredby PACKAGE_NAME]
    [--whatprovides CAPABILITY] [--whatrequires CAPABILITY]

    query-options
    [--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]
    [--filesbypkg] [-i,--info] [--last] [-l,--list]
    [--provides] [--qf,--queryformat QUERYFMT]
    [-R,--requires] [--scripts] [-s,--state]
    [--triggers,--triggerscripts]

    install-options
    [--aid] [--allfiles] [--badreloc] [--excludepath OLDPATH]
    [--excludedocs] [--force] [-h,--hash]
    [--ignoresize] [--ignorearch] [--ignoreos]
    [--includedocs] [--justdb] [--nodeps]
    [--nodigest] [--nosignature] [--nosuggest]
    [--noorder] [--noscripts] [--notriggers]
    [--oldpackage] [--percent] [--prefix NEWPATH]
    [--relocate OLDPATH=NEWPATH]
    [--replacefiles] [--replacepkgs]
    [--test]

      使用rpm首先确定是要查询,还是要安装,如果要查询,一般第一参数就是-q,如果是安装,第一参数就是-i,如果是卸载,第一参数就是-e;然后就是接下来的选择了:
      I.查询(列举常用的)
        -qa:查询所有的已安装软件包
        -qf:查看某个文件属于哪个软件包,rpm -qf /etc/sysctl.conf
        -ql:查看软件包的安装目录
        -qi:查看已安装软件包的的标准详细信息,比如软件包的大小、安装时间、所属的开发组(Development group)、版本号等。
      II.安装
         -i  --prefix:指定安装路径(安装时最好指定安装目录,否则默认安装的路径很分散,可执行文件默认放在/usr/local/bin库文件默认放在/usr/local/lib.....不好删)
         -i  --force:安装过程中可能会出现“.. conflict with ... ”,这是安装过程中,可能有文件的覆盖,使用该参数就可以强制覆盖安装。
         -ivh:这个就是安装时常用的三个参数,v表示输出,h表示用#做进度标记,rpm -ivh ***.rpm
      III.卸载
         rpm -e package_name 如果该软件包和其它安装包之间有依赖关系,卸载失败
         rpm -e --nodeps package_name 不考虑依赖包
         rpm -e --allmatches package_name 删除所有跟package_name匹配的所有版本的包
      补充1:-v是一个通用的参数(GENERAL OPTIONS),即verbose,也就是说查询,安装,升级,卸载都可以加该参数。
      补充2:在卸载软件包时,若碰到依赖包,要慎用--nodeps(Don’t check dependencies before uninstalling the packages.),也就是说如果卸载时不检查依赖的话,那些使用该软件包的软件在此之后可能就不能正常工作了。
      补充3:如果碰到要安装.src.rpm的包,这类软件包是包含了源代码的rpm包,在安装时需要进行编译:
             方法一:(熟悉编译过程)
               ① 执行rpm -i your-package.src.rpm 
               ② cd /usr/src/redhat/SPECS  (rpmbuild用来创建rpm包,它是用来指示转换的源码不定编译成二进制文件的包,在centos下默认目录为/usr/src/redhat)
               ③ rpmbuild -bp your-package.specs  ,一个和你的软件包同名的specs文件 
               ④ cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录 
               ⑤ ./configure 这一步和编译普通的源码软件一样,可以加上参数 
               ⑥ make 
               ⑦ make install     卸载(make clean ; make uninstall )
             方法二:(常用)
               ①执行rpm -i you-package.src.rpm 
               ② cd /usr/src/redhat/SPECS 
               ③ rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件 
                 这时,在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等) 在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。
               ④rpm -i new-package.rpm即可安装完成。

浅谈Linux下的rpm的更多相关文章

  1. []转帖] 浅谈Linux下的五种I/O模型

    浅谈Linux下的五种I/O模型 https://www.cnblogs.com/chy2055/p/5220793.html  一.关于I/O模型的引出 我们都知道,为了OS的安全性等的考虑,进程是 ...

  2. 浅谈Linux下/etc/passwd文件

    浅谈Linux 下/etc/passwd文件 看过了很多渗透测试的文章,发现在很多文章中都会有/etc/passwd这个文件,那么,这个文件中到底有些什么内容呢?下面我们来详细的介绍一下. 在Linu ...

  3. 浅谈Linux下如何修改IP

    linux 下命令之浅谈//cd ..  //返回上一级//创建文件夹touch test.txt//Linux不区分大小写//往一个文件中追加内容echo "****" > ...

  4. 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。

    ajax跨域请求对于前端开发者几乎在任何一个项目中都会用到,众所周知,跨域请求有三种方式: jsonp; XHR2 代理: jsonp: 这种应该是开发中是使用的最多的,最常见的跨域请求方法,其实aj ...

  5. 浅谈Linux下CPU利用率和CPU负载【转】

    转自:https://blog.csdn.net/Alisa_xf/article/details/71430406 在Linux/Unix下,CPU利用率(CPU utilization)分为用户态 ...

  6. 浅谈Linux下的五种I/O模型 两篇别人的博客

     http://blog.csdn.net/sinat_34990639/article/details/52778562  http://www.cnblogs.com/chy2055/p/5220 ...

  7. 浅谈Linux下各种压缩 解压命令和压缩比率对比

    Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的.rar .zip格式. 比如,Linux下常用的tar tar.gz tar.bz2 .Z等等不一而 ...

  8. 浅谈 Linux 下的 SSH1, SSH2

    SSH:Secure Shell .是一种安全协议. 常见的应用场景是远程控制台登陆. SSH1免费,SSH2收费.  其实 SSH 并不只是在 Linux 和 Unix  下使用,他们同样在 Win ...

  9. 浅谈Linux下傻瓜式磁盘分区工具cfdisk的使用

    对于新手来说,Linux环境下的磁盘分区可能还会存在一些困难.对于熟悉Linux的朋友来说,我们还有fdisk.parted(2TB以上的磁盘分区使用)等磁盘分区工具可以使用.在我们新增磁盘或者在原来 ...

随机推荐

  1. W3C 事件切换 颜色变化

    颜色变化代码: HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  2. css 块级格式化上下文(BFC)

    一.块级格式化上下文(BFC) 1.什么是块级格式化上下文? Block Formatting Contexts (BFC,块级格式化上下文)就是一个块级元素 的渲染显示规则 (可以把 BFC 理解为 ...

  3. k8s源码编译

    1.可在github上面直接下载源码 2.下载所需要的docker镜像,并打上tag,不知道tag,可以先编译一下,会提示所需image. docker pull index.alauda.cn/xu ...

  4. Java常用类库API之数字处理工具类

    数字处理工具类BigDecimal和DecimalFormat Java提供的java.text.DecimalFormat类,帮助我们用最快的速度将数据格式化为我们想要的样子.例如,取两位小数 im ...

  5. ### Error updating database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 必须声明标量变量 "@P23@P24"。(sql少一个逗号)【??】

    (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,[??],?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, ...

  6. CF613D Kingdom and its Cities 虚树 + 树形DP

    Code: #include<bits/stdc++.h> #define ll long long #define maxn 300003 #define RG register usi ...

  7. 继续写高精!noip2012国王游戏。。。

    国王游戏 题目描述: 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王 ...

  8. Python_010(迭代器)

    一.函数名的运用 1.函数名的内存地址 def func(): print("英雄联盟") print(func) #输出结果: <function func at 0x00 ...

  9. (3.1)狄泰软件学院C++课程学习剖析二

    深度剖析C++第二部分 1.通过对象名能够访问public成员变量.每个对象的成员变量都是专属的,成员变量不能够在对象之间共享. 2.需求:统计在程序运行期间某个类的对象数目,保证程序的安全性(不能使 ...

  10. vue双向数据绑定v-model

    1.双向数据绑定 <input v-model="msg" /> <template> <div id="app"> < ...