包管理器

一:软件包管理

1.1 软件包管理介绍

安装流程:

软件包管理是通过软件源下载软件并且进行安装。安装流程如下:

  • 首先包管理器dnf或apt通过软件源下载所要安装的应用程序依赖包和安装应用程序包。
  • 下载完后进行调用底层安装工具rpm/dpkg进行安装应用程序。

image-20260910143210047

软件包组成:

1)redhat系:
wget-1.21.1-8.el9_4.x86_64.rpm
nginx-1.20.1-28.el9_8.2.rocky.0.1.x86_64.rpm
2)dabian系:
wget_1.21.4-1ubuntu4.3_amd64.deb
nginx_1.24.0-2ubuntu7.13_amd64.deb

组成:

  • wget或nginx是软件包的名称
  • 1.21.1-8:软件包版本号
  • el9或ubuntu4.3:适用那个系统版本
  • x86_64或amd64:适用哪个内核架构
  • rpm或deb: rpm适用于redhat系列,deb适用于debian系列。

1.2安装指令:

1.2.1 redhat系列包管理器(dnf/yum):

  • 核心命令:
核心命令 说明
dnf install 安装软件,并且解决依赖关系
dnf remove 卸载(删除)软件
dnf update nginx 指定更新软件,在生产环境慎用,需要在测试环境测试成功在往生产使用
dnf update 更新系统,慎用,更新系统没有对应应用程序依赖包。
dnf search 按关键字搜索软件包
dnf provides 查看指令来源哪个软件包
dnf info nginx 根据关键字搜索软件包信息
dnf list --showdumplicates nginx 列出所有版本
dnf history nginx 查看操作历史,undo [版本]:撤销某个版本,根据某个版本进行反过来干。redo [版本]:执行某个版本的命令
dnf clean all 清理缓存
dnf list installed 列出已经安装的包
dnf list availabel 列出可以使用的包
dnf groupinstall "Development Tools" 安装包组
dnf install nginx --downloadonly --downloaddir=/tmp/rpm 下载软件及软件依赖包到本地,--downloadonly :只下载软件包及依赖包。--downloaddir=/tmp/rpm:声明把软件包及依赖包下载到哪个位置。
  • 例子:

安装软件:

root@studry:~# dnf install vim bash-completion
root@studry:~# dnf install -y nginx

删除软件:

root@studry:~# dnf remove -y nginx

更新软件:

root@studry:~# dnf update nginx

搜索软件包:

root@studry:~# dnf search nginx
上次元数据过期检查:0:07:58 前,执行于 2026年09月10日 星期四 14时46分37秒。
========================================================================= 名称 精准匹配:nginx ==========================================================================
nginx.x86_64 : A high performance web server and reverse proxy server
======================================================================= 名称 和 概况 匹配:nginx ========================================================================
nginx-all-modules.noarch : A meta package that installs all available Nginx modules
nginx-core.x86_64 : nginx minimal core
nginx-filesystem.noarch : The basic directory layout for the Nginx server
nginx-mod-http-image-filter.x86_64 : Nginx HTTP image filter module
nginx-mod-http-perl.x86_64 : Nginx HTTP perl module
nginx-mod-http-xslt-filter.x86_64 : Nginx XSLT module
nginx-mod-mail.x86_64 : Nginx mail modules
nginx-mod-stream.x86_64 : Nginx stream modules
pcp-pmda-nginx.x86_64 : Performance Co-Pilot (PCP) metrics for the Nginx Webserver

查看指令来源的软件包

root@studry:~# dnf provides */rz
上次元数据过期检查:0:00:30 前,执行于 2026年09月10日 星期四 15时00分36秒。
lrzsz-0.12.20-66.el10.x86_64 : The lrz and lsz modem communications programs
仓库        :baseos
匹配来源:
文件名    :/usr/bin/rz

