第6章 Linux软件包企业实战
通过前几章的学习,掌握了Linux系统基本命令、用户及权限等知识,Linux整个体系的关键不在于系统本身,而是在于可以基于Linux系统去安装和配置企业中相关的软件、数据及应用程序,所以对软件的维护是运维工程师的重中之重。
本章介绍Linux系统软件的安装、卸载、配置、维护以及如何构建企业本地YUM光盘源及HTTP本地源。
6.1 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 不依赖其他软件包;
6.2 Tar软件包管理
Linux操作系统除了使用RPM管理工具对软件包管理之外,还可以通过tar、zip、jar等工具进行源码包的管理。
6.2.1 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 从指定文件中读入不想包含的文件的列表。
6.2.2 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软件包。
6.2.3 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目录及文件
(2) 使用tar命令第一次完整备份jingfeng文件夹中的内容,-g指定快照snapshot文件,第一次没有该文件则会自动创建,如图6-2所示: