2.5 软件管理

2.5.1 Linux常用软件包类型

目前比较流行的软件包格式有:可直接执行的RPMDEB、源代码形式的gzipbzip2压缩包。

 

2.5.2 RPM软件包管理

RPMRedHat Package Manager的简写,即红帽软件包工具。RPM格式的软件包最早在1997年被用在红帽的操作系统上,RPM设计的思路是提供一种可升级、具有强大查询功能、支持安全验证的通用型Linux软件包管理工具。现在RPM软件包已经被应用到很多GNU/Linux发行版本中,包括Red Hat Enterprise LinuxFedoraNovell SUSE Linux EnterpriseopenSUSECentosMandriva Linux等。Centos 6.3光盘中的所有软件包均采用RPM格式。

 

1. 安装与卸载RPM

对于RPM软件包的安装,我们可以使用软件包名称>这样的方式进行安装,但该命令默认选项为静默安装,如果需要了解安装过程信息,则需要使用-v来显示详细的信息,-h显示安装进度。

[root@instructor Packages]# rpm -ivh bind-9.8.2-0.10.rc1.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:bind                 ########################################### [100%]

 

对于RPM格式软件包的卸载,可以使用软件包名称>这样的格式完成。

[root@instructor Packages]# rpm -e ftp卸载,具体版本号可以不写

RPM还提供了升级功能,使用软件名称>这种方式,rpm会删除旧版本软件(仅保留配置文件),再安装新的软件版本。

 

2. 软件包信息查询

RPM命令工具提供了强大的软件的软件查询功能,使用这样的格式可以进行大量的查询工作,查询时可以使用很多选项,具体描述如下。

-q查询指定软件包是否已经安装,如果已经安装则显示详细名称,否则显示package xxx is not installed

-qa查询系统中已经安装的所有软件

-qi查询指定安装软件包的详细信息

-ql查询指定软件的安装路径与文件列表

-qc查询指定软件的配置文件

-qf查询指定文件为哪个软件所安装

使用rpm -q格式进行的查询仅针对已经安装的软件,如果希望知道某个尚未安装的软件包的详细信息,则可以使用rpm -qp进行查询,如rpm -qpi ftp-0.17-51.1.el6.x86_64

 

 

3. 安装验证

RPM提供的验证功能可以随时追踪软件的状态,当软件被嗯篡改时,使用rpm -V命令就会提示该软件的哪些状态被修改,未篡改的软件使用该命令将无任何提示。

[root@instructor Packages]# rpm -V dhcp
S.5....T.  c /etc/dhcp/dhcpd.conf
.....UG..  c /var/lib/dhcpd/dhcpd.leases

file Size differs文件大小已经改变

M Mode differs (includes permissions and file type)包括权限与类型在内的模式已经改变

5 digest (formerly MD5 sum) differsMD5值已经改变

Device major/minor number mismatch设备改变

L readLink(2) path mismatch链接文件的源已经改变

User ownership differs用户发生改变

G Group ownership differs组发生改变

T mTime differs文件最后修改时间已经改变

P caPabilities differ功能发生改变

?不可读的文件

 

2.5.3 使用YUM安装软件包

YUMYellow dog Update Modified的简写。YUM是改进版的RPM软件管理器,YUM很好地解决了RPM所面临的软件包依赖问题,大量的软件依赖会让RPM成为恶魔。YUM可以从很多源中搜索软件以及它们的依赖包,并自动安装相应的依赖软件。使用YUM安装软件时至少需要一个YUM源,YUM源就是存放有很多RPM软件的文件夹,用户可以使用HTTPFTP或本地文件夹的方式访问YUM源。

1. 设置YUM

Centos 6.3默认的YUM源定义文件存放在/etc/yum.repos.d/目录下,用户可以自行定义任意可以使用的YUM源,但文件名的扩展名必须是repo,其文件格式如表2-7所示。

2-7

选项

功能描述

[ ]

[ ]中填写YUM源唯一的ID,可以为任意字符串

name

指定YUM源名称,可以为任意字符串

baseurl

指定YUM源的URL地址(可以是HTTPFTP或本地路径)

mirrorlist

指定镜像站点目录

enabled

是否激活该YUM源(0代表禁用,1代表激活,默认为激活)

gpgcheck

安装软件时是否检查签名(0代表禁用,1代表激活)

gpgkey

检查签名的密钥文件

