什么是包管理器?
簡單來說,包管理器package manager是一種工具,它允許用戶在操作系統(tǒng)上安裝、刪除、升級、配置和管理軟件包。
軟件包管理器可以是像“軟件中心”這樣的圖形化應用,也可以是像 apt-get 或 winget這樣的命令行工具。
包管理器是一個通用的概念,它并不是 Linux 獨有的。你會經(jīng)常發(fā)現(xiàn)各種軟件或編程語言的包管理器。有只是針對 Python 包的 PIP 包管理器。甚至 Atom 編輯器也有自己的包管理器。
什么是包?
一個包package通常指的是一個應用程序,它可以是一個 GUI 應用程序、命令行工具或(其他軟件程序需要的)軟件庫。包本質(zhì)上是一個存檔文件,包含二進制可執(zhí)行文件、配置文件,有時還包含依賴關(guān)系的信息。
在舊時代,軟件曾經(jīng)是從它的源代碼安裝的。你會參考一個文件(通常命名為README),看看它需要什么軟件組件、二進制文件的位置。它通常包括一個配置腳本或Makefile。你必須自己編譯該軟件或自己處理所有的依賴關(guān)系(有些軟件需要安裝其他軟件)。
為了擺脫這種復雜性,Linux 發(fā)行版創(chuàng)建了自己的打包格式,為終端用戶提供隨時可用的二進制文件(預編譯軟件),以便安裝軟件,同時提供一些元數(shù)據(jù)(版本號、描述)和依賴關(guān)系。
這就像烤蛋糕與買蛋糕一樣。
什么是打包系統(tǒng)?
大約在上世紀 90 年代中期,Debian 創(chuàng)建了 DEB 打包格式(.deb),Red Hat Linux 創(chuàng)建了 RPM(Red Hat Package Manager 的縮寫)打包系統(tǒng)(.rpm)。編譯源代碼的方式仍然存在,但現(xiàn)在是可選的。
打包系統(tǒng)就是所有相同打包格式的集合倉庫,要與打包系統(tǒng)交互或使用打包系統(tǒng),你需要一個包管理器來拉取下載打包系統(tǒng)中的包,也就是我們常說的軟件。
每個打包系統(tǒng)都有一個或者多個包管理工具。
包管理器有哪些?
包管理器分為:通用軟件包管理器和應用程序級軟件包管理器。與系統(tǒng)級軟件包管理器相比,應用級軟件包管理器專注于軟件系統(tǒng)的一小部分,為開發(fā)人員提供所需要的編程語言的各種庫。
通用軟件包管理器
Linux下有:
APT:是Debian及其派生的Linux軟件包管理器。APT可以自動下載,配置,安裝二進制或者源代碼格式的軟件包,因此簡化了Unix系統(tǒng)上管理軟件的過程。APT最早被設計成dpkg的前端,用來處理deb格式的軟件包?,F(xiàn)在經(jīng)過APT-RPM組織修改,APT已經(jīng)可以安裝在支持RPM的系統(tǒng)管理RPM包。
Yum是由Duke University團隊修改Yellow Dog Linux的Yellow Dog Updater開發(fā)而成,是一個基于RPM包管理的字符前端軟件包管理器。能夠從指定的服務器自動下載RPM包并且安裝,可以處理依賴性關(guān)系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。被Yellow Dog Linux本身,以及Fedora、Red Hat Enterprise Linux采用。
dpkg:最初由Debian使用,現(xiàn)在由Ubuntu使用。使用.deb格式,是第一個擁有廣為人知的依賴性解決工具APT。
當然,還有很多,就不一一列舉出來了!
Windows下有:
Chocolatey: 以Yum和apt-get的精神為基礎的Windows開源分散式軟件包管理器。
pacman: MSYS2移植的Windows版本的Arch Linux軟件包管理器。
Scoop:一個用于Windows的命令行安裝程序。
WinGet:(Windows 程序包管理器:Windows Package Manager)是微軟為 win10 開發(fā)的一款開源的軟件包管理器。
MacOS下有:
Mac App Store:OS X應用程序的官方數(shù)字分銷平臺。
Homebrew:MacOS的軟件包管理器,基于Git。
Fink: dpkg的移植,它是最早的macOS的軟件包管理器之一。
應用程序級軟件包管理器
- Cargo:Cargo是Rust的軟件包管理器。
- Conan:一個用于C++的軟件包管理器和庫。
- Conda:一個用于Python和R的開放數(shù)據(jù)科學平臺的軟件包管理器。
- Go:一個多用途的工具,除其他外,用于Go軟件包管理。
- LuaRocks:用于Lua的編程庫和軟件包管理器。
- Maven:Java的軟件包管理器和構(gòu)建工具。
- npm:用于Node.js和JavaScript的編程庫和包管理器。
- pip:Python的軟件包管理器和PyPI編程庫。
- Pkg.jl:一個用于 Julia 的軟件包管理器。
- RubyGems:Ruby的軟件包管理器和資源庫。
- Yarn:Node.js和JavaScript的軟件包管理器。
幾乎都是各大開發(fā)語言的庫管理相關(guān)。
關(guān)注&&聯(lián)系
gitee: https://gitee.com/cmcc-oneos/OneOS-Lite
docs: https://oneos-lite.com/
公眾號:CMCC-OneOS