资讯详情

Linux入门(三)-软件安装

三、软件安装

计算机没有安装操作系统,是一块废铁,不能实现任何功能;如果计算机安装了操作系统,但没有应用程序软件,它只是一个无用的花瓶。因此,我们需要学习软件的安装,只有安装所需的软件,才能实现所需的功能。例如,如果你想上网,你需要安装浏览器和视频播放器。

许多初学者会感到困惑:Linux 软件安装方法和 Windows 软件安装方法相同? Windows 中间的软件可以直接安装吗? Linux 理想很美,现实很骨感,答案是否定的,Linux 和 Windows 软件包管理是完全不同的操作系统。

在这里,作者有坏消息和好消息。坏消息是我们需要重新学习一种新的软件包管理方法, Linux 软件包的管理 Windows 软件包的管理要复杂得多;好消息是 Windows 所有的软件都不能在下面 Linux 中等识别,所以 Windows 大量的木马和病毒不能感染 Linux。

3.1 Linux软件包

Linux软件包很多,几乎都是经过的 GPL 授权,免费开源(免费开源代码)。这意味着如果你有能力修改软件源代码,你可以随意修改。 GPL,全称 General Public License,中文名称通用公开许可证 GPL 经过保护软件自由的协议 GPL 协议授权的软件必须开源.

Linux软件包可分为源码包和二进制包两种。

  • Linux源码包 事实上,源代码包是由程序员按照特定的格式和语法编写的大量源代码程序。 众所周知,计算机只能识别机器语言,即二进制语言,因此源代码包的安装需要一名翻译abcd翻译成二进制语言,通常被称为编译器。 编译是指从源代码到直接由计算机(或虚拟机)执行的目标代码的翻译过程。编译器的功能是将源代码翻译成二进制代码,以便计算机能够识别和运行。 虽然源代码包是免费开源的,但如果用户不能编程怎么办?如果不使用很多源代码程序怎么办?源代码包容易安装吗?这些都是源代码包安装无法回答的问题。 此外,由于源代码包的安装需要将源代码编译成二进制代码,因此安装时间较长。例如,每个人都应该在那里 Windows下安装过 QQ,QQ 功能多,程序比较大(有 70 MB左右),但由于不是以源码包的形式发布,而是编译后发布,只需几分钟(简单配置)即可成功安装。但是,如果我们以源码包安装的方式安装 Linux 中安装一个 MySQL 即使这个软件的压缩包只有数据库 23 MB左右,也需要 30 分钟左右的时间(根据硬件配置不同,略有差异)。 通过比较,你会发现编译源代码包需要很多时间。此外,大多数用户不熟悉程序语言。在安装过程中,我们只能祈祷程序不要报错,否则初学者很难解决。 为了解决这些使用源码包的问题,Linux 采用二进制包安装软件包。
  • Linux二进制包 二进制包,即源代码包成功编译后生成的包。由于二进制包在发布前已经完成了编译工作,用户安装软件的速度更快(与 Windows安装软件速度相等),安装过程中报错的概率大大降低。 二进制包是 Linux 默认软件安装包,所以二进制包也叫默认安装软件包。目前主要有以下几点 2 主流二进制包管理系统: (1)RPM 包管理系统:功能强大,安装、升级、查询、卸载非常简单方便 Linux 发行版默认使用此机制作为软件安装的管理模式,如 Fedora、CentOS、SuSE 等。 (2)DPKG 包管理系统:由 Debian Linux 通过开发的包管理机制 DPKG 包,Debian Linux 软件包管理可以主要用于软件包管理 Debian 和 Ubuntu 中。

RPM 包括管理系统和 DPKG 管理系统的原理和形式大同小异,可以触类旁通。由于本教程使用的是 CentOS 6.x 所以本节主要讲解版本 RPM 二进制包。

  • 源码包 VS RPM二进制包 源码包一般包含多个文件,为方便发布,通常包装压缩源码包,Linux 最常用的包装压缩格式是tar.gz因此,源码包也被称为 Tarball。 Tarball 是 Linux 系统的包装工具可以包装和压缩源代码包。人们习惯于称最终的包装压缩文件为 Tarball 文件。

我们需要在软件官网下载源码包,包中通常包含以下内容: 源代码文件。 配置和检测程序(如 configure 或 config 等)。 软件安装说明和软件说明(如软件安装说明) INSTALL 或 README)。

总的来说,使用源码包安装软件具有以下几点好处: 开源。如果您有足够的能力,可以修改源代码。 所需功能可自由选择。 因为软件是编译安装的,所以更适合自己的系统,更稳定,更高效。 卸载方便。

但与此同时,使用源码包安装软件也一些不足: 安装过程中有许多步骤,特别是在安装大型软件集合时(如 LAMP 环境建设)容易出现拼写错误。 编译时间长,安装时间长于二进制安装。 由于软件是编译安装的,一旦在安装过程中报错,新手很难解决。

与源码包相比,二进制包是软件发布时编译的软件包,因此安装速度远快于源码包(和 Windows 软件安装速度相等)。也正是因为通译,大家看不到软件的源代码。

使用 RMP 包装安装软件如下 2 点好处: 包管理系统简单,安装、升级、查询过几个命令来实现。 安装速度比源码包快得多。

同时,使用 RMP 包装软件有以下缺点: 编译后,无法看到源代码。 功能选择不如源码包灵活。 依赖性。有时我们会发现安装软件包 a 需要先安装 b 和 c,而在安装 b 需要先安装 d 和 e。这需要先安装 d 和 e,再安装 b 和 c,最后可以安装 a。例如,我买了一个漂亮的灯,打算安装在客厅里,但在安装灯之前,客厅需要有天花板,天花板需要油漆。安装软件与装修相似,需要有一定的顺序,但有时依赖性很强。 如何选择 通过源码包和 RMP 对比二进制包,在 Linux 我们在安装软件时应该使用哪种软件包?

这里举个例子,以便更好地区分两种软件包。假设我们想做一套家具,源代码包就像所有的家具都是手工制作的(手工编译),你想要什么样的板、油漆、颜色和风格都由你自己决定(功能定制,甚至可以修改源代码)。想想就觉得爽。不用担心质量问题(软件更适合自己的系统,效率更高,更稳定)。然而,花费的时间远远超过了买家具的时间(编译是浪费时间),你真的有能力做木工(你需要非常了解源代码)吗?即使要求别人定制家具,然后自己组装,如果哪个部件不匹配(错误很难解决),该怎么办?

