九、软件包管理

YinJayChen 5 2025-05-03

九、软件包管理

9.1 软件包相关知识

9.1.1 RPM 与 SRPM

RPM

最大的特点就是将你要安装的软件先编译过, 并且打包成为 RPM 机制的包装文件,透过包装好的软件里头默认的数据库记录, 记录这个软件要安装的时候必须具备的相依属性软件,当安装在你的 Linux 主机时, RPM 会先依照软件里头的数据查询 Linux 主机的相依属性软件是否满足, 若满足则予以安装,若不满足则不予安装。

那么安装的时候就将该软件的信息整个写入 RPM 的数据库中,以便未来的查询、验证与卸载。优点如下:

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

rpm包高度依赖打包时的环境,也就是Centos6.x的包不一定能在Centos7.x用


SRPM

Source RPM,也就是这个 RPM 文件里面含有原始码,SRPM 所提供的软件内容并没有经过编译,通常 SRPM的扩展名是以 ***.src.rpm 这种格式来命名的。但是他仍然含有该软件所需要的相依性软件说明、以及所有 RPM 文件所提供的数据。同时,他与 RPM 不同的是,他也提供了参数配置文件 (就是 configure 与 makefile)。


如果我们下载的是 SRPM ,那么要安装该软件时,你就必须要:

  • 先将该软件以 RPM 管理的方式编译,此时 SRPM 会被编译成为 RPM 文件
  • 然后将编译完成的 RPM 文件安装到 Linux 系统当中

我们现在知道 RPM 文件必须要在相同的 Linux 环境下才能够安装,而 SRPM 既然是原始码的格式,自然我们就可以透过修改SRPM 内的参数配置文件,然后重新编译产生能适合我们 Linux 环境的 RPM 文件


两者对比

文件格式文件格式是否可直接安装内含程序类型可否修改参数并编译
RPMxxx.rpm已编译不可
SRPMxxx.src.rpm不可未编译,原始码

9.1.2 读懂软件包命名

例如这个rp-pppoe-3.11-5.el7.x86_64.rpm

#软件名称   软件版本信息   编译的次数   适合的硬件平台  拓展名
rp-pppoe -   3.11     -   5       .el7.x86_64  .rpm

软件名称:那就是软件名。

版本信息:这里通常又分为主版本跟次版本。以上面为例,主版本为 3 ,在主版本的架构下更动部分原始码内容,而编译出一个新的版本,就是次版本!以上面为例,就是 11 !所以版本名就为 3.11

编译版本次数:通常就是编译的次数啦!那么为何需要重复的编译呢?这是由于同一版的软件中,可能由于有某些 bug 或者是安全上的顾虑,所以必须要进行小幅度的 patch 或重设一些编译参数。 设定完成之后重新编译并打包成 RPM 文件!因此就有不同的打包数出现了!

操作硬件平台:i386(32位)、x86_64(64位)、noarch(就是没有任何硬件等级上的限制)


9.1.3 Linux安装软件方式
软件安装方式简介详细特点优势缺点
rpm软件包安装rpm是linux软件包格式买回来后只需要简单的加工就可以食用。但是,没有相关依赖,需要自己解决。自己下载rpm包,自己安装。缺少依赖自己手动解决依赖。只要你有rpm包,通过rpm命令安装。缺少依赖,只能手动解决依赖。
yum命令安装依赖自动给你解决yum安装软件,替我们下载rpm包,替我们安装rpm包,缺少依赖yum替我们下载。不需要关系依赖,yum自动检查,自动下载与安装依赖。依赖网络(或者抗原通过自搭yum仓库)
编译安装可以自己定义编译:源代码--->命令(二进制文件)编译安装三部曲:./configure(配置)--->make(编译)--->make install (安装)可以自定义功能,这个软件没有rpm包或yum安装不了。步骤繁琐,缺少的依赖需要自己解决,大型软件编译时间长。
二进制包绿色软件(解压既用)别人配置好的,我们只需要解压,简单配置,即可使用。方便不是所有软件都有,部分服务才有。

