【鸟哥的linux私房菜-学习笔记】软件安装: RPM, SRPM 与 YUM 功能

上一篇我们讲到用软件的源码进行编译安装,这样子多少有些不方便,如果厂商先在他们的系统上面将软件编译好, 只要我们的系统 (硬件与操作系统) 是一样的,那么就可以直接使用它进行安装了,这种方式跟windows差不多。

一、Linux 界的两大主流: RPM 与 DPKG

目前在 Linux 界软件安装方式最常见的有两种,分别是:

dpkg:
这个机制最早是由 Debian Linux 社群所开发出来的,透过 dpkg 的机制, Debian 提供的软件就能够简单的安装起来,同时还能提供安装后的软件资讯,实在非常不错。 只要是衍生於 Debian 的其他 Linux distributions 大多使用 dpkg 这个机制来管理软件的, 包括 B2D, Ubuntu 等等。

RPM:
这个机制最早是由 Red Hat 这家公司开发出来的,后来实在很好用,因此很多 distributions 就使用这个机制来作为软件安装的管理方式。包括 Fedora, CentOS, SuSE 等等知名的开发商都是用这咚咚。

distribution 代表软件管理机制使用命令线上升级机制(命令)
Red Hat/FedoraRPMrpm, rpmbuildYUM (yum)
Debian/UbuntuDPKGdpkgAPT (apt-get)

二、什么是 RPM 与 SRPM

RPM 全名是『 RedHat Package Manager 』,是以一种数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制。

优点:

1.RPM 内含已经编译过的程序与配置档等数据,可以让使用者免除重新编译的困扰;
2.RPM 在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装;
3.RPM 文件本身提供软件版本资讯、相依属性软件名称、软件用途说明、软件所含文件等资讯,便於了解软件;
4.RPM 管理的方式使用数据库记录 RPM 文件的相关参数,便於升级、移除、查询与验证。

问题:

1.软件文件安装的环境必须与打包时的环境需求一致或相当;
2.需要满足软件的相依属性需求;
3.卸载时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题!

SRPM 是什么呢?顾名思义,他是 Source RPM 的意思, SRPM 所提供的软件内容『并没有经过编译』, 他提供的是原始码。

SRPM 虽然内容是原始码, 但是他仍然含有该软件所需要的相依性软件说明、以及所有 RPM 文件所提供的数据。同时,他与 RPM 不同的是,他也提供了参数配置档 (就是 configure 与 makefile)。所以,如果我们下载的是 SRPM ,那么要安装该软件时,你就必须要:

先将该软件以 RPM 管理的方式编译,此时 SRPM 会被编译成为 RPM 文件;
然后将编译完成的 RPM 文件安装到 Linux 系统当中。

通常一个软件在释出的时候,都会同时释出该软件的 RPM 与 SRPM 。

文件格式档名格式直接安装与否内含程序类型可否修改参数并编译
RPMxxx.rpm已编译不可
SRPMxxx.src.rpm不可未编译之原始码

三、什么是 i386, i586, i686, noarch, x86_64

我们怎么知道软件的版本、适用的平台、编译释出的次数呢?只要透过档名就可以知道了!例如 rp-pppoe-3.1-5.i386.rpm 这的文件的意义为:

rp-pppoe -        3.1    -     5        .i386        .rpm
软件名称   软件的版本资讯 释出的次数 适合的硬件平台 扩展名
平台名称适合平台说明
i386几乎适用於所有的 x86 平台,不论是旧的 pentum 或者是新的 Intel Core 2 与 K8 系列的 CPU 等等,都可以正常的工作!那个 i 指的是 Intel 兼容的 CPU 的意思,至於 386 不用说,就是 CPU 的等级啦!
i586就是针对 586 等级的计算机进行最佳化编译。那是哪些 CPU 呢?包括 pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU (socket 7 插脚) 等等的 CPU 都算是这个等级;
i686在 pentun II 以后的 Intel 系列 CPU ,及 K7 以后等级的 CPU 都属於这个 686 等级! 由於目前市面上几乎仅剩 P-II 以后等级的硬件平台,因此很多 distributions 都直接释出这种等级的 RPM 文件。
x86_64针对 64 位的 CPU 进行最佳化编译配置,包括 Intel 的 Core 2 以上等级 CPU ,以及 AMD 的 Athlon64 以后等级的 CPU ,都属於这一类型的硬件平台。
noarch就是没有任何硬件等级上的限制。一般来说,这种类型的 RPM 文件,里面应该没有 binary program 存在, 较常出现的就是属於 shell script 方面的软件。

