天天看點

Debian發行版下的包管理(dpkg與apt的差別,PPA)

一、包管理工具

1、包管理工具:linux作業系統下,完成軟體包的安裝、更新和移除。

2、在Debian的linux發行版本下,采用dpkg和apt兩種包管理工具。

3、dpkg與apt工具的差別

dpkg:安裝本地包,不解決依賴關系,不關系倉庫内的軟體。

apt:通過倉庫擷取軟體包資源,解決依賴關系,不能安裝本地包。

差別:dpkg繞過apt包資料庫直接對軟體包操作。是以dpkg安裝過的軟體,可以采用apt工具再次安裝并覆寫dpkg的安裝。

二、dpkg工具

dpkg -i software.deb # 安裝軟體包
dpkg -unpack package.deb  # 解開包
dpkg -L software # 檢視軟體安裝位置
dpkg -l software # 檢視軟體版本資訊,或者
dpkg -l | grep software
dpkg -r software # 移除軟體
           

三、apt工具

1、通過倉庫完成包(軟體,應用程式)的安裝

Debian發行版下的包管理(dpkg與apt的差別,PPA)

2、倉庫:托管可安裝軟體包的公共伺服器,使用者從伺服器擷取軟體并将其安裝至使用者計算機。類似于應用商店。

  1. Ubuntu的四個官方軟體倉庫:Main Canonical 支援的免費和開源軟體,Universe 社群維護的免費和開源軟體,Restricted 裝置的專有驅動,Multiverse 有版權和合法性問題限制的軟體。
  2. 阿裡雲的鏡像:deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
  3. 額外倉庫:一些個人也會為其它開發人員的項目建立 PPA。為什麼有人這麼做呢?主要是因為有的開發人員隻提供軟體源碼,而對很多普通使用者來說,在 Linux 中進行源碼編譯安裝是非常痛苦的事,而通過志願者建立的非官方 PPA,就可以友善使用者對軟體進行輕松安裝和管理了。例如,EPEL 服務于 Red Hat Enterprise Linux 和 CentOS,RPMFusion 服務于 Fedora,Ubuntu 有各種級别的支援以及個人包存檔(PPA),Packman 為 OpenSUSE 提供額外的軟體以及 SlackBuilds.org 為 Slackware 提供社群建構腳本。

3、apt工具工作原理

APT是一個客戶/伺服器系統。在伺服器上先複制所有DEB包(DEB是Debian軟體包格式的檔案擴充名),然後用APT的分析工具(genbasedir)根據每個DEB 包的標頭(Header)資訊對所有的DEB包進行分析,并将該分析結果記錄在一個檔案中,這個檔案稱為DEB 索引清單,APT伺服器的DEB索引清單置于base檔案夾内。一旦APT 伺服器内的DEB有所變動,一定要使用genbasedir産生新的DEB索引清單。用戶端在進行安裝或更新時先要查詢DEB索引清單,進而可以獲知所有具有依賴關系的軟體包,并一同下載下傳到用戶端以便安裝。

當用戶端需要安裝、更新或删除某個軟體包時,用戶端計算機取得DEB索引清單壓縮檔案後,會将其解壓置放于/var/state/apt/lists/,而用戶端使用apt-get install或apt-get upgrade指令的時候,就會将這個檔案夾内的資料和用戶端計算機内的DEB資料庫比對,知道哪些DEB已安裝、未安裝或是可以更新的。

DEB索引清單:所有DEB包標頭分析,DEB包變動産生新的索引清單,便于軟體管理時獲知軟體的依賴關系。

4、包管理工具apt指令

包管理的好處是:快速、實用、高效地管理安裝在機器上的軟體包,進行更新、下載下傳、維護。

sudo apt update # 更新源
sudo apt upgrade # 更新已安裝的包
sudo add-apt-repository # 添加倉庫
apt show package #  擷取包的相關資訊,如說明、大小、版本等
sudo apt install package # 安裝包
sudo apt remove package # 删除包
apt-cache search  # 搜尋包
apt-cache depends  # 了解使用依賴
sudo apt build-dep  # 安裝相關的編譯環境
apt source  # 下載下傳該包的源代碼
sudo apt check  # 檢查是否有損壞的依賴
軟體倉庫不包含軟體包的資訊 E: Unable to locate package
           

5、sources.list檔案:APT資料源清單

  1. 位置:

    /etc/apt/sources.list

    /etc/apt/sources.list.d/

    目錄中帶

    .list

    字尾的檔案
  2. 内容 :deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
  3. 作用:通過編輯這些檔案,我們可以添加、删除、或者臨時關閉某些軟體庫。另外,因為Ubuntu官方源位址不在國内,是以國内通路速度非常慢,采用國内鏡像伺服器以提升通路速度。
  4. 備份:sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

四、PPA(個人包存檔)

1、額外倉庫:開發人員獨有,沒有正式分發認可。

2、ppa:PPA是Personal Package Archives首字母簡寫。翻譯為中文意思是:個人軟體封包檔。

雖然Ubuntu官方軟體倉庫盡可能囊括所有的開源軟體,但仍有很多軟體包由于各種原因不能進入官方軟體倉庫。

為了友善Ubuntu使用者使用,launchpad.net提供了個人軟體包集,即

PPA

,允許使用者建立自己的軟體倉庫,通過Launchpad進行編譯并釋出為2進制軟體包,作為

apt-get源

供其他使用者下載下傳和更新。

在Launchpad網站上的每一個使用者和團隊都可以擁有一個或多個

PPA

。通常

PPA

源裡的軟體是官方源裡沒有的,或者是最新版本的軟體。

PPA也被用來對一些打算進入Ubuntu官方倉庫的軟體,或者某些軟體的新版本進行測試。

3、獨立建立額外倉庫:Ubuntu 提供了一個名為 Launchpad 的平台,讓軟體開發人員能夠建立自己的存儲庫,友善最終使用者将 PPA 存儲庫添加到 sources.list。

4、添加PPA至源清單:

sudo add-apt-repository <PPA_info> 指令可以将 PPA 存儲庫添加到 sources.list 清單中
           

5、PPA的優勢:相對于通過

Deb包

安裝來說,使用

PPA

的好處是,一旦軟體有更新,通過

sudo apt-get upgrade

這樣指令就可以直接更新到新版本。 

繼續閱讀