9.2 rpm软件管理程序

9.2.1 RPM 默认安装的路径

一般来说,RPM 类型的文件在安装的时候,会先去读取文件内记载的设定参数内容,然后将该数据用来比对 Linux 系统的环境,以找出是否有属性相依的软件尚未安装的问题。例如 Openssh 这个联机软件需要透过 Openssl 这个加密软件的帮忙,所以得先安装 openssl 才能装 openssh 的意思。那你的环境如果没有 openssl , 你就无法安装 openssh 的意思啦。


若环境检查合格了,那么 RPM 文件就开始被安装到你的 Linux 系统上。安装完毕后,该软件相关的信息就会被写入 /var/lib/rpm/ 目录下的数据库文件中了。

未来如果我们有任何软件升级的需求,版本之间的比较就是来自于这个数据库, 而如果你想要查询系统已经安装的软件,也是从这里查询的!同时,目前的 RPM 也提供数字签名信息, 这些数字签名也是在这个目录内记录。


软件内的文件通常放置以下目录:

etc一些配置文件放置的目录,例如 /etc/crontab
/usr/bin一些可执行的命令
/usr/lib一些程序使用的动态函式库
/usr/share/doc一些基本的软件使用手册与说明文件
/usr/share/man一些 man page 文件

9.2.2 RPM安装
#常用参数
[root@localhost ~]# rpm -ivh xxxxx.rpm
选项与参数:
-i :install 的意思
-v :察看更细部的安装信息画面
-h :以安装信息列显示安装进度

例一:安装原版光盘上的 rp-pppoe 软件
[root@localhost ~]# rpm - - ivh /mnt/Packages/rp-pppoe-3.11-5.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:rp-pppoe-3.11-5.el7 ################################# [100%]

例二、安装两个以上的软件时:
[root@localhost ~]# rpm - - ivh a.rpm b.rpm *.rpm
# 后面直接接上许多的软件文件!

例三、直接由网络上面的某个文件安装,以网址来安装:
[root@localhost ~]# rpm - - ivh http://xxx.com/path/xxxx.rpm

#rpm 安装时常用的选项与参数
--nodeps   #强制安装,但通常无法使用,可能需要依赖
--replacepkgs   #重新安装某个已经安装过的软件(覆盖)
--test   #想要测试一下该软件是否可以被安装到使用者的 Linux 环境当中,可找出是否有属性相依的问题。
--nosignature    #略过数字签名的检查
--prefix 新路径  #要将软件安装到其他目录

9.2.3 RPM升级与更新

使用 RPM 来升级,就以 -Uvh 或 -Fvh 来升级即可。

-Uvh
后面接的软件即使没有安装过,则系统将予以直接安装。若后面接的软件有安装过旧版,则系统自动更新至新版。
-Fvh
如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装。亦即只有已安装至你 Linux 系统内的软件会被升级。

9.2.4 RPM查询

RPM 在查询的时候,其实查询的地方是在 /var/lib/rpm/ 这个目录下的数据库文件,RPM 也可以查询未安装的 RPM 文件内的信息。

常用参数如下:
-q :仅查询,后面接的软件名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
-qi :列出该软件的详细信息 (information),包含开发商、版本与说明等;
-ql :列出该软件所有的文件与目录所在完整文件名 (list);
-qc :列出该软件的所有配置文件 (找出在 /etc/ 底下的文件而已)
-qd :列出该软件的所有说明文件 (找出与 man 有关的文件而已)
-qR :列出与该软件有关的相依软件所含的文件 (Required 的意思)
-qf :由后面接的文件名,找出该文件属于哪一个已安装的软件;
-q --scripts:列出是否含有安装后需要执行的脚本,可用以debug


#找出你的 Linux 是否有安装 openssh-server 这个软件,不需要加上版本
[root@localhost ~]# rpm -q openssh-server
openssh-server-7.4p1-21.el7.x86_64


