将软件预先在相同的硬件与操作系统上面编译好后才发布的话,能够让相同的Linux发行版具有完全一致的软件版本。再添加傻瓜简易的安装、删除、管理等功能,让软件的管理简单得多。

软件管理器简介

Tarball 来进行软件的安装的过程很麻烦,而且对于不熟悉整个系统的用户来说也无从下手
厂商先在它们的系统商面编译好了我们用户所需要的软件,然后将这个编译好的可执行的软件直接发布给用户来安装,由于本身使用的是厂商的Linux发行版,所以系统(硬件与操作系统)是一样的,那么编译过的可执行文件也可运行,在安装的时候加上一些与这些程序相关的信息,将它建立成为数据库,可以进行安装、反安装、升级与验证等相关功能(类似Windows下的卸载与更改程序)
image.png
在Linux上至少有两种软件管理器,分别为Red-Hat的RPM与Debian的dpkg。CentOS(Red-Hat的免费版)主要是以RPM为主

Linux界的两大主流:RPM 与 DPKG

Linux开发商现在固定的硬件平台与操作系统平台上面将需要安装或升级的软件编译好,然后将这个软件的所有相关文件打包为一个特殊格式的文件,在这个软件安装文件内还包含了预先监测系统与依赖软件的脚本,并提供记录该软件提供的所有文件信息等,最终将这个软件安装文件发布。客户端获取这个文件后,通过特定的命令来安装,依照文件内部的脚本来检测以来的辅助软件是否存在,若安装的环境符合要求,那就会开始安装,安装完成后还会将软件的信息写入软件管理机制中,以便未来可以进行升级、删除等操作。

dpkg

由Debian Linux 社区开发,只要是衍生于Debian的Linux发行版大多使用,包括B2D、Ubuntu

  • 使用命令:dpkg
  • 在线升级功能(命令):APT(apt-get)

RPM

由Red Hat 开发,很多发行版使用这个机制来作为软件安装的管理方式,包括Fedora、CentOS、SUSE等。

  • 使用命令:rpm、rpmbuild
  • 在线升级功能(命令):YUM(yum)

什么是RPM与SRPM

RPM(RedHat Package Manager)由Red Hat 公司发展,以一种数据库记录的方式将所需要的软件安装到Linux系统的一套软件管理机制。安装的时候就将该软件的信息整个写入RPM的数据库中,一边未来的查询、验证与反安装

  • 优点:
    1.已经编译完成并且打包完毕,软件传输与安装上很方便(不需要再重新编译)
    2.软件的信息都记录在Linux主机的数据库上,方便查询、升级与反安装

软件安装文件几乎只能安装在原本默认的硬件与操作系统版本中,所以不同的Linux发行版所发布的RPM文件并不能用在其他的Linux发行版上

  • 缺点:
    1.软件安装的环境必须与打包时的环境需求一致或相当
    2.需要满足软件的依赖属性需求
    3.反安装时需要特别小心,底层的软件不可先删除,否则可能造成整个系统的问题

SRPM

SRPM为Source RPM,该RPM文件里面含有源代码,且没有经过编译。

  • SRPM与Tarball比较:
    1.SRPM含有软件所需要的依赖性软件说明以及所有RPM文件所提供的数据

  • SRPM与RPM比较:
    1.SRPM提供了源码,没有编译
    2.提供了参数配置文件(configure与makefile)

  • 目的:
    可以通过修改SRPM内的参数配置文件,然后重新编译产生能适合我们Linux环境的RPM文件,而不必与打包的Linux环境相同

  • 使用方法:
    1.将软件以RPM管理的方式编译,此时SRPM会被变异成为RPM文件
    2.将编译完成的RPM文件安装到Linux系统当中

什么是i386、i586、i686、noarch、x86_64

通过软件发布的文件名可知道这个软件的版本、适用的平台、编译发布的次数
除了适合的硬件平台与扩展名外,主要是以[-]来隔开各个部分,可以清楚地表示软件名称、版本信息、打包次数、与操作的硬件平台

