linux常用命令(2)包管理命令

4 阅读20分钟

包管理工具是 Linux 系统中用于安装、卸载、更新、查询软件包的核心工具。不同 Linux 发行版基于不同的包管理体系(如 Debian 系、Red Hat 系、Arch 系等),对应不同的工具。

包(Package)的组成要素:

  • 可执行二进制文件
  • 配置文件(通常位于 /etc/目录)
  • 库文件和共享对象
  • 文档文件和手册页
  • 服务单元和初始化脚本
  • 依赖关系元数据
  • 包描述信息(版本、维护者、许可证)
  • 安装前/后脚本(preinst、postinst、prerm、postrm)

包管理系统的核心功能:

  1. 依赖解析 - 自动解决软件包间的依赖关系
  2. 版本控制 - 管理软件版本,支持升级和降级
  3. 数字签名 - 验证包的完整性和来源
  4. 事务管理 - 确保安装/卸载操作原子性
  5. 冲突检测 - 防止不兼容软件共存
  6. 配置管理 - 处理配置文件更新和保留

DEB包结构(Debian格式):

myapp_1.0-1_amd64.deb
├── control.tar.gz
│   ├── control        # 控制信息
│   ├── md5sums        # 文件校验
│   ├── conffiles      # 配置文件列表
│   ├── preinst        # 安装前脚本
│   ├── postinst       # 安装后脚本
│   ├── prerm          # 卸载前脚本
│   └── postrm         # 卸载后脚本
├── data.tar.gz        # 实际文件
└── debian-binary      # 格式版本

RPM包结构(Red Hat格式):

myapp-1.0-1.x86_64.rpm
├── Header
│   ├── Name: myapp
│   ├── Version: 1.0
│   ├── Release: 1
│   ├── Architecture: x86_64
│   ├── Summary: My Application
│   ├── Description: Detailed description...
│   ├── Requires: libc >= 2.17
│   ├── Provides: myapp
│   └── Files: 100644 /usr/bin/myapp
├── Payload           # 压缩的文件数据
└── Signature         # GPG签名

(一)Debian 系发行版(Ubuntu、Debian、Linux Mint 等)

基于 .deb 格式的软件包,核心工具为 dpkg,上层封装工具为apt/apt-get。

1. dkpg (底层包管理工具)

DPKG(Debian Packager)是Debian包管理系统,是Debian Linux家族的基础包管理工具,用于安装、删除deb软件包以及提供deb软件包的信息。

dpkg本身是一个底层工具,如同rpm系统,直接操作 .deb 包,不自动解决依赖关系,是 apt 等工具的基础,其上层工具(如apt)被用于从远程获取软件包以及处理复杂的软件包关系。

所有源自Debian的Linux发行版都使用dpkg作为包管理系统,例如Knoppix、Debian、Ubuntu、Linux Mint等。

选项说明

  • -i: 安装本地的 .deb 软件包
  • -r:删除软件包(保留配置文件)
  • -P : 删除软件包的同时删除其配置文件(彻底删除)
  • -l : 列出系统中已安装的所有软件包
  • -L: 查看某个已安装软件包的文件安装路径
  • -s:查看某个软件包的详细信息(版本、状态等)
  • -S:查找某个文件属于哪个软件包
  • -c : 显示软件包内文件列表
  • -- unpack : 解开软件包
  • --configure -- :配置软件包
dpkg -i package.deb  # 安装deb软件包
dpkg -r package  # 删除软件包
dpkg -P package  # 删除软件包(包括配置文件)
dpkg -l  # 列出已安装的软件包
dpkg -l package  # 显示该软件包的版本
dpkg --unpack package.deb  # 解开deb软件包
dpkg -c package.deb  # 列出deb软件包的内容
dpkg --configure package  # 配置软件包

详细命令参考:

安装操作:

# 基本安装
sudo dpkg -i package.deb

