09.Linux软件包管理——(YUM 、RPM)

09.Linux软件管理

1.RPM基础概述

1.1 什么是rpm

RPM全称RedHat Package Manager 缩写,是由红帽开发用于软件包的安装,升级.卸载载与查询工具

包格式 : xxx.rpm

命令 : rpm

1.2 rpm包名组成部分

RPM 包命名以-将软件分成了若*分 bash-4.2.46-
28.el7.x86_64.rpm

09.Linux软件包管理——(YUM 、RPM)

1.3 如何获取rpm包

在我们刚开始学习 rpm 包,建议先从本地镜像中获取
rpm 但实际生产环境中大多数是通过联网方式获取 rpm
包,或者搭建企业私有包管理仓库平台。

1.4 其他类型的安装包

在 Linux 中除了 rpm 格式类型的包,还存在一些其他
类型的软件包。

分类 安装 版本
rpm 预选编译打包.安装简单 软件(k8s开源应用)版本偏低
源码包 手动编译打包,安装繁琐 软件版本随意(rpm包版本低,源码)
二进制包 解压即可使用安装简单 不能修改源码(小工具,解压即用)

2.RPM包管理命令

2.1 rpm安装软件包

  • -i : 安装软件包
  • -v : 显示安装过程
  • -h : 显示安装进度条

1.使用 rpm 命令安装本地路径下软件包