root@studry:~# dnf provides */netstat
上次元数据过期检查:0:01:40 前,执行于 2026年09月10日 星期四 15时00分36秒。
net-tools-2.0-0.73.20160912git.el10.x86_64 : Basic networking tools
仓库        :@System
匹配来源:
文件名    :/usr/bin/netstat

net-tools-2.0-0.73.20160912git.el10.x86_64 : Basic networking tools
仓库        :baseos
匹配来源:
文件名    :/usr/bin/netstat

根据关键字搜索软件包信息:

root@studry:~# dnf info nginx
上次元数据过期检查:0:03:35 前,执行于 2026年09月10日 星期四 15时00分36秒。
已安装的软件包
名称         : nginx
时期         : 2
版本         : 1.26.3
发布         : 6.el10_2.6
架构         : x86_64
大小         : 119 k
源           : nginx-1.26.3-6.el10_2.6.src.rpm
仓库         : @System
来自仓库     : appstream
概况         : A high performance web server and reverse proxy server
URL          : https://nginx.org
协议         : BSD-2-Clause
描述         : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
             : IMAP protocols, with a strong focus on high concurrency, performance and low
             : memory usage.
2)列出所有版本信息:
root@studry:~# dnf info --show-duplicates nginx 

image-20260910153003815

查看所有版本信息:

root@studry:~# dnf list --showduplicates nginx
上次元数据过期检查:0:07:01 前,执行于 2026年09月10日 星期四 15时00分36秒。
已安装的软件包
nginx.x86_64                                                                2:1.26.3-6.el10_2.6                                                                @appstream
可安装的软件包
nginx.x86_64                                                                2:1.26.3-6.el10_2.3                                                                appstream 
nginx.x86_64                                                                2:1.26.3-6.el10_2.4                                                                appstream 
nginx.x86_64                                                                2:1.26.3-6.el10_2.5                                                                appstream 
nginx.x86_64                                                                2:1.26.3-6.el10_2.6                                                                appstream 
root@studry:~# 

查看dnf安装卸载历史:

1)查看安装卸载历史:
root@studry:~# dnf history
ID     | 命令行                                                                                                             | 日期和时间       | 操作           | 更改   
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     5 | install -y nginx                                                                                                   | 2026-09-10 14:50 | Install        |    4   
     4 | remove -y nginx                                                                                                    | 2026-09-10 14:48 | Removed        |    4   
     3 | install -y nginx                                                                                                   | 2026-09-10 14:48 | Install        |    4   
     2 | install vim bash-completion                                                                                        | 2026-09-10 14:46 | Upgrade        |    4  <
     1 |                                                                                                                    | 2026-09-10 14:25 | Install        | 
2)撤销第3次历史版本:撤销就是反过来,删除反过来就是安装
root@studry:~# dnf history undo 4
3)跳转到第3次历史版本:
root@studry:~# dnf history redo 4

清理缓存:

root@studry:~# dnf clean all

包管理:

查看所有包组:

root@studry:~# dnf group list

image-20260910153120816

查看包详情:

root@studry:~# dnf group info "Development Tools"

image-20260910153242442

安装包组:

root@studry:~# dnf groupinstall "Development Tools"

安装开发工具(常用)

root@studry:~# dnf groupinstall "Development Tools" -y

下载软件包及依赖包,用于以后没有网络使用rpm进行安装:

root@studry:~# dnf install --downloadonly --downloaddir=/tmp/rpm nginx
root@studry:~# dnf install wget --downloadonly --downloaddir=/tmp/rpm

root@studry:~# ls /tmp/rpm/
nginx-1.26.3-6.el10_2.6.x86_64.rpm       nginx-filesystem-1.26.3-6.el10_2.6.noarch.rpm  wget-1.24.5-8.el10_2.x86_64.rpm
nginx-core-1.26.3-6.el10_2.6.x86_64.rpm  rocky-logos-httpd-100.5-3.el10.noarch.rpm

仓库管理:

查看仓库:

1)查看仓库
root@studry:/etc/yum.repos.d# dnf repolist
仓库 id                                                           仓库名称
appstream                                                         Rocky Linux 10 - AppStream
baseos                                                            Rocky Linux 10 - BaseOS
epel                                                              Extra Packages for Enterprise Linux 10 - x86_64
extras                                                            Rocky Linux 10 - Extras
2)查看仓库所有信息
root@studry:/etc/yum.repos.d# dnf repolist --all
仓库 id                                                     仓库名称                                                                                                 状态
appstream                                                   Rocky Linux 10 - AppStream                                                                               启用
baseos                                                      Rocky Linux 10 - BaseOS                                                                                  启用
epel                                                        Extra Packages for Enterprise Linux 10 - x86_64                                                          启用
epel-testing                                                Extra Packages for Enterprise Linux 10 - Testing - x86_64                                                禁用
epel-testing-debuginfo                                      Extra Packages for Enterprise Linux 10 - Testing - x86_64 - Debug                                        禁用
epel-testing-source                                         Extra Packages for Enterprise Linux 10 - Testing - x86_64 - Source                                       禁用
extras                                                      Rocky Linux 10 - Extras  

说明:禁用的是在repo中enable=0,如果设置成enable=1,已经启用。

启用禁用仓库:

root@studry:/etc/yum.repos.d# dnf --disablerepo=baseos install nginx 
root@studry:/etc/yum.repos.d# dnf --enablerepo=epel install certbot

1.2.2 debian系列包管理器(apt)

  • 核心命令:
命令 说明
apt update 更新软件源,在安装软件的时候需要操作
apt upgrade 升级所有软件,在生产环境中少用
apt install -y nginx 安装指定的软件
apt remove -y nginx 删除指定的软件包,并且保留配置文件
apt purge nginx 删除指定的软件,并且不保留配置文件
apt search nginx 根据关键字进行搜索
apt list nginx --all-versions 根据关键字列出所有版本
apt show nginx 根据关键字查看最新软件包信息
apt depends nginx 查看nginx软件包依赖谁
apt rdepends nginx 查看哪些应用依赖nginx
autoremove 自动清理已经安装软件包无用的依赖包,不影响已经安装软件
autoclean 自动清理下载的缓存文件及过时的旧版本缓存,不影响安装过软件正常使用
apt install --download-only wget nginx 下载软件包及软件依赖包
  • 命令例子:

更新软件源:

root@strudy:~# apt update

更新所有的软件:

root@strudy:~# apt upgrade -y 

安装指定的软件:

root@strudy:~# apt install -y nginx

删除软件:

1)删除软件并且保留配置文件:
root@strudy:~# apt remove -y nginx
2)删除软件并且不保留配置文件:
root@strudy:~#apt purge

搜索:

1)根据关键字进行搜索:
root@strudy:~# apt search nginx
2)根据关键字列出所有安装包版本:
root@strudy:~# apt list nginx --all-versions
nginx/resolute-updates,resolute-security 1.28.3-2ubuntu1.10 amd64
nginx/resolute 1.28.3-2ubuntu1 amd64

查看信息:

root@strudy:~# apt show nginx

查看软件包依赖谁:

root@strudy:~# apt depends nginx
nginx
  依赖: libc6 (>= 2.34)
  依赖: libcrypt1 (>= 1:4.1.0)
  依赖: libpcre2-8-0 (>= 10.22)
  依赖: libssl3t64 (>= 3.0.0)
  依赖: zlib1g (>= 1:1.1.4)
  依赖: nginx-common (= 1.28.3-2ubuntu1.10)
  破坏: nginx-core (<< 1.22.1-6~)
  破坏: nginx-extras (<< 1.22.1-6~)
  破坏: nginx-light (<< 1.22.1-6~)
  替换: nginx-core (<< 1.22.1-6~)
  替换: nginx-extras (<< 1.22.1-6~)
  替换: nginx-light (<< 1.22.1-6~)

