news 2026/6/24 8:57:11

包管理器用法速查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
包管理器用法速查

前言

不同的操作系统、编程语言几乎都有自己的包管理器,而每种包管理器的命令用法虽都大同小异,但还是有些区别的。为了避免在面临各种命令时出现一个头两个大的情况,特为此专门整理一份简要手册,以便随用随查。

1、Linux 类

Linux 系统下的包管理器很多,但综合来看其实主要分三种:

  • DEB 包:主要在 Debain、Ubuntu、以及它们的衍生系统中使用。
  • RPM 包:主要在 CentOS、RedHat、以及它们的衍生系统中使用。
  • 通用包:在任何 Linux 系统中均适用,并没有具体的专配系统。

注:(1)DEB 包和 RPM 包其实都是通过将编译后的二进制程序及其它附属文件以一种特定的流程打包之后的产物,二者仅仅只是在流程处理、软件管理方式上的不同,拆开来看二者并没有什么区别;(2)通用包就是指编译后的二进制程序无需经过像 DEB/RPM 那样的打包操作,直接就拿来使用的包。

1.1、DEB 包

1.1.1、apt

特点:在线安装,基于.deb包,可自动解决包之间的依赖关系。

#以下命令按照:初始化、增删查改、其它 进行的排序。 apt update # 更新软件仓库索引(同步最新软件列表) apt install nginx # 安装软件包 nginx apt install nginx=1.24.0 # 安装指定版本的软件包 apt remove nginx # 删除软件(保留配置文件) apt purge nginx # 彻底删除软件(包括配置文件) apt autoremove # 删除不再需要的依赖包(建议在卸载软件之后紧接着就执行) apt search nginx # 搜索软件包 apt show nginx # 查看软件包详细信息 apt list -i # 查看当前已安装的软件包列表 apt list -u # 查看当前可升级的软件包列表 apt -f install # 修复损坏依赖或补全缺失依赖 apt install --only-upgrade 7zip# 升级指定已安装软件 apt upgrade # 升级所有已安装软件 apt full-upgrade # 完整升级(允许处理依赖变化、替换包)

注:apt upgradeapt full-upgrade的区别在于对待“依赖关系变更”的处理方式apt upgrade会安装当前已安装软件的最新版本。但是,如果升级某个软件需要安装新的依赖包,或者需要删除现有的依赖包,apt upgrade会拒绝升级该软件,以保持系统的稳定性;而apt full-upgrade则不管这些,为了完成升级,可能会安装新包或删除旧包,行为上比较激进一些,不如前者保守。

1.1.2、dpkg

特点:离线安装,基于.deb包,需手动解决包之间的依赖关系。

#以下命令按照:初始化、增删查改、其它 进行的排序。 dpkg -ivh nginx.deb # 安装本地 deb 软件包 dpkg -r nginx # 删除软件(保留配置文件) dpkg -P nginx # 彻底删除软件(包括配置文件) dpkg -l # 查看系统中所有已安装软件包 dpkg -l | grep nginx # 查询 nginx 是否已安装 dpkg -s nginx # 查看指定软件包状态信息 dpkg -L nginx # 查看软件包安装了哪些文件 dpkg -S /usr/sbin/nginx # 查询某个文件属于哪个软件包 dpkg -c nginx.deb # 查看 deb 包内文件内容(不安装)

1.2、RPM 包

1.2.1、yum

特点:在线安装,基于.rpm包,可自动解决包之间的依赖关系。

#以下命令按照:初始化、增删查改、其它 进行的排序。 yum makecache # 更新本地仓库缓存 yum install nginx # 安装软件包 nginx yum groups install "GroupTool" # 安装软件组中的所有软件。 yum remove nginx # 删除软件包 nginx yum groups remove "GroupTool" # 删除软件组 yum search nginx # 搜索软件包 yum info nginx # 查看软件包详细信息 yum list installed # 查看已安装软件包 yum list available # 查看仓库中可安装软件 yum groups list # 查看可用的/已安装的软件组 yum groups info "GroupTool" # 查看软件组中包含哪些软件 yum update # 升级所有软件包 yum reinstall nginx # 重新安装软件包 yum clean all # 清理缓存 yum install pkg --downloadonly # 下载软件的离线包,但不安装

1.2.2、dnf

特点:YUM 的下一代替代品,它完全兼容并增强了 yum 的功能。这意味着,上面 yum 相关的命令用法在 dnf 中同样适用。

