RPM和yum

 1.软件管理机制

使用Tarball安装软件会带来一个很麻烦的问题,编译安装软件非常复杂,而且管理软件非常的不方便,由此人们想到了一种更方便的软件管理机制:由软件提供者在与使用者相同的环境下编译好软件,直接提供二进制码,使用者下载后就可以直接安装,而利用在线管理机制(yum或者apt)可以直接下载安装该软件所需要的其他库和软件。这样安装过程就变得简单,而且软件管理机制包含一个软件的资料库,方便卸载,更新等操作。

现在有两种主流的软件管理机制,分别是redhat的RPM(yum)和Debian的DPKG(apt)

RPM包是在特定环境下编译好的安装文件,环境差异可能导致无法安装,另外还有SRPM这个东西,里面有源码,需要自己编译成RPM文件,然后再安装,它也可以享受RPM文件管理的待遇

2.RPM

RPM安装程序时,会先去读取文件内记载的设定参数内容,然后将该资料用来比对 Linux 系统的环境,以找出是否有属性相依的软体尚未安装的问题(利用yum可自动解决软件的依赖问题)。

若环境检查合格了,那么 RPM 档案就开始被安装到你的 Linux 系统上。安装完毕后,该软体相关的资讯就会被写入 /var/lib/rpm/ 目录下的资料库档案中了,这个目录下的文件很重要,rpm管理软件就是靠里面的信息。

那RPM安装的文件会在哪里呢,一般来说会在下面的文件夹下:

/etc 一些设定档放置的目录,例如 /etc/crontab

/usr/bin 一些可执行档案

/usr/lib 一些程式使用的动态函式库

/usr/share/doc 一些基本的软体使用手册与说明档

/usr/share/man 一些 man page 档案

 

RPM 安装 (install):

  
  
  
  
  1. [root@www ~]# rpm -ivh package_name 
  2. 选项与参数: 
  3. -i :install 的意思 
  4. -v :察看更细部的安装资讯画面 
  5. -h :以安装资讯列显示安装进度 

还有一些参数:

 

RPM 升级与更新 (upgrade/freshen)

-Uvh 后面接的软体即使没有安装过,则系统将予以直接安装; 若后面接的软体有安装过旧版,则系统自动更新至新版;

-Fvh 如果后面接的软体并未安装到你的 Linux 系统上,则该软体不会被安装;亦即只有已安装至你 Linux 系统内的软体会被‘升级’!

不过在yum存在的情况下用处似乎不大啊,呵呵

 

RPM 查询 (query)

RPM 在查询的时候,其实查询的地方是在 /var/lib/rpm/ 这个目录下的资料库档案啦!另外, RPM 也可以查询未安装的 RPM 档案内的资讯

  
  
  
  
  1. [root@www ~]# rpm -qa                              <==已安装软体 
  2. [root@www ~]# rpm -q[licdR] 已安装的软体名称       <==已安装软体 
  3. [root@www ~]# rpm -qf 存在于系统上面的某个档名     <==已安装软体 
  4. [root@www ~]# rpm -qp[licdR] 未安装的某个档案名称  <==查阅RPM档案 
  5. 选项与参数: 
  6. 查询已安装软体的资讯: 
  7. -q  :仅查询,后面接的软体名称是否有安装; 
  8. -qa :列出所有的,已经安装在本机 Linux 系统上面的所有软体名称; 
  9. -qi :列出该软体的详细资讯 (information),包含开发商、版本与说明等; 
  10. -ql :列出该软体所有的档案与目录所在完整档名 (list); 
  11. -qc :列出该软体的所有设定档 (找出在 /etc/ 底下的档名而已) 
  12. -qd :列出该软体的所有说明档 (找出与 man 有关的档案而已) 
  13. -qR :列出与该软体有关的相依软体所含的档案 (Required 的意思) 
  14. -qf :由后面接的档案名称,找出该档案属于哪一个已安装的软体; 
  15. 查询某个 RPM 档案内含有的资讯: 
  16. -qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在于找出 
  17.         某个 RPM 档案内的资讯,而非已安装的软体资讯!注意! 

 

RPM 验证与数字签名  (Verify/signature)

验证 (Verify) 的功能主要在于提供系统管理员一个有用的管理机制!作用的方式是‘使用 /var/lib/rpm 底下的资料库内容来比对目前 Linux 系统的环境下的所有软体档案 ’也就是说,当你有资料不小心遗失, 或者是因为你误杀了某个软体的档案,或者是不小心不知道修改到某一个软体的档案内容, 就用这个简单的方法来验证一下原本的档案系统吧!好让你�t解这一阵子到底是修改到哪些档案资料了!

  
  
  
  
  1. [root@www ~]# rpm -Va 
  2. [root@www ~]# rpm -V  已安装的软体名称 
  3. [root@www ~]# rpm -Vp 某个 RPM 档案的档名 
  4. [root@www ~]# rpm -Vf 在系统上面的某个档案 
  5. 选项与参数: 
  6. -V  :后面加的是软体名称,若该软体所含的档案被更动过,才会列出来; 
  7. -Va :列出目前系统上面所有可能被更动过的档案; 
  8. -Vp :后面加的是档案名称,列出该软体内可能被更动过的档案; 
  9. -Vf :列出某个档案是否被更动过~ 

改动的选项:

 

  • S :(file Size differs) 档案的容量大小是否被改变
  • M :(Mode differs) 档案的类型或档案的属性 (rwx) 是否被改变?如是否可执行等参数已被改变
  • 5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
  • D :(Device major/minor number mis-match) 装置的主/次代码已经改变
  • L :(readLink(2) path mis-match) Link 路径已被改变
  • U :(User ownership differs) 档案的所属人已被改变
  • G :(Group ownership differs) 档案的所属群组已被改变
  • T :(mTime differs) 档案的建立时间已被改变

 

