APT

Debian系Linux系统的包管理器

進階打包工具(英語:Advanced Packaging Tools,縮寫為APT)是Debian及其衍生的Linux軟件包管理器。APT可以自動下載,組態,安裝二進制或者原始碼格式的軟件套件,因此簡化了Unix系統上管理軟件的過程。APT最早被設計成dpkg的前端,用來處理deb格式的軟件包。現在經過APT-RPM組織修改,APT已經可以安裝在支援RPM的系統管理RPM套件。

進階打包工具
apt-get在安裝前要求確認
apt-get在安裝前要求確認
目前版本
  • 2.9.7(2024年7月30日;穩定版本)[1]
編輯維基數據連結
原始碼庫 編輯維基數據連結
程式語言C++
作業系統跨平台
平台Unix類Unix作業系統
類型軟件套件管理系統
許可協定GNU GPL
網站wiki.debian.org/Apt wiki.debian.org/Teams/Apt

構成

APT由以下的幾個主要的命令構成:

  • apt-get
  • apt-cache
  • apt-file

在Debian系統中,APT建構於dpkg之上。

安裝源

APT的軟件安裝來源在Debian安裝的時候即可進行初始設置,除了Debian官方的網絡安裝來源之外,也可以使用Debian的安裝光碟,甚至可以從非官方的安裝來源中下載非官方的軟件。APT同時也可以從一些安裝來源中下載原始碼軟件,並且自行編譯、安裝。

依賴關係處理

APT會從每一個安裝源下載一個軟件包的列表。這個列表中有這個安裝源所包含的可用軟件包的資訊。在可能的情況下,APT會安裝最新的軟件包,被安裝的軟件包所依賴的其他軟件包也會被安裝,建議安裝的軟件包則會在螢幕中顯示但是不會被安裝。不過在有一些情況下APT由於依賴關係不能安裝軟件包,例如:這個軟件包和系統中的其他軟件包衝突,或者這個軟件包依賴的軟件包在任何安裝源中均不存在或沒有要求的版本。在這種情況下,APT會返回錯誤資訊並且中止,用戶需要自行解決依賴問題。

軟件包更新方式

Debian系統的一大特色即為「永不停機」,事實上,APT達到了這一點。在軟件被升級的時候,它仍然可以繼續服務。APT可以智能地從安裝來源下載最新版本的軟件並且安裝,而無須在安裝後重新啟動電腦(除了更新Linux內核之外)。所有的組態都可以得到保留,升級軟件不再是一個棘手的問題。

發行版升級

APT最使人稱道的特點在於可以從一個Debian發行版升級到新的Debian發行版,例如從woody升級到sarge。APT可以升級絕大部分滿足依賴關係的軟件,但是也可能要刪除,或添加新的軟件以滿足依賴關係。

前端

 
Synaptic

APT擁有不少的前端程式:

名稱 運行介面 最新版本
aptitude 字元終端 0.2.15.9-2
Synaptic 圖形介面 0.75.13
GNOME 軟件 圖形介面 0.4.7-1.2
Wajig英語Wajig 相容 2.0.25

範例

搜尋

在終端機裏輸入:

  • apt-cache search <package>

這樣系統會列出與<package>名稱相匹配的套件。

安裝

在終端機裏輸入:

  • apt-get install <package>

這樣系統會自動下載<package>以及所有的依存套件,同時進行套件的安裝。

移除

在終端機裏輸入:

  • apt-get remove [--purge] <package>

這樣系統會自動移除<package>以及任何依此存套件的其它套件。 --purge指明套件應被完全清除。

升級

在終端機裏輸入:

  • apt-get update

這樣系統會自動由對映點更新套件列表,如果想安裝最新套件,必須先運行一次。每次修改了 /etc/apt/sources.list後,也必須執行一次。

在終端機裏輸入:

  • apt-get upgrade [-u]

這樣系統會自動將所有已經安裝在系統內的套件升級為最新版本。如果一個套件改變了依存關係,而需要安裝一個新的套件時,它將不會被升級,而是標識成hold。如果某個套件被設置hold標號,就不會被升級。

在終端機裏輸入:

  • apt-get dist-upgrade [-u]

和apt-get upgrade類似,dist-upgrade會安裝和移除套件來滿足依存關係,因此具有一定的危險性。

彩蛋

在終端輸入apt-get -h會在末尾出現「This APT has super cow power(該APT有着超級牛力)。

在終端輸入apt-get moo會在螢幕上顯示一頭牛,下方顯示「Have you mooed today?」(您今天哞哞叫了嗎?)。

                 (__) 
                 (oo) 
           /------\/ 
          / |    ||   
         *  /\---/\ 
            ~~   ~~   
..."Have you mooed today?"...

與apt-get相似的一個叫做aptitude的程式在aptitude -h的末尾加上了「This aptitude does not have Super Cow Powers.(這個aptitude沒有超級牛力)」。

在後面加上moo(即輸入aptitude moo),並且分別加上選項「-v」,「-vv」,「-vvv」,「-vvvv」,「-vvvvv」,「-vvvvvv」(即輸入aptitude -v moo;輸入aptitude -vv moo;等等),則會有如下輸出:

 $ aptitude moo
 There are no Easter Eggs in this program.(此軟體沒有復活節彩蛋程式。)
 $ aptitude -v moo
 There really are no Easter Eggs in this program.(此軟體真的沒有復活節彩蛋程式。)
 $ aptitude -vv moo
 Didn't I already tell you that there are no Easter Eggs in this program?(我不是已經告訴你這個軟體真的沒有復活節彩蛋程式了嗎?)
 $ aptitude -vvv moo
 Stop it!(停啦!)
 $ aptitude -vvvv moo
 Okay, okay, if I give you an Easter Egg, will you go away?(好啦,好啦,如果我給你復活節彩蛋,你是不是就閃人?)
 $ aptitude -vvvvv moo
 All right, you win.(好啦,你赢了。)
                               /----\
                       -------/      \
                      /               \
                     /
  |-----------------/                  --------\
   ----------------------------------------------
 $ aptitude -vvvvvv moo
 What is it?  It's an elephant being eaten by a snake, of course.(這是什麼? 這當然是一隻大象被一隻蛇吞掉。)

而apt系列的另一個名為"apt-build"的軟件套件也具有相似的功能:

 $ apt-build moo
          (__)    ~
          (oo)   /
      _____\/___/
     /  /\ / /
    ~  /  * /
      / ___/
 *----/\
     /  \
    /   /
   ~    ~
 ..."Have you danced today? Discow!"...
 (意为:今天你跳舞了吗?迪斯可!)

軟件編寫者特地將Disco(迪斯可)一詞改為"Discow",以體現"Cow"(奶牛)之意。

參見

參考文獻

  1. ^ 2.9.7 · Tags · APT Developers / apt · GitLab. 2024年7月30日 [2024年8月4日] (英語). 

外部連結