# 详细安装选项
sudo dpkg -i --debug=2 package.deb                    # 调试模式
sudo dpkg -i --force-depends package.deb             # 强制忽略依赖(危险!)
sudo dpkg -i --force-overwrite package.deb           # 强制覆盖文件
sudo dpkg -i --skip-same-version package.deb         # 跳过相同版本
sudo dpkg -i --recursive /path/to/debs/*.deb         # 递归安装

查询操作:

# 包状态查询
dpkg -l                                         # 所有包
dpkg -l | grep ^ii                             # 仅已安装
dpkg -l | grep ^rc                             # 仅配置文件残留
dpkg -l | grep ^un                             # 未安装但配置存在
dpkg -l | grep ^pn                             # 部分安装

# 包信息查询
dpkg -s package_name                           # 包详细信息
dpkg -p package_name                           # 详细包信息(包含描述)
dpkg -L package_name                           # 包文件列表
dpkg -c package.deb                            # 查看未安装的deb包内容
dpkg -I package.deb                            # 查看未安装的deb包信息
dpkg -S /path/to/file                          # 文件属于哪个包
dpkg --search pattern                          # 搜索文件模式

维护操作:

# 包状态管理
dpkg --get-selections                          # 获取包选择状态
dpkg --set-selections < package_list.txt       # 设置包选择状态
dpkg --clear-selections                        # 清除选择状态

# 数据库维护
sudo dpkg --configure -a                       # 配置所有未配置的包
sudo dpkg --audit                              # 审计包数据库
sudo dpkg --clear-avail                        # 清除可用包列表
sudo dpkg --update-avail                       # 更新可用包列表

包操作:

# 卸载操作
sudo dpkg -r package_name                      # 删除包,保留配置
sudo dpkg -P package_name                      # 完全删除包和配置
sudo dpkg --purge package_name                 # 同上,完全删除

# 包重新配置
sudo dpkg-reconfigure package_name             # 重新配置包
sudo dpkg-reconfigure -plow package_name       # 低优先级重新配置
sudo dpkg-reconfigure -phigh package_name      # 高优先级重新配置
sudo dpkg-reconfigure dash                     # 重新配置dash(shell选择)

# 包修复
sudo dpkg --force-all --configure -a          # 强制配置所有包

高级操作:

# 提取deb包内容
dpkg -x package.deb /target/directory         # 提取文件
dpkg -e package.deb /target/directory         # 提取控制信息
mkdir extracted && dpkg -x package.deb extracted/  # 创建目录并提取

# 包比较
debdiff package1.deb package2.deb             # 比较两个deb包
dpkg --compare-versions ver1 op ver2          # 版本比较
# op: lt le eq ne ge gt (小于、小于等于、等于、不等于、大于等于、大于)

# 构建信息
dpkg-buildpackage -us -uc                     # 构建deb包(不签名)
dpkg-buildpackage -rfakeroot                  # 使用fakeroot构建

2. apt/apt-get (上层包管理工具)

apt(advanced packaging tool)基于 dpkg 开发,自动解决依赖关系,并支持从远程软件源获取包,是 Debian 系最常用的工具(aptapt-get 的简化版,更友好)。

适用于Debian及其衍生版,如Ubuntu、Linux Mint。apt由几个操作软件包的命令行工具组成,包括apt-get、apt-cache和apt-cdrom。

为了解决命令过于分散的问题,引入了命令apt,它包括了命令apt-get使用最广泛的功能选项,以及命令apt-cache和apt-config中常用到的功能。在使用apt命令时,用户不必再由apt-get转到apt-cache或apt-config,而且apt更加结构化,并为用户提供了管理软件包所需的必要选项。简单来说,apt就是apt-get、apt-cache和apt-config中最常用命令选项的集合。

APT(Advanced Packaging Tool)是一个完整的包管理系统,包含多个工具:

  • apt-get:传统的包管理工具
  • apt-cache:包缓存查询工具
  • apt-config:配置管理工具
  • apt:新一代的统一命令行工具(简化版,更友好)
apt

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。

apt [options] [command] [package ...]

  • options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
  • command:要进行的操作。
  • package:安装的包名。
# 基础必会
apt install package  # 安装包
apt remove package  # 删除包
apt autoremove  # 检查并清除无用的安装包
apt update&upgrade package  # 更新所有的安装包

apt命令详解:

仓库和缓存管理:

# 源管理
sudo apt update                               # 更新包列表
sudo apt update --allow-insecure-repositories # 允许不安全仓库
sudo apt update --allow-releaseinfo-change    # 允许发布信息变化

# 升级操作
sudo apt upgrade                              # 安全升级
sudo apt full-upgrade                         # 完全升级(可处理依赖变化)
sudo apt dist-upgrade                         # 分发升级(同full-upgrade)

包管理操作:

# 安装操作
sudo apt install package_name
sudo apt install package_name=1.0.0-1ubuntu1  # 安装特定版本
sudo apt install --only-upgrade package_name  # 仅升级
sudo apt install --download-only package_name # 仅下载不安装
sudo apt install --reinstall package_name     # 重新安装
sudo apt install --install-suggests package_name  # 安装建议包

# 删除操作
sudo apt remove package_name                  # 删除包
sudo apt purge package_name                   # 删除包和配置
sudo apt autoremove                           # 删除自动安装的依赖
sudo apt autoremove --purge                   # 彻底清理

查询操作:

# 搜索查询
apt search "正则表达式"                        # 正则搜索
apt search --names-only keyword              # 仅包名搜索
apt search --full "完整描述搜索"

# 包信息
apt show package_name                         # 包详细信息
apt show --all-versions package_name          # 所有版本信息
apt policy package_name                       # 版本策略
apt depends package_name                      # 依赖关系
apt rdepends package_name                     # 反向依赖

# 列表操作
apt list                                      # 所有可用包
apt list --installed                          # 已安装的包
apt list --upgradable                         # 可升级的包
apt list --all-versions                       # 所有版本

高级功能:

# 包标记
sudo apt-mark hold package_name               # 保持版本
sudo apt-mark unhold package_name             # 取消保持
sudo apt-mark showhold                        # 显示保持的包
sudo apt-mark auto package_name               # 标记为自动安装
sudo apt-mark manual package_name             # 标记为手动安装
sudo apt-mark showauto                        # 显示自动安装的包

# 清理操作
sudo apt clean                                # 清理所有缓存
sudo apt autoclean                            # 清理旧包缓存
sudo apt autoremove                           # 移除不需要的包
sudo apt-get --purge autoremove              # 彻底清理
apt-get
apt-get update  # 更新所有已安装的软件包
apt-get dist-upgrade  # 将系统升级到新版本
apt-get install package  # 安装包
apt-get remove package  # 删除包(保留配置文件)
apt-get --purge remove package  # 删除包(同时删除配置文件)
apt-get autoclean package  # 移除该软件的旧版本软件包(为了满足其他软件包的依赖而安装,但现在不再需要的软件包)
apt-get clean  # 移除下载到本地的已安装的软件包
sudo apt list --installed  # 列出已安装的软件包

apt-cache工具:

# 缓存查询
apt-cache search keyword                      # 搜索包
apt-cache show package_name                   # 显示包信息
apt-cache showpkg package_name                # 显示包详细信息
apt-cache showsrc package_name                # 显示源码包信息
apt-cache stats                               # 显示统计信息
apt-cache dump                                # 显示缓存内容
apt-cache dumpavail                           # 显示可用包列表
apt-cache unmet                               # 显示未满足的依赖
核心命令对比(apt vs apt-get)
功能需求apt 命令apt-get 命令说明
更新软件源索引apt updateapt-get update同步远程源的包列表,确保获取最新版本信息
升级已安装包apt upgradeapt-get upgrade升级所有已安装包(不删除旧包,不安装新依赖)
智能升级apt full-upgradeapt-get dist-upgrade升级时可删除旧包、安装新依赖(适合系统大版本升级)
安装软件包apt install <package-name>apt-get install <package-name>安装指定包及依赖
卸载软件包apt remove <package-name>apt-get remove <package-name>卸载包(保留配置)
彻底卸载apt purge <package-name>apt-get purge <package-name>卸载包并删除配置
清理缓存apt cleanapt-get clean删除所有下载的包缓存(/var/cache/apt/archives/)
清理无用包apt autoremoveapt-get autoremove删除因安装其他包而自动安装的、现已无用的依赖
搜索软件包apt search <keyword>apt-cache search <keyword>根据关键词搜索远程源中的包
查看包信息apt show <package-name>apt-cache show <package-name>查看包的详细信息(版本、描述、依赖等)

(二) Red Hat 系发行版(CentOS、RHEL、Fedora 等)

基于 .rpm 格式的软件包,早期用 yum,Fedora 22+ 及 CentOS 8+ 推荐用 dnf(yum 的升级版)。

1. rpm(底层包管理工具)

RPM(Red Hat Package Manager)是Red Hat系发行版的底层包管理工具,用于管理.rpm格式的软件包。类似 dpkg,直接操作 .rpm 包,不自动解决依赖。

常用命令功能说明
rpm -ivh <package.rpm>安装 .rpm 包(-i = 安装,-v = 详细输出,-h = 进度条)
rpm -e <package-name>卸载软件包
rpm -qa列出系统中所有已安装的 rpm 包
rpm -ql <package-name>查看已安装包的文件路径
rpm -qi <package-name>查看已安装包的详细信息
rpm -qf <file-path>查找文件所属的 rpm 包
rpm -Uvh <package.rpm>升级 rpm 包(若未安装则自动安装)
rpm -V <package-name>验证软件包的文件完整性(是否被篡改)

示例:安装本地的 nginx.rpm
rpm -ivh nginx-1.24.0-1.el9.x86_64.rpm

安装操作详解:

# 基本安装命令
sudo rpm -ivh package.rpm                    # 安装并显示进度
sudo rpm -i package.rpm                      # 静默安装
sudo rpm -Uvh package.rpm                    # 升级(未安装则安装)

# 高级安装选项
sudo rpm -ivh --test package.rpm            # 测试安装(不实际安装)
sudo rpm -ivh --replacepkgs package.rpm     # 重新安装
sudo rpm -ivh --replacefiles package.rpm    # 替换文件
sudo rpm -ivh --oldpackage package.rpm      # 允许旧版本
sudo rpm -ivh --noscripts package.rpm       # 不执行脚本
sudo rpm -ivh --nodeps package.rpm          # 忽略依赖(危险!)
sudo rpm -ivh --force package.rpm           # 强制安装
sudo rpm -ivh --prefix /opt package.rpm     # 指定安装路径
sudo rpm -ivh --relocate /old=/new package.rpm  # 重定位文件

查询操作详解:

# 查询语法
rpm -q [select-options] [query-options]

# 选择选项
rpm -qa                                      # 所有已安装的包
rpm -q package_name                          # 特定包
rpm -qf /path/to/file                        # 文件属于哪个包
rpm -qp package.rpm                          # 查询未安装的rpm文件
rpm -qg group_name                           # 组中的包
rpm -q --whatprovides capability            # 提供能力的包
rpm -q --whatrequires package               # 依赖此包的包
rpm -q --whatconflicts package              # 与此包冲突的包
rpm -q --whatobsoletes package              # 废弃此包的包

# 查询选项
rpm -qi package_name                         # 包信息
rpm -ql package_name                         # 文件列表
rpm -qc package_name                         # 配置文件
rpm -qd package_name                         # 文档文件
rpm -q --scripts package_name               # 安装脚本
rpm -q --changelog package_name             # 变更日志
rpm -q --provides package_name              # 提供的能力
rpm -q --requires package_name              # 依赖
rpm -q --conflicts package_name             # 冲突
rpm -q --obsoletes package_name             # 废弃
rpm -q --last package_name                  # 安装时间
rpm -q --dump package_name                  # 详细文件信息

验证操作:

# 包验证
rpm -V package_name                          # 验证包
rpm -Va                                       # 验证所有包
rpm -Vp package.rpm                          # 验证未安装的包
rpm -Vf /path/to/file                        # 验证文件

# 验证输出含义
# S: 文件大小不同
# M: 权限不同
# 5: MD5校验和不同
# D: 设备号不同
# L: 符号链接不同
# U: 用户不同
# G: 组不同
# T: 修改时间不同
# P: 能力不同

卸载操作:

# 基本卸载
sudo rpm -e package_name                     # 卸载包
sudo rpm -e --nodeps package_name           # 忽略依赖卸载
sudo rpm -e --test package_name             # 测试卸载
sudo rpm -e --allmatches package_name       # 卸载所有匹配

数据库操作:

# 数据库维护
sudo rpm --rebuilddb                         # 重建数据库
sudo rpm --initdb                            # 初始化数据库
sudo rpm --verifydb                          # 验证数据库
sudo rpm --showrc                            # 显示配置

# 导入密钥
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
sudo rpm -K package.rpm                      # 检查签名
sudo rpm --checksig package.rpm              # 检查签名

2. yum(Yellowdog Updater Modified)

基于 rpm,自动解决依赖,支持远程源,CentOS 7 及以下的默认工具。

常用命令功能说明
yum update更新软件源并升级所有已安装包
yum install <package-name>安装指定包及依赖
yum remove <package-name>卸载包(保留配置)
yum erase <package-name>彻底卸载包(类似 purge)
yum search <keyword>搜索软件包
yum info <package-name>查看包的详细信息
yum list installed列出已安装的包
yum clean all清理缓存和无用数据
yum groupinstall <group-name>安装软件组(如 "Development Tools")

示例:安装开发工具组
yum groupinstall "Development Tools"

YUM基本命令:

# 仓库管理
yum repolist                                 # 列出启用的仓库
yum repolist all                             # 列出所有仓库
yum repoinfo                                 # 仓库信息
yum repoinfo example-repo                    # 特定仓库信息
yum --disablerepo="*" --enablerepo="epel" list available  # 临时启用仓库

# 搜索操作
yum search keyword                           # 搜索包
yum search all keyword                       # 搜索所有字段
yum provides */filename                      # 搜索提供文件的包
yum whatprovides capability                  # 搜索提供能力的包
yum list available                           # 可用包列表
yum list installed                           # 已安装的包
yum list updates                             # 可更新的包
yum list extras                              # 额外安装的包
yum list obsoletes                           # 废弃的包
yum grouplist                                # 组列表
yum groupinfo "Development Tools"            # 组信息

