包管理¶
基本概念¶
包管理器,顾名思义就是 包 的 管理 器
这里所说的 包 含义很广泛,包括但不限于
- 代码库/框架
- 命令行工具
- 开发环境组件
- 日常使用的软件
管理 的含义也很丰富,包含了很多操作,比如
- 安装包
- 卸载包
- 升级包
开发人员经常需要使用包管理器。因为遇到存在复杂依赖的情况时,不太可能手动管理。以下是一些可能要使用包管理器的场景
- 对于较大型的软件项目,第三方依赖会很复杂
- 对于类
UNIX
系统,系统本身的依赖就很复杂
分类¶
不同的包管理器 管理 包的方式可能不同,我大致总结了 3
种类型
- 在项目本地根据清单/锁文件来管理包
- 创建、激活不同的环境来管理包
- 用户级或系统级全局管理包
当然了,大多数包管理器都不只支持一种包管理方式
本文不会对包管理器进行复杂的细分,只如下简单分类
- 语言包管理器,和特定编程语言有关,主要管理代码库/框架,偶尔也管理命令行工具。
- 系统包管理器,和特定编程语言无关,可管理命令行工具、开发环境组件、日常使用的软件,偶尔也能管理 C/C++ 的代码库/框架
语言包管理器¶
系统包管理器¶
Windows¶
- scoop 严格地说更像安装器,因为 windows 系统依赖不会很复杂,软件通常都是单独在一个目录里安装,并附带了所有的运行时依赖,因此手动安装不麻烦。不像 UNIX 系统,为了节省空间,程序都是动态链接的,不会单独一个目录里安装,而是散布在系统的各个角落,并疯狂地复用系统的运行时。scoop 在 windows 上主要用处就是让包的安装、卸载、升级更方便(好吧,这似乎是所有包管理器的主要作用)
Linux¶
- homebrew 比系统自带的更好,用户级别的安装,不污染系统目录,不需要 sudo,包支持更丰富。