#查询 openssh-server 这个软件所有目录与文件
[root@localhost ~]# rpm -ql openssh-server
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
/usr/lib/systemd/system/sshd-keygen.service
/usr/lib/systemd/system/sshd.service
/usr/lib/systemd/system/sshd.socket
/usr/lib/systemd/system/sshd@.service
/usr/lib64/fipscheck/sshd.hmac
/usr/libexec/openssh/sftp-server
/usr/sbin/sshd
/usr/sbin/sshd-keygen
/usr/share/man/man5/moduli.5.gz
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz
/var/empty/sshd


#列出 openssh-server 这个软件的相关说明数据
[root@localhost ~]# rpm -qi openssh-server
Name        : openssh-server  #软件名称
Version     : 7.4p1           #软件版本
Release     : 21.el7          #编译版本(第几个小版本)
Architecture: x86_64          #编译时硬件环境
Install Date: Sun 03 Jul 2022 07:50:07 AM EDT  #这个软件安装到本系统的时间
Group       : System Environment/Daemons       #这个软件属于哪个软件群组中
Size        : 993586                           #软件的大小
License     : BSD                      
Signature   : RSA/SHA256, Thu 22 Aug 2019 05:37:29 PM EDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : openssh-7.4p1-21.el7.src.rpm     #srpm的文件名
Build Date  : Thu 08 Aug 2019 09:40:49 PM EDT  #软件编译打包的时间
Build Host  : x86-01.bsys.centos.org           #在什么主机上编译的
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.openssh.com/portable.html
Summary     : An open source SSH server daemon
Description :                                  #这个是详细描述
OpenSSH is a free version of SSH (Secure SHell), a program for logging
into and executing commands on a remote machine. This package contains
the secure shell daemon (sshd). The sshd daemon allows SSH clients to
securely connect to your SSH server.


#分别仅找出 openssh-server 的配置文件与说明文档
[root@localhost ~]# rpm -qc openssh-server
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
[root@localhost ~]# rpm -qd openssh-server
/usr/share/man/man5/moduli.5.gz
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz


#若要成功安装 openssh-server ,还需要什么文件的帮忙
[root@localhost ~]# rpm -qR openssh-server
/bin/bash
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/usr/sbin/useradd
config(openssh-server) = 7.4p1-21.el7
fipscheck-lib(x86-64) >= 1.3.0
libaudit.so.1()(64bit)
...... 
省略一部分输出


#找出 /etc/ssh/sshd_config 是哪个软件提供的
[root@localhost ~]# rpm -qf /etc/ssh/sshd_config
openssh-server-7.4p1-21.el7.x86_64

9.2.5 RPM卸载与重建数据库
#查询相关软件名,以pam为例
[root@localhost ~]# rpm -qa | grep pam
pam-1.1.8-23.el7.x86_64
fprintd-pam-0.8.1-2.el7.x86_64
gnome-keyring-pam-3.28.2-1.el7.x86_64

#卸载pam,但pam由于很多程序依赖这个,会提示卸载失败,并显示相关依赖性。可以使用--nodeps强制卸载,但主机会出现问题。
[root@localhost ~]# rpm -e pam

#由于 RPM 文件常常会安装/移除/升级等,某些动作或许可能会导致 RPM 数据库 /var/lib/rpm/ 内的文件破损。可以使用以下命令重建一下数据库。
[root@localhost ~]# rpm -- rebuilddb 

9.3 yum在线安装、升级、卸载功能

[root@localhost ~]# yum repolist all  #查看软件仓库的情况

image-20230108003112305


9.3.1 yum查询软件包
选项与参数:
[option]:主要的选项,包括有:
-y :当 yum 要等待用户输入时,这个选项可以自动提供 yes 的响应;
--installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径
[查询工作项目] [相关参数]:这方面的参数有:
search :搜寻某个软件名称或者是描述 (description) 的重要关键字;
list :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa;
info :同上,不过有点类似 rpm -qai 的执行结果;
provides:从文件去搜寻软件!类似 rpm -qf 的功能!