[root@node ~]# mount /dev/cdrom /mnt/
[root@node ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
[root@node ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm

2.使用 rpm 命令安装互联网上的软件包

#1.wget下载到本地-->安装
#2.直接通过rpm命令安装互联网上的软件包;
[root@gao ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm

2.2 rpm依赖包安装

包依赖是指 A-->依赖-->B , B-->依赖-->C , 而C-->依赖-->A .当我们需要安装的 rpm 类型包出现了依赖关系应该如何处理,比如安装 samba 软件包。

[root@gao ~]# rpm -ivh /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm
    error: Failed dependencies:
    libxattr-tdb-samba4.so()(64bit) is
needed by samba-0:4.8.3-4.el7.x86_64
    libxattr-tdb-samba4.so(SAMBA_4.8.3)
(64bit) is needed by samba-0:4.8.3-
4.el7.x86_64
    samba-common-tools = 4.8.3-4.el7 is
needed by samba-0:4.8.3-4.el7.x86_64
    samba-libs = 4.8.3-4.el7 is needed
by samba-0:4.8.3-4.el7.x86_64

1.尝试安装依赖包 samba-common-tools

[root@node ~]# rpm -ivh /mnt/Packages/samba-common-tools-4.8.3-4.el7.x86_64.rpm

2.尝试安装依赖包 samba-libs

[root@node ~]# rpm -ivh /mnt/Packages/
[root@node ~]# rpm -ivh/mnt/Packages/samba-libs-4.8.3-4.el7.x86_64.rpm

3.尝试安装依赖包 samba-common-tools

[root@nado ~]# rpm -ivh/mnt/Packages/samba-common-tools-4.8.3-4.el7.x86_64.rpm

4.最后尝试安装 samba 主程序包

[root@node ~]# rpm -ivh /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm

PS: 由于rpm工具安装rpm包依赖关系太强,所以通常我
们都是使用 yum 来解决

2.3 rpm升级软件包

下载 zabbix-agent 软件包,分别下载 3.0 低版本、然
后下载 4.2 高版来进行测试与实验。

# wget 
https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
# wget
https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm

1.先安装 zabbix-agent-3.0 低版本

[root@node ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm

2.尝试使用 rpm -ivh 安装 zabbix-agent-4.2 高版本
(会出现报错)

[root@ndoe~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm

3.使用 rpm -Uvh 升级 zabbix-agent 至 4.2 版本。
(完美解决)

[root@node ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm

2.4 rpm卸载软件包

如果需要卸载 rpm 包,可以先查看该包是否存系统中,
然后在进行卸载操作。

1.使用 rpm -q 查询软件包是否存在系统

[root@node~]# rpm -q zsh

2.使用 rpm -e 卸载软件包

[root@node ~]# rpm -e zsh

2.5 查询软件包

选项 描述
rpm -q 查看指定软件包是否安装
rpm -qa 查看系统中已安装的所有RPM软件包列表
rpm -qi 查看指定软件的详细信息
rpm -ql 查询指定软件包所安装的目录.文件列表
rpm -qc 查询指定软件包的配置文件
rpm -qf 查询文件或目录属于哪个RPM软件包

1.查询 vsftpd 这个 rpm 包是否安装

[root@node ~]# rpm -q vsftpd

2.模糊查找系统已安装的 rpm 包

[root@node ~]# rpm -qa |grep ftp

3.查询 vsftpd 软件包相关信息

[root@node ~]# rpm -qi vsftpd

4.查询 vsftpd 软件包所安装后在系统中生成的文件路

[root@node ~]# rpm -ql vsftpd

5.查询 vsftpd 软件包的主配置文件

[root@node ~]# rpm -qc vsftpd

6.查询配置文件或系统命令是由哪个 rpm 包提供

[root@node ~]# rpm -qf /etc/vsftpd/vsftpd.conf
[root@node ~]# rpm -qf /usr/sbin/vsftpd

7.查询未安装的 rpm 包会产生哪些文件

[root@node ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm

2.6 rpm包管理小结

  • 1.如何查询 util-linux 软件包安装了哪些文件?
    • rpm -ql util-linux
  • 2.如何查询 mkdir 命令是由哪个 RPM 软件包安装
    的?
[root@node ~]# which mkdir /usr/bin/mkdir
[root@node ~]# rpm -qf /usr/bin/mkdir coreutils-8.22-21.el7.x86_64
#
[root@node ~]# rpm -qf $(which mkdir) coreutils-8.22-21.el7.x86_64
  • 3.安装 .rpm 软件包时, -i、-U 选项有何区别?
    -i:安装
    -U:升级

3.YUM基本介绍

3.1 什么是YUM

yum/dnfRedHat CentOS 系统中的软件包管理
器。
它能够通过互联网下载 .rpm 格式包进行安装,并能自
动处理其依赖间关系,无须繁琐地一次次下载安装。

3.2 什么是 [ YUM源 | YUM仓库 ]

要使用 yum 命令工具安装更新软件,需要有一个包含各
种 rpm 软件包的仓库,这个软件仓库我们一般称为 yum
源。当然这个源可以是本地仓库、也可以是网络仓库。

  • client --ftp/http/file-> yum地址 --->yum仓库(rpm包
    集合)
  • 配置一个仓库: 就是配置一个源(地址)--> 仓库
  • repo文件(baseurl地址--->互联网上的一个仓库---》有
    非常多的rpm软件)

3.3 YUM配置文件

  • CentOS8 的配置文件
[root@node etc]# cat /etc/yum.conf
[main]
gpgcheck=1              # 检查来
源是否合法,需要有制作者的公钥信息
installonly_limit=3         # 同时可
以安装3个软件包、最小为2,设置为0或者1则不限制
clean_requirements_on_remove=True  # 删除包
时,是否将不再使用的包删除
best=True              # 升级
时,自动选择安装最新版,即使缺少包的依赖
skip_if_unavailable=False
  • CentOS7 的配置文件
[root@node ~]# vim /etc/yum.cnf
cachedir=/var/cache/yum/$basearch/$releasever  # 缓存目录
keepcache=0         # 缓存软件包,1启动 0 关闭
debuglevel=2         # 调试级别
logfile=/var/log/yum.log   # 日志记录位置
exactarch=1         # 检查平台是否兼容
obsoletes=1         # 检查包是否废弃
gpgcheck=1          # 检查来源是否合法,需要有制作者的公钥信息
plugins=1
installonly_limit=5     # 同时可以安装5个软件包、最小为2,设置为0或者1则不限制
# metadata_expire=90m  #每小时手动检查元数据
# in /etc/yum.repos.d  #包含repos.d目录中的.repo文件

3.4 配置YUM源示例

系统默认的源是国外提供,需要替换为国内的源

1.配置阿里 yum 源

[root@node ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \http://mirrors.aliyun.com/repo/Centos-7.repo

2.配置第三方 yum 源(EPEL)

[root@node ~]# wget -O /etc/yum.repos.d/epel.repo \http://mirrors.aliyun.com/repo/epel-7.repo
  1. Nginx 官方源,后期在学习 Nginx 时需要使用官方的
    yum 源来安装软件
[root@node ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/
$basearch/
gpgcheck=0
enabled=1
  • YUM 源的查找方式大体一致 Apache,Docker、
    Nginx、openstack、ELKStack

4. YUM日常操作

4.1 yum查询软件包

1.使用 dnf/yum list 查询所有仓库中的所有软件包

[root@node ~]# yum list
[root@node ~]# yum list|grep ftp

2.使用 dnf/yum list installed 查询所有已安装至系统中的软件包

[root@node ~]# dnf list installed
[root@node ~]# yum list installed

3.使用 dnf/yum provides 查询系统命令来自于哪个软件包(命令可以在当前系统,也可以不在当前系统)

[root@node ~]# rpm -qf $(which cd) bash-4.2.46-31.el7.x86_64
# PS: rpm需要知道命令的绝对路径, 如果不存在该命令是无法查找到该命令所属的软件包
[root@node ~]# yum provides cd
[root@node ~]# yum provides sl

4.2 yum安装软件包

1.使用 dnf/yum install 通过仓库获取软件包进行安装

# 交互,麻烦
[root@node ~]# yum install vsftpd
# 非交互
[root@node ~]# yum install vsftpd -y

2.使用 dnf/yum localinstall 安装本地的 rpm 包,如果 rpm 包存在依赖,会通过当前已有的仓库获取解决依赖关系

[root@node ~]# yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba-4.8.3-4.el7.x86_64.rpm

#yum localinstall 安装本的rpm包,会自动查找当前系统上已有的仓库解决依赖关系

[root@node ~]# yum localinstall samba-4.8.3-4.el7.x86_64.rpm -y

4.3 yum重装软件包

当我们安装好服务后,如果不小心删除了服务的配置文件,此时可以通过重装的方式修复。

1.首先删除 vsftpd 配置主文件

[root@node ~]# rpm -qc vsftpd
[root@node ~]# rm -f /etc/vsftpd/vsftpd.conf

2.使用 dnf/yum reinstall 对软件进行重新安装

[root@node ~]# yum reinstall vsftpd

3.检查 vsftpd 服务配置文件是否恢复,以及软件是否能正常使用。

[root@oldxu ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

4.4 yum更新软件包

#1.对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级
[root@node ~]# yum check-update
#2.更新acl软件
[root@node ~]# yum update acl -y
#3.更新整个系统所有的软件,包括内核 (通常刚装完系统会进行执行)
[root@node ~]# yum update -y

4.5 yum删除软件包

[root@node ~]# yum install samba -y
[root@node ~]# yum remove samba -y

4.6 yum管理租包

1.使用 dnf/yum groups install 安装一整个组的软件

[root@node ~]# yum groups list
[root@node ~]# yum groups install Development tools \ 
Compatibility libraries Base Debugging Tools

2.使用 dnf/yum groups remove 删除包组

[root@node ~]# yum groups remove Base -y

4.7 yum管理仓库

1.列出 dnf/yum repolist 源可用的软件仓库

[root@node ~]# yum repolist
[root@node ~]# yum repolist all # 查看所有
的仓库

2.通过 dnf/yum-config-manager 启用和禁用仓库(本质都是在修改 repo 文件中 enable 参数 0 1)

# C7
[root@node ~]# yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm -y
# C8
[root@node ~]# yum install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm -y
[root@node ~]# yum repolist all|grep mysql
[root@node ~]# yum-config-manager --disable mysql80-community # 关闭仓库
[root@node ~]# yum-config-manager --enablemysql80-community # 启用仓库

4.8 yum管理历史记录

当我们删除了某个软件时,希望撤销删除的操作,可以
使用 yum history undo

1.删除 httpd 软件,然后查看操作记录

[root@node ~]# yum remove httpd -y
[root@node ~]# yum history

2.使用 dnf/yum history undo Number 撤销

[root@node ~]# yum history info N
[root@node ~]# yum history undo N

5.构建YUM仓库实践

5.0 yum 缓存软件包

1.方式一:通过修改 dnf/yum 全局配置文件

[root@node ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasev
er
keepcache=1   # 启动缓存
[root@node ~]# yum install lrzsz -y
[root@node ~]# find /var/cache/yum/ -type
f -name "*.rpm"

2.方式二、通过 dnf/yum 下载该软件包至本地,不进行安装

[root@node ~]# yum install httpd -y --downloadonly --downloaddir=/opt

3.清理缓存,可以使用 dnf/yum clean

# 清理所有yum缓存信息,包括缓存的软件包
[root@node ~]# yum clean all
#仅清理所有缓存的软件包
[root@node ~]# yum clean packages

5.1 搭建本地yum仓库

很多时候刚安装的linux系统不能联网,但需要安装相应
环境的软件包。这时候我们就可以利用光盘制作一个本
地yum仓库。

  • 方式一、光盘挂载上; rpm -ivh /path/xx.rpm
  • 方式二、将光盘制作为一个本地仓库,提供本地使
    用;自动解决依赖问题;

1.挂载镜像

[root@node ~]# mount /dev/cdrom /mnt 

2.备份原有仓库 / 注释掉

[root@node ~]# gzip /etc/yum.repos.d/*

3.使用 yum-config-manager 命令可快速添加一个本地仓库(忽略)

[root@node ~]# yum install yum-utils -y
[root@node ~]# yum-config-manager --add--repo="file:///mnt"

4.当然我们也可以直接去编辑一个 .repo 文件,将仓库信息存储至该文件

[root@node ~]# vim /etc/yum.repos.d/cdrom.repo 
# 仓库名称
[cdrom]
# 仓库描述信息
name=This is local cdrom
# 仓库url地址 ,可以是file:// ftp:// http:// 等
协议
baseurl=file:///mnt
# 是否使用该YUM源(0代表禁用, 1代表激活)
enabled=1
# 是否验证软件签名(0代表禁用, 1代表激活)
gpgcheck=0

5.生成缓存信息、然后使用 dnf/yum 安装软件测试

[root@node ~]# yum makecache
[root@node ~]# yum install lrzsz -y

5.2 搭建企业yum仓库

很多时候不仅仅是一台机器无法上网,而是很多机器都
无法上网,但都有联网下载软件的需求,这个时候难道
每台机器都挂在光盘吗,当然可以,但如果软件出现了
更新又该怎么办。所以我们需要构建一个企业级的 yum
仓库,为多台客户端提供服务。

09.Linux软件包管理——(YUM 、RPM)

  • 本地光盘提供基础软件包: Base
  • yum缓存提供常用软件包: nginx、zabbix、docker

5.2.1 环境准备

系统 IP 角色
centos7 10.0.0.100 yum仓库服务器
centos7 10.0.0.99 yum仓库客户端

5.2.2 服务端操作

1.关闭 iptables 防火墙、与 selinux

[root@yum_server ~]# systemctl stop
firewalld
[root@yum_server ~]# setenforce 0

2.安装 ftp 服务,启动并加入开机启动

[root@yum_server ~]# yum -y install vsftpd
[root@yum_server ~]# systemctl start vsftpd
[root@yum_server ~]# systemctl enable vsftpd

3.首先提供基础 base 软件包

[root@yum_server ~]# mkdir -p /var/ftp/centos7
[root@yum_server ~]# mount /dev/cdrom /mnt
[root@yum_server ~]# cp -rp /mnt/Packages/*.rpm /var/ftp/centos7/

4.提供第三方源的 rpm 软件包,通过脚本下载方式实现;

#必会:
[root@yum_server ~]#curl -s https://mirrors.aliyun.com/zabbix/zabbix/5.4/rhel/7/x86_64/ | grep "<a href" | awk -F ‘"‘ ‘{print $2}‘ | grep "rpm" | sed -r ‘s#(.*)# wget -O /var/ftp/zabbix/\1https://mirrors.aliyun.com/zabbix/zabbix/5.4/rhel/7/x86_64/\1#g‘ | bash
# 下载方式(略过)
[root@yum_server ~]# cat wget_rpm_scripts.sh
    #!/usr/bin/bash
    get_zabbix_rpm_url=https://mirrors.aliyun.c
    om/zabbix/zabbix/5.0/rhel/8/x86_64/
    rpm_name=$(curl -s ${get_zabbix_rpm_url} |
    grep "^<a"|awk -F ‘"‘ ‘{print $2}‘)
    rpm_dir=/var/ftp/ops
    for name in ${rpm_name}
    do
        if [ ! -d ${rpm_dir} ];then
            mkdir -p ${rpm_dir}
        fi
        wget -O ${rpm_dir}/${name}
         ${get_zabbix_rpm_url}${name}
    done
    
# 下载jenkins
[root@yum-server ~]# cat wget_jenkins.sh
    #!/usr/bin/bash
    #1.获取包的名称
    #2.下载的地址
    #3.将下载地址和包组织在一起,使用wget下载到指定位置
    rpm_dir=/var/ftp/jenkins
    rpm_url="https://mirrors.tuna.tsinghua.edu.
    cn/jenkins/redhat"
    rpm_pkg=$(curl -s
    https://mirrors.tuna.tsinghua.edu.cn/jenkin
    s/redhat/ | grep "<a href" | awk -F ‘"‘
    ‘{print $4}‘ | grep "rpm")
    # 循环(遍历)
    for i in ${rpm_pkg}
    do
        cd ${rpm_dir} &&         wget ${rpm_url}/${i}
    done

5.提供第三方源的 rpm 软件包,采用 Rsync 同步科大
源(https://mirrors.ustc.edu.cn/help/rsync-guide.html)方式实现,后期结合定时任务,定点同步互联网最新软件包

# rsync同步方式
[root@yum_server ~]# rsync -avz rsync://rsync.mirrors.ustc.edu.cn/repo/nginx /var/ftp/

6.将软件包目录创建为 yum 仓库,安装 createrepo ;

[root@yum_server ~]# yum -y install createrepo
[root@yum_server ~]# createrepo /var/ftp/ops
[root@yum_server ~]# createrepo /var/ftp/jenkins
[root@yum_server ~]# createrepo /var/ftp/nginx
#PS: 如果此仓库每次新增软件则需要重新生成一次

5.2.3 客户端操作

所有客户端仅需将 yum 源指向本地服务端,即可使用本
地服务器提供的软件包。

1.客户端配置并使用 base 基础源

[root@yum_client ~]# gzip /etc/yum.repos.d/*
[root@yum_client ~]# vim /etc/yum.repos.d/centos7.repo
[centos7]
name=centos7_base
baseurl=ftp://10.0.0.99/centos7
gpgcheck=0

2.客户端配置并使用 nginx、jenkins、zabbix 等源

[root@yum_client ~]# vim /etc/yum.repos.d/ops.repo
[nginx]
name=local ftpserver
baseurl=ftp://10.0.0.99/nginx
gpgcheck=0
[zabbix]
name=local ftpserver
baseurl=ftp://10.0.0.99/zabbix
gpgcheck=0
[jenkins]
name=local ftpserver
baseurl=ftp://10.0.0.99/jenkins
gpgcheck=0

6. 源码包管理实践

6.1 什么是源码包

源码包指的是开发编写好的程序源代码,但并没有将其
编译为一个能正常使用的二进制工具。

  • c --> 源代码
  • 编译操作
  • 二进制文件--》直接运行

6.2 为何需要源码包

  • 1.部分软件官网仅提供源码包,需要自行编译并安
  • 2.部分软件在新版本有一些特性还没来得及制作成
    rpm 包时,可以自行编译软件使用其新特性。
  • 3.源码包-->打包成一个rpm格式; rpm方式安装;
    标准;

6.3 源码包的优缺点

  • 优点:
    • 1、可以自行修改源代码,需要会C、
      python(openstack)、(k8s)go
    • 2、可以定制需要的相关功能
      • 网站;
      • 加密协议 https
    • 3、新版软件优先更新源码
  • 缺点:
    • 1、相对 rpm 安装软件的方式会复杂很多。 rpm -
      ivh xx.rpm yum install lrzsz
    • 2、标准化实施困难,自动化就无法落地。

6.4 源码包如何获取

6.5 源码包如何安装

将源码包编译为二进制可执行文件步骤如下图,简称编
译三步曲:

09.Linux软件包管理——(YUM 、RPM)

PS: 此方法不是百分百通用于所有源码包,建议拿到源码包解压后,进入到目录找相关的README帮助文档

6.6 Nginx源码包编译

下面通过编译 Nginx 软件来深入了解下源码包编译的过程。

1.基础环境准备

[root@Server ~]# yum install -y gcc make wget

2.下载 nginx 源码包

[root@Server ~]# wget http://nginx.org/download/nginx-1.18.0.tar.gz

3.解压 nginx 源码包,并进入相应目录

[root@Server ~]# tar xf nginx-1.18.0.tar.gz
[root@Server ~]# cd nginx-1.18.0

4.配置相关的选项,并生成 Makefile

[root@Server nginx-1.18.0]# ./configure --
prefix=/opt/nginx-1.18.0

5.根据 Makefile 文件,将软件编译为可执行的二进制程序

[root@Server nginx-1.18.0]# make

6.将编译好的二进制文件拷贝至对应的目录

[root@Server nginx-1.18.0]# make install
  • 源码编译报错信息处理
checking for C compiler ... not found
./configure: error: C compiler cc is not
found
# yum -y install gcc gcc-c++ make
./configure: error: the HTTP rewrite module
requires the PCRE library.
You can either disable the module by using
--without-http_rewrite_module
option, or install the PCRE library into
the system, or build the PCRE library
statically from the source with nginx by
using --with-pcre=<path> option.
# yum install -y pcre-devel
./configure: error: the HTTP gzip module
requires the zlib library.
You can either disable the module by using
--without-
http_gzip_module option, or install the
zlib library into the
system, or build the zlib library
statically from the source with
nginx by using --with-zlib=<path> option.
# yum -y install zlib-devel
./configure: error: SSL modules require the
OpenSSL library.
You can either do not enable the modules,
or install the OpenSSL
library into the system, or build the
OpenSSL library statically
from the source with nginx by using --with-
openssl=<path> option.
# yum -y install openssl-devel

7. Ubuntu软件包管理

7.1 CentOS与Ubuntu的关系

  • CentOS 之前的地位: Fedora 稳定版-->发布--> RHEL稳定版-->发布--> CentOS
  • CentOS 如今的地位: Fedora 稳定版-->发布-->CentOS Stream -->发布--> RHEL

从 Redhat 收购 CentOS ,到 IBM 收购 Redhat,这是最
大的一次变化。但同时也是一个机会,让我们跳出舒适
圈,去接触其他优质稳定的企业级系统了。如 Debian、
Ubuntu 等等。

7.2 CentOS与Ubuntu的区别

CentOS vs Debian(含 Ubuntu)的区别:

操作内容 CentOS6 / CentOS7 Debian / Ubuntu
软件包后缀 *.rpm *.deb
源配置文件 /etc/yum.conf /etc/apt/sources
网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/netplan/00-installer-config.yaml
创建用户 默认创建用户目录,解释器bash 默认不创建家目录,解释器为sh
防火墙规则 默认规则 默认没有任何规则
权限 root 或普通用户 默认普通用户权限
SSH 默认允许root登录 默认不允许root登录
selinux /etc/selinux/config 没有selinux
更新软件包列表 yum makecache apt update
安装软件 yum install package apt install package
安装已下载的软件包 rpm -ivh pkg.rpm dpkg -i pkg.deb
安装已下载的软件包 yum localinstall pkg.rpm apt install ./pkg.deb
删除软件包 yum remove package apt remove package

7.3Ubuntu软件包管理

  • Debian 软件包的包名叫 deb ,类似于 rpm 包。对于
    deb 包的管理方式有 dpkg 、 apt 两种方式
    • dpkg : package manager for Debin ,可以实
      现安装、删除,但无法解决依赖项;
    • apt : advanced Packaging Tool ,功能强大的
      软件管理工具,类似于 dnf/yum ;

7.3.1 dpkg包管理

1.使用 dpkg 安装软件包

gao@ubuntu:~$ wget https://mirrors.aliyun.com/zabbix/zabbix/4.0/ubuntu/pool/main/z/zabbix/zabbix-agent_4.0.201%2Bfocal_amd64.deb

root@ubuntu:~# dpkg -i package.deb

2.使用 dpkg 删除软件包

# 不建议、不自动卸载依赖它的包
root@ubuntu:~# dpkg -r package.deb
# 删除包(包括配置文件)
root@ubuntu:~# dpkg -P package.deb

3.使用 dpkg 查看软件包

# 列出当前已安装的包,类似于rpm -qa
root@ubuntu:~# dpkg -l
# 列出该包中所包含的文件,类似于rpm -ql
root@ubuntu:~# dpkg -L package
# 查看文件所属哪个包,类似于rpm -qf
root@ubuntu:~# whereis ping
root@ubuntu:~# dpkg -S /bin/ping

7.3.2 apt包管理

  • 早起 Ubuntu 使用 apt-get 命令来管理软件包,在
    Ubuntu 16.04 发布时,引入了新的包管理命令
    apt ,为什么要引入 apt 命令呢?
  • 因为早期 Linux 包管理命令都被分散在了 apt-get、
    apt-cache、apt-config 这三条命令当中。那么 apt
    命令的引入就是为了解决命令过于分散的问题。
  • 简单来说就是: apt = apt-get、apt-cache、apt-
    config 中最常用命令选项的集合。
apt命令 apt-get 命令 命令的功能
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包
apt purge apt-get purge 移除软件包及配置文件
apt update apt-get update 刷新存储库索引
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt autoremove apt-get autoremove 自动删除不需要饿的包
apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
apt search apt-cache search 搜索应用程序
apt show apt-get show 显示安装细节

7.3.3 apt使用示例

1.检查当前 ubuntu 版本

root@example:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal

2.根据 Ubuntu 版本配置国内仓库地址阿里仓库配置指南

# 手动修改如下配置文件内容
root@example:~# vim /etc/apt/sources.list 
(focal 版本、其余是软件包存储的位置)
deb http://mirrors.aliyun.com/ubuntu/ focal
main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/
focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/
focal-security main restricted universe
multiverse
deb-src http://mirrors.aliyun.com/ubuntu/
focal-security main restricted universe
multiverse
deb http://mirrors.aliyun.com/ubuntu/
focal-updates main restricted universe
multiverse
deb-src http://mirrors.aliyun.com/ubuntu/
focal-updates main restricted universe
multiverse
deb http://mirrors.aliyun.com/ubuntu/
focal-proposed main restricted universe
multiverse
deb-src http://mirrors.aliyun.com/ubuntu/
focal-proposed main restricted universe
multiverse
deb http://mirrors.aliyun.com/ubuntu/
focal-backports main restricted universe
multiverse
deb-src http://mirrors.aliyun.com/ubuntu/
focal-backports main restricted universe
multiverse
# 更新yum源
root@example:~# apt update

3.使用 apt 命令安装进行软件安装

root@ubuntu:~# apt search desktop
root@ubuntu:~# apt install xubuntu-desktop -y
root@ubuntu:~# apt install samba vsftpd apache2 -y
centos:httpd
ubuntu:apache2

4.使用 apt 卸载软件

# 并不会移除配置文件
root@ubuntu:~# apt remove vsftpd -y
# 清理所有与vsftpd相关的配置
root@ubuntu:~# apt purge vsftpd -y

09.Linux软件包管理——(YUM 、RPM)

上一篇:Linux文件与目录管理


下一篇:windows脚本