安装和更新:

# 安装操作
yum install package_name                     # 安装包
yum install package-1.0.0                    # 安装特定版本
yum install @group                           # 安装组
yum install package1 package2               # 安装多个包
yum localinstall /path/to/package.rpm       # 本地安装
yum reinstall package_name                   # 重新安装
yum downgrade package_name                   # 降级

# 更新操作
yum check-update                             # 检查更新
yum update                                   # 更新所有包
yum update package_name                      # 更新特定包
yum update --security                        # 安全更新
yum update-minimal                          # 最小更新
yum --security update-minimal               # 安全最小更新

卸载和清理:

# 卸载操作
yum remove package_name                      # 卸载包
yum erase package_name                       # 彻底卸载
yum autoremove                               # 自动移除
yum groupremove "Development Tools"          # 卸载组

# 清理操作
yum clean all                                # 清理所有缓存
yum clean packages                           # 清理包缓存
yum clean metadata                           # 清理元数据
yum clean dbcache                           # 清理数据库缓存
yum clean expire-cache                       # 清理过期缓存

3. dnf (Dandified Yum)

DNF 是 YUM 的重写版本,速度更快、依赖解析更高效,主要用于 Fedora 和 CentOS 8 及以上版本。

命令与 yum 基本兼容,用法几乎一致:

  • 安装包:dnf install <package-name>
  • 升级:dnf update
  • 卸载:dnf remove <package-name>
  • 搜索:dnf search <keyword>

