APT工作原理基本介紹 Debian GNU/Linux 是APT(Advanced Package Tool)的締造者。初衷是利用工具來解決軟件安裝時候的依賴性問題。其工作原理大致為:用戶安裝APT客戶端工具,查尋APT服務器端的資料庫(repositories)上的RPM軟件包信息,並分析軟件包之間的依賴性然後下載並進行安裝。APT 除了可以讓您很方便且快速地安裝 RPM 軟件外,也可以用它來更新系統。雖然APT是基於Debian的軟件包管理工具,但是已經被一個巴西公司Conectiva移植到基於RPM的系統上。因此對於基於RPM軟件包管理的平台,如Red Hat、 TurboLinux、SuSe、Mandrake等Linux發行版本,APT是一個非常優秀的軟件管理工具。
服務器端APT安裝配置 1. 運行APT之前需要確認服務器上Apache 已經可以提供WWW服務,並且 /var 分分區至少還有 5G 的空間。 2. 下載安裝APT套件,接著需要加入freshrpms.net的公共鑰匙GPG-KEY, 然後在/etc/apt下建立一個/gpg文件夾,將GPG-KEY保存在那裡,以便日後管理。 # rpm --import http://FTP.freshrpms.net/pub/freshrpms/RPM-GPG-KEY 3、修改配置文件/etc/apt/sources.list,這是APT服務器上最重要的配置文件,記載了軟件倉庫服務器的地址等信息,這裡只需要把需要升級的版本對應的路徑信息打開,其它版本的路徑信息則可以關閉。 # Red Hat Linux 9.0 rpm http://apt.freshrpms.net redhat/9/en/i386 os updates freshrpms rpm-src http://apt.freshrpms.net redhat/9/en/i386 os updates freshrpms 4.使用APT前的准備 (1)安裝好APT軟件包以後,管理員需要做的第一個工作就是從默認服務器下載軟件包數據庫運行: #apt-get update #apt-get upgrade (2)驗證本地系統的完整性和一致性,判斷本地系統的軟件包依賴性是否一致運行: # apt-get check 如果希望定期升級系統,保證系統及時升級,彌補安全漏洞,只需要apt-get update、apt-get dist-upgrade或apt-get upgrade就可以了。 (3)安裝圖形前端 freshrpms.net站點提供了一個圖形界面的apt-rpm接口Synaptic,使用圖形界面的apt更加方便,可以直接利用apt安裝Synaptic: [root@Linux root]# apt-get install synaptic 在幾行提示之後Synaptic就安裝好了,進入Xwindow,Synaptic會出現在“系統設置”菜單裡面。界面見圖2。
5.主要命令 APT主要有apt-cache、apt-cdrom、apt-config和apt-get四個命令,用戶使用最多的就是apt-get命令。APT常用命令功能見表1。 6.建立放置相關source 的目錄: #mkdir -p /var/ftp/pub/redhathttp://Linux.chinaitlab.com/9/en/os/i386 #mkdir -p /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os 7.制作mirror Red Hat Linux 9 source。 使用CD-ROM光盤復制所需的 .os 的 到RPM 文件目錄: mount /mnt/cdrom cp -rf /mnt/cdrom/* /var/ftp/pub/redhathttp://Linux.chinaitlab.com/9/en/os/i386 umount /mnt/cdrom 依照上面方法,復制第二片、第三片CD-ROM片內的rpm文件。 8.mirror Red Hat Linux 9 updates cd /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os wget -r -nH --cut-dirs=6 ftp://ftp.redhat.com/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/i386/ 9. 建立 apt 的目錄和相關鏈接 mkdir -p /var/ftp/pub/redhat/apt/9/i386 ln -s /var/ftp/pub/redhathttp://Linux.chinaitlab.com/9/en/os/i386/RedHat/RPMS /var/ftp/pub/redhat/apt/9/i386/RPMS.os ln -s /var/ftp/pub/redhathttp://Linux.chinaitlab.com/9/en/os/i386/SRPMS /var/ftp/pub/redhat/apt/9/i386/SRPMS.os ln-s /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/SRPMS /var/ftp/pub/redhat/apt/9/i386/SRPMS.updates 將 Red Hat Linux 9的RPMS、SRPMS目錄和updates的SRPMS目錄建立軟鏈接到/var/ftp/pub/redhat/apt目錄下,命名RPMS.os、SRPMS.os、SRPMS.updates。 10. 建立 RPMS.updates 目錄和產生 rpm相關軟鏈接 mkdir /var/ftp/pub/redhat/apt/9/i386/RPMS.updates cd /var/ftp/pub/redhat/apt/9/i386/RPMS.updates find /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/ -type f ! -name "*.src.rpm" -name "*.rpm" -exec ln -sf {} ; 有些軟件安裝的時候若用的是 i386(或i686),升級的時候也必須要用相同結構的軟件包才可以,否則會出現錯誤,而最常出現錯誤的地方就是升級glibc的時候,所以上面的script就是為了避免發生這樣的錯誤而寫,它會將不同架構的updates rpm全部連結到同一個目錄,這樣apt才有辦法取得適合計算機架構的updates rpm來升級。 11. 使用 genbasedir 指令產生 base 目錄和文件索引清單。 genbasedir --flat --bloat --bz2only /var/ftp/pub/redhat/apt/9/i386 os updates 以上指令列會在 /var/ftp/pub/redhat/apt/9/i386 目錄下建立 base子目錄,然後產生相關的文件索引清單 bz2 壓縮文件和 release文件。 12. 建立鏈接關系 ln -s /var/ftp/pub/redhat /var/www/Html/redhat 只有將ftp和html內的文件建立軟鏈接,才可以用http的方式使用apt服務器。 13. 定期 mirror updates rpm 到此為止Apt服務器已經安裝結束。互聯網上的update套件是隨時在更新的,所以我們的APT服務器上的RPMS.updates目錄也應該要隨時更新。這個時候,我們可以利用映射 (mirror) 的方式來進行更新: rpm -ivh http://mirrordir.sourceforge.net/mirrordir-0.10.49-1.i386.rpm mirrordir v /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/ f tp://ftp.redhat.com/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/i386/ vi /etc/cron.daily/mirrorupdates #! /bin/sh mirrordir ftp://ftp.redhat.com/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/i386/ /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/ rm -rf /var/ftp/pub/redhat/apt/9/i386/RPMS.updates/* cd /var/ftp/pub/redhat/apt/9/i386/RPMS.updates find /var/ftp/pub/redhathttp://Linux.chinaitlab.com/updates/9/en/os/ -type f ! -name "*.src.rpm" -name "*.rpm" -exec ln -sf {} ; genbasedir --flat --bloat --bz2only /var/ftp/pub/redhat/apt/9/i386 os updates 賦予權限: #chmod 755 /etc/cron.daily/mirrorupdates 啟動crond #chkconfig --level 345 crond on 這樣APT服務器就會每天定時去 mirror updates rpm 和產生 rpm 索引清單了。APT服務器目錄結構見圖3。
客戶端Linux計算機設定 1. 首先也要安裝APT套件。如果本地系統一致性被嚴重破壞,則可以使用apt-get-f install命令在使用APT以前手工修復被破壞的依賴性。 2. 重要的是修改 sources.list,vi /etc/apt/sources.list添加一下內容: rpm http://server_ip/redhat/apt/9 i386 os updates rpm-src http://server_ip/redhat/apt/9 i386 os updates 說明:其中server_ip 是APT服務器的IP地址如:192.168.1.9。 os代表Red Hat Linux 9的原始 rpm updates代表Red Hat所出的更新(updates)rpm 3.客戶端定時更新: 首先建立定時器設置文件,文件名稱mytype(名稱自己設定): #crontab -e 文件內容: 15 09 * * * apt-get update;apt-get -y dist-upgrade ;apt-get clean 用vi或其他編輯器存盤退出。 (3)使用crontab命令添加到任務列表中: #crontab -u user1 mytype 這樣Linux客戶端在每天的9點15分會自動進行升級。注意每台Linux客戶端的升級最好相隔10分鐘。避免造成阻塞網絡帶寬。 上面所使用的APT服務器,是用 HTTP的方式在服務,若想要改成FTP 的方式也是可以的,不過必須要先將匿名(anonymous)FTP架設好。使用FTP的方式,可以限制同時登入的人數,作較嚴格的控管,不過FTP方式登錄過程(即使是匿名登入),速度比HTTP方式慢。 以上介紹的APT服務器就像 Microsoft 的補丁機一樣,它可以自動對網絡中的Linux主機打補丁,無論是服務器端還是客戶機都可以自動完成操作。而且 APT 不需注冊,完全免費,更可以安裝非 RedHat 提供的軟件。所以APT能夠在發現軟件包依賴性的同時,自動下載相應的軟件包並加以安裝,使得管理員能毫無故障地執行系統軟件的升級。APT使得零停機時間升級成為現實。 使用Connectiva進行改裝後的Debian的APT軟件包管理工具,它可以對RedHat的RPM格式進行管理。運行一個APT軟件庫(http://apt-rpm.tuxfamily.org/)並不是一件非常困難的事情,它可以為持續的安全升級提供一個非常好的機制。可以定時更新系統軟件,彌補網絡和系統的安全漏洞。所以Linux網管員要經常的關注相關網站的bug fix和升級,及時升級或添加補丁。
表1
命令 描述 apt-get update 更新本地apt-get的本地數據庫,使其與服務器 的pkglist文件同步。在升級以前一般都要執行本命 令實現與服務器的一致。 apt-get check 驗證本地系統的完整性。 apt-get dist-upgrade 安裝所有的基礎軟件包,並升級一切軟件包,並 在需要時安裝新軟件包。 apt-get remove package_name 刪除該軟件包,同時會刪除依賴於它的軟件包。 apt-get install package_name 安裝某個軟件包及其相關軟件包。 apt-get source package_name 下載軟件包的source rpm。 apt-get clean 刪除保存在緩存目錄下(/var/cache/apt/archives) 的被下載的軟件包。 apt-get upgrade package_name 升級指定的軟件包,並升級其依賴的軟件包。 apt-cdrom add 自動mount安裝光盤並建立列表。 apt-cache depends package_name 顯示軟件包的依賴性關系。 apt-cache package_name 在網絡上搜索指定的軟件包 apt-config dump 顯示目前的配置信息。