RPM的那些事

余生颓废 提交于 2020-04-01 22:40:55

引言

  linux系统向来以个性化,自由,安全闻名于世。得益于它的源码向来是公开的,只要你有足够的能力,便可以达到完完全全的随心所欲。但是就像风筝一样,因为束缚它才能飞得更高,完完全全的随心所欲往往附加着无限的麻烦! 而在没有RPM和YUM时,我们每一个linux用户都被这样的麻烦困扰过!

RPM即将抵达战场

  可以说在没有RPM的那个黑暗的年代里,进行软件的安装于维护真的是一个非常累的事情。不用的用户可能使用着不同版本的linux定制系统,因为就造就了不同的环境,但是软件的制作者不可能同时发行匹配所有环境的软件。那么当你安装一个不匹配自己环境的软件时,完全可以说是惨无人道。然而,大多数的用户使用的都是发行版的linux系统,这让我们看到了胜利的曙光。就如同安卓和ios一样,已经很难说的出谁抄袭过谁,但是只要是好的功能大家都互相借鉴,因此我们无可厚非的借用了Windows的那种一键式的程序安装方式。

一山可容二虎——RPM和DPKG

  得益于众多linux大牛的努力,我们也有了跟Windows一样简单的软件安装方式,那就是RPM和DPKG。原理是软件的发布者先在固定的硬件平台和系统上先把要发布的软件编译好,然后把于这个软件相关的文件打包成一个特殊的文件,并且在这个特殊的文件中包含了检测系统环境的脚本,这样当用户准备升级或者是安装这个软件时,便会自动检测这个软件所需要的环境,以及软件的依赖关系。并且当完成安装后自动在我们的系统内写入这个软件的信息,方便以后的查找,升级或者是卸载! 而RPM和DPKG这两个机制便是将这种软件安装方式进行了完美的诠释!


  版本代表        软件管理机制          使用命令         线上升级机制


Red Hat / Fedora       RPM            rpm,rembuild         YUM


Debian / Ubuntu        DPKG             dpkg          APT(apt - get)


什么是RPM

  RPM的全名是RedHat Package Manager ,RPM是以一种资料库记录的方式将你所需要安装的软件安装到你的linux系统的一套管理机制。

RPM不得不说的事情

  由于软件已经编译过并且完成打包,所以传输与安装时特别方便,并且软件的资料已经记录在linux主机的资料库中,所以很方便查询,升级或者是卸载
  祸兮福所伏福兮祸所依,有好就难免有坏,由于打包时的环境是一定的,所以你安装时的环境必须与打包时的环境一致或者很相似。
还需要满足软件的依存关系
卸载的时候需要特别小心,最底层的软件不可首先移除,否则可能会造成整个系统的崩溃

来自LINUX的——SRPM

  重要的事情说三遍,我们是开源的!开源的!!开源的!!!开源是linux独特魅力的一个必不可少的一个组成部分。因为也有不少的用户使用的不是发行版本的linux系统,所以在安装官方提供的RPM包时,难免无法很好的使用。所以不用担心,我们还有SRPM,顾名思义就有着源码的RPM包。因此特立独行的你肯定有办法通过源码进行稍微的修改来达到让自己的系统使用吧!


文档格式     文档名格式     是否可以直接安装     内部程序类型    可否修改参数并编译


 RPM       xxx.rpm        可以          已编译        不可以


 SRPM     xxx.src.rpm       不可          未编译        可以


关于RPM的一些小东西

  首先安装这个活,只有ROOT用户才能做,所以说RPM这个命令也就只有ROOT可以执行,普通用户是没有安装软件包的权利的。
当一切准备就绪后,RPM包就可以自动安装了,然后它会将自己的一些相关信息放到 /var/lib/rpm 目录下,这个目录记载了所有关于这个软件的详细说明,你想知道的基本上都在这里面!

必不可少的RPM安装命令

  只要你用过一次RPM的命令都会记住rpm - ivh 这个命令,而且我们日常中如果真的需要用rpm命令装个软件时,也基本上随手就 -ivh敲出来了,但是它们真正的意义是这样的:
  -i :即install的意思,也就是安装的意思。
 -v :查看更为细致的安装消息
 -h:显示安装的进度

rpm安装的进阶命令

rpm
  --nodeps:当发生软件依赖时,而导致无法安装,但执意安装的时候。 //可能会造成该软件无法使用
  --replacefiles:软件已安装或版本有问题时,可以强制覆盖安装。 //真的会覆盖档案,是真的!
  -- replacepkgs:装过了就不装了,没装过就装上呗。 //没啥不好的后果
  -- force :顾名思义就是强制的意思呗,就是让你装,不讲道理!
  -- test:检测是否可以安装,并且能找出依赖关系。 //这玩意没有任何坏处,相信我!
  -- prefix:就是指定一个自定义的安装路径。 //国人默认软件不爱放C盘 -.-

rpm的查询命令

rpm
  -q:仅查询,后面跟软件名,查询该软件是否已安装
  -qa:列出本机上所有已安装的软件的名称
  -qf:后面跟文档的名称,可以查看该文档是哪个软件的东东。
  -qp:查看某个RPM包里的一些咨询,记住不是安装后的软件,而是没有安装的包!
  -qi ,-ql,-qc,-qd,-qR 这些我也不会,而且没啥用。想知道自己去度娘

关于rpm查询的一些小东西

  在查询的这个命令里面,所有的查询参数之前都需要加上 -q 才是真正的查询。查询主要分两种,一种是查询已经安装到电脑上的软件的资讯,这部分资讯都在 /var/lib/rpm 里面。还有一种查询是查看RPM包里的东西,这部分东西可以帮我们在还没装这个软件时就对这个软件有一个大致的了解。
另外,除了需要查询一个还没安装的RPM包时,需要输入完整的RPM包的名字。在我们电脑上的软件我们查询时,只需要输入软件的名字即可,而不需要输入版本号!

这次就先写到这里吧,等我再学会新的东西后再和大家分享!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!