独有优势:支持并行下载、更好的版本控制,推荐优先使用。

DNF增强功能:

# 模块管理(RHEL 8+)
dnf module list                              # 列出模块
dnf module info module_name                  # 模块信息
dnf module enable module_name:stream         # 启用模块流
dnf module install module_name:stream/profile  # 安装模块
dnf module update module_name               # 更新模块
dnf module reset module_name                # 重置模块
dnf module disable module_name              # 禁用模块

# 高级查询
dnf repoquery --whatprovides /usr/bin/python3  # 查询提供者
dnf repoquery -l package_name                # 包文件列表
dnf repoquery --requires package_name        # 依赖关系
dnf repoquery --changelog package_name       # 变更日志
dnf repoquery --duplicates                   # 重复包
dnf repoquery --obsoletes                    # 废弃的包

# 历史管理
dnf history                                  # 事务历史
dnf history info 6                          # 事务详情
dnf history undo 6                          # 撤销事务
dnf history redo 6                          # 重做事务
dnf history rollback                        # 回滚
dnf history store                           # 存储事务

(三)其他发行版专属工具

1. zypper (openSUSE / SUSE Linux Enterprise )

基于 rpm 体系,openSUSE 系列的默认包管理工具,语法简洁,支持自动解决依赖。

常用命令功能说明
zypper refresh更新软件源索引
zypper update升级所有已安装包
zypper install <package-name>安装包
zypper remove <package-name>卸载包
zypper search <keyword>搜索包
zypper info <package-name>查看包信息
zypper dup系统版本升级(Distribution Upgrade)