数字签名就是公钥私钥的问题。

 

RPM 卸载与重建资料库 (erase/rebuilddb)

卸载软件时注意依赖关系的问题,如果软件A依赖B,不要直接卸载B。

格式:rpm -e 软件名

由于 RPM 档案常常会安装/移除/升级等,某些动作或许可能会导致 RPM 资料库 /var/lib/rpm/ 内的档案破损。果真如此的话,那你该如何是好?别担心,我们可以使用 --rebuilddb 这个选项来重建一下资料库喔! 作法如下:

rpm --rebuilddb

 

3.yum

CentOS 先将释出的软体放置到YUM服务器内,然后分析这些软体的相依属性问题,将软体内的记录资讯写下来 (header)。 然后再将这些资讯分析后记录成软体相关性的清单列表。这些列表资料与软体所在的位置可以称呼为容器 (repository)。 当用户端有软体安装的需求时,用户端主机会主动的向网路上面的 yum 伺服器的容器网址下载清单列表, 然后透过清单列表的资料与本机 RPM 资料库已存在的软体资料相比较,就能够一口气安装所有需要的具有相依属性的软体了。

当用户端有升级、安装的需求时, yum 会向容器要求清单的更新,等到清单更新到本机的 /var/cache/yum 里面后, 等一下更新时就会用这个本机清单与本机的 RPM 资料库进行比较,这样就知道该下载什么软体。接下来 yum 会跑到容器伺服器 (yum server) 下载所需要的软体,然后再透过 RPM 的机制开始安装软体

yum 查询功能

  
  
  
  
  1. [root@www ~]# yum [option] [查询工作项目] [相关参数] 
  2. 选项与参数: 
  3. [option]:主要的选项,包括有: 
  4.   -y :当 yum 要等待使用者输入时,这个选项可以自动提供 yes 的回应; 
  5.   --installroot=/some/path :将该软体安装在 /some/path 而不使用预设路径 
  6. [查询工作项目] [相关参数]:这方面的参数有: 
  7.   search  :搜寻某个软体名称或者是描述 (description) 的重要关键字; 
  8.   list    :列出目前 yum 所管理的所有的软体名称与版本,有点类似 rpm -qa; 
  9.   info    :同上,不过有点类似 rpm -qai 的执行结果; 
  10.   provides:从档案去搜寻软体!类似 rpm -qf 的功能! 

 

安装/升级功能:

  
  
  
  
  1. [root@www ~]# yum [option] [查询工作项目] [相关参数] 
  2. 选项与参数: 
  3.   install :后面接要安装的软体! 
  4.   update  :后面接要升级的软体,若要整个系统都升级,就直接 update 即可 

 

卸载功能:

yum remove 软件

 

yum的配置文件(默认在/etc/yum.repos.d/中)

  
  
  
  
  1. [root@www ~]# vi /etc/yum.repos.d/CentOS-Base.repo 
  2. [base] 
  3. name=CentOS-$releasever - Base 
  4. mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os 
  5. #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ 
  6. gpgcheck=1 
  7. gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5 

 

上面的资料需要注意的是:

  • [base]:代表容器的名字!中刮号一定要存在,里面的名称则可以随意取。但是不能有两个相同的容器名称, 否则 yum 会不晓得该到哪里去找容器相关软体清单档案。
     
  • name:只是说明一下这个容器的意义而已,重要性不高!
     
  • mirrorlist=:列出这个容器可以使用的映射站台,如果不想使用,可以注解到这行;
     
  • baseurl=:这个最重要,因为后面接的就是容器的实际网址! mirrorlist 是由 yum 程式自行去捉映射站台, baseurl 则是指定固定的一个容器网址!我们刚刚找到的网址放到这里来啦!
     
  • enable=1:就是让这个容器被启动。如果不想启动可以使用 enable=0 喔!
     
  • gpgcheck=1:还记得 RPM 的数位签章吗?这就是指定是否需要查阅 RPM 档案内的数字签名!
     
  • gpgkey=:就是数字签名的公钥档所在位置!使用预设值即可

 

 

yum repolist all命令可以查看使用的容器状态

有时候修改yum的配置文件会造成本机的清单与 yum 伺服器的清单不同步的问题,此时需要清除掉本机上面的旧资料。

  
  
  
  
  1. [root@www ~]# yum clean [packages|headers|all]  
  2. 选项与参数: 
  3.  packages:将已下载的软体档案删除 
  4.  headers :将下载的软体档头删除 
  5.  all     :将所有容器资料都删除! 

yum 的软件群组功能:

安装大型的软件集合,比如KDE,非常方便

  
  
  
  
  1. [root@www ~]# yum [群组功能] [软体群组] 
  2. 选项与参数: 
  3.    grouplist   :列出所有可使用的‘套件组’,例如 Development Tools 之类的; 
  4.    groupinfo   :后面接 group_name,则可�t解该 group 内含的所有套件名; 
  5.    groupinstall:这个好用!可以安装一整组的套件群组,相当的不错用! 
  6.    groupremove :移除某个套件群组; 

全系统自动升级:

  
  
  
  
  1. [root@www ~]# vim /etc/crontab 
  2. ....(前面省略并保留设定值).... 
  3. 0  3 * * * root /usr/bin/yum -y update 

-y选项自动输入yes

 

 

你可能感兴趣的:(职场,rpm,yum,休闲)