1、基本概述
Linux 整个体系的关键不在于系统本身,而是在于可以基于 Linux 系统去安装和配置企业中相关的软件、数据及应用程序,所以对软件的维护是运维工程师的重中之重。
本节向读者介绍 Linux 系统软件的安装、卸载、配置、维护以及如何构建企业本地 YUM光盘源及 HTTP 本地源。
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 不依赖其他软件包;
root@localhost /]# wget https://mirrors.aliyun.com/centos/6.10/os/x86_64/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm
–2019-03-21 18:21:14-- https://mirrors.aliyun.com/centos/6.10/os/x86_64/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm
Resolving mirrors.aliyun.com… 61.163.8.209, 61.163.8.211, 61.163.8.208, …
Connecting to mirrors.aliyun.com|61.163.8.209|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 72436 (71K) [application/x-redhat-package-manager]
Saving to: “lrzsz-0.12.20-27.1.el6.x86_64.rpm”
100%[==========================================>] 72,436 --.-K/s in 0.02s
2019-03-21 18:21:14 (3.22 MB/s) - “lrzsz-0.12.20-27.1.el6.x86_64.rpm” saved [72436/72436]
[root@localhost /]# ls
bin dev lib lrzsz-0.12.20-27.1.el6.x86_64.rpm opt sbin sys var
boot etc lib64 media proc selinux tmp
data home lost+found mnt root srv usr
[root@localhost /]# rpm -q lrzsz
package lrzsz is not installed
[root@localhost /]#
[root@localhost /]# rpm -ivh lrzsz-0.12.20-27.1.el6.x86_64.rpm
warning: lrzsz-0.12.20-27.1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Preparing… ########################################### [100%]
1:lrzsz ########################################### [100%]
[root@localhost /]# rpm -q lrzsz
lrzsz-0.12.20-27.1.el6.x86_64
[root@localhost /]# rpm -ql lrzsz
/usr/bin/rb
/usr/bin/rx
/usr/bin/rz
/usr/bin/sb
/usr/bin/sx
/usr/bin/sz
/usr/share/locale/de/LC_MESSAGES/lrzsz.mo
/usr/share/man/man1/rz.1.gz
/usr/share/man/man1/sz.1.gz [root@localhost /]# ost /]# rz
[root@localhost /]# rz
[root@localhost /]# ls
bin etc lost+found opt selinux usr
boot home lrzsz-0.12.20-27.1.el6.x86_64.rpm proc srv var
data lib media root sys 视图.sql
dev lib64 mnt sbin tmp
[root@localhost /]# mv 视图.sql /tmp
[root@localhost /]# ls
bin dev lib lrzsz-0.12.20-27.1.el6.x86_64.rpm opt sbin sys var
boot etc lib64 media proc selinux tmp
data home lost+found mnt root srv usr
[root@localhost /]# rpm -e lrzsz
[root@localhost /]# rz
bash: /usr/bin/rz: No such file or directory
3、YUM:自动化RPM包管理工具
前端软件包管理器(Yellow Updater Modified,YUM)适用于 CentOS、Fedora、RedHat
及 SUSE 中的 Shell 命令行,主要用于管理 RPM 包,与 RPM 工具使用范围类似,YUM 工
具能够从指定的服务器自动下载 RPM 包并且安装,还可以自动处理依赖性关系。
使用 RPM 工具管理和安装软件时,会发现 rpm 包有依赖,需要逐个手动下载安装,而YUM 工具的最大便利就是可以自动安装所有依赖的软件包,从而提升效率,节省时间。
3.1、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 源
3.2、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 tree内核升级或者软件更新;
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 服务
(2)执行命令 yum grouplist,检查 groupinstall 的软件组名
(3)执行命令 yum groupinstall “GNOME Desktop” -y,安装 Linux 图像界面
(4)执行命令 yum install httpd php php-devel php-mysql mariadb mariadb-server -y,安装
中小企业 LAMP 架构环境
(5)执行命令 yum remove ntpdate -y,卸载 ntpdate 软件包
(6)执行命令 yum provides rz 或者 yum provides “*/rz”,查找 rz 命令的提供者
(7)执行命令 yum update -y,升级 Linux 所有可更新的软件包或 Linux 内核升级
Yum总结
以上使用yum软件安装的rpm软件包是来源于YUM 服务端,国内比较好用的几个yum源为网易(163)yum源,中科大和阿里云,要想使用这些yum源,需要在系统中配置,当然centos官方yum源也很好用,至于如何配置其它源,可以查看网上资料
除了用服务端的yum源,自己也可以把yum源的镜像下载到本地,那以后安装一些常用的软件就不需要联网了,
4、Tar 软件包管理
Linux 操作系统除了使用 RPM 管理工具对软件包管理之外,还可以通过 tar、zip、jar
等工具进行源码包的管理,实现对文件的压缩解压
4.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 从指定文件中读入不想包含的文件的列表。
4.3、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 软件包