第7章 Linux软件管理实战

1.1 Linux软件包企业实战

通过前几章的学习,读者掌握了Linux系统基本命令、用户及权限等知识,Linux整个体系的关键不在于系统本身,而是在于可以基于Linux系统去安装和配置企业中相关的软件、数据及应用程序,所以对软件的维护是运维工程师的重中之重。

本章向读者介绍Linux系统软件的安装、卸载、配置、维护以及如何构建企业本地YUM光盘源及HTTP本地源。

1.2 RPM软件包管理

Linux软件包管理大致可分为二进制包、源码包,使用的工具也各不相同。Linux常见软件包分为两种,分别是源代码包(Source Code)、二进制包(Binary Code),源代码包是没有经过编译的包,需要经过GCC、C++编译器环境编译才能运行,二进制包无需编译,可以直接安装使用。

通常而言,可以通过后缀简单区别源码包和二进制包,例如.tar.gz、.zip、.rar结尾的包通常称之为源码包,以.rpm结尾的软件包称之为二进制包。真正区分是否为源码还是二进制还得基于代码里面的文件来判断,例如包含.h、.c、.cpp、.cc等结尾的源码文件,称之为源码包,而代码代码里面存在bin目可以执行文件,称之为二进制包。

CentOS操作系统中有一款默认软件管理的工具,红帽包管理工具(Red Hat Package Manager,RPM)。

使用RPM工具可以对软件包实现快速安装、管理及维护。RPM管理工具适用的操作系统包括:CentOS,RedHat,Fedora,SUSE等,RPM工具常用于管理.rpm后缀结尾的软件包。

RPM软件包命令规则详解如下:

RPM包命名格式为:

name-version.rpm

name-version-noarch.rpm

name-version-arch.src.rpm

如下软件包格式:

epel-release-6-8.noarch.rpm

perl-Pod-Plainer-1.03-1.el6.noarch.rpm

yasm-1.2.0-4.el7.x86_64.rpm

RPM包格式解析如下:

  • name 软件名称,例如yasm、perl-pod-Plainer;
  • version 版本号,1.2.0通用格式:“主版本号.次版本号.修正号”;

4表示是发布版本号,该RPM包是第几次编译生成的;

  • arch 适用的硬件平台,RPM支持的平台有:i386、i586、i686、x86_64、sparc、alpha等。
  • .rpm 后缀包表示编译好的二进制包,可用rpm命令直接安装;
  • .src.rpm 源代码包,源码编译生成.rpm格式的RPM包方可使用;
  • el* 软件包发行版本,el6表示该软件包适用于RHEL 6.x/CentOS 6.x;
  • devel: 开发包;
  • noarch: 软件包可以在任何平台上安装。

RPM工具命令详解如下:

RPM 选项 PACKAGE_NAME

-a, –all 查询所有已安装软件包;

-q,–query 表示询问用户,输出信息;

-l, –list 打印软件包的列表;

-f, –file FILE 查询包含 FILE 的软件包;

-i, –info 显示软件包信息,包括名称,版本,描述;

-v, –verbose 打印输出详细信息;

-U, –upgrade 升级RPM软件包;

-h,–hash 软件安装,可以打印安装进度条;

–last 列出软件包时,以安装时间排序,最新的在上面;

-e, –erase 卸载rpm软件包

–force 表示强制,强制安装或者卸载;

–nodeps RPM包不依赖

-l, –list 列出软件包中的文件;

–provides 列出软件包提供的特性;

-R, –requires 列出软件包依赖的其他软件包;

–scripts 列出软件包自定义的小程序。

RPM企业案例演示:

rpm -q httpd 检查httpd包是否安装;

rpm -ql httpd 查看软件安装的路径;

rpm -qi httpd 查看软件安装的版本信息;

rpm -e httpd 卸载httpd软件;

rpm -e –nodeps httpd 强制卸载httpd;

rpm -qa|grep httpd 检查httpd相关的软件包是否安装。