软件名称

每一个软件的名称而已

版本信息

分辨新旧,区分版本主次

发布版本次数

编译的次数,由于同一版的软件中,可能由于某些bug或是安全上的顾虑,所以必须进行小幅度的patch或重设一些编译参数,设置完成后重新编译并打包成RPM文件

操作硬件平台

RPM可以适用在不同的操作平台上,但是不同的平台设置的参数还是有所差异

  • i386:适用于所有的x86平台(i指的是intel兼容的CPU,386为CPU的等级)
  • i586:。。。
  • i686:。。。
  • x86_64:针对64位的CPU进行优化编译设置
  • noarch:没有任何硬件等级上的限制

总结:CentOS 7仅推出x86_64 的软件版本,并没有提供i686以下级别的软件,由于硬件方面可以向下兼容,所以最低级别的i386可以安装在所有的x86 硬件平台上

RPM的优点

优点:

  • 1.包含以及编译过的程序与配置文件等数据,用户不需重新编译
  • 2.在安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装
  • 3.文件本身提供软件版本信息、依赖属性检查、软件用途说明、软件所含文件等信息,便于了解软件
  • 4.使用数据库记录RPM文件的相关参数,便于升级、删除、查询与验证

RPM软件管理属性依赖问题

当要安装某个以RPM形式提供的软件时,RPM会检验数据库里面是否已经存在相关的软件,如果数据库显示不存在,那么这个ROM文件默认不能安装

RPM属性依赖的解决方式:YUM在线升级

  • 为了重复利用既有的软件功能,很多软件会议函数库的方式发布部分功能,以方便其他软件调用
  • 为了节省用户的数据量,会将软件内容分为一般使用和开发使用(development)两大类,默认情况下大部分的开发使用版本都不会安装,因为终端用户大部分不回去开发软件

YUM目的

将这些依赖属性的软件先建立一份清单列表,在有要安装软件需求的时候,先到这个列表去找,同时与系统内已安装的软件相比较,没安装到的依赖软件就同时安装,解决依赖属性问题

YUM解决方式

1.CentOS先将发布的软件放置到YUM服务器内,
2.分析这些软件的依赖属性问题,将软件内的记录信息记录下来(header),然后再将这些信息分析后记录成软件相关性的列表,这些列表数据与软件所在的本机或网络上的位置可以成为软件源或软件仓库(repository)
3.客户端有软件安装需求时,会主动地向网络上面的YUM服务器的软件源地址下载列表,然后通过列表的数据与本机RPM数据库已存在的软件数据相比较,就能够一口气安装所有需要的具有依赖属性的软件

RPM 软件管理程序:rpm

rpm命令的查询功能可以让我们很轻易地知道系统有没有安装需要的软件。YUM可以直接用来进行安装的操作,所以rpm基本只用到查询与检验的功能,(安装与跟新了解即可)

RPM默认安装的路径

1.若安装环境检查合格,则RPM文件就开始被安装到Linux系统上
2.安装完毕后,软件相关信息被写入/var/lib/rpm/目录下的数据库文件中(版本之间的比较就是来自于这个数据库)
3.RPM提供的数字签名信息也是在这个目录内记录的
3.软件内的文件放置在与系统文件有关的地方,例如

  • /etc:配置文件
  • /usr/bin:可执行文件
  • /usr/lib:动态函数库
  • /usr/share/doc:使用手册与说明文件
  • /usr/share/man:man page 文件
    image.png

RPM安装(install)

root的身份才能够使用rpm 这个命令
rpm [-ivh] package_name
选项与参数:

  • -i:install安装的意思
  • -v:查看更详细的安装信息
  • -h:显示安装进度
    建议直接使用 -ivh就行,如果安装的过程中发现问题,要一个个将问题解决,尽量不要使用暴力安装法,即通过[--force]去强制安装,因为会发生很多不可预期的问题

