前言

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

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 upgrade 和 apt 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

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