rpm -ivh httpd-2.4.10-el7.x86_64.rpm 安装httpd软件包;

rpm -Uvh httpd-2.4.10-el7.x86_64.rpm 升级httpd软件;

rpm -ivh –nodeps httpd-2.4.10-el7.x86_64.rpm 不依赖其他软件包;

1.3 Tar软件包管理

Linux操作系统除了使用RPM管理工具对软件包管理之外,还可以通过tar、zip、jar等工具进行源码包的管理。

1.4 Tar命令参数详解

-A, –catenate, –concatenate 将存档与已有的存档合并

-c, –create 建立新的存档

-d, –diff, –compare 比较存档与当前文件的不同之处

–delete 从存档中删除

-r, –append 附加到存档结尾

-t, –list 列出存档中文件的目录

-u, –update 仅将较新的文件附加到存档中

-x, –extract, –get 解压文件

-j, –bzip2, –bunzip2 有bz2属性的软件包;

-z, –gzip, –ungzip 有gz属性的软件包;

-b, –block-size N 指定块大小为 Nx512 字节(缺省时 N=20);

-B, –read-full-blocks 读取时重组块;

-C, –directory DIR 指定新的目录;

–checkpoint 读取存档时显示目录名;

-f, –file [HOSTNAME:]F 指定存档或设备,后接文件名称;

–force-local 强制使用本地存档,即使存在克隆;

-G, –incremental 建立老 GNU 格式的备份;

-g, –listed-incremental 建立新 GNU 格式的备份;

-h, –dereference 不转储动态链接,转储动态链接指向的文件;

-i, –ignore-zeros 忽略存档中的 0 字节块(通常意味着文件结束);

–ignore-failed-read 在不可读文件中作 0 标记后再退出;

-k, –keep-old-files 保存现有文件;从存档中展开时不进行覆盖;

-K, –starting-file F 从存档文件 F 开始;

-l, –one-file-system 在本地文件系统中创建存档;

-L, –tape-length N 在写入 N*1024 个字节后暂停,等待更换磁盘;

-m, –modification-time 当从一个档案中恢复文件时,不使用新的时间标签;

-M, –multi-volume 建立多卷存档,以便在几个磁盘中存放;

-O, –to-stdout 将文件展开到标准输出;

-P, –absolute-paths 不要从文件名中去除 ‘/’;

-v, –verbose 详细显示处理的文件;

–version 显示tar 程序的版本号;

–exclude FILE不把指定文件包含在内;

-X, –exclude-from FILE 从指定文件中读入不想包含的文件的列表。

1.5 TAR企业案例演示

tar -cvf jfedu.tar.gz jfedu 打包jfedu文件或者目录,打包后名称jfedu.tar.gz;

tar -tf jfedu.tar.gz 查看jfedu.tar.gz包中内容;

tar -rf jfedu.tar.gz jfedu.txt 将jfedu.txt文件追加到jfedu.tar.gz中

tar -xvf jfedu.tar.gz 解压jfedu.tar.gz程序包;

tar -czvf jfedu.tar.gz jfedu 使用gzip格式打包并压缩jfedu目录;

tar -cjvf jfedu.tar.bz2 jfedu 使用bzip2格式打包并压缩jfedu目录;

tar -czf jfedu.tar.gz * -X list.txt 使用gzip格式打包并压当前目录所有文件,排除list.txt中记录的文件;

tar -czf jfedu.tar.gz * –exclude=zabbix-3.2.4.tar.gz –exclude=nginx-1.12.0.tar.gz 使用gzip格式打包并压当前目录所有文件及目录,排除zabbix-3.2.4.tar.gz和nginx-1.12.0.tar.gz软件包。

1.6 TAR实现Linux操作系统备份

Tar命令工具除了用于日常打包、解压源码包或者压缩包之外,最大的亮点是还可以用于Linux操作系统文件及目录的备份,使用tar -g可以基于GNU 格式的增量备份,备份原理是基于检查目录或者文件的atime、mtime、ctime属性是否被修改。文件及目录时间属性详解如下:

  • 文件被访问的时间(Access time,atime);
  • 文件内容被改变的时间(Modified time,mtime);
  • 文件写入、权限更改的时间(Change time,ctime)。