#1.搜寻磁盘阵列 (raid) 相关的软件有哪些
[root@localhost ~]# yum search raid
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
===================================================== N/S matched: raid ======================================================
dmraid.i686 : dmraid (Device-mapper RAID tool and library)
.....(省略部分输出).....
mdadm.x86_64 : The mdadm program controls Linux md devices (software RAID arrays)
  Name and summary matches only, use "search all" for everything.

  
#2.找出 openssh-server  这个软件的功能为何
[root@localhost ~]# yum info openssh-server 
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Installed Packages  #这说明该软件是已经安装的了
Name        : openssh-server  #这个软件的名称
Arch        : x86_64          #这个软件的编译架构
Version     : 7.4p1           #此软件的版本
Release     : 21.el7          #编译的第几个版本
Size        : 970 k           #此软件的文件总容量
Repo        : installed       #软件库回报说已安装的
From repo   : anaconda 
Summary     : An open source SSH server daemon
URL         : http://www.openssh.com/portable.html
License     : BSD
Description : OpenSSH is a free version of SSH (Secure SHell), a program for logging
            : into and executing commands on a remote machine. This package contains
            : the secure shell daemon (sshd). The sshd daemon allows SSH clients to
            : securely connect to your SSH server.

Available Packages  #从yum源查询到的可用的软件包信息
Name        : openssh-server
Arch        : x86_64
Version     : 7.4p1           #软件的版本与安装的相同
Release     : 22.el7_9        #但编译版本已经更新了
Size        : 459 k
Repo        : updates/7/x86_64
Summary     : An open source SSH server daemon
URL         : http://www.openssh.com/portable.html
License     : BSD
Description : OpenSSH is a free version of SSH (Secure SHell), a program for logging
            : into and executing commands on a remote machine. This package contains
            : the secure shell daemon (sshd). The sshd daemon allows SSH clients to
            : securely connect to your SSH server.
            

#3.列出 yum 服务器仓库上面提供的所有软件名称
Installed Packages #已安装软件
GConf2.x86_64 3.2.6-8.el7 @anaconda
LibRaw.x86_64 0.14.8-5.el7.20120830git98d925 @base
ModemManager.x86_64 1.1.0-6.git20130913.el7 @anaconda
....(中间省略)....
Available Packages #还可以安装的其他软件
389-ds-base.x86_64 1.3.3.1-20.el7_1 updates
389-ds-base-devel.x86_64 1.3.3.1-20.el7_1 updates
389-ds-base-libs.x86_64 1.3.3.1-20.el7_1 updates
....(底下省略)....
#上面提供的意义为:软件名称 版本 在哪个软件库内


#4.列出目前yum服务器上可供本机进行升级的软件有哪些
[root@localhost ~]# yum list updates


#5.列出提供 ssh 这个功能的软件有哪些
[root@localhost ~]# yum provides ssh
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
openssh-clients-7.4p1-21.el7.x86_64 : An open source SSH client applications
Repo        : base
Matched from:
Filename    : /usr/bin/ssh

openssh-clients-7.4p1-22.el7_9.x86_64 : An open source SSH client applications
Repo        : updates
Matched from:
Filename    : /usr/bin/ssh

openssh-clients-7.4p1-21.el7.x86_64 : An open source SSH client applications
Repo        : @anaconda
Matched from:
Filename    : /usr/bin/ssh


#5.查询某软件包的依赖情况
[root@localhost ~]# yum deplist openssh-server
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
package: openssh-server.x86_64 7.4p1-22.el7_9
  dependency: /bin/bash
   provider: bash.x86_64 4.2.46-35.el7_9
  dependency: /bin/sh
   provider: bash.x86_64 4.2.46-35.el7_9
.....(省略输出).....


#6.查看谁在什么时间点安装过什么软件
[root@localhost ~]# yum history
Loaded plugins: fastestmirror, langpacks
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     1 | System <unset>           | 2022-07-03 07:45 | Install        | 1348
history list

[root@localhost ~]# yum history info 1 #查看ID为1的任务里面info信息