**最低等级的 i386 软件可以安装在所有的 x86 硬件平台上面,不论是 32 位还是 64 位,但是反过来就不行了。

四、RPM 属性相依的克服方式: YUM 线上升级

为了节省使用者的数据量,目前的 distributions 在释出软件时, 都会将软件的内容分为一般使用与开发使用 (development) 两大类。所以你才会常常看到有类似 pam-x.x.rpm 与 pam-devel-x.x.rpm 之类的档名。

为了重复利用既有的软件功能,因此很多软件都会以函式库的方式释出部分功能,以方便其他软件的呼叫应用~由于有了外部呼叫,所以会出现属性相依问题。想一想,要是我将这些相依属性的软件先列表, 在有要安装软件需求的时候,先到这个列表去找,同时与系统内已安装的软件相比较,没安装到的相依软件就一口气同时安装起来, 那不就解决了相依属性的问题了吗?——这就是YUM做的事情!

五、RPM 软件管理程序

1.默认安装路径

目录内容
/etc一些配置档放置的目录,例如 /etc/crontab
/usr/bin一些可运行文件
/usr/lib一些程序使用的动态函式库
/usr/share/doc一些基本的软件使用手册与说明档
/usr/share/man一些 man page 文件

安装完毕后,该软件相关的资讯就会被写入 /var/lib/rpm/ 目录下的数据库文件中。

2.RPM 安装 (install)

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

3.RPM 升级 (upgrade/freshen)

RPM以 -Uvh 或 -Fvh 来升级即可。

-Uvh后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装过旧版,则系统自动升级至新版;
-Fvh 如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』。

4.RPM 查询 (query)

RPM 在查询的时候,其实查询的地方是在 /var/lib/rpm/ 这个目录下的数据库文件。

[root@www ~]# rpm -qa                              <==已安装软件
[root@www ~]# rpm -q[licdR] 已安装的软件名称       <==已安装软件
[root@www ~]# rpm -qf 存在於系统上面的某个档名     <==已安装软件
[root@www ~]# rpm -qp[licdR] 未安装的某个文件名称  <==查阅RPM文件
选项与参数:
查询已安装软件的资讯:
-q  :仅查询,后面接的软件名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
-qi :列出该软件的详细资讯 (information),包含开发商、版本与说明等;
-ql :列出该软件所有的文件与目录所在完整档名 (list);
-qc :列出该软件的所有配置档 (找出在 /etc/ 底下的档名而已)
-qd :列出该软件的所有说明档 (找出与 man 有关的文件而已)
-qR :列出与该软件有关的相依软件所含的文件 (Required 的意思)
-qf :由后面接的文件名称,找出该文件属於哪一个已安装的软件;
查询某个 RPM 文件内含有的资讯:
-qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在於找出某个 RPM 文件内的资讯,而非已安装的软件资讯~

在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!查询主要分为两部分, 一个是查已安装到系统上面的的软件资讯,这部份的资讯都是由 /var/lib/rpm/ 所提供。另一个则是查某个 rpm 文件内容, 等於是由 RPM 文件内找出一些要写入数据库内的资讯,这部份就得要使用 -qp (p 是 package 的意思)。

5.RPM 验证与数码签章 (Verify/signature)

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

数码签章 (digital signature):

软件开发商原厂所推出的软件会有一个厂商自己的签章系统! 只是这个签章被数码化了而已。厂商可以数码签章系统产生一个专属於该软件的签章,并将该签章的公钥 (public key) 释出。 当你要安装一个 RPM 文件时:

首先你必须要先安装原厂释出的公钥文件;
实际安装原厂的 RPM 软件时, rpm 命令会去读取 RPM 文件的签章资讯,与本机系统内的签章资讯比对,
若签章相同则予以安装,若找不到相关的签章资讯时,则给予警告并且停止安装。

6.RPM 反安装与重建数据库 (erase/rebuilddb)

注意,由于属性相依,解安装的过程一定要由最上一级往下解除~

移除的选项很简单,就透过 -e 即可移除。

由於 RPM 文件常常会安装/移除/升级等,某些动作或许可能会导致 RPM 数据库 /var/lib/rpm/ 内的文件破损。我们可以使用 –rebuilddb 这个选项来重建一下数据库:

[root@www ~]# rpm --rebuilddb   <==重建数据库

关于SRPM和YUM的实际使用,这里就不介绍咯~有需要的自行搜索一下相关资料~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值