那么二进制包呢?我们还需要一套家具,去购物中心买一套(安装简单),家具是现成的,没有零件不匹配,除非因为自己的问题没有测量尺寸,不能放下(错误很少)。但我们不知道家具使用什么材料,油漆是否合格,家具的风格不能随意选择(软件基本上不能定制功能)。

通过以上对源码包和二进制包的解释,相信大家对两者的区别和特点有了更清晰的认识。

3.2 RPM软件包

RPM 二进制包的命名应遵守统一的命名规则,用户可以通过名称直接获取此类包的版本、适用平台等信息。

RPM 二进制包命名的一般格式如下: 包名-版本号-发布次数-发行商-Linux合适的硬件平台-包扩展名称

例如,RPM 包的名称是httpd-2.2.15-15.el6.centos.1.i686.rpm,其中: httped:软件包名。这里需要注意,httped 是包名,而 httpd-2.2.15-15.el6.centos.1.i686.rpm 通常称为包全名,包名和包全名不同,在某些方面 Linux 在命令中,有些命令(如包的安装和升级)使用包的全名,而有些命令(包的查询和卸载)使用包的名称,一不小心就会出错。 2.2.15:包的版本号,版本号的格式通常是主版本号.次版本号.修正号。 15:二进制包发布次数表示 RPM 包是几次编程生成的。 el*:软件发行商,el6 说明这个包是由 Red Hat 适合公司发布 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用。 centos:说明这个包适合 CentOS 系统。 i686:本包使用的硬件平台,目前 RPM 支持的平台如下 所示:

i386 386 可安装上述计算机 i586 686 可安装上述计算机 i686 奔腾 II 上述计算机均可安装,目前全部 CPU 是奔腾 II 以上,所以这个软件版本大多是 x86_64 64 位 CPU 可以安装 noarch 没有硬件限制

rpm:RPM 包的扩展名称表明这是一个编译好的二进制包,可以使用 rpm 直接安装命令。此外,还有 src.rpm 作为扩展名 RPM 包,说明是源代码包,需要安装生成源代码,然后编译生成 rpm 格式包最终可以使用 rpm 安装命令。

读者可能会问,Linux 系统不依赖于扩展名分区的文件类型,那么为什么包括全名呢? .rpm 扩展名呢?事实上,如果我们错了,这里的扩展名是为系统管理员准备的 RPM 包标注扩展名,管理员很难知道这是一个 RPM 当然,包不能正确使用。

3.2.1 RPM包装、卸载和升级rpm -i/U/e

我们以安装 apache 以程序为例。因为后续章节也会介绍使用源包的方式安装 apache 程序,读者可以直观地感受到源码包和 RPM 包的区别。 RPM包默认安装路径 通常情况下,RPM 包采用系统默认的安装路径,所有安装文件会按照类别分散安装到如下所示的目录中。

/etc/	配置文件安装目录
/usr/bin/	可执行的命令安装目录
/usr/lib/	程序所使用的函数库保存位置
/usr/share/doc/	基本的软件使用手册保存位置
/usr/share/man/	帮助文件保存位置
RPM 包的默认安装路径是可以通过命令查询的。

除此之外,RPM 包也支持手动指定安装路径,但此方式并不推荐。因为一旦手动指定安装路径,所有的安装文件会集中安装到指定位置,且系统中用来查询安装路径的命令也无法使用(需要进行手工配置才能被系统识别),得不偿失。

与 RPM 包不同,源码包的安装通常采用手动指定安装路径(习惯安装到 /usr/local/ 中)的方式。既然安装路径不同,同一 apache 程序的源码包和 RPM 包就可以安装到一台 Linux 服务器上(但同一时间只能开启一个,因为它们需要占用同一个 80 端口)。

实际情况中,一台服务器几乎不会同时包含两个 apache 程序,管理员不好管理,还会占用过多的服务器磁盘空间。

  1. RPM 包的安装 安装 RPM 的命令格式为:
[root@localhost ~]# rpm -ivh 包全名
注意一定是包全名。涉及到包全名的命令,一定要注意路径,可能软件包在光盘中,因此需提前做好设备的挂载工作。
参数:
-i:安装(install);
-v:显示更详细的信息(verbose);
-h:打印 #,显示安装进度(hash);

例如,使用此命令安装 apache 软件包,如下所示:

[root@localhost ~]# rpm -ivh \
/mnt/cdrom/Packages/httpd-2.2.15-15.el6.centos.1.i686.rpm
Preparing...
####################
[100%]
1:httpd
####################
[100%]

注意,直到出现两个 100% 才是真正的安装成功,第一个 100% 仅表示完成了安装准备工作。

此命令还可以一次性安装多个软件包,仅需将包全名用空格分开即可,如下所示:

[root@localhost ~]# rpm -ivh a.rpm b.rpm c.rpm

如果还有其他安装要求(比如强制安装某软件而不管它是否有依赖性),可以通过以下选项进行调整:

-nodeps:不检测依赖性安装。软件安装时会检测依赖性,确定所需的底层软件是否安装,如果没有安装则会报错。如果不管依赖性,想强制安装,则可以使用这个选项。注意,这样不检测依赖性安装的软件基本上是不能使用的,所以不建议这样做。
-replacefiles:替换文件安装。如果要安装软件包,但是包中的部分文件已经存在,那么在正常安装时会报"某个文件已经存在"的错误,从而导致软件无法安装。使用这个选项可以忽略这个报错而覆盖安装。
-replacepkgs:替换软件包安装。如果软件包已经安装,那么此选项可以把软件包重复安装一遍。
-force:强制安装。不管是否已经安装,都重新安装。也就是 -replacefiles 和 -replacepkgs 的综合。
-test:测试安装。不会实际安装,只是检测一下依赖性。
-prefix:指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。

apache 服务安装完成后,可以尝试启动:

[root@localhost ~]# service 服务名 start|stop|restart|status
参数:
start:启动服务;
stop:停止服务;
restart:重启服务;
status: 查看服务状态;
例如:
[root@localhost ~]# service httpd start #启动apache服务

服务启动后,可以查看端口号 80 是否出现。命令如下:

[root@localhost ~]# netstat -tlun | grep 80
tcp 0 0 :::80:::* LISTEN