示例:更新系统并安装 Vim
zypper refresh && zypper install vim

仓库管理:

# 仓库操作
zypper lr                                    # 列出仓库
zypper lr -d                                 # 详细列表
zypper lr -P                                 # 显示优先级
zypper lr -E                                 # 显示是否启用
zypper ar http://example.com/repo alias      # 添加仓库
zypper rr alias                              # 删除仓库
zypper mr -e alias                           # 启用仓库
zypper mr -d alias                           # 禁用仓库
zypper mr -k alias                           # 保留包
zypper mr -K alias                           # 不保留包
zypper mr -p 99 alias                        # 设置优先级
zypper ref                                   # 刷新仓库

包管理:

# 搜索和查询
zypper se keyword                            # 搜索
zypper se -s keyword                         # 搜索详情
zypper se -i keyword                         # 已安装的包
zypper se -u keyword                         # 未安装的包
zypper info package_name                     # 包信息
zypper info --requires package_name          # 依赖关系
zypper if package_name                       # 完整信息
zypper packages --installed-only             # 已安装的包
zypper patches                               # 补丁列表

# 安装和更新
zypper in package_name                       # 安装
zypper in -l package_name                    # 自动同意许可证
zypper in -D package_name                    # 仅下载
zypper in -f package_name                    # 强制安装
zypper up                                    # 更新
zypper up -r patch:security                  # 安全更新
zypper dup                                   # 分发升级
zypper patch                                 # 安装补丁