#7.列出base包组
yum groups info base

9.3.2 yum安装、升级软件包
选项与参数:
install :后面接要安装的软件!
update :后面接要升级的软件,若要整个系统都升级,就直接 update 即可

[root@localhost ~]# yum install xxxxxx       #通过yum安装某个软件包
[root@localhost ~]# yum update xxxxxx        #通过yum升级某个软件包
[root@localhost ~]# yum update               #通过yum升级所有软件包
[root@localhost ~]# yum check-update         #列出可升级的软件包清单
[root@localhost ~]# yum localinstall xx.rpm  #自己下载rpm包,然后yum会自动依赖

#update和upgrade的区别
yum update 升级所有包,会保留旧版本的 package,更新系统内核根据 obsoletes 配置而定(/etc/yum.conf)
yum upgrade 升级所有包,会删除旧版本的 package,更新系统内核

yum 的 upgrade 是等价于打开 obsoletes 配置的 yum update。而默认中/etc/yum.conf配置文件obsoletes是打开的,因此这两个指令针对系统内核来说是等价的。

若一定要升级,如果软件依赖旧版本的package,最好是使用 yum update,确保不会出现兼容问题。但再正式环境最好不要使用yum更新,会出现意想不到的问题。

9.3.3 yum卸载软件包
[root@localhost ~]# yum remove xxxxxx
#工作推荐: 通过rpm -e删除或关闭放着即可。

9.3.4 yum的配置文件

yum配置文件所处目录:/etc/yum.repos.d/,配置文件以repo结尾。

[root@localhost ~]# cat /etc/yum.repos.d/Centos-7.repo
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#[base]:代表软件库的名字!中括号一定要存在,里面的名称则可以随意取。但是不能有两个相同的软件库名称, 否则 yum 会不晓得该到哪里去找软件库相关软件列表文件。

#name=:只是说明一下这个软件仓库的意义而已
#baseurl=:这个最重要,因为后面接的就是软件仓库网址
#enabled=1:就是让这个软件仓库启动。如果不想启动可以使用 enabled=0
#gpgcheck=1: RPM的数字签名启用,不启用为0
#gpgkey=:数字签名的公钥文件所在位置

9.3.5 yum清除软件包数据和生成缓存

由于使用的软件包版本有新旧之分, yum 会先下载软件包的清单到本机的 /var/cache/yum 里面去!那我们修改了repo里面的软件仓库源,但却没有修改软件库名称(中括号内的文字), 可能就会造成本机的列表与 yum 服务器的列表不同步,此时就会出现无法更新的问题了。

选项与参数:
packages:将已下载的软件文件删除
headers :将下载的软件文件头删除
all :将所有软件库数据都删除!

#删除已下载过的所有软件包的相关数据 (含软件本身与列表)  缓存存放地址:/var/cache/yum/
[root@localhost ~]# yum clean all  


#重新生成软件仓库列表缓存数据,就是把服务器的包信息下载到本地电脑缓存起来 配合yum search xxx使用,不用上网检索就能查找软件信息
[root@localhost ~]# yum makecache

9.4 编译安装

9.4.1 原理概述

Linux 操作系统真正认识的其实是二进制程序,这个程序代码文件其实就是一般的纯文本档。 在完成这个原始码文件的编写之后,再来就是要将这个文件『编译』成为操作系统看的懂得二进制程序!而要编译自然就需要『编译程序』来动作, 经过编译程序的编译与连结之后,就会产生一支可以执行的二进制程序。


在 Linux 上面最标准的程序语言为 C ,所以我使用 C 的语法进行源代码的书写,写完之后,以 Linux 上标准的 C 语言编译程序 gcc 这支程序来编译,就可以制作一支可以执行的二进制程序。整个的流程有点像这样:

image-20230110204410358