总结,更改文件内容mtime和ctime都会改变,但ctime可以在mtime未发生变化时被更改,例如修改文件权限,文件mtime时间不变,而ctime时间改变。TAR增量备份案例演示步骤如下:

  1. /root目录创建jingfeng文件夹,同时在jingfeng文件夹中,新建jf1.txt,jf2.txt文件,如图6-1所示:

图6-1 创建jingfeng目录及文件

  1. 使用tar命令第一次完整备份jingfeng文件夹中的内容,-g指定快照snapshot文件,第一次没有该文件则会自动创建,如图6-2所示:
cd /root/jingfeng/

tar -g /data/backup/snapshot -czvf /data/backup/2017jingfeng.tar.gz

图6-2 tar备份jingfeng目录中文件

  1. 使用tar命令第一次完整备份jingfeng文件夹中之后,会生成快照文件:/data/backup/snapshot,后期增量备份会以snapshot文件为参考,在jingfeng文件夹中再创建jf3.txt jf4.txt文件,然后通过tar命令增量备份jingfeng目录所有内容,如图6-3所示:
cd /root/jingfeng/

touch jf3.txt jf4.txt

tar -g /data/backup/snapshot -czvf /data/backup/2017jingfeng_add1.tar.gz *

图6-3 tar增量备份jingfeng目录中文件

如上图6-3所示,增量备份时,需-g指定第一次完整备份的快照snapshot文件,同时增量打包的文件名不能跟第一次备份后的文件名重复,通过tar –tf可以查看打包后的文件内容。

1.7 Shell+TAR实现增量备份

企业中日常备份的数据包括/boot、/etc、/root、/data目录等,备份的策略参考:每周1-6执行增量备份,每周日执行全备份。同时在企业中备份操作系统数据均使用Shell脚本完成,此处auto_backup_system.sh脚本供参考,后面章节会系统讲解Shell脚本,脚本内容如下:

#!/bin/bash

#Automatic Backup Linux System Files

#By Author www.jfedu.net

#Define Variables

SOURCE_DIR=(

$*

)

TARGET_DIR=/data/backup/

YEAR=`date +%Y`

MONTH=`date +%m`

DAY=`date +%d`

WEEK=`date +%u`

FILES=system_backup.tgz

CODE=$?

if

[ -z $SOURCE_DIR ];then

echo -e “Please Enter a File or Directory You Need to Backup:\n——————————————–\nExample $0 /boot /etc ……”

exit

fi

#Determine Whether the Target Directory Exists

if

[ ! -d $TARGET_DIR/$YEAR/$MONTH/$DAY ];then

mkdir -p $TARGET_DIR/$YEAR/$MONTH/$DAY

echo “This $TARGET_DIR Created Successfully !”

fi

#EXEC Full_Backup Function Command

Full_Backup()

{

if

[ “$WEEK” -eq “7” ];then

rm -rf $TARGET_DIR/snapshot

cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES `echo ${SOURCE_DIR[@]}`

[ “$CODE” == “0” ]&&echo -e “——————————————–\nFull_Backup System Files Backup Successfully !”

fi

}

#Perform incremental BACKUP Function Command

Add_Backup()

{

cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;

if

[ -f $TARGET_DIR/$YEAR/$MONTH/$DAY/$FILES ];then

read -p “$FILES Already Exists, overwrite confirmation yes or no ? : ” SURE

if [ $SURE == “no” -o $SURE == “n” ];then

sleep 1 ;exit 0

fi

#Add_Backup Files System

if

[ $WEEK -ne “7” ];then

cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $$_$FILES `echo ${SOURCE_DIR[@]}`

[ “$CODE” == “0” ]&&echo -e “—————————————–\nAdd_Backup System Files Backup Successfully !”

fi

else

if

[ $WEEK -ne “7” ];then

cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES `echo ${SOURCE_DIR[@]}`

[ “$CODE” == “0” ]&&echo -e “——————————————-\nAdd_Backup System Files Backup Successfully !”

fi

fi

}

Full_Backup;Add_Backup

1.8 ZIP软件包管理

ZIP也是计算机文件的压缩的算法,原名Deflate(真空),发明者为菲利普·卡兹(Phil Katz)),他于1989年1月公布了该格式的资料。ZIP通常使用后缀名“.zip”。

主流的压缩格式包括tar、rar、zip、war、gzip、bz2、iso等。从性能上比较,TAR、WAR、RAR格式较ZIP格式压缩率较高,但压缩时间远远高于ZIP,Zip命令行工具可以实现对zip属性的包进行管理,也可以将文件及文件及打包成zip格式。如下为ZIP工具打包常见参数详解:

-f freshen:只更改文件;

-u update:只更改或新文件;

-d 从压缩文件删除文件;

-m 中的条目移动到zipfile(删除OS文件);

-r 递归到目录;

-j junk(不记录)目录名;

-l 将LF转换为CR LF(-11 CR LF至LF);

-1 压缩更快1-9压缩更好;

-q 安静操作,不输出执行的过程;

-v verbose操作/打印版本信息;

-c 添加一行注释;

-z 添加zipfile注释;

-o 读取名称使zip文件与最新条目一样旧;

-x 不包括以下名称;

-F 修复zipfile(-FF尝试更难);

-D 不要添加目录条目;

-T 测试zip文件完整性;

-X eXclude eXtra文件属性;

-e 加密 – 不要压缩这些后缀;

-h2 显示更多的帮助。

ZIP企业案例演示:

  1. 通过zip工具打包jingfeng文件夹中所有内容,如图6-4所示:
zip -rv jingfeng.zip /root/jingfeng/

图6-4 zip对jingfeng目录打包备份

  1. 通过zip工具打包jingfeng文件夹中所有内容,排除部分文件,如图6-5所示:
zip -rv jingfeng.zip * -x jf1.txt

zip -rv jingfeng.zip * -x jf2.txt -x jf3.txt

图6-5 zip对jingfeng目录打包备份,排除部分文件

  1. 通过zip工具删除jingfeng.zip中jf3.txt文件,如图6-6所示
zip jingfeng.zip -d jf3.txt
  1. 通过unzip工具解压jingfeng.zip文件夹中所有内容,如图6-6所示:
unzip jingfeng.zip

unzip jingfeng.zip -d /data/backup/ 可以-d指定解压后的目录

图6-6 unzip对jingfeng目录解压

1.9 源码包软件安装

通常使用RPM工具管理.rpm结尾的二进制包,而标准的.zip、tar结尾的源代码包则不能使用RPM工具去安装、卸载及升级,源码包安装有三个步骤,如下:

  • ./configure 预编译,主要用于检测系统基准环境库是否满足,生成MakeFile文件;
  • make 编译,基于第一步生成的makefile文件,进行源代码的编译;
  • make install 安装,编译完毕之后,将相关的可运行文件安装至系统中;

使用make编译时,Linux操作系统必须有GCC编译器,用于编译源码。

源码包安装通常需要./configure、make、make install三个步骤,某些特殊源码可以只有三步中的其中一个步骤,或者两个步骤。

以CentOS 7 Linux系统为基准,在其上安装Nginx源码包,企业中源码安装的详细步骤如下:

  1. Nginx.org官网下载Nginx-1.13.0.tar.gz包
wget http://nginx.org/download/nginx-1.13.0.tar.gz
  1. Nginx源码包解压
tar -xvf nginx-1.13.0.tar.gz
  1. 源码Configure预编译,需进入解压后的目录执行./configure指令,分号“;”表示连接多个命令。
cd nginx-1.13.0;./configure
  1. make编译
make
  1. make install安装
make install