[root@instructor ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[1]
name=CentOS-$releasever - Base1
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=file:///123
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
gpgcheck=0

 

2. YUM命令

描述:交互式,基于RPM的包管理工具

用法:yum [选项] [指令] [软件包...]

选项:-y执行非交互式安装,假定安装过程中出现的所有回答为yes

指令:

* install package1 [package2] [...]使用YUM源安装软件包

* update [package1] [package2] [...]使用YUM源升级软件包

* check-update检查YUM源中所有可用的升级

* remove | erase package1 [package2] [...]卸载软件包

* list [...]列出系统中已经安装的以及yum源中所有可用的软件包

* info [...]查看软件包信息

* clean all清空所有的缓存信息

* groupinstall group1 [group2] [...]使用YUM源安装组包

* grouplist 列出系统中已经安装的以及yum源中所有可用的组包

* groupremove group1 [group2] [...]卸载组包

* search string1 [string2] [...]根据关键词查找软件

* localinstall rpmfile1 [rpmfile2] [...]通过本地rpm文件安装软件

* history查看历史记录

 

2.5.4 YUM使用技巧

1. 创建YUM

首先,需要安装createrepo

其次,将所有的软件包保存在某个目录下,如/mysoft/

最后,运行createrepo /mysoft即可。

2. YUM变量

有时你会在一个yum文件中看到类似$basearch这样的变量,以下给出了可以使用或参考的yum命令和yum配置文件内置的变量说明。

$releasever代表系统发行版本号

$archCPU架构

$basearch系统架构

$YUM-09使用shell对应的0~9个同名变量替换

 

2.5.5 源码编译安装软件

(1)我们所获得的软件源码一般都会被打包并压缩,常见的格式有.tar.gz.tar.bz2格式。

(2)运行configure脚本,通过特定的选项修改软件设置与功能,该脚本一般可以用来指定安装路径、开启关闭软件的特定功能等。脚本选项可以通过阅读安装说明或./configure --help查看软件支持的功能选项。而有些软件没有提供configure脚本,则可以直接执行make编译步骤。

(3)运行make命令将软件源代码编译为计算机可以直接识别的机器语言。由于需要相应的编译软件才可以将源代码编译为机器语言,所以在执行configure脚本时就会检查对应的开发工具是否已安装,常用的开发工具有:gccpythonperlmakeautomake等,如果没有安装,则会提示error错误。

(4)通过make install根据配置阶段指定的路径和功能将软件以特定的方式安装到指定的位置。

接下来从网络上下载Apache软件作为演示案例。Apache是当今最流行的Web服务器软件,由于Apache需要依赖APR库等软件,所以我们连同相关依赖包一起安装。

[root@instructor httpd-2.2.27]# yum -y install gcc pcre pcre-devel libtool
[root@instructor ~]# wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.27.tar.bz2
[root@instructor ~]# tar -xjf httpd-2.2.27.tar.bz2 -C /usr/src/
[root@instructor ~]# wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.5.3.tar.gz
[root@instructor ~]# wget http://mirror.bit.edu.cn/apache/apr/apr-1.5.1.tar.gz
[root@instructor ~]# tar -xzf apr-1.5.1.tar.gz -C /usr/src/
[root@instructor ~]# tar -xzf apr-util-1.5.3.tar.gz -C /usr/src/
[root@instructor ~]# cd /usr/src/apr-1.5.1/
[root@instructor apr-1.5.1]# ./configure && make && make install
[root@instructor ~]# cd /usr/src/apr-util-1.5.3/
[root@instructor apr-util-1.5.3]# ./configure --with-apr=/usr/src/apr-1.5.1/
[root@instructor apr-util-1.5.3]# make && make install
[root@instructor ~]# cd /usr/src/httpd-2.2.27/
[root@instructor httpd-2.2.27]# ./configure && make && make install
[root@instructor httpd-2.2.27]# /usr/local/apache2/bin/apachectl start开启Web服务

Configure的具体选项可以通过./configure --help了解详情。

 

2.5.6 常见问题分析

1. 软件包依赖问题

使用--nodeps选项忽略依赖关系

2. RPM数据库损坏

RPM软件包的相关数据库存放在/var/lib/rpm/目录下,如果数据库出现损坏,可以用rpm --rebuilddb修复数据库资料

3. 软件安装的时间问题

在安装软件时,系统有时会提示“warning:clock skew detected.”错误,这说明系统时间发生了严重的错误,可以通过date -s 2014-08-14 16:18:04这种命令格式修改系统时间,并通过命令hwclock -w更新写入CMOS时间。

4. YUM繁忙问题

当我们使用yum进行安装、查询时,系统有时会提示如下信息:

[root@instructor Desktop]# yum -y install ftp lftp
Loaded plugins: fastestmirror, refresh-packagekit, security
Existing lock /var/run/yum.pid: another copy is running as pid 30558.
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: yum
    Memory :  42 M RSS (336 MB VSZ)
    Started: Thu Aug 14 16:29:09 2014 - 00:04 ago
    State  : Running, pid: 30558

 

该提示说明有另外一个程序在使用YUM而导致YUM被锁。可以使用kill命令杀死提示信息中的pid号。

 

2.5.7 服务管理

1. 通过主程序管理服务

绝大多数通过源码安装的软件都需要我们手动指定路径启动服务。

2. 通过service管理服务

如果是通过RPM或者YUM安装,则应用程序一般会在/etc/init.d/目录下创建对应的启动脚本,我们可以通过系统提供的service命令来管理这些服务。

[root@instructor ~]# service sshd start开启服务
[root@instructor ~]# service sshd stop关闭服务
[root@instructor ~]# service sshd status查看服务当前状态
[root@instructor ~]# service sshd reload不关闭服务使新的配置生效
[root@instructor ~]# service sshd condrestart测试新的设置是否正确,没问题才会重启,否则不会使用新的配置来重启服务

 

3. 开机启动服务

Linux操作系统正常情况下可以在六种模式(4暂时未使用)下启动并分别用数字表示:0代表关机、1代表单用户模式、2代表无NFS网络的字符界面模式、3代表全功能的字符界面模式、4暂时未定义使用、5代表图形模式、6代表重启模式。在系统中,通过runlevel命令查看当前所处的运行级别,也可以通过init n来改变当前的运行级别。

chkconfig

描述:更新与查询系统服务的运行级别信息

用法:chkconfig [服务名称] [on|off]

指令:--list查询系统服务运行级别信息

--level指定操作的运行级别,不指定级别默认为2345级别

[root@instructor ~]# chkconfig --list sshd查看sshd服务所有的运行级别信息
[root@instructor ~]# chkconfig --list 查看所有系统服务的运行级别信息
[root@instructor ~]# chkconfig --level 15 sshd on设置在15级别开机启动
[root@instructor ~]# chkconfig sshd on设置在2345级别开机启动