# APT（Advenced Package Tool）

> 

Published: 2005-01-27
URL: https://kaochenlong.com/apt-advenced-package-tool

---

APT（Advenced Package Tool），是 Linux 用來管理套件的工具，透過 APT 可以更有效率的管理 RPM，不管是安裝、移除、或是升級都很方便。然而 APT 最大的優點，是可以自動處理 RPM 相依性的問題，例如當安裝 A rpm，而 A rpm 和 B rpm 又有相依性的時候，原本作法是先下載 B rpm 安裝後，再下載 A rpm 安裝；利用 APT 則只需要「apt-get install A」就完成了，這樣 APT 就會幫我們下載 A rpm，而且會自動下載相依性檔案（B rpm）幫我們安裝，這樣對 RPM 的安裝、移除、或是升級都可以不用去管煩人的相依性問題了。

&lt;!-- more --&gt;

## 安裝：

### Step 1 安裝 apt：

    $ rpm -ivh ftp://apt.nc.hcc.edu.tw/pub/freshrpms/redhat/9/apt/apt-0.5.5cnc6-fr1.i386.rpm

### Step 2 修改設定：

    $ vi /etc/apt/sources.list

因為原本預設的 apt source 是連到國外，速度比較慢。

    $ rpm http://ayo.freshrpms.net/ fedora/linux/1/i386 core updates freshrpms

可以改成新竹縣教育研究發展暨網路中心維護的 APT Server：

    $ rpm ftp://apt.nc.hcc.edu.tw/pub/apt/redhat/9 i386 os updates freshrpms firefly extra

## 使用說明：

    $ apt-get update

更新：這是用來取得記錄在 `/etc/apt/sources.list` 內的 apt 伺服器的套件檔案清單，在使用 `apt-get dist-upgrade` 指令升級套件前，要記得先用這指令將套件檔案清單更新。

執行 `apt-get update` 指令的時候會同步 client 端和 APT 伺服器的 RPM 索引清單（package list)，APT 伺服器的 RPM 索引清單置於 base 資料夾內，使用者端電腦取得 base 資料夾內的 bz2 RPM 索引清單壓縮檔後，會將其解壓置放於 `/var/state/apt/lists/`。

    $ apt-get dist-upgrade

升級：這裡的升級，並不是由 Red Hat Linux 8.0 變成 9 這樣的升級，而是當 Red Hat 有出升級的 rpm 的時候，利用這個指令，升級我們已經安裝的 rpm；加上 `-y` 參數可自動回答 yes 直接安裝。

當使用者用 apt-get install 或 apt-get dist-upgrade 指令的時候，就會將 /var/state/apt/lists/ 資料夾內的資料和使用者端電腦內的 RPM 資料庫比對，如此一來就可以知道那些 RPM 已安裝、未安裝、或是可以升級的，然後 APT 就會自動透過網路下載需要的 rpm 回來安裝了。

    $ apt-cache search

搜尋：用這個指令可以搜尋 rpm，例如：`apt-cache search httpd`，這樣檔名內有 httpd 字眼的 rpm 都會出現了。

    $ apt-cache depends

相依性：利用這個指令來看到某個 rpm 的所有相依性檔案，例如：`apt-cache depends httpd`，這樣 httpd 的所有相依性檔案就會出現了，有時候不確定某個相依性檔案是屬於那個 rpm 時，這個指令就很有用。

    $ apt-get install

安裝：當我們知道 rpm 名稱的時候，就可以用這指令安裝套件，例如：`apt-get install httpd`，這樣 apt 就會自動下載 httpd 的 rpm 回來安裝，若 httpd 有相依性套件的時候，apt 也會自動下載安裝。

    $ apt-get clean

清除：當使用 apt-get install 指令安裝套件，下載下來的 rpm 會放置於 /var/cache/apt/archives，使用`apt-get clean`指令可以將之清除，避免佔用硬碟空間。

    $ apt-get remove

移除：如果要移除某個 rpm 的時候就可以使用此指令，例如：`apt-get remove httpd`，就會移除 httpd 了，假如這個 rpm 有相依性套件的時候，apt 也會一併移除。

另外，把 apt 寫成 script 排入每天的排程工作（/etc/cron.daily），就可以每天自動比對更新了：

    #!/bin/sh
    apt-get update
    apt-get -y dist-upgrade
    apt-get clean

### 參考網址：

http://apt.nc.hcc.edu.tw/web/apt/apt.html

