Skip to content

Linux 软件包管理(CentOS)

软件包分类

一种是源码包,另一种是二进制的 rm 包

shell
# RPM 包(Red Hat Package Manager)
适用发行版:Red Hat、CentOS、Fedora、openSUSE 等。
文件扩展名:.rpm。
包管理工具:rpm是低级工具,直接操作 RPM 包;yum(旧版)或dnf(新版)是高级工具,可自动解决依赖关系。

# 源码包
适用发行版:所有 Linux 发行版。
文件扩展名:.tar.gz、.tar.bz2、.tar.xz等。
安装方式:需要手动解压,进入解压目录后,通过./configure、make、sudo make install等命令进行编译和安装,需手动解决依赖关系。

RPM 包管理

注解

CentOS 的软件包格式为 .rpm,包含二进制文件、配置文件、依赖信息等。

通过 yum(CentOS 7 及之前)或 dnf(CentOS 8 及之后,yum 的升级版)工具进行自动化管理。

优缺点

  1. 优点
shell
1. 包管理系统简单,只通过几个命令即可完成安装、升级、查询、卸载
2. 安装速度比源码包快
  1. 缺点
shell
1. 经过编译,看不到源码包
2. 功能选择不如源码包灵活
3. 依赖性,安装 a 软件包,可能需要安装 a1、a2 后才可正常使用

RPM 命名规则

以 httpd-2.2.15-15.e16.CentOS.1.i686.rpm 为例

text
httpd                            软件包名
2.2.15                           软件版本
15                               软件发布的次数
e16                              软件发行商,e16是RedHat公司发布,适合CentOS6.x使用
i686                             适合的硬件平台
rpm                              包的拓展名

手动管理 .rpm 包

适用于手动下载的 .rpm 包(需手动解决依赖,不推荐新手使用)。

shell
# 安装本地 RPM 包
rpm -ivh 包名.rpm   # -i:安装,-v:详细输出,-h:显示进度

# 卸载 RPM 包
rpm -e 软件名   # 注意是软件名,不是包文件名

# 查看已安装的 RPM 包
rpm -qa | grep 软件名

# 验证 RPM 包是否完整
rpm -V 软件名

yum 工具(CentOS 7 及之前)

基于 RPM 的前端工具,自动解决依赖关系,从仓库(Repository)下载并安装软件。

  1. yum 源文件存储位置
shell
# 系统通过 /etc/yum.repos.d/ 目录下的 .repo 文件配置仓库地址。
cd /etc/yum.repos.d/
ls
展示:CentOS-Base.repo(默认), CentOS-Media.repo(光盘源文件,配置它可完成离线 yum 安装)

# 查看文件内容:more CentOS-Base.repo,内容如下
[base]            容器名称
name              容器说明,随便写
mirrorlist        镜像站点,可注释,可选国内站点
baseurl           yum 的服务器地址,yum官方地址,可修改成其他的yum源地址
enabled           此容器是否生效,enabled=1 生效,enabled=0 不生效
gpgcheck          rpm证书是否生效,gpgcheck=1 生效,gpgcheck=0 不生效
gpgkey            数字证书公钥的保存地址
  1. yum 命令
shell
# 仓库基础管理
yum repolist enabled                  # 查看已启用的仓库
yum clean all                         # 清除缓存(解决仓库元数据过期问题)
yum makecache                         # 生成新缓存
yum install -y epel-release           # 安装 EPEL 扩展仓库(提供更多软件包)

# 安装
yum install -y 软件名        # 安装指定软件包,比如:yum install -y nginx

# 升级
yum update -y  包名         # 升级指定软件包
yum update -y              # 升级所有软件包

# 卸载
yum remove -y 软件名        # 卸载软件(保留配置文件)
yum erase -y 软件名         # 彻底删除(包括配置文件)

# 查询
yum list installed | grep 软件名    # 查看已安装的软件
yum search 关键词                   # 搜索软件(根据关键词),比如:yum search mysql
yum info 包名                       # 查看软件详情(版本、依赖等),比如:yum info mysql

DNF 工具(CentOS 8 及之后)

  1. dnf 命令
shell
# 安装软件
dnf install -y 软件名

# 卸载软件
dnf remove -y 软件名

# 更新软件
dnf update -y 软件名

# 搜索软件
dnf search 关键词

# 查看仓库
dnf repolist

# 清除缓存
dnf clean all

linux 源码包

Linux 源码包是 Linux 内核或各类开源软件的源代码压缩包,需手动编译后才能安装使用,核心价值在于可自定义功能和适配特定硬件。

优缺点

  1. 优点
shell
开源(最大优势),代码可修改
可自由选择所需的功能
软件是编译安装,更适合自己的系统,所以:更稳定,更高效
卸载方便
  1. 缺点
shell
和二进制软件包相比,安装时间长
因为是编译安装,所以安装过程中报错,新手很难解决,解决方式:换版本,联系官方
安装步骤较多,容易出现拼写错误

源码包安装(以 httpd 为例)

  1. 第一步 获取:到官网下载软件包,httpd-2.2.9.tar.gz
  2. 第二步 解压:上传到服务器上,然后解压缩,执行:tar -zxvf httpd-2.2.9.tar.gz
  3. 第三步 安装 gcc:安装 gcc (让 linux 系统可以识别 c 语言文件),执行:yum -y install gcc
  4. 第四步 配置编译参数:进入解压目录,执行 ./configure 命令,可通过 --prefix 指定安装路径,执行:
shell
cd httpd-2.2.9
./configure --prefix=/usr/local/apache2/
  1. 第五步 编译:执行 make 命令,将源代码编译为可执行文件。
    • make 会调用 gcc 编译器,并读取 makefile 中的信息进行系统软件编译,编译的目的是把 c 语言源码程序,编译成 linux 认识的可执行文件
  2. 第六步 安装:执行 make install 命令,将编译后的文件复制到指定安装路径。
    • 如果报错需要执行 make clean 删除编译的文件,再继续其他操作
  3. 第七步 卸载源码包:源码包没有删除命令,如果需要删除,直接删除安装目录即可,执行:rm -rf /usr/local/apache2/

安装方式选择(rpm 包和源码包)

能用 rpm 就用 rpm,如果用不了再选择源码包,如果应用需要跨平台部署到其他发行版本的服务器上,可使用源码包

源码包(以 Apache 服务器为例):源码包没有安装数据库,没有删除命令

如果服务是给大量用户提供访问的,建议使用源码包,因为源码包效率更高

shell
/usr/local/apache2/conf/http.conf                                配置文件位置
/usr/local/apache2/htdocs                                        网页位置
/usr/local/apache2/logs                                          日志位置

启动方式:/usr/local/apache2/bin/apachectl start

RPM 包(以 Apache 服务器为例)

RPM 包管理更方便

下载:yum 在线安装,或者 rpm 安装

安装地址:默认即可

shell
# 文件所在
/etc/httpd/conf/httpd.conf                               配置文件位置
/var/www/html/                                           网页位置
/var/log/httpd/                                          日志位置

# 启动方式
启动方式一:service httpd restart
启动方式二:/etc/rc.d/init.d/httpd restart

注意

linux 的软件包无法在 windows 中使用,windows 软件包也无法在 linux 中使用