Overview of Content
在本文中,我們將深入探討系統 PKMS 的核心概念及其在基於 Debian 系統上的應用
從了解系統 PKMS 的基本概念開始,到探索如何使用 dpkg
查看本地軟件包,以及如何通過 aptitude
進行 GUI 查找、安裝、升級和卸載軟件包。此外,我們還將討論如何設置倉庫來源以及進行手動安裝的步驟,並提供了一個具體的安裝範例:安裝 sysstat。這篇文章將幫助您深入理解系統 PKMS,並提供了實用的指南和示例,使您能夠更好地管理和使用軟件包
這個章節介紹 Linux 的工具套件的安裝,每個 Linux 發行版都有不同的包管理系統(
Package managerment system
, PMS)我個人習慣稱為 PKMS,避免讓我跟 Power manager system 搞混,所以以下都使用 PKMS 簡稱
寫文章分享不易,如有引用參考請詳註出處,如有指導、意見歡迎留言(如果覺得寫得好也請給我一些支持),感謝 😀
個人程式分享時比較注重「縮排」,所以可能不適合手機的排版閱讀,建議切換至「電腦版」、「平板版」視窗看
認識系統 PKMS
每個 Linux 發行版都有不同的包管理系統(Package managerment system, PMS),但他們仍有相同的功能(如下)
● 當前系統已安裝的套件工具
● 每個套件工具個使用了什麼文件
● 每個安裝的套件版本
Linux 透過 PKMS 來取得工具、套件,而 PKMS 又會透過訪問網路來取得工具包,這些工具都由一個倉庫(repository)集成 (概念圖如下)
● 每個發行版的 Linux 它的 PKMS 工具都有很大的差異,而 Linux 中廣泛使用的主要有兩種:1.
dpkg
、2.rpm
工具A.
dpkg
:基於 Debian 的發行版基本上都是使用 dpkg 工具B.
rpm
:基於 RedHat 的發行版基本上都是使用 rpm 工具,該命令是 PKMS 的底層基礎
基於 Debian 系統的 PKMS
dpkg 命令是基於 Debian 系統的 PKMS 工具,相關指令如下
命令 | 簡介 |
---|---|
dpkg | 查看本機軟體包 |
apt-get | 取得包工具的命令 |
apt-cache | 獲取緩存的包 |
apt | 匯聚整合 apt-get、apt-cache 的工具 |
aptitude | 文字介面 UI 管理包 |
查看本機軟體包:dpkg
● dpkg 命令(Debian Package Manager
):
主要是用於安裝、管理和操作本地系統上已經下載的 Debian 軟體包;它通常不用於訪問遠端 repository;
訪問遠端 repository 的話,會透過 apt-get
、apt
的命令來處理與遠端 repository 通訊
● 以下看幾個 dpkg 常用的操作
A. 查看軟體包安裝了哪些文件在你的系統
dpkg -L vim-common
-L
: List files installed to your system from package-name
B. 反向操作,查看某文件是屬於哪個軟體包(該文件內哪個應用、指令使用)
可能一個文件有多個文件共享
dpkg --search /usr/lib/mime/packages
如下圖,查看有哪些指令、應用依賴於 /usr/lib/mime/packages
aptitude 指令:GUI 查找/搜尋/安裝
# 先安裝 aptitude 工具
sudo apt install aptitude
# 啟動文字介面
aptitude
● aptitude
工具是一種交互式介面,可以輕鬆查看當前裝置所安裝的所有軟體包、待升級的軟體包、未安裝... 等等訊息
● 以下有幾個 aptitude
常用命令
功能 | 命令 |
---|---|
查找 | aptitude show <package name> |
搜尋 | aptitude search <package name> |
安裝 | aptitude install <package name> |
A. show
查詢軟體包:如果已經知道你要使用的軟體包,也可以直接查詢相關訊息
## 查看 lvm2 軟體包
aptitude show lvm2
B. search
搜尋相關軟體包:
## 查詢 wine 相關軟體
aptitude search wine
前面的字母代表
p、v
可以安裝,p、i
尚未安裝
C. install
安裝軟體包:(需升級到管理員權限)
## 查詢 wine 相關軟體
sudo aptitude install wine
aptitude 指令:升級/卸載
● aptitude 安裝軟體工具時有不同的依賴關係,隨意升級的話可能會導致系統不穩定;以下列出幾個 aptitude 升級的方式
功能 | 命令 |
---|---|
安全升級 | aptitude safe-upgrade |
不檢查就升級 | aptitude full-upgrade |
sudo aptitude safe-upgrade
● 使用
apt
命令
apt
命令解決了軟體包之間的依賴關係,可以安全的升級sudo apt upgrade
● aptitude 卸載包 命令如下
功能 | 命令 |
---|---|
卸載 | aptitude purge <package name> |
# 解除 wine 應用包
sudo aptitude purge wine
倉庫來源設置
● 我們知道 PKMS 會從遠端倉庫(repository)中取得軟體工具,那就一定會有一個網址來源,這個網址來源就存在 /etc/apt/sources.list
cat /etc/apt//sources.list
如果有要添加倉庫網址那也可以放入
/etc/apt/sources.list
文件中如下圖所示,Ubuntu 22 倉庫如下
每個倉庫資訊出顯示的內容不同,其格式如下:
# repository 格式
# <deb/dev-src> <address> <distribution_name> <package_type_list> [descriptions...]
deb # <deb/dev-src>
http://deb.debian.org/debian # <address>
bulleye # <distribution_name>
main # <package_type_list>
contrib # descriptions
non-free # descriptions
其中一行顯示 deb http://deb.debian.org/debian bullseye main contrib non-free
,而它的描述方式如下表
原數據 | 說明 | 補充 |
---|---|---|
deb | 軟體包類型 | deb (已編譯)、deb-src (尚未編譯的源代碼) |
http://deb.debian.org/debian | 倉庫網址 | Web url |
bullseye | 軟體倉庫發行版的名稱 | bullseye 是 Debian 系統的下一個發行版代號 |
main | 倉庫內工具包的類型 | |
contrib | 額外描述 | contrib 是第三方或是自由軟體 |
non-free | 額外描述 | non-free 代表非自由軟體,有受到一些規範條約限制 |
手動安裝包
在 rpm, dpkg 這些 PKMS 工具出現之前,我們必須自己下載 source code 來編譯並安裝
這些源碼通常打包成 tarball 讓我們使用
安裝範例:安裝 sysstat
● systat 工具:該工具可以用來監看系統上的許多事件 systat 下載連結
## 使用只領下載 tarball wget http://pagesperso-orange.fr/sebastien.godard/sysstat-12.7.2.tar.gz
● 手動安裝步驟如下
A. 解壓縮、進入軟件包目錄
## 解壓縮包
tar -xvf sysstat-12.7.2.tar.gz
cd sysstat-12.7.2/
B. 檢查、編譯:按照文檔所說的步驟去安裝軟體套件
● 不知道如何安裝可以查看
README.md
文件,通常會有教你如何安裝的步驟
## 檢查當前環境是否有缺少啥依賴,如果有缺少則須先安裝
./configure
## 編譯源碼 (最終會產生一個二進制文件)
make
這個步驟結束後通常就可以使用了,不過只有在你進入該資料夾時才可以使用
C. 安裝:透過 make install
就可以將軟體安裝進你常用的目錄之下
sudo make install
更多 Linux Shell 知識
Linux 環境、服務:用戶、權限管理
● Linux 環境、服務、管理:
在這個主題中,你可以探索各種 Linux 環境、服務和管理相關的重要概念…
● 了解 Linux 組成:內核責任、GNU 工具、桌面環境 | 基礎版到發行版
在這裡,你將了解 Linux 系統的基本組成部分,包括內核、GNU 工具和桌面環境,並了解不同 Linux 發行版之間的差異
● 探索 X Window 服務與桌面環境:Linux 視窗 XWindow 服務、D-Bus 機制
這裡探討了 Linux 系統中 X Window 服務和 D-Bus 機制的工作原理,讓你深入了解桌面環境的背後運作方式
● Linux 系統管理入門:安全性、用戶管理與權限設定指南
在這個指南中,你將學習如何管理 Linux 系統,包括安全性、用戶管理和權限設定,以確保系統的安全和有效運作
● 認識身份驗證與權限管理:UNIX UID、使用者驗證與 PAM | PAM 設定
這裡介紹了 UNIX 系統中的身份驗證機制和權限管理方式,包括 UNIX UID、使用者驗證和 PAM(
Pluggable Authentication Modules
)設定
Linux Shell 相關知識
● Linux Shell 相關知識:
這個主題涵蓋了各種與 Linux Shell 相關的知識,從基礎到進階都有…
● Shell 基礎知識:包括 Shell 的基礎使用以及差異,還有變數以及計算
● 認識命令行:Shell 類型、命令差異 | Sub Shell 關係 | Builtin 命令
這裡介紹了命令行中不同類型的 Shell,以及各種 Shell 命令之間的區別和內建命令的用法
● Shell 全局及區域變數、特殊變數及環境變數 | Shell 啟動順序 | Array 變數
學習如何在 Shell 中使用全局變數、特殊變數和環境變數,以及如何設置和管理這些變數
● 探索腳本與命令:Shell 腳本的必備相關知識 | 腳本的數學運算
這裡介紹了 Shell 腳本的基本知識和常用技巧,包括如何執行腳本和進行數學運算
● Shell 結構化
● Shell 腳本程式中的條件語句和高級特性 | Shell 結構化 & 判斷
該篇文章是介紹結構化腳本的基礎以及特殊的高級技巧,轉著於腳本中的邏輯判斷
● 掌握 Bash 腳本中的迴圈與循環控制技巧 | Shell 結構化 & 循環
接著是腳本中的循環與控制的技巧,它可以讓我們在 Shell 腳本中有更多的判斷與技巧
● 探索 Shell 函數與腳本庫 | Shell 結構化 & 函數
這裡你將會學在到結構化腳本的重要技巧「函數」,它可以讓你建立可重複利用的腳本,以節省我們之後開發的時間
● Shell 掌握參數處理與用戶輸入技巧 | Shell 結構化 &輸入互動
不可互動的腳本有時候相對無趣,這篇文章有分享如何讓腳本與使用者產生交互互動,並依照使用者輸入的參數做讀取
● Shell script 進階
● Shell 命令輸入與輸出指南:掌握標準文件描述符與重定向 | 臨時文件
掌控 Shell、指令的輸出輸入是成為進階使用 CLI 之人必經的一課,透過這篇文章可以了解到輸出輸入、臨時文件等等資訊
● 探索 Linux 訊號與後台進程管理:安排定期啟動腳本 | 運行時啟動腳本
信號可以算是 Shell 腳本與 Linux 系統之間的通訊方式,透過這個文章,我們可以了解到信號與 Shell 腳本的安排時間
Linux 硬體規劃:檔案系統、分區
● Linux 硬體規劃:檔案系統、分區:
最後,這個主題涵蓋了 Linux 系統中硬體結構相關的重要概念…
● Shell 文件和目錄操作的常用命令和技巧 | 尋找檔案
這裡介紹了 Shell 中常用的文件和目錄操作命令,包括如何尋找文件和管理文件系統
● 深入探索 Linux 文件系統與硬體管理 | 分區、檔案系統、邏輯卷 | inode
學習如何管理 Linux 文件系統,包括分區、文件系統和邏輯卷等相關概念,以及文件系統中的 inode 機制
● 理解 Unix/Linux 設備偵測、建立 | 認識與使用 udevd | SCSI 與 Linux 核心
這裡介紹了 Unix/Linux 系統中的設備偵測和管理,包括如何使用 udevd 和 SCSI 相關的 Linux 核心知識