跳转至

包管理器

基本概念

包管理器,顾名思义就是 包的管理器

这里所说的 含义广泛,包括但不限于

  • 代码库/框架
  • 命令行工具
  • 开发环境组件
  • 日常使用的软件

管理 的含义也很丰富,包含了多种操作,比如 安装卸载更新

开发人员经常需要使用包管理器。因为面对非常复杂的依赖,不太可能手动管理。比如

  • 对于较大型的软件项目,可能存在非常复杂的树状/网状依赖
  • 部分类 UNIX 系统,由于 文件系统层次结构标准(FHS),软件无法安装在一个单独的目录里,而是散布在系统的各个角落;且出于对 单一职责原则 这一 UNIX 哲学的尊重和为节省磁盘空间,软件通常不附带自身完整的运行环境,必须依赖其它软件提供的共享库

分类

包管理器管理包的方式大致有 3 种类型,有些包管理器支持多种管理方式

  • 项目本地 根据 清单文件/锁文件 来管理包
  • 用户级或系统级 全局 管理包
  • 创建、激活不同的 虚拟环境 来管理包

本文按如下方式对包管理器进行了简单的分类

  • 语言包管理器 和特定编程语言有关,主要管理代码库/框架,偶尔也管理命令行工具。
  • 系统包管理器 和特定编程语言无关,可管理命令行工具、开发环境组件、日常使用的软件,偶尔也能管理 C/C++ 的代码库/框架

语言包管理器

系统包管理器

Windows

  • Scoop 官方自称为 安装器,但它事实上能完成包管理器的主要工作

Linux

  • Homebrew 支持 macOS 和 Linux 平台,是系统包管理器的良好补充,提升了用户体验