包管理工具是 Linux 系统中用于安装、卸载、更新、查询软件包的核心工具。不同 Linux 发行版基于不同的包管理体系(如 Debian 系、Red Hat 系、Arch 系等),对应不同的工具。
包(Package)的组成要素:
- 可执行二进制文件
- 配置文件(通常位于
/etc/目录) - 库文件和共享对象
- 文档文件和手册页
- 服务单元和初始化脚本
- 依赖关系元数据
- 包描述信息(版本、维护者、许可证)
- 安装前/后脚本(preinst、postinst、prerm、postrm)
包管理系统的核心功能:
- 依赖解析 - 自动解决软件包间的依赖关系
- 版本控制 - 管理软件版本,支持升级和降级
- 数字签名 - 验证包的完整性和来源
- 事务管理 - 确保安装/卸载操作原子性
- 冲突检测 - 防止不兼容软件共存
- 配置管理 - 处理配置文件更新和保留
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 系最常用的工具(apt 是 apt-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 update | apt-get update | 同步远程源的包列表,确保获取最新版本信息 |
| 升级已安装包 | apt upgrade | apt-get upgrade | 升级所有已安装包(不删除旧包,不安装新依赖) |
| 智能升级 | apt full-upgrade | apt-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 clean | apt-get clean | 删除所有下载的包缓存(/var/cache/apt/archives/) |
| 清理无用包 | apt autoremove | apt-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 # 移除