APT

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

## 構成

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可以升級絕大部分滿足依賴關係的軟體，但是也可能要刪除，或添加新的軟體以滿足依賴關係。

## 前端

<image>

APT擁有不少的前端程序：

名稱｜運行界面｜最新版本

aptitude｜字符終端｜0.2.15.9-2

Synaptic｜圖形界面｜0.75.13

GNOME 軟體｜圖形界面｜0.4.7-1.2

兼容｜2.0.25

## 示例

### 搜索

在終端機裡輸入：

- `apt-cache search <package>`

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

### 安裝

在終端機裡輸入：

- `apt-get install <package>`

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

### 移除

在終端機裡輸入：

- `apt-get remove [--purge] <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"（奶牛）之意。

## 基本資料

- 日語原文：高級打包工具
- 作業系統：跨平台
- 平台：Unix和類Unix作業系統
- 程式語言：C++
- 類型：軟體包管理系統
- 許可協議：GNU GPL
- 網站： wiki.debian.org/Apt wiki.debian.org/Teams/Apt