什麼是Linux包管理器,它是如何工作的?
導讀 | 在這篇 黑話解釋中,你將瞭解 Linux 中的打包和包管理器。你將瞭解什麼是包,什麼是包管理器,它們是如何工作的,以及有什麼包管理器。 |
Linux 發行版之間有什麼不同 的要點之一是包管理。在這篇 Linux 黑話解釋中,你將瞭解 Linux 中的打包和包管理器。你將瞭解什麼是包,什麼是包管理器,它們是如何工作的,以及有什麼包管理器。
簡單來說,“ 包管理器(package manager)”(或“軟體包管理器”)是一種工具,它允許使用者在作業系統上安裝、刪除、升級、配置和管理軟體包。軟體包管理器可以是像“軟體中心”這樣的圖形化應用,也可以是像 apt-get 或 pacman 這樣的 行工具。
你會發現我經常在教程和文章中使用“包”這個詞。要了解包管理器,你必須瞭解什麼是包。
一個“ 包(package)”(或“軟體包”)通常指的是一個應用程式,它可以是一個 GUI 應用程式、 行工具或(其他軟體程式需要的)軟體庫。包本質上是一個存檔檔案,包含二進位制可執行檔案、配置檔案,有時還包含依賴關係的資訊。
在舊時代, 軟體曾經是從它的原始碼安裝的 。你會參考一個檔案(通常命名為 README),看看它需要什麼軟體元件、二進位制檔案的位置。它通常包括一個配置 或 Makefile。你必須自己編譯該軟體或自己處理所有的依賴關係(有些軟體需要安裝其他軟體)。
為了擺脫這種複雜性,Linux 發行版建立了自己的打包格式,為終端使用者提供隨時可用的二進位制檔案(預編譯軟體),以便安裝軟體,同時提供一些 後設資料 (版本號、描述)和依賴關係。
這就像烤蛋糕與買蛋糕一樣。
要與打包系統互動或使用打包系統,你需要一個包管理器。
請記住,包管理器是一個通用的概念,它並不是 Linux 獨有的。你會經常發現各種軟體或程式語言的包管理器。有 只是針對 Python 包的 PIP 包管理器 。甚至 Atom 編輯器也有自己的包管理器 。
由於本文的重點是 Linux,所以我會從 Linux 的角度出發。不過,這裡的大部分解釋也可以應用於一般的包管理器。
我建立了這個圖(基於 SUSE Wiki),這樣你就可以很容易理解包管理器是如何工作的。
軟體倉庫也有後設資料檔案,其中包含了軟體包的資訊,如軟體包的名稱、版本號、軟體包的描述和軟體倉庫名稱等。這就是你在 Ubuntu/Debian 中使用 apt show 命令 所看到的。
你的系統上的包管理器首先會與後設資料進行互動。包管理器在你的系統上建立了一個後設資料的本地快取。當你執行包管理器的更新選項(例如 apt update)時,它會透過引用倉庫中的後設資料來更新本地後設資料快取。
當你執行軟體包管理器的安裝命令(例如 apt install package_name)時,軟體包管理器會引用這個快取。如果它在快取中找到了包的資訊,它就會使用網際網路連線到相應的倉庫,並在你的系統上安裝之前先下載包。
一個包可能有依賴關係。意思是說,它可能需要安裝其他軟體包。軟體包管理器通常會處理這些依賴關係,並將其與你正在安裝的軟體包一起自動安裝。
同樣,當你使用包管理器刪除一個包時,它要麼自動刪除,要麼通知你係統有未使用的包可以清理。
除了安裝、刪除這些顯而易見的任務外,你還可以使用包管理器對包進行配置,並根據自己的需要進行管理。例如,你可以在常規的系統更新中 防止升級某個包的版本 。你的包管理器可能還能做很多事情。
包管理器因打包系統而異,但同一打包系統卻可能有多個包管理器。
例如,RPM 有 Yum 和 DNF 包管理器。對於 DEB,你有 apt-get、 aptitude 等基於命令列的包管理器。
軟體包管理器不一定是基於命令列的,也有圖形化的軟體包管理工具,比如 Synaptic 。你的發行版的“軟體中心”也是一個軟體包管理器,即使它在底層執行的是 apt-get 或 DNF。
我不想進一步詳細介紹這個話題,雖然我可以繼續說下去,但這將偏離本主題的目標 —— 即讓你對 Linux 中的包管理器有一個基本的瞭解。
我暫時忽略了新的通用打包格式,比如 Snap 和 Flatpak。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2729662/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在Linux中,什麼是管道?它是如何工作的?Linux
- 在Linux中,什麼是SSH?它是如何工作的?Linux
- 什麼是代理以及它是如何工作的?
- 在Linux中,什麼是負載均衡?它是如何工作的?Linux負載
- 什麼是自然語言分析NLA,它是如何工作的?
- 在Linux中,什麼是虛擬記憶體?它是如何工作的?Linux記憶體
- 什麼是Docker?它是如何解決業務難題的?Docker
- 什麼是工時表軟體 它是如何運作的?
- 在Linux中,什麼是守護程序,它們是如何工作的?Linux
- Linux中什麼是工作目錄?linux cd命令如何使用?Linux
- 飛鳥開發MySQL盤口時搭建的資料流是什麼,以及微盤它是如何工作的?(下)MySql
- 雲同步: 什麼是雲同步以及為什麼它是如此重要?
- 在Linux中,什麼是檔案許可權?它們是如何工作的?Linux
- Linux中什麼是軟體包?如何解除安裝?Linux
- Python中什麼是閉包?閉包的好處是什麼?Python
- 交換機是什麼,它的工作原理是什麼
- 什麼是實時渲染,實時渲染是如何工作的
- 在Linux中,Keepalived的工作原理是什麼?Linux
- 美顏濾鏡sdk是什麼?它是透過什麼技術實現的?
- 藍碳是什麼,為什麼它是應對氣候變化的關鍵?
- ssl/tls是什麼?是怎麼工作的?TLS
- 在Linux中,SELinux工作原理是什麼?如何啟用/禁用?Linux
- 什麼是爬蟲?爬蟲的工作原理是什麼呢爬蟲
- JS 中的閉包是什麼?JS
- [JS]什麼是閉包?JS
- 什麼是閉包陷阱?
- 迴歸基礎:DMAIC,它是什麼以及如何使用它?AI
- Linux管道命令是什麼?如何使用?Linux
- 什麼是去中心化錢包?去中心化錢包是什麼意思?中心化
- web前端的工作方向是什麼?Web前端
- 三、什麼是好工作
- 什麼是工作流
- 什麼是光時域反射儀,OTDR的工作原理是什麼反射
- Linux運維工程師的工作內容是什麼?Linux運維工程師
- linux運維是做什麼工作的?有哪些崗位?Linux運維
- ###什麼是Linux核心###什麼是MMULinux
- 什麼是過時閉包及如何解決過時閉包的坑
- 國科雲:什麼是DHCP?DHCP是怎麼工作的?