也可以在浏览器中输入 Linux 服务器的 IP 地址,访问这个 apache 服务器。目前在 apache 中没有建立任何网页,所以看到的只是测试页,如图 2 所示。 在这里插入图片描述 图 2 apache测试页

  1. RPM包的升级

使用如下命令即可实现 RPM 包的升级:

[root@localhost ~]# rpm -Uvh 包全名
-U(大写)选项的含义是:如果该软件没安装过则直接安装;若没安装则升级至最新版本。
[root@localhost ~]# rpm -Fvh 包全名
-F(大写)选项的含义是:如果该软件没有安装,则不会安装,必须安装有较低版本才能升级。
  1. RPM包的卸载 RPM 软件包的卸载要考虑包之间的依赖性。例如,我们先安装的 httpd 软件包,后安装 httpd 的功能模块 mod_ssl 包,那么在卸载时,就必须先卸载 mod_ssl,然后卸载 httpd,否则会报错。 软件包卸载和拆除大楼是一样的,本来先盖的 2 楼,后盖的 3 楼,那么拆楼时一定要先拆除 3 楼。 如果卸载 RPM 软件不考虑依赖性,执行卸载命令会报依赖性错误,例如:
[root@localhost ~]# rpm -e httpd
error: Failed dependencies:
httpd-mmn = 20051115 is needed by (installed) mod_wsgi-3.2-1.el6.i686
httpd-mmn = 20051115 is needed by (installed) php-5.3.3-3.el6_2.8.i686
httpd-mmn = 20051115 is needed by (installed) mod_ssl-1:2.2.15-15.el6.
centos.1.i686
httpd-mmn = 20051115 is needed by (installed) mod_perl-2.0.4-10.el6.i686
httpd = 2.2.15-15.el6.centos.1 is needed by (installed) httpd-manual-2.2.
15-15.el6.centos.1 .noarch
httpd is needed by (installed) webalizer-2.21_02-3.3.el6.i686
httpd is needed by (installed) mod_ssl-1:2.2.15-15.el6.centos.1.i686
httpd=0:2.2.15-15.el6.centos.1 is needed by(installed)mod_ssl-1:2.2.15-15.el6.centos.1.i686

RPM 软件包的卸载很简单,使用如下命令即可:

[root@localhost ~]# rpm -e 包名
-e 选项表示卸载,也就是 erase 的首字母。

RPM 软件包的卸载命令支持使用“-nocteps”选项,即可以不检测依赖性直接卸载,但此方式不推荐大家使用,因为此操作很可能导致其他软件也无法正常使用。

3.2.2 查询软件包rpm -q

使用 rpm 命令安装、升级和卸载 RPM 软件包,rpm 命令还可用来对 RPM 软件包做查询操作,具体包括: 查询软件包是否已安装; 查询系统中所有已安装的软件包; 查看软件包的详细信息; 查询软件包的文件列表; 查询某系统文件具体属于哪个 RPM 包。

使用 rpm 做查询命令的格式如下:

[root@localhost ~]# rpm 选项 查询对象
-q:表示查询,是 query 的首字母。查询软件包是否安装
示例:
[root@localhost ~]# rpm -q httpd
httpd-2.2.15-15.el6.centos.1.i686
注意这里使用的是包名,而不是包全名。因为已安装的软件包只需给出包名,系统就可以成功识别(使用包全名反而无法识别)。

-qa:查询系统中所有安装的软件包
示例:
[root@localhost ~]# rpm -qa
libsamplerate-0.1.7-2.1.el6.i686
startup-notification-0.10-2.1.el6.i686
gnome-themes-2.28.1-6.el6.noarch
fontpackages-filesystem-1.41-1.1.el6.noarch
gdm-libs-2.30.4-33.el6_2.i686
gstreamer-0.10.29-1.el6.i686
redhat-lsb-graphics-4.0-3.el6.centos.i686
…省略部分输出…
此外,这里还可以使用管道符查找出需要的内容,比如:
[root@localhost ~]# rpm -qa | grep httpd
httpd-devel-2.2.15-15.el6.centos.1.i686
httpd-tools-2.2.15-15.el6.centos.1.i686
httpd-manual-2.2.15-15.el6.centos.1.noarch
httpd-2.2.15-15.el6.centos.1.i686
相比rpm -q 包名命令,采用这种方式可以找到含有包名的所有软件包。

-i 选项表示查询软件信息,是 information 的首字母。
示例:
[root@localhost ~]# rpm -qi httpd
Name : httpd Relocations:(not relocatable)
#包名
Version : 2.2.15 Vendor:CentOS
#版本和厂商
Release : 15.el6.centos.1 Build Date: 2012年02月14日星期二 06时27分1秒
#发行版本和建立时间
Install Date: 2013年01月07日星期一19时22分43秒
Build Host:
c6b18n2.bsys.dev.centos.org
#安装时间
Group : System Environment/Daemons Source RPM:
httpd-2.2.15-15.el6.centos.1.src.rpm
#组和源RPM包文件名
Size : 2896132 License: ASL 2.0
#软件包大小和许可协议
Signature :RSA/SHA1,2012年02月14日星期二 19时11分00秒,Key ID
0946fca2c105b9de
#数字签名
Packager:CentOS BuildSystem <http://bugs.centos.org>
URL : http://httpd.apache.org/
#厂商网址
Summary : Apache HTTP Server
#软件包说明
Description:
The Apache HTTP Server is a powerful, efficient, and extensible web server.
#描述

-p 选项表示查询未安装的软件包,是 package 的首字母。
注意,这里用的是包全名,且未安装的软件包需使用“绝对路径+包全名”的方式才能确定包。

-l 选项表示列出软件包所有文件的安装目录。rpm 软件包通常采用默认路径安装,各安装文件会分门别类安放在适当的目录文件下。使用 rpm 命令可以查询到已安装软件包中包含的所有文件及各自安装路径,命令格式为:
示例:
[root@localhost ~]# rpm -ql httpd
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
…省略部分输出…

rpm 命令还可以查询未安装软件包中包含的所有文件以及打算安装的路径,命令格式如下:
[root@localhost ~]# rpm -qlp 包全名
示例:我们想查看 bing 软件包(未安装,绝对路径为:/mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm)中的所有文件及各自打算安装的位置,可以执行如下命令:
[root@localhost ~]# rpm -qlp /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm
/etc/NetworkManager/dispatcher.d/13-named
/etc/logrotate.d/named
/etc/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
…省略部分输出…