#以下命令按照:初始化、增删查改、其它 进行的排序。 dnf makecache # 更新仓库缓存 dnf install nginx # 安装软件包 dnf remove nginx # 删除软件包 dnf search nginx # 搜索软件包 dnf info nginx # 查看软件详细信息 dnf list installed # 查看已安装软件 dnf upgrade # 升级所有软件包 dnf reinstall nginx # 重新安装软件 dnf clean all # 清理缓存 dnf autoremove # 删除无用依赖

1.2.3、rpm

特点:离线安装,基于.rpm包,需手动解决包之间的依赖关系。

#以下命令按照:初始化、增删查改、其它 进行的排序。 rpm -ivh nginx.rpm # 安装本地 rpm 包 rpm -e nginx # 删除软件包 rpm -qa # 查看所有已安装软件包 rpm -qa | grep nginx # 查询 nginx 是否安装 rpm -qi nginx # 查看软件包详细信息 rpm -ql nginx # 查看软件包安装了哪些文件 rpm -qf /usr/sbin/nginx # 查询某文件属于哪个软件包 rpm -qc nginx # 查看软件包配置文件 rpm -qd nginx # 查看软件包文档文件 rpm -K nginx.rpm # 校验 rpm 包完整性 rpm -Uvh nginx.rpm # 升级安装 rpm 包 rpm -ivh --force nginx.rpm # 强制安装 rpm 包(慎用)

1.3、通用包

1.3.1、brew

特点:用户级安装,不污染系统目录,基于 Git 管理软件,软件版本非常新,且软件源非常丰富。【注:同 scoop 特别像】

#以下命令按照:初始化、增删查改、其它 进行的排序。 brew update # 更新 brew 自身及软件仓库索引 brew install wget # 安装软件包 wget brew uninstall wget # 删除软件包 wget brew search nginx # 搜索软件包 brew info nginx # 查看软件包详细信息 brew list # 查看已安装软件列表 brew list wget # 查看指定软件安装文件 brew upgrade # 升级所有已安装软件 brew reinstall wget # 重新安装软件 brew config # 查看运行时参数配置信息 brew cleanup # 清理旧版本缓存 brew doctor # 检查 brew 环境是否正常

注:(1)在 HomeBrew 官方仓库下有这四个仓库需要注意下:brew 是工具本体,install 是自动安装工具的脚本,homebrew-core 是命令行软件仓库,homebrew-cask 是图形化软件仓库。(2)在使用 install 脚本自动安装 brew 的时候,脚本会依次将另外三个仓库中的数据拉取到本地,由于软件仓库数据量庞大的原因,拉取的时候会出现 GitHub 排队现象,这其实是属于正常现象,不要慌,等待即可。(3)若想加速安装 brew,可在安装前先使用chsrc set homebrew修改镜像加速源,然后重启当前终端,然后执行bash install.sh即可加速安装 brew。

1.3.2、snap

特点:沙盒式的包管理器,独立运行环境,一次打包,可多系统使用,但启动慢,软件包庞大。【注:应用商店大多是图形化程序,命令行程序并不丰富。】

#以下命令按照:初始化、增删查改、其它 进行的排序。 snap install code # 安装软件包(例如 VS Code) snap remove code # 删除软件包 snap find nginx # 搜索软件包 snap list # 查看已安装 snap 软件 snap info code # 查看软件详细信息 snap changes # 查看最近安装/升级任务记录 snap refresh # 升级所有 snap 软件 snap refresh code # 升级指定软件 snap revert code # 回滚到上一个版本 snap download hello-world # 下载软件离线包 snap ack hello-world*.assert;snap install hello-world*.snap # 注册软件包的签名信息,并安装离线包 snap install --dangerous hello-world*.snap # 不注册签名,直接安装离线包 snap services # 查看 snap 管理的服务 snap disable code # 禁用软件 snap enable code # 启用软件 snap start code # 启动服务 snap stop code # 停止服务 snap logs code # 查看软件日志

注:(1)snap 不像 apt 那样只是一个单一的命令,它是一个服务,在使用 snap 命令前,请确保systemctl status snapd.service已启动。(2)仓库地址:snapd。

2、Windows 类

Windows 系统下管理软件一般不使用命令行管理,但命令行的批量、自动化特性又确实有其优势所在,故下面对 Windows 中常见的几个命令行包管理器的用法进行了整理总结。

2.1、scoop

特点:用户目录安装、绿色化管理、干净便携。