ROM升级与更新(upgrade/freshen)

直接以-Uvh和-Fvh即可

  • rpm [-Uvh] package_name
    软件没有安装,则直接安装;如果有安装过旧版,则系统自动更新至新版
  • rpm [-Fvh] package_name
    软件没有安装则不会安装;只有已经安装的软件才会被升级

RPM查询(query)

查询的地址位于/var/lib/rpm/目录下的数据库文件,也可以查询未安装的RPM文件内的信息
rpm -qa
rpm -q[licdR] [已安装的软件名称]
rpm -qf [存在于系统上面的某个文件名]
rpm -qp[licdR] [未安装的某个文件名称]
选项与参数:
查询已安装软件的信息

  • -q:仅查询,后面接的软件没是否有安装
  • -qa:列出已经安装所有软件名称
  • -qi:列出软件详细信息,包含开发商、版本与说明等
  • -ql:列出该软件的所有文件与目录所在完整文件名
  • -qc:列出该软件的所有配置文件(找出/etc下面的文件)
  • -qd:列出该软件的所有说明文件(找出与man有关文件)
  • -qR:列出与该软件有关的依赖软件所含的文件
  • -qf:后面接文件名,找出该文件属于哪一个已安装的软件
  • -q --scripts:列出是否含有安装后需要执行的脚本文件,可以用debug

查询某个ROM文件内含有的信息:

  • -qp [icdlR]:参数意义与上述一致,只是用于找出某个RPM文件内的信息,而非已安装的软件信息

image.png

RPM验证与数字签名(Verify/signature)

RPM反安装与重建数据库(erase/rebuilddb)

YUM在线升级功能

我们想要使用YUM的功能时,必须要先找到适合的YUM服务器才行。CentOS在发布软件时已经制作出多个镜像站(mirror site)提供全时间的软件更新之用。所以理论上我们不需要处理任何设置值,只要能够脸上互联网,就可以使用YUM
image.png
man yum

利用YUM进行查询、安装、升级与删除功能

通过yum命令

查询功能:yum [list|info|search|provides|whatproviders] 参数

yum [option] [查询工作选项] [相关参数]
选项与参数:
[option]:主要的选项包括有:

  • -y:等yum要等待使用者输入时,可以自动提供yes的回应
  • [--installroot=/some/path]:将该软件安装在/some/path 而不使用默认路径
    [查询工作选项][相关参数]:
    search:查找某个软件名称或是描述(description)的重要关键字
    list:列出目前yum所管理的所有的软件与版本,类似rpm -qa
    info:同上,类似rpm -qai
    provides:从文件去查找软件,类似rpm -qf

案例

  • 查找磁盘列阵(raid)相关的软件
    image.png
    yum search raid
    image.png
    yum自己找出最近的yum服务器;速度最快的那一台yum服务器;三个软件园,且来源位该服务器
    image.png
    冒号(:)左边位软件名称,右边则是在RPM内的name设置(软件名)

  • 找出mdadm这个软件的功能是什么
    image.png
    yum info mdadm
    image.png
    分别表示软件已经安装;软件名称;软件的硬件架构;软件的版本;发布的版本;软件的文件总容量;软件源的安装状态;其他如仓库地址,开源协议声明,软件描述等

  • 列出YUM服务器上面提供的所有软件名称
    image.png
    image.png
    yum list
    Installed Packages:已安装软件
    Available Packages:可安装的其他软件
    软件名称;版本;软件源

  • 列出当前服务器上可供本机进行升级的软件有哪些
    image.png
    yum list updates

  • 列出提供passwd这个命令的软件有哪些
    image.png

安装/升级功能:yum [install|update] 软件

yum [option] [安装与升级的工作选项] [相关参数]
选项与参数:

  • install:后面接要安装的软件
  • update:后面接要升级的软件,若要整个系统都升级,就直接update即可

