像Linux一樣安裝軟體(2):包管理器一鍋燉

什麼是包管理器?

簡單來說,包管理器

package manager

是一種工具,它允許使用者在作業系統上安裝、刪除、升級、配置和管理軟體包。

軟體包管理器可以是像“軟體中心”這樣的圖形化應用,也可以是像

apt-get

winget

這樣的命令列工具。

包管理器是一個通用的概念,它並不是

Linux

獨有的。你會經常發現各種軟體或程式語言的包管理器。有隻是針對

Python

包的

PIP

包管理器。甚至

Atom

編輯器也有自己的包管理器。

什麼是包?

一個包

package

通常指的是一個應用程式,它可以是一個 GUI 應用程式、命令列工具或(其他軟體程式需要的)軟體庫。包本質上是一個存檔檔案,包含二進位制可執行檔案、配置檔案,有時還包含依賴關係的資訊。

在舊時代,軟體曾經是從它的原始碼安裝的。你會參考一個檔案(通常命名為

README

),看看它需要什麼軟體元件、二進位制檔案的位置。它通常包括一個配置指令碼或

Makefile

。你必須自己編譯該軟體或自己處理所有的依賴關係(有些軟體需要安裝其他軟體)。

為了擺脫這種複雜性,Linux 發行版建立了自己的打包格式,為終端使用者提供隨時可用的二進位制檔案(預編譯軟體),以便安裝軟體,同時提供一些元資料(版本號、描述)和依賴關係。

這就像烤蛋糕與買蛋糕一樣。

什麼是打包系統?

大約在上世紀 90 年代中期,Debian 建立了 DEB 打包格式(。deb),Red Hat Linux 建立了 RPM(Red Hat Package Manager 的縮寫)打包系統(。rpm)。編譯原始碼的方式仍然存在,但現在是可選的。

打包系統就是所有相同打包格式的集合倉庫,要與打包系統互動或使用打包系統,你需要一個包管理器來拉取下載打包系統中的包,也就是我們常說的軟體。

每個打包系統都有一個或者多個包管理工具。

包管理器有哪些?

包管理器分為:通用軟體包管理器和應用程式級軟體包管理器。與系統級軟體包管理器相比,應用級軟體包管理器專注於軟體系統的一小部分,為開發人員提供所需要的程式語言的各種庫。

通用軟體包管理器

Linux下有:

APT:是Debian及其派生的Linux軟體包管理器。APT可以自動下載,配置,安裝二進位制或者原始碼格式的軟體包,因此簡化了Unix系統上管理軟體的過程。APT最早被設計成dpkg的前端,用來處理deb格式的軟體包。現在經過APT-RPM組織修改,APT已經可以安裝在支援RPM的系統管理RPM包。

Yum是由Duke University團隊修改Yellow Dog Linux的Yellow Dog Updater開發而成,是一個基於RPM包管理的字元前端軟體包管理器。能夠從指定的伺服器自動下載RPM包並且安裝,可以處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。被Yellow Dog Linux本身,以及Fedora、Red Hat Enterprise Linux採用。

dpkg:最初由Debian使用,現在由Ubuntu使用。使用。deb格式,是第一個擁有廣為人知的依賴性解決工具APT。

當然,還有很多,就不一一列舉出來了!

Windows下有:

Chocolatey: 以Yum和apt-get的精神為基礎的Windows開源分散式軟體包管理器。

pacman: MSYS2移植的Windows版本的Arch Linux軟體包管理器。

Scoop:一個用於Windows的命令列安裝程式。

WinGet:(Windows 程式包管理器:Windows Package Manager)是微軟為 win10 開發的一款開源的軟體包管理器。

MacOS下有:

Mac App Store:OS X應用程式的官方數字分銷平臺。

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的軟體包管理器。

幾乎都是各大開發語言的庫管理相關。

關注&&聯絡

gitee: https://gitee。com/cmcc-oneos/OneOS-Lite

docs: https://oneos-lite。com/

公眾號:CMCC-OneOS