本节所学内容:
1.1 使用rpm命令-安装-查看-卸载-rpm软件包
1.2 yum管理软件包
1.3 实战tar源码包管理-srpm源码包安装方法

1.1 软件包的管理
软件包的类型
rpm二进制包———》已经使用GCC编译后的
tar源码包——-》需要编译
RPM概述:RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、SUSE以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。

1.1.1 rpm软件包的管理

rpm包的获取方式:
1、Centos系统镜像光盘
2、网站rpmfind.net
3、比如安装mysql、nginx软件,我们可以去它的官方网站下载:http://www.mysql.com
rpm包格式的说明
例1:[root@xuegod163 ~]# ls /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
**zsh -5. 0. 2-

  1. el7. x86_64.rpm
    软件名 主版本号 次版本号  修订 release(第几次发布版本) 操作系统版本
    软件包是64位包 
    #修订指是的第几次修改bug。 发布指的是:第几次发布。 发布时,可能只是对软件安装的默认参数做了修改,而没有其它改动。**

    1.1.2 安装rpm软件

    RPM工具使用分为安装、查询、验证、更新、删除等操作
    命令格式:rpm [参数] 软件包
    参数:
    -i
    是install的意思, 安装软件包

    -v 显示附加信息,提供更多详细信息
    -V 校验,对已经安装的软件进行校验
    -h —hash 安装时输出####标记
    互动:rpm使用时,什么情况下使用软件包全名,什么时候使用软件包名?
    全名:在安装和更新升级时候使用
    包名:对已经安装过的软件包进行操作时,比如查找已经安装的某个包,卸载包等 ,使用包名。它默认是去目录/var/lib/rpm下面进行搜索。 当一个 rpm 包安装到系统上之后,安装信息通常会保存在本地的 /var/lib/rpm/目录下。


    1.1.2.1 从本地安装
    [root@xuegod163 ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
    [root@xuegod163 ~]# cat /etc/shells
    /bin/sh
    /bin/bash
    /sbin/nologin
    /usr/bin/sh
    /usr/bin/bash
    /usr/sbin/nologin
    /bin/tcsh
    /bin/csh
    /bin/zsh

    1.1.2.2 从网上下载直接安装centos epel扩展源
    例:
    rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    #安装centos epel扩展yum源。 注:epel源是对centos7系统中自带的 base源的扩展。**

    1.1.3 rpm查询功能

    用法:rpm -q(query) 常与下面参数组合使用
    -a(all) 查询所有已安装的软件包
    -f(file)系统文件名(查询系统文件所属哪个软件包),反向查询
    -i 显示已经安装的rpm软件包信息,后面直接跟包名
    -l(list) 查询软件包中文件安装的位置
    -p 查询未安装软件包的相关信息,后面要跟软件的命名
    -R 查询软件包的依赖性
    例:
    [root@xuegod163 mnt]# rpm -q zsh
    —->查询指定的包是否安装

    [root@xuegod163 mnt]# rpm -qa —->查询所有已安装包
    [root@xuegod163 mnt]# rpm -qa | grep vim —->查询所有已安装包中带vim关键字的包
    [root@xuegod163 ~]# which find #查看find命令的路径
    /usr/bin/find
    [root@xuegod163 ~]# rpm -qf /usr/bin/find #查询文件或命令属于哪个安装包
    查询已经安装的rpm包的详细信息或作用 rpm -qi rpm包名
    [root@xuegod163 ~]# rpm -qi lrzsz

    针对没有安装的RPM包,要加参数: -p
    [root@xuegod163 ~]# rpm -qpi /mnt/Packages/php-mysql-5.4.16-42.el7.x86_64.rpm

Summary
: A module for PHP applications that use MySQL databases #php使用mysql数据库的一个模块

[root@xuegod163 mnt]# rpm -qpl /mnt/Packages/zip-3.0-10.el7.x86_64.rpm #查看rpm安装后,将生成哪些文件

1.1.4 查看软件包内容是否被修改

rpm -V包名
rpm -Vf 文件路径
例:
[root@xuegod163 ~]# which find
/usr/bin/find
[root@xuegod163 ~]# rpm -qf /usr/bin/find
findutils-4.5.11-5.el7.x86_64
[root@xuegod163 ~]# rpm -Vf /usr/bin/find #检查具体文件
[root@xuegod163 ~]# echo aaa >> /usr/bin/find
[root@xuegod163 ~]# rpm -Vf /usr/bin/find
S.5….T. /usr/bin/find
[root@xuegod163 ~]# rpm -V findutils #检查包
S.5….T. /usr/bin/find
注:如果出现的全是点,表示测试通过
出现下面的字符代表某测试的失败:
5 — MD5 校验和是否改变,你也看成文件内容是否改变
S — 文件长度,大小是否改变
L — 符号链接,文件路径是否改变
T — 文件修改日期是否改变
D — 设备
U — 用户,文件的属主
G — 用户组
M — 模式 (包含许可和文件类型)
? — 不可读文件
再后面的c 文件名,它表示的是文件类型
c 配置文件
d 普通文件
g 不该出现的文件,意思就是这个文件不该被这个包所包含
l 授权文件(license file)
r 描述文件

互动: 查看系统中所有的rpm包及安装的文件有没有被黑客修改
[root@xuegod163 ~]# rpm -Va > rpm_check.txt
> # 这个> 表示标准输出重定向。 将rpm -qa 输出到屏幕上的信息重定向到 rpm_check.txt 文件中。
在文件中加一下这个参数描述
注: 检验时参考了 /var/lib/rpm 目录下的rpm数据库信息

**

1.1.5 rpm包卸载和升级

用法:rpm -e(erase) 包名
[root@xuegod163 ~]# rpm -qa zsh
zsh-5.0.2-28.el7.x86_64
[root@xuegod163 ~]# rpm -e zsh
[root@xuegod163 ~]#
[root@xuegod163 ~]# rpm -qa zsh
参数: —nodeps 忽略依赖,建议在卸载时不要用rpm去卸载有依赖关系的包,应该用yum
[root@xuegod163 ~]# rpm -e —nodeps lrzsz
升级:
**[root@xuegod163 ~]# rpm -Uvh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm

因为升级时会有一些依赖包要解决。 所以一般我们使用yum update

包 来升级。**

1.1.6 解决rpm依赖关系:
[root@xuegod163 ~]# rpm -ivh /mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm
警告:/mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
错误:依赖检测失败:
mariadb(x86-64) = 1:5.5.56-2.el7 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要
perl-DBD-MySQL 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要
解决:
[root@xuegod163 ~]# rpm -ivh /mnt/Packages/mariadb-5.5.56-2.el7.x86_64.rpm
[root@xuegod163 ~]# rpm -ivh /mnt/Packages/perl-DBD-MySQL-4.023-5.el7.x86_64.rpm
[root@xuegod163 ~]# rpm -ivh /mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm

1.2 YUM的使用

yum(全称为 Yellow dog Updater, Modified)是一个前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记
YUM:解决依赖关系问题,自动下载软件包,它是基于C/S架构
C=client S=ftp\http\file

1.2.1 配置yum源

1.2.1.1 配置本地yum源

1、挂载镜像:
先确定虚拟机光驱中有加载系统镜像
[root@xuegod163 ]# mount /dev/cdrom /mnt/
[root@xuegod163 ]# ls /mnt/
2、配置yum源文件:
[root@xuegod163 ~]# vim /etc/yum.repos.d/centos7.repo #必须以.repo结尾,插入以下内容
[centos7]
name=CentOS7
baseurl=file:///mnt
enable=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
注:
[centos7] #yum源名称,在本服务器上唯一的,用来区分不同的yum源
name= CentOS7 #对yum源描述信息
baseurl=file:///mnt #yum源的路径,提供方式包括FTP(ftp://…)、HTTP(http://...)、本地(file:///… 光盘挂载目录所在的位置)
enabled=1 #为1,表示启用yum源;0为禁用
gpgcheck=0 #为1,使用公钥检验rpm包的正确性;0为不校验
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #指定进行rpm校验的公钥文件地址
**

1.2.1.2 网络yum源

Centos 7 配置网络yum源
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#wget 下载文件 ,-O 将wget下载的文件,保存到指定的位置,保存时可以重新起一个名字,或者直接写一个要保存的路径,这样还用原来的文件名。
查看:
[root@xuegod63 yum.repos.d]# vim /etc/yum.repos.d/CentOS-Base.repo
找到这一条:baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
注:$releasever系统的版本的值等于
[root@xuegod163 ~]# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
$basearch 等于:x86_64
排错: 如果下载Centos-7.repo后,不用能
解决:打开阿里云链接:http://mirrors.aliyun.com/centos/ 找到centos7最新版本号
然后执行:sed进行全文替换
[root@localhost ~]# sed -i ‘s/$releasever/7.4.1708/g’ /etc/yum.repos.d/CentOS-Base.repo
**[root@localhost ~]# yum clean all

清空一下yum缓存
[root@localhost ~]# yum list

查看列表**

1.2.2 yum使用

yum常用操作:
[root@xuegod63 ~]# yum install -y httpd #安装软件包, -y 直接安装
[root@xuegod63 ~]# yum -y update #升级软件包,改变软件设置和系统设置,系统版本内核都升级
[root@xuegod63 ~]# yum -y upgrade #升级软件包,不改变软件设置和系统设置,系统版本升级,内核不改变
[root@xuegod63 ~]# yum -y update # 不加任何包,表示整个系统进行升级
**[root@xuegod63 ~]# yum info httpd

查询rpm包作用
[root@xuegod63 ~]# yum provides /usr/bin/find #查看命令是哪个软件包安装的
[root@xuegod63 ~]# yum -y remove

包名 #卸载包
[root@xuegod63 ~]# yum search keyword #按关键字搜索软件包

yum报错,注意的几个小问题:
1、确定光盘是否链接,光盘是否挂载
2、配置文件中格式是否正确,字母,符号有没有少写,挂载点和配置文件中设置的是否一致
3、网络源需要联网,操作和RPM类似,只是会自动安装依赖项。**

8.2.3 yum安装开发工具软件包组

# yum grouplist #查看有哪些软件包组
语法:yum groupinstall GROUPNAME
yum grouplist #显示中文,如果想变成英文,则执行以一下命令
[root@bogon Packages]# echo $LANG
zh_CN.UTF-8
[root@bogon Packages]#LANG=en_US.UTF-8
yum grouplist
[root@localhost Packages]# yum grouplist

测试:
**[root@xuegod63 ~]# yum remove gcc -y

卸载开发工具软件组中的gcc包
[root@xuegod63 ~]# yum

groupinstall ‘Development tools’ -y #安装开发工具软件包组,安装这组软件包时,把gcc再安装上了**