2009-07-15 20:26:07Poky

長篇測試

APT 的安裝、使用

 

 

Since 2003-12-18 by 楊錦昌


前言

    您使用什麼方法在管理你的 RPM,從光碟片安裝,從網路下載安裝、還是使用 Red Hat 的 up2date(Red Hat Network)在維護,這些都是解決問題的方法,可是你可以有更好的選擇 -- APT

APT 的安裝、使用

1-1. 什麼是 APT

    APT(Advanced Package Tool)是 Debian GNU/Linux 用來管理套件的工具,Conectiva 這家巴西的 Linux 套件公司將它移植到使用 RPM 系統的 Linux 套件上,所以現在我們才可以在 Red Hat Linux(或 Fedora) 上使用 APT 來管理我們的 RPM

1-2. APT 能做什麼

    我們可以用 APT 來管理我們的 RPM ,不管是安裝、移除、或是升級,APT 都做的到,可是我們選用 APT 最大的理由是:它能夠自動處理 RPM 相依性的問題,例如:當我們要安裝 A rpm,而 A rpm 和 B rpm 又有相依關係的時候,傳統作法是先下載 B rpm 安裝之後,再下載 A rpm 安裝之;可是我們若有安裝 APT,則只要下一行「apt-get install A」指令就可以了,這樣 APT 就會幫我們下載 A rpm,且會自動下載相依性檔案(B rpm)幫我們安裝,如此一來我們對於 RPM 的安裝、移除、或是升級都可以不用去管煩人的相依性問題了

1-3. APT 簡易運作原理

    我們的機器安裝了 APT 套件之後就成了 APT 的使用者端,當我們在安裝、升級 RPM 的時候,事實上,都是透過網路連到遠端的 APT 伺服器去下載 RPM 回來安裝的,APT 伺服器我們是可以自己指定的,而 APT 使用者端也可以同時成為 APT 伺服器

     

    當我們安裝了 APT套件之後就會有 apt-get 指令,下 apt-get update 指令的時候會同步使用者端和 APT 伺服器的 RPM 索引清單(package list),APT 伺服器的 RPM 索引清單置於 base 資料夾內,使用者端電腦取得 base 資料夾內的 bz2 RPM 索引清單壓縮檔後,會將其解壓置放於 /var/state/apt/lists/,而當使用者使用 apt-get installapt-get dist-upgrade 指令的時候,就會將這個資料夾內的資料和使用者端電腦內的 RPM 資料庫比對,如此一來就可以知道那些 RPM 已安裝、未安裝、或是可以升級的,然後 APT 就會自動透過網路下載需要的 rpm 回來安裝了

1-4. 安裝 Fedora Core 2、Fedora Core 1、freshrpms 的 GPG KEY :

    rpm --import /usr/share/doc/fedora-release-2/RPM-GPG-KEY

    rpm --import /usr/share/doc/fedora-release-1/RPM-GPG-KEY

    rpm --import ftp://apt.nc.hcc.edu.tw/pub/freshrpms/RPM-GPG-KEY

     

    註:

    裝了 Fedora Core2、Fedora Core 1、freshrpms 的 GPG key 之後,在安裝他們維護的 rpm 的時候才不會出現警告訊息,若不在乎這些訊息,沒有安裝也是沒有關係的

1-5. APT 的安裝

1-6. 修改 APT 伺服器來源

    freshrpms 維護的 apt rpm 預設的 APT 伺服器是 http://ayo.freshrpms.net,遠在國外,速度較慢,底下將其改為 新竹縣教育研究發展暨網路中心 維護的 APT 伺服器

     

    vi /etc/apt/sources.list

    #rpm http://ayo.freshrpms.net fedora/linux/1/i386 core updates freshrpms

    ↑找到這一行在最前面加上 # 註解符號,然後加入適合您的系統版本的 apt 伺服器來源設定

     

    for Fecora Core 2

    rpm ftp://apt.nc.hcc.edu.tw/pub/apt/fedora/linux/2 i386 os updates freshrpms firefly extra

     

    for Fecora Core 1

    rpm ftp://apt.nc.hcc.edu.tw/pub/apt/fedora/linux/1 i386 os updates freshrpms firefly extra

     

    for Red Hat linux 9

    rpm ftp://apt.nc.hcc.edu.tw/pub/apt/redhat/9 i386 os updates freshrpms firefly extra

     

    注意:若您是按照上面網址線上安裝 for  Fedora Core 2、Fedora Core 1 的 apt rpm 的話,就不用修改 sources.list 了,因為 apt-0.5.15cnc3-0.1.hcc.i386.rpm 的 sources.list 已經修改過了。