案例

  • 安装未安装的pam-develti
    image.png
    yum install pam-develti
    提示只有root才能够执行该命令安装,切换到root安装
    image.png

只要有了yum,安装、升级软件很容易,而且还能主动地完成软件属性依赖处理流程

删除功能

yum remove 软件

YUM的配置文件

yum主机能够连接上互联网就可以直接使用,但是CentOS镜像站可能会选错,所以需要手动修改一下yum的配置文件
中国大陆可选择的镜像站中科大或清华

  • centos.ustc.edu.cn/centos/7/os/x86_64
    image.png
  • mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64
    image.png

修改YUM配置文件

配置文件为/etc/yum.repos.d/CentOS-Base.repo
用vim打开初始内容为
image.png
image.png
其中:

  • [base]:原件源名字,[]一定要存在,里面base可以随意取,但不能重名
  • name:说明软件源意义,无关紧要
  • mirrorlist:这个软件源可以使用的镜像站,可以注释掉
  • baseurl:**很重要,软件源的实际地址,mirrorilist是由YUM程序自行去识别镜像站,baseurl则是固定的一个软件源网址,可以修改为http://centos.ustc.edu.cn/centos/7/os/x86_64 **
  • enable:软件源是否启动,1为启动,0为不启动
  • gpgcheck:是否查看数字签名
  • gpgkey:数字签名公钥文件所在位置,默认值即可
    修改后如下:
    image.png
    或者使用阿里云镜像
    image.png
  • 测试软件源是否正常运行
    yum repolist all :列出服务器所使用的软件园有哪些
    image.png

修改软件源产生的问题与解决 yum clean

上述修改的是系统的默认配置文件,我们应该要在/etc/yum.repos.d/下面新建一个*.repo 才可以。但是我们使用的是特定的镜像站,而不是其他软件开发商提供的软件源,所以才修改系统默认配置文件
由于使用的软件源版本有新旧之分,YUM会先下载软件源的列表到本机的/var/cache/yum 里面去。如果修改了网址却没有修改软件源名称([]中括号内的文字),可能造成本机的列表与YUM服务器列表不同步,造成无法更新的问题

  • 解决办法:yum clean [packages|headers|all]
    选项与参数:
    package:将已下载的安装文件删除
    headers:将下载的安装文件头删除
    all:将所有软件源数据都删除
    image.png

YUM的软件群组功能

EPEL/ELRepo 外挂软件以及自定义配置文件

##全系统自动升级
让系统自动升级,随时保持在最新的状态。通过yum -y update 自动回答yes来开始下载与安装,然后再通过crontab的功能来处理。例如
echo '10 1 * * *' root /usr.bin.yum -y --enablerepo=epel update' > /etc/cron.d/yumupdate
image.png

image.png
此外还是需要分析与收集root的邮件,如果升级的为内核(kernel),那么还是得要重新启动才会让安装的软件顺利运行

管理的抉择:RPM还是Tarball

优先级如下

  • 1.优先选择原厂的RPM功能
  • 2.选择软件官网发布的RPM或是提供的软件源地址
  • 3.使用Tarball安装特殊软件
  • 4.用Tarball测试新版软件
    总结:如果有RPM的话,优先PRM安装,毕竟管理上比较便利,但是如果软件的架构差异性太大或是无法解决依赖属性问题,那么以Tarball来安装

基础服务管理:以Apache为例

在默认的情况下,无需修改服务的配置文件,都通过系统默认值来处理服务即可。

安装步骤(非常重要)

  • 1.安装:yum install (软件)
  • 2.启动:systemctl start (软件)
  • 3.开机启动:systemctl enable (软件)
  • 4.防火墙:firewall-cmd --add-service="(服务)";firewall-cmd --permanent -add-service="(服务)";
  • 5.测试:用软件去查看服务是否正常

SRPM的使用:rpmbuild(Optional)


这个家伙很懒,啥也没有留下😋