在编译的过程当中还会产生所谓的目标文件 (Object file),这些文件是以 *.o 的扩展名样式存在的!至于 C 语言的原始码文件通常以 *.c 作为扩展名。此外,有的时候,我们会在程序当中『引用、呼叫』 其他的外部子程序,或者是利用其他软件提供的『函数功能』,这个时候,我们就必须要在编译的过程当中, 将该函式库给他加进去,如此一来,编译程序就可以将所有的程序代码与函式库作一个链接 (Link) 以产生正确的执行文件。


configure与make

事实上,使用类似 gcc 的编译程序来进行编译的过程并不简单,因为一套软件并不会仅有一个程序,而是有一堆程序代码文件。所以除了每个主程序与子程序均需要写上一笔编译过程的指令外,还需要写上最终的链接程序。 程序代码小的时候还好,如果是类似 WWW 服务器软件 (例如 Apache) ,或者是类似核心的原始码,动则数百 MBytes 的数据量,编译指令会写到疯掉~这个时候,我们就可以使用 make 这个指令的相关功能来进行编译过程的指令简化了!


当执行 make 时,make 会在当时的目录下搜寻 Makefile (or makefile) 这个文本文件,而 Makefile 里面则记录了原始码如何编译的详细信息! make 会自动的判别原始码是否经过变动了,而自动更新执行文件。


make 是一个程序,会去找 Makefile ,那 Makefile 怎么写? 通常软件开发商都会写一支侦测程序来侦测用户的作业环境, 以及该作业环境是否有软件开发商所需要的其他功能,该侦测程序侦测完毕后,就会主动的建立这个 Makefile 的规则文件啦!通常这支侦测程序的文件名为 configure 或者是 config 。


那为什么要侦测作业环境呢?

答:不同版本的核心所使用的系统呼叫可能不相同,而且每个软件所需要的相依的函式库也不相同, 同时,软件开发商不会仅针对 Linux 开发,而是会针对整个 Unix-Like做开发啊! 所以它也必须要侦测该操作系统平台有没有提供合适的编译程序才行!


configure 与 make 运作流程

要进行的任务其实只有两个,一个是执行 configure 来建立 Makefile , 这个步骤一定要成功!成功之后再以 make 来呼叫所需要的数据来编译即可!非常简单!

image-20230110212122221


9.4.2 编译安装步骤
  • 配置:./configure(对代码进行配置,开启/关闭功能,生成Makefile文件,也就是记录配置)
  • 编译:make(把代码根据上面配置要求进行编译,代码--->命令;本质根据Makefile进行编译。)
  • 编译安装:make install(把命令复制到系统指定目录中,创建目录,复制配置文件。)

9.4.3 编译安装示例

1.创建要安装的指定目录

2.安装相关依赖(不知道依赖可以等后面报错信息再进行安装)

3.上传软件包到linux里,进行解压。

4.进行配置、编译、安装。


#创建要安装的指定目录
[root@localhost ~]# mkdir -p /app/tools
[root@localhost ~]# cd /app/tools/
[root@localhost tools]# cp /soft/cmatrix-1.2.tar.gz /app/tools/

#解压软件包
[root@localhost tools]# tar xf cmatrix-1.2.tar.gz

#进入目录准备开始编译安装
[root@localhost tools]# cd cmatrix-1.2/
[root@localhost cmatrix-1.2]# ./configure

缺少gcc依赖,yum install gcc -y下载一下,重新./configure

image-20230110150232115


继续安装缺少依赖,yum install ncurses-devel,同时还有其他依赖yum install binutils

image-20230110150942487


最后进行编译和安装,echo $? 检查上一个命令执行结果 0表示正常, 非0 错误。

image-20230110152353277


编译安装默认的目录/usr/local/

[root@localhost cmatrix-1.2]# which cmatrix
/usr/local/bin/cmatrix

9.5 二进制安装

绿色软件,别人配置好的,我们只需要解压,简单配置,即可使用。

  1. 下载二进制软件包
  2. 创建安装目录
  3. 解压到安装目录
  4. 启动软件
  5. 检查进程是否正常,服务是否正常

Tips:有的软件使用前还得先下载依赖,比如Tomcat需要先安装java环境。