查看谁依赖我:

root@strudy:~# apt rdepends nginx

自动清理:

1)清理无用的依赖包:
root@strudy:~# apt autoremove
2)清理下载的缓存文件:
root@strudy:~# apt autoclean
清理/var/cache/apt/这个文件的东西。

下载软件包:

root@strudy:~# apt install --download-only wget nginx

root@strudy:~# ls /var/cache/apt/archives/
lock  nginx-common_1.28.3-2ubuntu1.10_all.deb  nginx_1.28.3-2ubuntu1.10_amd64.deb  partial  wget_1.25.0-2ubuntu4.4_amd64.deb

1.2.3 RPM命令使用

  • 常用指令:
核心命令 说明
-ivh 安装软件。-i是安装,-v:安装显示详细信息,-h:使用hash进行显示
-qa 列出所有已安装包
-q 根据关键字查询指定包,只能查询安装过的包
-ql 查询已安装包的文件
-qf 查看文件属于哪个软件包
-qi 根据关键字查询已安装包信息
-e 删除
  • 实例:

根据rpm包安装程序:

1)安装没有依赖的应用程序:
root@studry:/tmp/rpm# rpm -ivh wget-1.24.5-8.el10_2.x86_64.rpm 
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
        file /usr/bin/wget from install of wget-1.24.5-8.el10_2.x86_64 conflicts with file from package wget-1.24.5-5.el10.x86_64
        file /usr/share/man/man1/wget.1.gz from install of wget-1.24.5-8.el10_2.x86_64 conflicts with file from package wget-1.24.5-5.el10.x86_64
2)安装有依赖的应用程序:
root@studry:/tmp/rpm# rpm -ivh *.rpm
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
   1:nginx-filesystem-2:1.26.3-6.el10_################################# [ 25%]
   2:nginx-core-2:1.26.3-6.el10_2.6   ################################# [ 50%]
   3:rocky-logos-httpd-100.5-3.el10   ################################# [ 75%]
   4:nginx-2:1.26.3-6.el10_2.6        ################################# [100%]

查询nginx是否已安装:

root@studry:/tmp/rpm# rpm -qa|grep nginx
nginx-filesystem-1.26.3-6.el10_2.6.noarch
nginx-core-1.26.3-6.el10_2.6.x86_64
nginx-1.26.3-6.el10_2.6.x86_64
说明:
qa:是列出所有已安装的包

根据关键字查询安装过的包:

root@studry:/tmp/rpm# rpm -q nginx
nginx-1.26.3-6.el10_2.6.x86_64

根据关键字查询已安装的文件:

root@studry:/tmp/rpm# rpm -ql nginx
/usr/bin/nginx-upgrade
/usr/lib/systemd/system/nginx.service
/usr/lib/systemd/system/nginx@.service
/usr/libexec/nginx-ssl-pass-dialog
/usr/share/man/man3/nginx.3pm.gz
/usr/share/man/man8/nginx-upgrade.8.gz
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx/html/icons
/usr/share/nginx/html/icons/poweredby.png
/usr/share/nginx/html/index.html
/usr/share/nginx/html/nginx-logo.png
/usr/share/nginx/html/poweredby.png
/usr/share/nginx/html/system_noindex_logo.png
/usr/share/vim/vimfiles/ftdetect/nginx.vim
/usr/share/vim/vimfiles/ftplugin/nginx.vim
/usr/share/vim/vimfiles/indent/nginx.vim
/usr/share/vim/vimfiles/syntax/nginx.vim

查询文件属于哪个软件包:

root@studry:/tmp/rpm# rpm -qf /etc/nginx/nginx.conf 
nginx-core-1.26.3-6.el10_2.6.x86_64

查询包信息:

root@studry:/tmp/rpm# rpm -qi nginx
Name        : nginx
Epoch       : 2
Version     : 1.26.3
Release     : 6.el10_2.6
Architecture: x86_64
Install Date: 2026年09月10日 星期四 16时16分47秒
Group       : Unspecified
Size        : 122241
License     : BSD-2-Clause
Signature   :
              RSA/SHA256, 2026年08月25日 星期二 10时22分58秒, Key ID 5b106c736fedfc85
Source RPM  : nginx-1.26.3-6.el10_2.6.src.rpm
Build Date  : 2026年08月25日 星期二 09时59分36秒
Build Host  : ord1-prod-x86build008.svc.aws.rockylinux.org
Packager    : Rocky Linux Build System <releng@rockylinux.org>
Vendor      : Rocky Enterprise Software Foundation
URL         : https://nginx.org
Bug URL     : https://bugs.rockylinux.org
Summary     : A high performance web server and reverse proxy server
Description :
Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
IMAP protocols, with a strong focus on high concurrency, performance and low
memory usage.

删除:

root@studry:/tmp/rpm# rpm -e nginx
root@studry:/tmp/rpm# rpm -e nginx-core nginx-filesystem rocky-logos-httpd
###说明:
卸载只会卸载本身,不会卸载依赖

校验文件是否被修改:

root@studry:/tmp/rpm# rpm -V nginx
root@studry:/tmp/rpm# 
这个是校验rpm包中的文件。

rpm包依赖缺失处理

  • 方法一: 全下下来,使用*.rpm

image-20260910163532242

  • 方法二:使用dnf的localinstall自动安装依赖:
root@studry:/tmp/rpm# dnf localinstall nginx-1.26.3-6.el10_2.6.x86_64.rpm

1.2.4 Ubuntu的dpkg使用

安装本地deb包:

1)安装没有依赖的:
root@strudy:/tmp/deb# dpkg -i wget_1.25.0-2ubuntu4.4_amd64.deb 
2)安装有依赖的:
root@strudy:/tmp/deb# dpkg -i nginx-common_1.28.3-2ubuntu1.10_all.deb nginx_1.28.3-2ubuntu1.10_amd64.deb 
正在选中未选择的软件包 nginx-common。
(正在读取数据库 ... 系统当前共安装有 154117 个文件和目录。)
准备解压 nginx-common_1.28.3-2ubuntu1.10_all.deb  ...
正在解压 nginx-common (1.28.3-2ubuntu1.10) ...
正在选中未选择的软件包 nginx。
准备解压 nginx_1.28.3-2ubuntu1.10_amd64.deb  ...
正在解压 nginx (1.28.3-2ubuntu1.10) ...
正在设置 nginx-common (1.28.3-2ubuntu1.10) ...
正在设置 nginx (1.28.3-2ubuntu1.10) ...
 * Upgrading binary nginx                                                                                                                                         [ OK ] 
正在处理用于 ufw (0.36.2-9build1) 的触发器 ...
正在处理用于 man-db (2.13.1-1build1) 的触发器 ...

查询:

1)列出所有的已安装包:
root@strudy:/tmp/deb# dpkg -l
2)列出指定的包:
root@strudy:/tmp/deb# dpkg -l |grep nginx 
ii  nginx                                      1.28.3-2ubuntu1.10                         amd64        small, powerful, scalable web/proxy server
ii  nginx-common                               1.28.3-2ubuntu1.10                         all          small, powerful, scalable web/proxy server - common
3)查看已安装的文件:
root@strudy:/tmp/deb# dpkg -L nginx
/.
/usr
/usr/sbin
/usr/sbin/nginx
/usr/share
/usr/share/doc
/usr/share/doc/nginx
/usr/share/doc/nginx/changelog.Debian.gz
/usr/share/doc/nginx/copyright
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/nginx.8.gz
4)查询文件属于哪个软件包:
root@strudy:/tmp/deb# dpkg -S /etc/nginx/nginx.conf 
nginx-common: /etc/nginx/nginx.conf
5)查询nginx包的信息:
root@strudy:/tmp/deb# dpkg -s nginx 
Package: nginx
Status: install ok installed
Priority: optional
Section: httpd
Installed-Size: 1589
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Version: 1.28.3-2ubuntu1.10
Replaces: nginx-core (<< 1.22.1-6~), nginx-extras (<< 1.22.1-6~), nginx-light (<< 1.22.1-6~)
Provides: httpd, httpd-cgi, nginx-abi-1.28.3-1
Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libpcre2-8-0 (>= 10.22), libssl3t64 (>= 3.0.0), zlib1g (>= 1:1.1.4), nginx-common (= 1.28.3-2ubuntu1.10)
Breaks: nginx-core (<< 1.22.1-6~), nginx-extras (<< 1.22.1-6~), nginx-light (<< 1.22.1-6~)
Description: small, powerful, scalable web/proxy server
 Nginx ("engine X") is a high-performance web and reverse proxy server
 created by Igor Sysoev. It can be used both as a standalone web server
 and as a proxy to reduce the load on back-end HTTP or mail servers.
Homepage: https://nginx.org
Original-Maintainer: Debian Nginx Maintainers <pkg-nginx-maintainers@alioth-lists.debian.net>
6)删除:
root@strudy:/tmp/deb# dpkg -r nginx  #保留配置文件
7)彻底删除,连着配置文件一起删除:
root@strudy:/tmp/deb# dpkg -P nginx 
(正在读取数据库 ... 系统当前共安装有 154139 个文件和目录。)
正在卸载 nginx (1.28.3-2ubuntu1.10) ...
正在处理用于 man-db (2.13.1-1build1) 的触发器 ...

1.3 仓库配置与镜像源

1.3.1 DNF仓库配置及管理(rockyLinux)

备份原有的仓库配置:

root@studry:/tmp/rpm# cd /etc/yum.repos.d/
root@studry:/etc/yum.repos.d# ls
rocky-addons.repo  rocky-devel.repo  rocky-extras.repo  rocky.repo  rocky-security.repo
root@studry:/etc/yum.repos.d# mkdir -p backup
root@studry:/etc/yum.repos.d# mv ro* backup/
root@studry:/etc/yum.repos.d# ls -l 
总计 0
drwxr-xr-x. 2 root root 125  9月10日 17:20 backup

替换基础源

替换基础软件源的目的是解决访问速度和软件获取的问题,rocky默认使用官方的软件源,但是下载软件比较慢。

  • 替换阿里云源。

阿里云源访问路径: https://developer.aliyun.com/mirror/rockylinux?spm=a2c6h.13651102.0.0.6bd71b11Cs4QY8

修改源:

root@studry:/etc/yum.repos.d# vim rocky.repo
[baseos]
name=Rocky Linux $releasever - BaseOS
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
countme=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-$releasever
[appstream]
name=Rocky Linux $releasever - AppStream
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
countme=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-$releasever
[extras]
name=Rocky Linux $releasever - Extras
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=1
countme=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-$releasever
2)初始化缓存
root@studry:/etc/yum.repos.d# dnf makecache

替换epel源

epel源是 rockyLinux、rhel、centos这些系统的百宝箱。

安装epel仓库:

root@studry:/etc/yum.repos.d# dnf install -y epel-release

替换成阿里云源:

root@studry:/etc/yum.repos.d# vim epel.repo 
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-$releasever

查看是否替换成功:

root@studry:/etc/yum.repos.d# dnf repolist
仓库 id                                                           仓库名称
appstream                                                         Rocky Linux 10 - AppStream
baseos                                                            Rocky Linux 10 - BaseOS
epel                                                              Extra Packages for Enterprise Linux 10 - x86_64
extras                                                            Rocky Linux 10 - Extras

posted on 2026-09-12 17:12  wangmengnan  阅读(21)  评论(0)    收藏  举报

导航