-f 选项的含义是查询系统文件所属哪个软件包,是 file 的首字母。-p参数的反向操作。
注意,只有使用 RPM 包安装的文件才能使用该命令,手动方式建立的文件无法使用此命令。
示例
查询 ls 命令所属的软件包,可以执行如下命令:
[root@localhost ~]# rpm -qf /bin/ls
coreutils-8.4-19.el6.i686

-R(大写)选项的含义是查询软件包的依赖性,是 requires 的首字母。
使用 rpm 命令安装 RPM 包,需考虑与其他 RPM 包的依赖关系。rpm -qR 命令就用来查询某已安装软件包依赖的其他包,该命令的格式为:
[root@localhost ~]# rpm -qR 包名
[root@localhost ~]# rpm -qR httpd
/bin/bash
/bin/sh
/etc/mime.types
/usr/sbin/useradd
apr-util-ldap
chkconfig
config(httpd) = 2.2.15-15.el6.centos.1
httpd-tods = 2.2.15-15.el6.centos.1
initscripts >= 8.36
…省略部分输出…
同样,在此命令的基础上增加 -p 选项,即可实现查找未安装软件包的依赖性。

3.2.3 RPM包验证和数字证书(数字签名)rpm -V

执行 rpm -qa 命令可以看到,Linux 系统中装有大量的 RPM 包,且每个包都含有大量的安装文件。因此,为了能够及时发现文件误删、误修改文件数据、恶意篡改文件内容等问题,Linux 提供了以下两种监控(检测)方式:

  • RPM 包校验:其实就是将已安装文件和 /var/lib/rpm/ 目录下的数据库内容进行比较,确定文件内容是否被修改。
  • RPM 包数字证书校验:用来校验 RPM 包本身是否被修改。
  1. Linux RPM 包校验 RPM 包校验可用来判断已安装的软件包(或文件)是否被修改,此方式可使用的命令格式分为以下 3 种。
-V 选项表示校验指定 RPM 包中的文件,是 verity 的首字母。
[root@localhost ~]# rpm -V 已安装的包名
[root@localhost -]# rpm -V httpd   #执行后无任何提示信息,表明所有用 apache 软件包安装的文件均未改动过,还和从原软件包安装的文件一样。

-Va 选项表示校验系统中已安装的所有软件包。

-Vf 选项表示校验某个系统文件是否被修改。
[root@localhost ~]# rpm -Vf 系统文件名

若文件被修改过,会显示修改信息。该信息可分为以下 3 部分: 最前面的 8 个字符(S.5…T)都属于验证信息,各字符的具体含义如下:

S:文件大小是否改变。
M:文件的类型或文件的权限(rwx)是否改变。被修改文件类型,大致可分为以下几类:
- c:配置文件(configuration file)。
- d:普通文档(documentation)。
- g:"鬼"文件(ghost file),很少见,就是该文件不应该被这个 RPM 包包含。
- l:授权文件(license file)。
- r:描述文件(read me)。

5:文件MD5校验和是否改变(可以看成文件内容是否改变)。
D:设备的主从代码是否改变。
L:文件路径是否改变。
U:文件的属主(所有者)是否改变。
G:文件的属组是否改变。
T:文件的修改时间是否改变。
.:若相关项没发生改变,用 . 表示。
被修改文件所在绝对路径(包含文件名)。

例如:S.5…T. c S.5…T. c /etc/httpd/conf/httpd.conf 表达的完整含义是:配置文件 httpd.conf 的大小、内容、修改时间被人为修改过。 注意,并非所有对文件做修改的行为都是恶意的。通常情况下,对配置文件做修改是正常的,比如说配置 apache 就要修改其配置文件,而如果验证信息提示对二进制文件做了修改,这就需要小心,除非是自己故意修改的。

  1. Linux RPM数字证书验证 RPM 包校验方法只能用来校验已安装的 RPM 包及其安装文件,如果 RPM 包本身就被动过手脚,此方法将无法解决问题,需要使用 RPM 数字证书验证方法。有点类似于出厂检验。 简单的理解,RPM 包校验其实就是将现有安装文件与最初使用 RPM 包安装时的初始文件进行对比,如果有改动则提示给用户,因此这种方式无法验证 RPM 包本身被修改的情况。

数字证书,又称数字签名,由软件开发商直接发布。Linux 系统安装数字证书后,若 RPM 包做了修改,此包携带的数字证书也会改变,将无法与系统成功匹配,软件无法安装。

可以将数字证书想象成自己的签名,是不能被模仿的(厂商的数字证书是唯一的),只有我认可的文件才会签名(只要是厂商发布的软件,都符合数字证书验证);如果我的文件被人修改了,那么我的签名就会变得不同(如果软件改变,数字证书就会改变,从而通不过验证。当然,现实中人的手工签名不会直接改变,所以数字证书比手工签名还要可靠)。

使用数字证书验证 RPM 包的方法具有如下 2 个特点:

  • 必须找到原厂的公钥文件,然后才能进行安装。
  • 安装 RPM 包会提取 RPM 包中的证书信息,然后和本机安装的原厂证书进行验证。如果验证通过,则允许安装;如果验证不通过,则不允许安装并发出警告。

数字证书默认会放到系统中/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6位置处,通过以下命令也可验证: #系统中的数字证书位置

[root@localhost ~]# ll /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
-rw-r--r--.1 root root 1706 6 月 26 17:29 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

安装数字证书的命令如下:

[root@localhost ~]# rpm --import /efc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
--import表示导入数字证书

数字证书安装完成后,可使用如下命令进行验证:

[root@localhost ~]# rpm -qa|grep gpg-pubkey
gpg-pubkey-c105b9de-4e0fd3a3

可以看到,数字证书已成功安装。在装有数字证书的系统上安装 RPM 包时,系统会自动验证包的数字证书,验证通过则可以安装,反之将无法安装(系统会报错)。

数字证书本身也是一个 RPM 包,因此可以用 rpm 命令查询数字证书的详细信息,也可以将其卸载。查询数字证书详细信息的命令如下:

[root@localhost ~]# rpm -qi gpg-pubkey-c105b9de-4e0fd3a3
#查询数字证书包的详细信息
Name : gpg-pubkey
Relocations: (not relocatable)
Version : c105b9de Vendor: (none)
Release : 4e0fd3a3 Build Date: 2012年11月12日 星期一 23时05分20秒
Install Date: 2012年11月12日星期一23时05分20秒 Build Host: local host
Group : Public Keys
Source RPM: (none)
Size : 0
License: pubkey
…省略部分输出…
-----END PGP PUBLIC KEY BLOCK----