高级功能:

# 包锁定
zypper al                                    # 列出锁
zypper al package_name                       # 添加锁
zypper al 'kernel*'                          # 通配符锁定
zypper rl 1                                  # 移除锁

# 补丁管理
zypper lp                                    # 列出补丁
zypper lp --all                              # 所有补丁
zypper lp -g                                 # 按类别分组
zypper patch-check                           # 检查补丁
zypper patch --updatestack-only              # 仅更新堆栈

# 事务历史
zypper history                               # 历史记录
zypper history --reverse                     # 反向历史
zypper history 5                            # 查看特定事务
zypper undo 5                               # 撤销事务

2. pacman(Arch Linux / Manjaro 等其他基于 Arch 的发行版)

Arch 系的核心包管理工具,以 简洁、高效、滚动更新 为特点,直接操作 Arch 官方仓库的 .pkg.tar.zst 包。

常用命令功能说明
pacman -Syu同步源 + 升级系统(Arch 常用,-S = 安装,-y = 更新源,-u = 升级)
pacman -S <package-name>安装指定包
pacman -R <package-name>卸载包(保留依赖)
pacman -Rs <package-name>卸载包并删除无用依赖
pacman -Rns <package-name>彻底卸载(删除包、依赖及配置)
pacman -Q列出已安装的包
pacman -Ql <package-name>查看已安装包的文件路径
pacman -Ss <keyword>搜索远程仓库中的包
pacman -Scc清理所有缓存

示例:安装 Firefox 并升级系统
pacman -Syu firefox

基本操作:

# 系统更新
pacman -Syu                                  # 同步并升级
pacman -Sy                                   # 仅同步
pacman -Su                                   # 仅升级
pacman -Syw package                          # 仅下载

# 包管理
pacman -S package_name                       # 安装
pacman -R package_name                       # 删除
pacman -Rs package_name                      # 删除及未使用的依赖
pacman -Rns package_name                     # 完全删除
pacman -U /path/to/package.pkg.tar.zst      # 本地安装
pacman -Scc                                  # 清理缓存

查询操作:

# 包查询
pacman -Qs keyword                           # 搜索本地
pacman -Ss keyword                           # 搜索远程
pacman -Qi package_name                      # 包信息
pacman -Ql package_name                      # 文件列表
pacman -Qo /path/to/file                     # 文件所属
pacman -Qe                                   # 显式安装
pacman -Qd                                   # 作为依赖安装
pacman -Qdt                                  # 孤立包
pacman -Qm                                   # 从AUR安装
pacman -Qn                                   # 从官方仓库安装

AUR管理:

# 通过yay使用AUR
yay -S aur_package                           # 安装AUR包
yay -Ss keyword                              # 搜索AUR
yay -Sua                                     # 更新AUR包
yay -Yc                                      # 清理不需要的依赖
yay -Ps                                      # 统计信息
yay -G package_name                          # 下载PKGBUILD

(四) 编程语言专属包管理工具

1. pip(Python 包管理工具)

用于管理 Python 的第三方库(如 requests、numpy 等),支持从 PyPI(Python Package Index)下载包。

