什么是包管理器?
简单来说,包管理器packagemanager是一种工具,它允许用户在操作系统上安装、删除、升级、配置和管理软件包。
软件包管理器可以是像“软件中心”这样的图形化应用,也可以是像apt-get或winget这样的命令行工具。
包管理器是一个通用的概念,它并不是Linux独有的。你会经常发现各种软件或编程语言的包管理器。有只是针对Python包的PIP包管理器。甚至Atom编辑器也有自己的包管理器。
什么是包?
一个包package通常指的是一个应用程序,它可以是一个GUI应用程序、命令行工具或(其他软件程序需要的)软件库。包本质上是一个存档文件,包含二进制可执行文件、配置文件,有时还包含依赖关系的信息。
在旧时代,软件曾经是从它的源代码安装的。你会参考一个文件(通常命名为README),看看它需要什么软件组件、二进制文件的位置。它通常包括一个配置脚本或Makefile。你必须自己编译该软件或自己处理所有的依赖关系(有些软件需要安装其他软件)。
为了摆脱这种复杂性,Linux发行版创建了自己的打包格式,为终端用户提供随时可用的二进制文件(预编译软件),以便安装软件,同时提供一些元数据(版本号、描述)和依赖关系。
这就像烤蛋糕与买蛋糕一样。
什么是打包系统?
大约在上世纪90年代中期,Debian创建了DEB打包格式(.deb),RedHatLinux创建了RPM(RedHatPackageManager的缩写)打包系统(.rpm)。编译源代码的方式仍然存在,但现在是可选的。
打包系统就是所有相同打包格式的集合仓库,要与打包系统交互或使用打包系统,你需要一个包管理器来拉取下载打包系统中的包,也就是我们常说的软件。
每个打包系统都有一个或者多个包管理工具。
包管理器有哪些?
包管理器分为:通用软件包管理器和应用程序级软件包管理器。与系统级软件包管理器相比,应用级软件包管理器专注于软件系统的一小部分,为开发人员提供所需要的编程语言的各种库。
通用软件包管理器
Linux下有:
APT:是Debian及其派生的Linux软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。APT最早被设计成dpkg的前端,用来处理deb格式的软件包。现在经过APT-RPM组织修改,APT已经可以安装在支持RPM的系统管理RPM包。
Yum是由DukeUniversity团队修改YellowDogLinux的YellowDogUpdater开发而成,是一个基于RPM包管理的字符前端软件包管理器。能够从指定的服务器自动下载RPM包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。被YellowDogLinux本身,以及Fedora、RedHatEnterpriseLinux采用。
dpkg:最初由Debian使用,现在由Ubuntu使用。使用.deb格式,是第一个拥有广为人知的依赖性解决工具APT。
当然,还有很多,就不一一列举出来了!
Windows下有:
Chocolatey:以Yum和apt-get的精神为基础的Windows开源分散式软件包管理器。
pacman:MSYS2移植的Windows版本的ArchLinux软件包管理器。
Scoop:一个用于Windows的命令行安装程序。
WinGet:(Windows程序包管理器:WindowsPackageManager)是微软为win10开发的一款开源的软件包管理器。
MacOS下有:
MacAppStore:OSX应用程序的官方数字分销平台。
Homebrew:MacOS的软件包管理器,基于Git。
Fink:dpkg的移植,它是最早的macOS的软件包管理器之一。
应用程序级软件包管理器
Cargo:Cargo是Rust的软件包管理器。
Conan:一个用于C++的软件包管理器和库。
Conda:一个用于Python和R的开放数据科学平台的软件包管理器。
Go:一个多用途的工具,除其他外,用于Go软件包管理。
LuaRocks:用于Lua的编程库和软件包管理器。
Maven:Java的软件包管理器和构建工具。
npm:用于Node.js和JavaScript的编程库和包管理器。
pip:Python的软件包管理器和PyPI编程库。
Pkg.jl:一个用于Julia的软件包管理器。
RubyGems:Ruby的软件包管理器和资源库。
Yarn:Node.js和JavaScript的软件包管理器。
几乎都是各大开发语言的库管理相关。
转载请注明:http://www.0431gb208.com/sjszjzl/5233.html