2018年10月27日 星期六

套件管理Package managerment

當安裝某些軟體或程式。在 Windows 環境中,我們要下載可執行安裝程式。

然而,在Linux環境中,通常情況並非如此。這是因為創建者以 .deb 檔案 (Ubuntu) 或 .rpm (OpenSuse) 格式分發他們的套件,其中包含套件包(packages)。

我們通常從套件儲存庫(package repository)存取這些文件。但什麼是套件儲存庫?在本教程中,我們將討論套件儲存庫是什麼、它們的類型以及如何在 Linux 環境中存取和管理它們。

 

什麼是Linux套件包(Linux Packages)?

Linux 以套件包的形式分發其大部分軟體和程式。這些套件包包含在我們的系統上成功安裝和運行軟體所需的所有必要文件和元資料。

常見的Linux軟件包包括.deb,.rpm和.tgz。由於Linux套件包通常不包含安裝所需的依賴關係,許多Linux發行版都使用套件包管理器來自動讀取依賴關係文件,並在繼續安裝之前下載所需的套件包。套件包管理器的一些例子是APT(Ubuntu)和Zypper(OpenSuse)。



什麼是Linux套件儲存庫(Linux  package repository)? 

套件包儲存庫是預編譯套件包的中央儲存位置。將其視為一個存檔,我們可以在其中透過套件管理器存取套件以方便安裝。

套件包儲存庫提供了一種比從原始碼手動編譯軟體更有效的軟體安裝方法。

我們將 Linux 中的套件儲存庫大致分為兩種主要類型:

官方儲存庫:由 Linux 發行版本身管理的儲存庫(OpenSuse、Ubuntu)
第三方儲存庫:提供官方儲存庫中未包含的套件的獨立儲存庫
官方儲存庫通常包含精選的經過良好測試且值得信賴的套件包。

Ubuntu 將官方儲存庫進一步分為四個元件:

Main:包含Ubuntu支援並允許我們自由安裝和重新分發的應用程式
Restricted::包含專有套件和驅動程序,其維護和修改僅限於作者
Universe:包含來自公共來源的開源套件。該套件的維護和更新來自社區
Multiverse:包含非免費套件,需要許可證才能使用和分發


在 Linux 中使用套件儲存庫
我們可以透過套件管理器來存取、管理和修改Linux中的套件儲存庫。每個發行版都包含一個本機套件管理器。

套件管理器(例如 OpenSuse 系統的 zypper,Ubuntu 系統的 apt)充當與儲存庫互動的介面。它們使我們能夠搜尋套件包、安裝它們、更新現有套件以及管理套件依賴。

通常apt 將儲存庫清單儲存在 /etc/apt/sources.list 檔案以及 /etc/apt/sources.list.d/ 目錄中任何副檔名為 .list 的檔案中。我們可以透過編輯這些檔案來新增、刪除和修改套件儲存庫,不過在這樣做之前備份配置是一個很好的做法。


列出套件庫:zypper repos(lr)
# zypper repos, lr 列出所有已定義的儲存庫。
# zypper repos --uri
# zypper refresh

加入套件庫
# zypper ar <URL> <alias>
# zypper ar -f http://repositoryIP/SLES/x86_64 repository_alias
-f (--refresh)加入並且立即更新套件資料庫
-d (--disable) 加入但不使用此repo
-G (--no-gpgcheck) 不檢查gpg key
-p (--priority) 指定一個不為0的整數作為優先權

啟動和取消套件庫Enable and disable an installed repo, without removing it:
# zypper mr -e repo-debug (start)
# zypper mr -d repo-debug (stop)

套件搜尋及安裝: search from repositories and install
# zypper search | grep 套件名稱
# zypper install 套件名稱
(另一種方法 search form "https://software.opensuse.org/find" )

(Ubuntu) #apt install 套件名稱

檢查已安裝套件:search installed packages
# zypper search --installed-only | grep 套件名稱
# zypper search -i | grep 套件名稱

套件更新:
# zypper list-updates, lu 列出可用的更新。
# zypper update, up
# zypper patch-check
# zypper list-patches
# zypper patch 安裝所需的修補程式。

套件移除:
# zypper rm

HELP
# zypper help

restart the processes listed
zypper ps -s


rpm安裝
# rpm -ivh *.rpm
If the conflict was caused by the version of the package.
--force ,same as using --replacepkgs, --replacefiles, and --oldpackage
rpm -ivh *.rpm --force

rpm uninstall
# rpm -qa | grep -i <package>
# rpm -e <package name>