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日] (英語). 

外部連結