卸载数字证书可以使用 -e 选项,命令如下:

[root@localhost ~]# rpm -e gpg-pubkey-c105b9de-4ead3a3

虽然数字证书可以手动卸载,但不推荐大家将其卸载。

3.2.3 提取RPM包文件cpio

3.2.3.1 cpio命令介绍

cpio 命令用于从归档包中存入和读取文件,换句话说,cpio 命令可以从归档包中提取文件(或目录),也可以将文件(或目录)复制到归档包中。 归档包,也可称为文件库,其实就是 cpio 或 tar 格式的文件,该文件中包含其他文件以及一些相关信息(文件名、访问权限等)。归档包既可以是磁盘中的文件,也可以是磁带或管道。

cpio 命令可以看做是备份或还原命令,因为它可以将数据(文件)备份到 cpio 归档库,也可以利用 cpio 文档库对数据进行恢复。

使用 cpio 命令备份或恢复数据,需注意以下几点:

  • 使用 cpio 备份数据时如果使用的是绝对路径,那么还原数据时会自动恢复到绝对路径下;同理,如果备份数据使用的是相对路径,那么数据会还原到相对路径下。
  • cpio 命令无法自行指定备份(或还原)的文件,需要目标文件(或目录)的完整路径才能成功读取,因此此命令常与 find 命令配合使用。
  • cpio 命令恢复数据时不会自动覆盖同名文件,也不会创建目录(直接解压到当前文件夹)。

cpio 命令主要有以下 3 种基本模式: “-o” 模式:指的是 copy-out 模式,就是把数据备份到文件库中,命令格式如下:

[root@localhost ~]# cpio -o[vcB] > [文件丨设备]
各选项含义如下:
-o:copy-out模式,备份;
-v:显示备份过程;
-c:使用较新的portable format存储方式;
-B:设定输入/输出块为 5120Bytes,而不是模式的 512Bytes;

比如,使用 cpio 备份数据的命令如下:

[root@localhost ~]#find /etc -print | cpio -ocvB > /root/etc.cpio
#利用find命令指定要备份/etc/目录,使用>导出到etc.cpio文件
[root@localhost ~]# II -h etc.cpio
-rw--r--r--.1 root root 21M 6月5 12:29 etc.cpio

“-i” 模式:指的是 copy-in 模式,就是把数据从文件库中恢复,命令格式如下:

[root@localhost ~]# cpio -i[vcdu] < [文件|设备]
各选项的含义为:
-i:copy-in 模式,还原;
-v:显示还原过程;
-c:较新的 portable format 存储方式;
-d:还原时自动新建目录;
-u:自动使用较新的文件覆盖较旧的文件;

比如,使用 cpio 恢复之前备份的数据,命令如下:

[root@localhost ~]# cpio -idvcu < /root/etc.cpio

如果大家査看一下当前目录/root/,就会发现没有生成/etc/目录。这是因为备份时/etc/目录使用的是绝对路径,所以数据直接恢复到/etc/系统目录中,而没有生成在/root/etc/目录中

“-p” 模式:指的是复制模式,使用 -p 模式可以从某个目录读取所有文件,但并不将其备份到 cpio 库中,而是直接复制为其他文件。 例如,使用 -p 将 /boot/ 复制到 /test/boot 目录中可以执行如下命令:

[root@localhost ~]# cd /tmp/
[root@localhost tmp]#rm -rf*
[root@localhost tmp]# mkdir test
[root@localhost tmp]# find /boot/ -print | cpio -p /tmp/test
#备份/boot/目录到/tmp/test/目录中
[root@localhost tmp]# ls test/boot

3.2.3.2 提取 RPM 包中指定文件rpm2cpio

在服务器使用过程,如果系统文件被误修改或误删除,可以考虑使用 cpio 命令提取出原 RPM 包中所需的系统文件,从而修复被误操作的源文件。

RPM 包允许逐个提取包中文件,使用的命令格式如下:

[root@localhost ~]# rpm2cpio 包全名|cpio -idv .文件绝对路径

该命令中,rpm2cpio 就是将 RPM 包转换为 cpio 格式的命令,通过 cpio 命令即可从 cpio 文件库中提取出指定文件。

举个例子,假设我们不小心把 /bin/ls 命令删除了,通常有以下 2 种方式修复:

  • 将 coreutils-8.4-19.el6.i686 包(包含 ls 命令的 RPM 包)通过 -force 选项再安装一遍;
  • 使用 cpio 命令从 coreutils-8.4-19.el6.i686 包中提取出 /bin/ls 文件,然后将其复制到相应位置;

这里我们选择第 2 种方式。有读者可能会问,如何知道 ls 命令隶属于那个 RPM 包呢?很简单,使用 rpm -qf 命令即可,如下所示:

[root@localhost ~]# rpm -qf /bin/ls
coreutils-8.4-19.el6.i686

在此基础上,我们只需从此 RPM 包使用 cpio 命令提取出 ls 命令文件,然后将其复制到对应位置即可,实现命令如下:

[root@localhost ~]# mv /bin/ls /root/
#把/bin/ls命令移动到/root/目录下,造成误删除的假象
[root@localhost ~]# ls
-bash: ls: command not found
#这时执行ls命令,系统会报"命令没有找到"错误
[root@localhost ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm|cpio -idv ./bin/ls
#提取ls命令文件到当前目录下
[root@localhost ~]# cp /root/bin/ls /bin/
#把提取出来的ls命令文件复制到/bin/目录下
[root@localhost ~]#ls
anaconda-ks.cfg bin inittab install.log install.log.syslog ls
#可以看到,ls命令又可以正常使用了

3.2.4 SRPM包安装rpmbuild

前面章节我们介绍了如何使用 RPM 包安装软件,本节学习使用另一种 RPM 包,即 SRPM 源码包安装软件。

SRPM 包,比 RPM 包多了一个“S”,是“Source”的首字母,所以 SRPM 可直译为“源代码形式的 RPM 包”。也就是说,SRPM 包中不再是经过编译的二进制文件,都是源代码文件。可以这样理解,SRPM 包是软件以源码形式发布后直接封装成 RPM 包的产物。

文件格式 文件名格式 直接安装与否 内含程序类型 可否修改参数并编译
RPM xxx.rpm 已编译 不可
SRPM xxx.src.rpm 不可 未编译的源代码

从表中可以看到,SRPM 包的命名与 RPM 包基本类似,唯一区别在于 SRPM 包多了“src”标志,即 SRPM 包采用“包名-版本号-发布次数-发行商-src.rpm”的方式进行命名,比如“MySQL-5.5.29-2.el6.src.rpm”。

此外,SRPM 包是未经编译的源码包,无法直接用来安装软件,需要经过以下 2 步:

  • 将 SRPM 包编译成二进制的 RPM 包;
  • 使用编译完成的 RPM 包安装软件;

前面章节已经介绍了如何使用 RPM 包安装软件,因此使用 SRPM 包安装软件的关键在于第一步,也就是如何将 SRPM 包编译为 RPM 包。

本节依然以安装 apache 为例,使用 SRPM 包安装软件(编译 SRPM 包)的方式有以下 2 种:

  • 利用 rpmbuild 命令可以直接使用 SRPM 包安装软件,也可以先将 SRPM 包编译成 RPM 包,再使用 RPM 包安装软件;
  • 利用 *.spec 文件可实现将 SRPM 包编译成 RPM 包,再使用 RPM 包安装软件;
  1. rpmbuild 命令的安装 rpmbuild 命令也是一个程序,但是这个程序不会默认安装,所以要想使用 rpmbuild 命令就必须提前安装。这里我们使用 rpm 命令来安装 rpmbuild 命令,如下所示:
[root@localhost~]#rpm -ivh /mnt/cdroin/Packages/rpm-build-4.8.0-27.el6.i686.rpm
Preparing...
###################
[100%]
1:rpm-build
###################
[100%]

出现两个 100% 才证明 rpmbuild 安装成功。

  1. rpmbuild命令安装SRPM包 如果我们只想安装 SRPM 包,而不用修改源代码,那么直接使用 rpmbuild 命令即可。使用 rpmbuild 安装 SRPM 包的命令格式如下:
[root@localhost ~]# rpmbuild [选项] 包全名
选项:
-rebuild:编译 SRPM 包生成 RPM 二进制包;
-recompile:编译 SRPM 包,同时安装。

需要注意的是,SRPM 本质上仍属于 RPM 包,所以安装时仍需考虑包之间的依赖性,要先安装它的依赖包,才能正确安装。

这里我们选择使用 -rebuild 选项先将 SRPM 包编译成 RPM 二进制包,命令如下所示:

[root@localhost ~]# rpmbuild -rebuild httpd-2.2.15-5.el6.src.rpm
warning: InstallSourcePackage at: psm.c:244: Header V3 RSA/SHA256 Signature, key
ID fd431d51: NOKEY
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
#警告为mockbuild用户不存在,使用root代替。这里不是报错,不用紧张
…省略部分输出…
Wrote: /root/rpmbuild/RPMS/i386/ httpd-2.2.15-5.el6.i386.rpm
Wrote: /root/rpmbuild/RPMS/i386/httpd-devel-2.2.15-5.el6.i386.rpm
Wrote: /root/rpmbuild/RPMS/noarch/httpd-manual-2.2.15-5.el6.noarch.rpm
Wrote: /root/rpmbuild/RPMS/i386/httpd-tools-2.2.15-5.el6.i386.rpm
Wrote: /root/rpmbuild/RPMS/i386/ mod_ssl-2.2.15-5.el6.i386.rpm
#写入RPM包的位置,只要看到,就说明编译成功
Executing(%clean): /bin/sh -e/var/tmp/rpm-tmp.Wb8TKa
+ umask 022
+ cd/root/rpmbuild/BUILD
+ cd httpd-2.2.15
+ rm -rf /root/rpmbuild/BUILDROOT/httpd-2.2.15-5.el6.i386
+ exit 0
Executing(-clean): /bin/sh -e/var/tmp/rpm-tmp.3UBWql
+ umask 022
+ cd/root/rpmbuild/BUILD
+ rm-rf httpd-2.2.15
+ exit 0

exit 0 是编译成功的标志,此编译过程产生的临时文件会自动删除。SRPM 包编译完成后,会在当前目录生成 rpmbuild 目录,整个编译过程生成的文件(软件包)都存在这里。

[root@localhost ~]# ls /root/rpmbuild/
BUILD RPMS SOURCES SPECS SRPMS

通过 ls 命令可以看到,rpmbuild 目录下有几个子目录,其各自保存的文件类别如下所示。

  • BUILD 编译过程中产生的数据保存位置
  • RPMS 编译成功后,生成的 RPM 包保存位置
  • SOURCES 从 SRPM 包中解压出来的源码包(*.tar.gz)保存位置
  • SPECS 生成的设置文件的安装位置。第二种安装方法就是利用这个文件进行安装的
  • SRPMS 放置 SRPM 包的位置

可以看到,编译好的 RPM 包保存在 /root/rpmbuild/RPMS/ 目录下,可以使用如下命令进行验证:

[root@localhost ~]#ll /root/rpmbuild/RPMS/i386/
-rw--r--r-- 1 root root 3039035 11月19 06:30 httpd-2.2.15-5.el6.i386.rpm
-rw--r--r-- 1 root root 154371 11月19 06:30 httpd-devel-2.2.15-5.el6.i386.rpm
-rw--r--r-- 1 root root 124403 11月19 06:30 httpd-tools-2.2.15-5.el6.i386.rpm
-rw--r--r-- 1 root root 383539 11月19 06:30 mod_ssl-2.2.15-5.el6.i386.rpm

如此,我们就得到可直接安装软件的 RPM 包。实际上,使用 rpmbuild命令编译 SRPM 包经历了以下 3 个过程:

  • 先把 SRPM 包解开,得到源码包;
  • 对源码包进行编译,生成二进制文件;
  • 把二进制文件重新打包生成 RPM 包。
  1. 利用 *.spec 文件安装 想利用 .spec 文件安装软件,需先将 SRPM 包解开。当然,我们可以使用 rpmbuild 命令解开 SRPM 包,但这里选择另一种方式,即使用 rpm -i 命令,如下所示:
[root@localhost ~]# rpm -i httpd-2.2.15-5.el6.src.rpm
-i 选项用于安装 rpm 包时表示安装,但对于 SRPM 包的安装来说,这里只会将 .src.rpm 包解开后将个文件放置在当前目录下的 rpmbuild 目录中,并不涉及安装操作。

通过此命令,也可以在当前目录下生成 rpmbuild 目录,但与rpmbuild命令不同,此 rpmbuild 目录中仅有 SOURCES 和 SPECS 两个子目录。其中,SOURCES 目录中放置的是源码,SPECS 目录中放置的是设置文件。

接下来使用 SPECS 目录中的设置文件生成 RPM 包,命令如下:

[root@localhost ~]# rpmbuild -ba /root/rpmbuild/SPECS/httpd.spec
其中,-ba 选项的含义是编译,会同时生成 RPM 二进制包和 SRPM 源码包。这里还可以使用 -bb 选项用来仅生成 RPM 二进制包。

命令执行完成,会在 /root/rpmbuild/ 目录下生成 BUILD、RPMS、SOURCES、SPECS 和 SRPMS 目录,RPM 包放在 RPMS 目录中,SRPM 包生成在 SRPMS 目录中。 以上两种方式都可实现将 SRPM 包编译为 RPM 二进制包,剩下的工作就是使用 RPM 包安装软件,这部分内容已在前面章节中讲过,因此不再赘述。

3.2.5 RPM软件包管理器yum

前面分别介绍了使用 SRPM 源码包和 RPM 二进制包安装软件,这两种方法都比较繁琐,需要手动解决包之间具有依赖性的问题,尤其是库文件依赖,需要自行去 http://www.rpmfind.net 网站上查找相关的 RPM 包。本节介绍一种可自动安装软件包(自动解决包之间依赖关系)的安装方式。

yum,全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像 Windows 系统上可以通过 360 软件管家实现软件的一键安装、升级和卸载,Linux 系统也提供有这样的工具,就是 yum。

可以这么说,yum 是改进型的 RPM 软件管理器,它很好的解决了 RPM 所面临的软件包依赖问题。yum 在服务器端存有所有的 RPM 包,并将各个包之间的依赖关系记录在文件中,当管理员使用 yum 安装 RPM 包时,yum 会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的 RPM 包并进行安装。

3.2.5.1yum安装

以centos7 linux系统为例进行讲解如何安装yum。首先,我们运行以下命令来查看系统是否已经安装了yum。

rpm -qa yum

如果已经安装了yum则会列出安装的rpm包名,否则输出为空。这里输出为空,表示没有安装yum。

将centos7 linux系统安装光盘插入光驱,运行以下命令,将光盘挂载到/mnt分区上。

mount /dev/sr0 /mnt

利用CD命令,将当前路径切换为光盘中的rpm包所在目录Packages。利用grep查找yum安装包,获取yum安装包的文件名。

 ll|grep yum*centos*

将查找到的yum安装包文件yum-3.4.3-158.el7.centos.noarch.rpm,拷贝到/tmp目录中。

cp yum-3.4.3-158.el7.centos.noarch.rpm /tmp/

安装yum软件包

rpm -ivh  /tmp/yum-3.4.3-158.el7.centos.noarch.rpm 

开始安装yum程序。rpm命令是rpm包管理器,-i参数表示进行安装,-v参数表示显示安装详细过程,-h参数表示显示安装进程。

直接在shell窗口中运行yum命令,因为没有携带参数,所以运行后列出了yum命令的帮助信息。

检验yum是否正常安装:

rqm -qa yum

3.2.5.2 yum配置

yum 软件可以用 rpm 命令安装,安装之前可以通过如下命令查看 yum 是否已安装:

[root@localhost ~]# rpm -qa | grep yum
yum-metadata-parser-1.1.2-16.el6.i686
yum-3.2.29-30.el6.centos.noarch
yum-utils-1.1.30-14.el6.noarch
yum-plugin-fastestmirror-1.1.30-14.el6.noarch
yum-plugin-security-1.1.30-14.el6.noarch

可以看到,系统上已经安装了 yum。 使用 yum 安装软件包之前,需指定好 yum 下载 RPM 包的位置,此位置称为 yum 源。换句话说,yum 源指的就是软件安装包的来源。

使用 yum 安装软件时至少需要一个 yum 源。yum 源既可以使用网络 yum 源,也可以将本地光盘作为 yum 源。接下来就给大家介绍这两种 yum 源的搭建方式。

  1. 网络 yum 源搭建 一般情况下,只要你的主机网络正常,可以直接使用网络 yum 源,不需要对配置文件做任何修改,这里对 yum 源配置文件做一下简单介绍。 网络 yum 源配置文件位于 /etc/yum.repos.d/ 目录下,文件扩展名为".repo"(只要扩展名为 ".repo" 的文件都是 yum 源的配置文件)。
[root@localhost ~]# ls /etc/yum.repos.d/
CentOS-Base.repo
CentOS-Media.repo
CentOS-Debuginfo.repo.bak
CentOS-Vault.repo

可以看到,该目录下有 4 个 yum 配置文件,通常情况下 CentOS-Base.repo 文件生效。我们可以尝试打开此文件,命令如下:

[root@localhost yum.repos.d]# vim /etc/yum.repos.d/ CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/? release= $releasever&arch=$basearch&repo=os
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
…省略部分输出…

此文件中含有 5 个 yum 源容器,这里只列出了 base 容器,其他容器和 base 容器类似。base 容器中各参数的含义分别为:

[base]:容器名称,一定要放在[]中。
name:容器说明,可以自己随便写。
mirrorlist:镜像站点,这个可以注释掉。
baseurl:我们的 yum 源服务器的地址。默认是 CentOS 官方的 yum 源服务器,是可以使用的。如果你觉得慢,则可以改成你喜欢的 yum 源地址。
enabled:此容器是否生效,如果不写或写成 enabled 则表示此容器生效,写成 enable=0 则表示此容器不生效。
gpgcheck:如果为 1 则表示 RPM 的数字证书生效;如果为 0 则表示 RPM 的数字证书不生效。
gpgkey:数字证书的公钥文件保存位置。不用修改。
  1. 本地 yum 源 在无法联网的情况下,yum 可以考虑用本地光盘(或安装映像文件)作为 yum 源。 Linux 系统安装映像文件中就含有常用的 RPM 包,我们可以使用压缩文件打开映像文件(iso文件),进入其 Packages 子目录,如图 1 所示:

图 1 安装映像文件的 Packages 子目录

可以看到,该子目录下含有几乎所有常用的 RPM 包,因此使用系统安装映像作为本地 yum 源没有任何问题。

在 /etc/yum.repos.d/ 目录下有一个 CentOS-Media.repo 文件,此文件就是以本地光盘作为 yum 源的模板文件,只需进行简单的修改即可,步骤如下: 放入 CentOS 安装光盘,并挂载光盘到指定位置。命令如下:

[root@localhost ~]# mkdir /mnt/cdrom
#创建cdrom目录,作为光盘的挂载点
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device/dev/srO is write-protected, mounting read-only
#挂载光盘到/mnt/cdrom目录下

修改其他几个 yum 源配置文件的扩展名,让它们失效,因为只有扩展名是"*.repo"的文件才能作为 yum 源配置文件。当也可以删除其他几个 yum 源配置文件,但是如果删除了,当又想用网络作为 yum 源时,就没有了参考文件,所以最好还是修改扩展名。 命令如下:

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mv CentOS-Base, repo CentOS-Base.repo.bak
[root@localhost yum.repos.d]#mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
[root@localhost yum.repos.d]# mv CentOS-Vault.repo CentOS-Vault.repo.bak

修改光盘 yum 源配置文件 CentOS-Media.repo,参照以下方修改:

[root@localhost yum.repos.d]# vim CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
#地址为你自己的光盘挂载地址
#file:///media/cdrom/
#file:///media/cdrecorder/
#注释这两个的不存在地址
gpgcheck=1
enabled=1
#把enabled=0改为enabled=1, 让这个yum源配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

如此,本地 yum 源就配置完成了。

3.2.5.3 yum命令

本节学习如何使用 yum 命令实现查询、安装、升级和卸载 RPM 包。 常用命令可分为以下几种:

  1. yum list:查询所有已安装和可安装的软件包。例如:
[root@localhost yum.repos.d]# yum list
#查询所有可用软件包列表
Installed Packages
#已经安装的软件包
ConsdeKit.i686 0.4.1-3.el6
@anaconda-CentOS-201207051201 J386/6.3
ConsdeKit-libs.i686 0.4.1-3.el6 @anaconda-CentOS-201207051201 J386/6.3
…省略部分输出…
Available Packages
#还可以安装的软件包
389-ds-base.i686 1.2.10.2-15.el6 c6-media
389-ds-base-devel.i686 1.2.10.2-15.el6 c6-media
#软件名 版本 所在位置(光盘)
…省略部分输出…

yum list 包名:查询执行软件包的安装情况。例如:

[root@localhost yum.repos.d]# yum list samba
Available Packages samba.i686 3.5.10-125.el6 c6-media
#查询 samba 软件包的安装情况
  1. yum search 关键字:从 yum 源服务器上查找与关键字相关的所有软件包。例如:
[root@localhost yum.repos.d]# yum search samba
#搜索服务器上所有和samba相关的软件包
========================N/S Matched:
samba =============================
samba-client.i686:Samba client programs
samba-common.i686:Files used by both Samba servers and clients
samba-doc.i686: Documentation for the Samba suite
…省略部分输出…
Name and summary matches only, use"search all" for everything.
  1. yum info 包名:查询执行软件包的详细信息。例如:
[root@localhost yum.repos.d]# yum info samba
#查询samba软件包的信息
Available Packages <-没有安装
Name : samba <-包名
Arch : i686 <-适合的硬件平台
Version : 3.5.10 <―版本
Release : 125.el6 <—发布版本
Size : 4.9M <—大小
Repo : c6-media <-在光盘上
…省略部分输出…
  1. yum安装命令
[root@localhost yum.repos.d]# yum -y install 包名
其中:
install:表示安装软件包。
-y:自动回答 yes。如果不加 -y,那么每个安装的软件都需要手工回答 yes;

例如使用此 yum 命令安装 gcc:

[root@localhost yum jepos.d]#yum -y install gcc
#使用yum自动安装gcc

gcc 是 C 语言的编译器,鉴于该软件包涉及到的依赖包较多,建议使用 yum 命令安装。

  1. yum -y update:升级所有软件包。不过考虑到服务器强调稳定性,因此该命令并不常用。
yum -y update 包名:升级特定的软件包。
使用 yum 升级软件包,需确保 yum 源服务器中软件包的版本比本机安装的软件包版本高。
  1. yum 卸载命令 使用 yum 卸载软件包时,会同时卸载所有与该包有依赖关系的其他软件包,即便有依赖包属于系统运行必备文件,也会被 yum 无情卸载,带来的直接后果就是使系统崩溃。 除非你能确定卸载此包以及它的所有依赖包不会对系统产生影响,否则不要使用 yum 卸载软件包。 yum 卸载命令的基本格式如下:
[root@localhost yum.repos.d]# yum remove 包名

例如,使用 yum 卸载 samba 软件包的命令如下:

[root@localhost yum.repos.d]# yum remove samba
#卸载samba软件包

3.2.5.4 yum管理软件组

yum 命令除了可以对软件包进行查询、安装、升级和卸载外,还可完成对软件包组的查询、安装和卸载操作。

  1. yum查询软件组包含的软件 既然是软件包组,说明包含不只一个软件包,通过 yum 命令可以查询某软件包组中具体包含的软件包,命令格式如下:
[root@localhost ~]#yum groupinfo 软件组名
#查询软件组中包含的软件

例如,查询 Web Server 软件包组中包含的软件包,可使用如下命令:

[root@localhost ~]#yum groupinfo "Web Server"
#查询软件组"Webserver"中包含的软件
  1. yum安装软件组 使用 yum 安装软件包组的命令格式如下:
[root@localhost ~]#yum groupinstall 软件组名
#安装指定软件组,组名可以由grouplist查询出来

例如,安装 Web Server 软件包组可使用如下命令:

[root@localhost ~]#yum groupinstall "Web Server"
#安装网页服务软件组
  1. yum命令卸载软件组 yum 卸载软件包组的命令格式如下:
[root@localhost ~]# yum groupremove 软件组名
#卸载指定软件组

yum 软件包组管理命令更适合安装功能相对集中的软件包集合。例如,在初始安装 Linux 时没有安装图形界面,但后来发现需要图形界面的支持,这时可以手工安装图形界面软件组(X Window System 和 Desktop),就可以使用图形界面了。

3.3 源码包

源码包待完善

标签: 105b热过载继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台