通过以上五个步骤,源码包软件安装成功,源码包在编译及安装时,可能会遇到各种错误,需要把错误解决之后,然后再进行下一步安装即可,后面章节会重点针对企业使用的软件进行案例演练。

1.10 YUM软件包管理

前端软件包管理器(Yellow Updater Modified,YUM)适用于CentOS、Fedora、RedHat及SUSE中的Shell命令行,主要用于管理RPM包,于RPM工具使用范围类似,YUM工具能够从指定的服务器自动下载RPM包并且安装,还可以自动处理依赖性关系。

使用RPM工具管理和安装软件时,会发现rpm包有依赖,需要逐个手动下载安装,而YUM工具的最大便利就是可以自动安装所有依赖的软件包,从而提升效率,节省时间。

1.11 YUM工作原理

学习YUM,一定要理解YUM工作原理,YUM正常运行,需要依赖两个部分,一是YUM源端,二是YUM客户端,也即用户使用端。

YUM客户端安装的所有RPM包都是来自YUM服务端,YUM源端通过HTTP或者FTP服务器发布。而YUM客户端能够从YUM源端下载依赖的RPM包是由于在YUM源端生成了RPM包的基准信息,包括RPM包版本号、配置文件、二进制信息、依赖关系等。

YUM客户端需要安装软件或者搜索软件,会查找/etc/yum.repos.d下以.repo结尾文件,CentOS Linux默认的.repo文件名为CentOS-Base.repo,该文件中配置了YUM源端的镜像地址,所以每次安装、升级RPM包,YUM客户端均会查找.repo文件。

YUM客户端如果配置了CentOS官方repo源,客户端操作系统必须能联外网,满足网络条件,才能下载软件并安装,如果没有网络,也可以构建光盘源或者内部YUM源。在只要YUM客户端时,YUM客户端安装软件,默认会把YUM源地址、Header信息、软件包、数据库信息、缓存文件存储在/var/cache/yum中,每次使用YUM工具,YUM优先通过Cache查找相关软件包,Cache中不存在,然后在访问外网YUM源。

1.12 YUM企业案例演练

由于YUM工具的使用简便、快捷、高效,在企业中得到广泛的使用,得到众多IT运维、程序人员的青睐,要能熟练使用YUM工具,需要先掌握YUM命令行参数的使用,如下为YUM命令工具的参数详解及实战步骤:

YUM命令工具指南,YUM格式为:

YUM [command] [package] -y|-q 其中的[options]是可选。-y安装或者卸载出现YES时,自动确认yes;-q不显示安装的过程。

yum install httpd 安装httpd软件包;

yum search YUM搜索软件包;

yum list httpd 显示指定程序包安装情况httpd;

yum list 显示所有已安装及可安装的软件包;

yum remove httpd 删除程序包httpd;

yum erase httpd 删除程序包httpd;

yum update 内核升级或者软件更新;

yum update httpd 更新httpd软件;

yum check-update 检查可更新的程序;

yum info httpd 显示安装包信息httpd;

yum provides 列出软件包提供哪些文件;

yum provides “*/rz” 列出rz命令由哪个软件包提供;

yum grouplist 查询可以用groupinstall安装的组名称;

yum groupinstall “Chinese Support” 安装中文支持;

yum groupremove “Chinese Support” 删除程序组Chinese Support;

yum deplist httpd 查看程序httpd依赖情况;

yum clean packages 清除缓存目录下的软件包;

yum clean headers 清除缓存目录下的headers;

yum clean all 清除缓存目录下的软件包及旧的headers。

  1. 基于CentOS 7 Linux,执行命令yum install httpd -y,安装httpd服务,如图6-7所示:

图6-7 YUM 安装httpd软件

  1. 执行命令yum grouplist,检查groupinstall的软件组名,如图6-8所示:

图6-8 YUM Grouplist显示组安装名称

  1. 执行命令yum groupinstall “GNOME Desktop” -y,安装Linux图像界面,如图6-9所示:

图6-9 GNOME Desktop图像界面安装

  1. 执行命令yum install httpd php php-devel php-mysql mariadb mariadb-server -y,安装中小企业LAMP架构环境,如图6-10所示:

图6-10 LAMP中小企业架构安装

  1. 执行命令yum remove ntpdate -y,卸载ntpdate软件包,如图6-11所示:

图6-11 卸载NTPDATE软件

  1. 执行命令yum provides rz或者yum provides “*/rz”,查找rz命令的提供者,如图6-12所示:

图6-12 查找RZ命令的提供者

  1. 执行命令yum update -y,升级Linux所有可更新的软件包或Linux内核升级,如图6-13所示:

图6-13 软件包升级或内核升级

1.13 基于ISO镜像构建YUM本地源

通常而言,YUM客户端使用前提是必须联外网,YUM安装软件时,检查repo配置文件查找相应的YUM源仓库,企业IDC机房很多服务器为了安全起见,是禁止服务器上外网的,所以不能使用默认的官方YUM源仓库。

构建本地YUM光盘源,其原理是通过查找光盘中的软件包,实现YUM安装,配置步骤如下:

  1. 将CentOS-7-x86_64-DVD-1511.iso镜像加载至虚拟机CD/DVD或者放入服务器CD/DVD光驱中,并将镜像文件挂载至服务器/mnt目录,如图6-14所示,挂载命令:
mount /dev/cdrom /mnt/

图6-14 CentOS ISO镜像文件挂载

  1. 备份/etc/yum.repos.d/CentOS-Base.repo文件为CentOS-Base.repo.bak,同时在/etc/yum.repos.d目录下创建media.repo文件,并写入如下内容:
[yum]

name=CentOS7

baseurl=file:///mnt

enabled=1

gpgcheck=1

gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7

Media.repo配置文件详解:

name=CentOS7 YUM源显示名称;

baseurl=file:///mnt ISO镜像挂载目录;

gpgcheck=1 是否检查GPG-KEY;

enabled=1 是否启用YUM源;

gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7 指定载目录下的GPG-KEY文件验证。

  1. 运行命令yum clean all清空YUM Cache,执行yum install screen –y安装screen软件如图6-15所示:

图6-15 YUM 安装Screen软件

  1. 至此YUM光盘源构建完毕,在使用YUM源时,会遇到部分软件无法安装,原因是因为光盘中软件包不完整导致,同时光盘源只能本机使用,其他局域网服务器无法使用。

1.14 基于HTTP构建YUM网络源

YUM光盘源默认只能本机使用,局域网其他服务器无法使用YUM光盘源,如果想使用的话,需要在每台服务器上构建YUM本地源,该方案在企业中不可取,所以需要构建HTTP局域网YUM源解决,可以通过CreateRepo创建本地YUM源端,repo即为Repository。

构建HTTP局域网YUM源方法及步骤如下:

  1. 挂载光盘镜像文件至/mnt
mount /dev/cdrom /mnt/
  1. 拷贝/mnt/Packages目录下所有软件包至/var/www/html/centos/
mkdir -p /var/www/html/centos/