常用命令功能说明
pip install <package-name>安装指定 Python 包
pip install <package-name>==x.y.z安装指定版本的包
pip install --upgrade <package-name>升级已安装的包
pip uninstall <package-name>卸载包
pip list列出当前环境已安装的包
pip freeze导出已安装包列表(常用于生成 requirements.txt)
pip install -r requirements.txt批量安装 requirements.txt 中的包
pip search <keyword>搜索 PyPI 中的包(部分版本已移除,推荐直接访问 PyPI 官网)

示例:导出依赖并批量安装

pip freeze > requirements.txt			#导出
pip install -r requirements.txt		#安装

基本命令:

# 安装管理
pip install package_name                     # 安装
pip install package_name==1.0.0              # 特定版本
pip install --upgrade package_name           # 升级
pip install --upgrade-strategy eager         # 积极升级
pip install --upgrade-strategy only-if-needed  # 需要时升级
pip install --force-reinstall package_name   # 强制重装
pip uninstall package_name                   # 卸载
pip install --no-deps package_name           # 不安装依赖

# 环境管理
pip freeze > requirements.txt                # 导出依赖
pip install -r requirements.txt              # 安装依赖
pip list                                     # 列出已安装
pip list --outdated                          # 列出过时的包
pip show package_name                        # 显示包信息
pip check                                    # 检查依赖
pip cache purge                              # 清理缓存

虚拟环境:

# 创建虚拟环境
python3 -m venv myenv                       # 创建
source myenv/bin/activate                   # 激活
deactivate                                  # 退出

# pipenv(现代Python包管理)
pipenv install package_name                  # 安装
pipenv install --dev package_name            # 开发依赖
pipenv lock                                 # 生成锁定文件
pipenv install --ignore-pipfile             # 忽略Pipfile
pipenv graph                                # 依赖图
pipenv run python script.py                  # 运行

2. npm(Node.js 包管理工具)

用于管理 Node.js 的第三方模块(如 express、react 等),默认从 npm 官方仓库下载。

核心命令

常用命令功能说明
npm install <package-name>本地安装(当前项目目录,仅当前项目可用)
npm install -g <package-name>全局安装(系统级,所有项目可用,需管理员权限)
npm install <package-name>@x.y.z安装指定版本的包
npm update <package-name>升级本地包
npm uninstall <package-name>卸载本地包
npm uninstall -g <package-name>卸载全局包
npm list查看当前项目已安装的包(树形结构)
npm init初始化 Node.js 项目(生成 package.json 文件)
npm run <script-name>运行 package.json 中定义的脚本(如 npm run dev

补充说明

  • package.json:记录项目依赖、脚本、版本等信息,是 Node.js 项目的核心配置文件。
  • yarn/pnpm:npm 的替代品,速度更快、依赖管理更严谨,用法与 npm 类似(如 yarn add <package>)。

示例:全局安装 Vue 脚手架并初始化项目

npm install -g @vue/cli			#安装
vue create my-vue-project		#初始化

包管理:

# 基本操作
npm install package_name                     # 本地安装
npm install -g package_name                  # 全局安装
npm install package_name@1.0.0               # 特定版本
npm update package_name                      # 更新
npm uninstall package_name                   # 卸载
npm ls                                       # 列出依赖
npm outdated                                 # 列出过时的包
npm audit                                    # 安全审计
npm audit fix                                # 修复安全问题
npm ci                                       # 清洁安装
npm init                                     # 初始化项目
npm run script_name                          # 运行脚本

package.json管理:

{
  "name": "my-project",
  "version": "1.0.0",
  "description": "My Node.js project",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js",
    "test": "jest"
  },
  "dependencies": {
    "express": "^4.18.0",
    "mongoose": "^6.0.0"
  },
  "devDependencies": {
    "jest": "^29.0.0",
    "eslint": "^8.0.0"
  },
  "engines": {
    "node": ">=16.0.0"
  }
}

替代工具:

# yarn
yarn add package_name                        # 添加包
yarn add -D package_name                     # 开发依赖
yarn upgrade package_name                    # 升级
yarn remove package_name                     # 移除
yarn install                                 # 安装依赖
yarn upgrade                                 # 升级所有

# pnpm
pnpm add package_name                        # 添加包
pnpm install                                 # 安装
pnpm update                                  # 更新
pnpm remove package_name                     # 移除