1-7. APT 的使用 -- 底下列出幾個常用的指令

    apt-get update

    更新:這指令是用來取得記錄在 /etc/apt/sources.list 內的遠端伺服器的套件檔案清單, 在使用 「apt-get dist-upgrade」指令升級套件前,一定要記得先用這指令將套件檔案清單更新

     

    apt-get dist-upgrade

    升級:這裡的升級,並不是指由 Red Hat Linux 8.0 變成 9 這樣的升級,而是當 Red Hat 有出升級的 rpm 的時候,我們就可以透過這個指令,升級我們已經安裝的 rpm

     

    Fedora Core 2 有出那些升級套件,由此網站可以得知:http://download.fedora.redhat.com/pub/fedora/linux/core/updates/2/i386/

    Fedora Core 1 有出那些升級套件,由此網站可以得知:http://download.fedora.redhat.com/pub/fedora/linux/core/updates/1/i386/

    Red Hat Linux 9 有出那些升級套件,由此網站可以得知:https://rhn.redhat.com/errata/rh9-errata.html

     

    註:

    APT 源自 Debian GNU/Linux,Debian 在同一個版本編號下,依套件成熟度又分 stable、testing、unstable。若我們現在用的是 Debina 3.0r2 stable,使用 apt-get upgrade 就可以升級 for stable 的軟體,而使用 apt-get dist-upgrade 則可以選擇將系統由 stable 升級到 testing 或是 unstable,可是在 Red Hat linux 中並沒有這樣分,所以,使用 apt-get upgrade 和 apt-get dist-upgrade 的結果,基本上是一樣的,不過 apt-get dist-upgrade 在升級的同時會為了解決相依性而安裝套件,而 apt-get upgrade 並不會,因此要升級的話,建議還是用 apt-get dist-upgrade 較佳

     

    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 也會一併移除

     

    以上這幾個指令應該就夠用了,若想要得到更進一步的指令,請善用 man:)

1-8. 定期更新:

    vi /etc/cron.daily/upgrade

     

    #!/bin/sh

    apt-get update

    apt-get -y dist-upgrade

    apt-get clean

     

    chmod 755 /etc/cron.daily/upgrade

     

    啟動 crond:chkconfig crond on

     

    這樣電腦就會每天定時 upgrade了(要結束前請執行 /etc/cron.daily/upgrade,檢查看看有沒有錯誤)


FAQ

    1.如何為 apt 設定 proxy?

    答:vi /etc/apt/apt.conf
    找到

    Proxy ""; // http://user:pass@host:port/

    加進你可用的 proxy,底下是以 交通大學 的 proxy 為範例

    Proxy "http://proxy.nctu.edu.tw:3128"; // http://user:pass@host:port/

     

    2.如何讓 apt 自動升級 kernel,不需要用手動升級?

    答: vi /etc/apt/apt.conf

    找到這一行

    Allow-Duplicated { "^kernel$"; "^kernel-"; "^kmodule-"; "^gpg-pubkey$" };

    刪掉紅字部分即可

     

    3.X Window 相關

    Mozilla 如何看 flash:apt-get install flash-plugin

    XMMS 如何聽 MP3:apt-get install xmms-mp3

    apt 的圖形介面:apt-get install synaptic

    影音相關:apt-get install mplayer xine totem

     

    4.使用 apt 將 Red Hat Linux 9 升級到 Fedora Core 1

    不負責任聲明:此操作過程,完全針對本人的軟硬體環境,請仔細評估操作所需承擔的風險,若因操作造成任何損失,本人概不負責:P

     

    1.安裝 for RHL9 的 apt

    rpm -ivh ftp://apt.nc.hcc.edu.tw/pub/freshrpms/redhat/9/apt/apt-0.5.5cnc6-fr1.i386.rpm

     

    2.修改 apt 伺服器來源

    vi /etc/apt/sources.list

    rpm ftp://apt.nc.hcc.edu.tw/pub/apt/fedora/linux/1 i386 os updates freshrpms firefly extra

     

    3.升級

    apt-get update;apt-get -y dist-upgrade;apt-get install fedora-release;apt-get clean;reboot

    過程要是順利的話,升級完會自動重新開機,就可以看到 Fedora Core 1 的登入畫面了

     

    註:

    1.中間若出現套件重複安裝的訊息,請先移除較小版本的套件,然後再執行上面的步驟

    2.升級的 RHL9 是採用最小安裝,只安裝 apache、sendmail、vsftpd 等伺服器,升級過程需下載一百多個套件,共一百多MB(詳細數字忘了:P)

    3.RHL8 「應該」也可以這樣升級,RHL7.3以下版本(含RHL7.3)因為套件差異甚大,不建議用這種方式升級,還是用光碟片升級較保險