cp -R /mnt/Packages/* /var/www/html/centos/

  1. 使用Createrepo创建本地源,执行如下命令会在Centos目录生成repodata目录,目录内容如图6-16所示:
yum install createrepo* -y

cd /var/www/html

createrepo centos/

图6-16 Createrepo生成repodata目录

  1. 利用HTTP发布YUM本地源

本地YUM源通过CreateRepo搭建完毕,需要借助HTTP WEB服务器发布/var/www/html/centos/中所有软件,YUM或者RPM安装HTTP WEB服务器,并启动httpd服务。

yum install httpd httpd-devel -y 安装HTTP WEB服务;

useradd apache -g apache 创建apache用户和组;

systemctl restart httpd.service 重启HTTPD服务;

setenforce 0 临时关闭SeLinux应用级安全策略;

systemctl stop firewalld.service 停止防火墙;

ps -ef |grep httpd 查看HTTPD进程是否启动。

  1. 在YUM客户端,创建/etc/yum.repos.d/http.repo文件,写入如下内容:
[base]

name=”CentOS7 HTTP YUM”

baseurl=http://192.168.1.115/centos/

gpgcheck=0

enabled=1

[updates]

name=”CentOS7 HTTP YUM”

baseurl=http://192.168.1.115/centos

gpgcheck=0

enabled=1

  1. 至此在YUM客户端上执行如下命令,如图6-17所示:
yum clean all 清空YUM Cache;

yum install ntpdate -y 安装NTPDATE软件。

图6-17 HTTP YUM源客户端验证

1.15 YUM源端软件包扩展

默认使用ISO镜像文件中的软件包构建的HTTP YUM源,会发现缺少很多软件包,如果服务器需要挂载移动硬盘,Mount挂载移动硬盘需要ntfs-3g软件包支持,而本地光盘镜像中没有该软件包,此时需要往YUM源端添加ntfs-3g软件包,添加方法如下:

  1. 切换至/var/www/html/centos目录,官网下载NTFS-3G软件包。
cd /var/www/html/centos/

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/n/ntfs-3g-2016.2.22-3.el7.x86_64.rpm

http://dl.fedoraproject.org/pub/epel/7/x86_64/n/ntfs-3g-devel-2016.2.22-3.el7.x86_64.rpm

  1. Createrepo命令更新软件包,同理,如需新增其他软件包,同样把软件下载至本地,然后通过createrepo更新即可,如图6-18所示:
createrepo –update centos/

图6-18 CreateRepo update更新软件包

  1. 客户端YUM验证,安装NTFS-3G软件包,如图6-19所示:

图6-19 YUM INSTALL NTFS-3G软件包

1.16 同步外网YUM源

在企业实际应用场景中,仅仅靠光盘里面的RPM软件包是不能满足需要,我们可以把外网的YUM源中的所有软件包同步至本地,可以完善本地YUM源的软件包数量及完整性。

获取外网YUM源软件常见方法包括Rsync、Wget、Reposync,三种同步方法的区别Rsync方式需要外网YUM源支持RSYNC协议,Wget可以直接获取,而Reposync可以同步几乎所有的YUM源,下面以Reporsync为案例,同步外网YUM源软件至本地,步骤如下:

  1. 下载CentOS7 REPO文件至/etc/yum.repos.d/,并安装reposync命令工具:
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

mv CentOS7-Base-163.repo /etc/yum.repos.d/centos.repo

yum clean all

yum install yum-utils createrepo –y

yum repolist

  1. 通过reposync命令工具获取外网YUM源所有软件包,-r指定repolist id,默认不加-r表示获取外网所有YUM软件包,-p参数表示指定下载软件的路径,如图6-20(a)、图6-20(b)所示:
reposync -r base -p /var/www/html/centos/

reposync -r updates -p /var/www/html/centos/

图6-20(a) Reposync获取外网YUM源软件包

图6-20(b) Reposync获取外网YUM源软件包

  1. 通过reposync工具下载完所有的软件包之后,需要执行createrepo更新本地YUM仓库:
createrepo /var/www/html/centos/

1.17 本章小结

通过对本章内容的学习,读者掌握了Linux安装不同包的工具及命令,使用RPM及YUM管理.RPM结尾的二进制包,基于configure、make、make install实现源码包安装,并能够对软件进行安装、卸载及维护。

能够独立构建企业光盘源、HTTP网络YUM源,实现无外网网络使用YUM安装各种软件包及工具,同时能随时添加新的软件包至本地Yum源中。

1.18 同步作业

  1. RPM及YUM管理工具的区别是什么?
  2. 企业中安装软件,何时选择YUM安装或者源码编译安装?
  3. 将Linux系统中PHP5.3版本升级至PHP5.5版本,升级方法有几种,分别写出升级步骤?
  4. 使用源码编译安装httpd-2.4.25.tar.bz2,写出安装的流程及注意事项。
  5. 如何将CentOS 7 Linux字符界面升级为图形界面,并设置系统启动默认为图形界面?