#以下命令按照:初始化、增删查改、其它 进行的排序。 scoop bucket add extras # 添加扩展仓库 scoop install git # 安装软件包 git scoop uninstall git # 删除软件包 git scoop search python # 搜索软件包 scoop list # 查看已安装软件 scoop info git # 查看软件详细信息 scoop bucket list # 查看当前仓库源 scoop update * # 升级所有已安装软件 scoop update # 更新 scoop 自身 scoop cleanup git # 清理在安装软件时下载的软件包缓存

注:scoop 无需更新本地索引缓存,因为它在被 install 或 search 的时候,首先就会自动更新自己的本地索引缓存。

2.2、winget

特点:微软官方方案出品,官方源稳定,桌面软件覆盖广。

#以下命令按照:初始化、增删查改、其它 进行的排序。 winget source update # 更新软件源 winget source list # 查看软件源 winget install Git.Git # 安装软件 winget uninstall Git.Git # 删除软件 winget search vscode # 搜索软件 winget upgrade # 查看可升级软件 winget list # 查看已安装软件 winget show Git.Git # 查看软件详细信息 winget upgrade --all # 升级全部软件

注:winget 配合该网站的软件组功能,在批量安装软件时效果非常好。

2.3、choco

特点:自动化部署常用,脚本化能力强。

#以下命令按照:初始化、增删查改、其它 进行的排序。 choco install git -y # 安装软件 choco uninstall git -y # 删除软件 choco search nodejs # 搜索软件 choco list --local-only # 查看已安装软件 choco info git # 查看软件详细信息 choco source list # 查看软件源 choco upgrade all -y # 升级全部软件 choco upgrade git -y # 升级指定软件 choco clean --yes # 清理缓存

3、Python 类

Python 生态里最常见的 4 个包管理工具:pip、pipx、uv、Conda。

3.1、pip

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 8:49:34

iOS 代码混淆工具对比 从源码级混淆到 IPA 直接加固

我注意到一个现象:团队里好几个同事在提测 IPA 之前都会问一句"代码混淆做了没",但真问到具体用的什么方案、做到什么程度,又都说不太清楚。我之前也一样,直到有次把自己打出来的 IPA 拖进 Hopper 看了一眼——类名、方…

作者头像 李华
网站建设 2026/6/24 8:42:47

AVR单片机JTAG与边界扫描技术:从原理到硬件调试实战

1. 项目概述:从“黑盒子”到“透明调试”在嵌入式开发的早期,调试一个单片机程序,尤其是当它焊死在电路板上、程序跑飞或者IO口状态异常时,那种感觉就像面对一个“黑盒子”。你只能通过有限的串口打印信息,或者观察几个…

作者头像 李华
网站建设 2026/6/24 8:39:09

AVR XMEGA A3U嵌入式开发实战:从GPIO、AES加密到ADC高精度采集

1. 项目概述:为什么是AVR XMEGA A3U?在嵌入式开发的广阔世界里,当你需要一款性能强劲、外设丰富且兼顾安全性的8位微控制器时,AVR XMEGA系列,特别是A3U型号,绝对是一个绕不开的经典选择。它不像某些32位MCU…

作者头像 李华
网站建设 2026/6/24 8:36:27

基于ATAK51003-V1的汽车无钥匙进入系统开发实战指南

1. 项目概述:从一块核心芯片到一套完整系统最近几年,但凡接触过汽车电子,尤其是车身控制领域的朋友,对“无钥匙进入与启动系统”一定不陌生。它早已从高端车的专属配置,飞入寻常百姓家,成为提升用户体验的关…

作者头像 李华
网站建设 2026/6/24 8:35:14

从芯片到系统:基于Microchip BB15L61A霍尔传感器的评估与应用实战

1. 项目概述:从一颗芯片到一个完整的评估生态最近在做一个智能家居的小项目,需要检测窗户的开合状态,最初想用简单的磁簧开关,但考虑到长期使用的可靠性和安装的便利性,就把目光投向了非接触式的霍尔传感器。在选型的时…

作者头像 李华
网站建设 2026/6/24 8:29:03

深入解析以太网MAC控制器寄存器:从基础配置到性能调优实战

1. 项目概述:为什么需要深入理解MAC控制器寄存器?在嵌入式网络开发或者硬件驱动工程师的日常工作中,我们常常会接触到像STM32、CH32V307、ESP32-C3这类集成了以太网MAC(Media Access Control,媒体访问控制)…

作者头像 李华