[土哥原创]在Redhat Linux中使用apt取代up2date来更新你的系统!

 

问题:

    当前我们各主机都是用REDHAT LINUX,原先如果要更新RPM包时以及时的为系统中使用的一些软件打上补丁或者使用新功能,以增强系统的安全性,我们现在都是使用REDHAT公司提供的UP2DATE程序,但你必须得到REDHAT公司网站去注册帐号,以及填写相关资料,并且要定时到他们网站去看,否则将不让你up2date,因此给我们更新RPM包带来了许多不便,用了Debian之后,发现在Debian 中的软件包更新非常方便(使用up2date),令人爱不释手!并且上次在网站上有听说,rpm也可以用atp了,因此,今天用google搜索一下,发现真有其事,并找到了atp的主站,并将pt.cjcht.com,以及和sunroll.com安装atp,然后使用apt-get update后,再使用apt-get upgrade,将所有未更新的软件包更新到最新,现简要的操作说一下,与大家共享!


其实你如果有使用Debian的话,我想也不必说了太多,如果你没用过Debian的话,没关系,你看完我给你的资料后,我想也很简单!


apt介绍及文章资料:

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


atp主站:  http://freshrpms.net/

atp介绍:  http://freshrpms.net/apt/

下载APT在各种LINUX发行版的主页: http://apt.freshrpms.net/

其实要使用atp,不外乎是要安装一下apt的包,你到apt的主站上下载apt的包就可以了:
我们pt.cjcht.com和sunroll.com上是安装Redhat Linux 7.3因此你到apt主页上Download相应的RPM包,并安装之,我下载的是:
apt-0.5.5cnc5-fr0.rh73.2.i386.rpm 和 apt-devel-0.5.5cnc5-fr0.rh73.2.i386.rpm(不是必需的)

然使用里面的atp-get apt-cache等命令去更新的或其它的动作,我就不说了,附档的资料里已经说的非常清楚,你再使用man,将会更清楚,atp server就没去弄了,我们做server没有什么意义!

看一下附档以及上面的atp主站的资料就很快速的掌apt了。


祖彬



使用 APT 管理 Red Hat Linux RPM

 

 

Since 2003-05-31 by 楊錦昌


前言

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

     

    此文件包含兩個章節,第一節:APT 的安裝、使用,第二節:APT伺服器架設

    (註:所有操作皆是在 Red Hat Linux 9 下完成)

第一節 APT 的安裝、使用

1-1. 什麼是 APT

  • APT(Advanced Package Tool)是 Debian GNU/Linux 用來管理套件的工具,Conectiva 這家巴西的 Linux 套件公司將它移植到使用 RPM 系統的 Linux 套件上,所以現在我們才可以在 Red Hat Linux 上使用 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 update 指令會同步使用者端和 APT 伺服器的 RPM 索引清單(package list),APT 伺服器的 RPM 索引清單置於 base 資料夾內,使用者端電腦取得 base 資料夾內的 bz2 RPM 索引清單壓縮檔後,會將其解壓置放於 /var/state/apt/lists/,而使用者使用 apt-get installapt-get dist-upgrade 指令的時候,就會將這個資料夾內的資料和使用者端電腦內的 RPM 資料庫比對,如此一來就可以知道那些 RPM 已安裝、未安裝、或是可以升級的。

1-4. APT 的安裝

1-5. 安裝 Red Hat Linux、freshrpms 的 GPG KEY :

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

  • apt-get update

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

     

    apt-get dist-upgrade

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

     

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

     

    註:

    APT 源自 Debian GNU/Linux,Debian 在同一個版本編號下,依軟體成熟度又分 stable testing unstable。若我們現在用的是 Debina 3.0r1 stable,使用 apt-get upgrade 就可以升級 for stable 的軟體,而使用 apt-get dist-upgrade 則可以選擇將系統由 stable 升級到 testing 或是 unstable,可是在 Red Hat linux 中並沒有這樣分,所以,使用 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-7. 定期更新:

  • 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 --level 345 crond on

     

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

     

    假如想要直接使用 freshrpms 網站來當作自己的 APT server 來源,沒有要自己架設伺服器,下面就不用看了:)

     


第二節 架設 APT 伺服器

注意:在進行下面操作前請先確認自己的 apache 已經在正常運做,且 /var 分割區下至少還有 5G 的空間

2-1. 為什麼要架設 APT 伺服器

  • 當我們安裝 freshrpms 的 apt,安裝、升級都是透過網路連線到 freshrpms 網站下載檔案。若只維護一台伺服器,還好,可是若有十台伺服器,就需要花原本十倍的時間和頻寬來做同樣的事情,再加上若和國外的連線頻寬不充裕,這要如何是好,所以當有多台伺服器要維護的時候,架設一台 APT 伺服器,似乎是不錯的選擇。

2-2. 安裝 apt:

2-3. 建置放置 Red Hat Linux 9 相關 source 的資料夾

  • mkdir -p /var/ftp/pub/redhat/linux/9/en/os/i386

    #建立放置 Red Hat Linux 9 的資料夾

     

    mkdir -p /var/ftp/pub/redhat/linux/updates/9/en/os

    #建立放置 Red Hat Linux 9 updates 的資料夾

2-4. mirror Red Hat Linux 9 source

(底下提供三種方法,請依自己狀況挑選一種方法執行)

  •  

    方法一:從光碟片複製(當手上有 Red Hat Linux 9 光碟片的時候可以用這個方法)

    • mount /mnt/cdrom

      cp -rf /mnt/cdrom/* /var/ftp/pub/redhat/linux/9/en/os/i386

      umount /mnt/cdrom

      依照上面方法,複製第二片、第三片光碟片內的 rpm

     

    方法二:從 iso 檔複製(當電腦內有 Red Hat Linux 9 iso 檔的時候可以用這個方法用)

    • mkdir /mnt/iso

       

      mount -o loop shrike-i386-disc1.iso /mnt/iso

      cp -rf /mnt/iso/* /var/ftp/pub/redhat/linux/9/en/os/i386

      umount /mnt/iso

       

      mount -o loop shrike-i386-disc2.iso /mnt/iso

      cp -rf /mnt/iso/* /var/ftp/pub/redhat/linux/9/en/os/i386

      umount /mnt/iso

       

      mount -o loop shrike-i386-disc3.iso /mnt/iso

      cp -rf /mnt/iso/* /var/ftp/pub/redhat/linux/9/en/os/i386

      umount /mnt/iso

     

    方法三:直接從中研院下載(當手頭沒有光碟片,且電腦內也沒有 iso 檔的時候可以用這個方法)

    • cd /var/ftp/pub/redhat/linux/9/en/os/i386

      wget -r -nH --cut-dirs=6 ftp://linux.sinica.edu.tw/pub1/redhat/redhat-9/en/os/i386/

      (包含 SRPMS,約 3.5 G,若網路頻寬不高,會花很久時間,請耐心等候:P)

2-5. mirror Red Hat Linux 9 updates

  • cd /var/ftp/pub/redhat/linux/updates/9/en/os

    wget -r -nH --cut-dirs=6 ftp://linux.sinica.edu.tw/pub1/redhat/updates/9/en/os/

    (2003.11.01 止約 600 MB)  

2-6. 建立 apt 的資料夾

  • mkdir -p /var/ftp/pub/redhat/apt/9/i386

2-7. 建立連結

  • ln -s /var/ftp/pub/redhat/linux/9/en/os/i386/RedHat/RPMS /var/ftp/pub/redhat/apt/9/i386/RPMS.os

    ln -s /var/ftp/pub/redhat/linux/9/en/os/i386/SRPMS /var/ftp/pub/redhat/apt/9/i386/SRPMS.os

    ln -s /var/ftp/pub/redhat/linux/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

2-8. 建立 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/redhat/linux/updates/9/en/os/ -type f  ! -name "*.src.rpm" -name "*.rpm"  -exec ln -sf {} /;

     

    #使用 find 指令搜尋 updates 資料夾下副檔名為 rpm 的檔案,然後做連結

    #有些檔案安裝的時候若用的是 i386(或i686)的檔案,升級的時候也必須要用相同架構的檔案才可以,否則會出現錯誤,而最常出現錯誤的地方就是升級 glibc 的時候,所以上面的 script 就是為了避免發生這樣的錯誤而寫,他會將不同架構的 updates rpm 全部連結到同一個資料夾內,這樣 apt 才有辦法取得適合機器架構的 updates rpm 來升級套件

2-9. 使用 genbasedir 指令產生 base 資料夾和檔案索引清單

  • genbasedir --flat --bloat --bz2only /var/ftp/pub/redhat/apt/9/i386 os updates

     

    • 執行過程:(過程會有點久,請耐心等候)

      Creating base directory... done

      Components: os updates

      Processing pkglists... os updates [done]

      Processing srclists... [done]

      Creating component releases... os updates [done]

      Creating global release file... [done]

      Appending MD5Sum... os updates [done]

      All your base are belong to us!!!

     

    註:

    要有安裝 atp 套件,才會有 genbasedir 指令,以上指令列會在 /var/ftp/pub/redhat/apt/9/i386 資料夾下建立 base 資料夾,然後產生相關的檔案索引清單 bz2 壓縮檔和 release 檔

     

    註:

    以後只要 /var/ftp/pub/redhat/linux/updates/9/en/os/  資料夾內的 rpm 有更動過,就需要執行這個指令,以產生新的檔案索引清單

2-10. 建立連結

  • ln -s /var/ftp/pub/redhat /var/www/html/redhat

    #將 ftp 和 html 內的資料連結,這樣才可以用 http 的方式使用 apt server

2-11. 修改 /etc/httpd/conf/httpd.conf

  • vi /etc/httpd/conf/httpd.conf  在最後面加上這一段

     

    <Directory "/var/www/html/redhat">

    Options Indexes FollowSymLinks MultiViews

    </Directory>

     

    重新啟動 httpd:service httpd restart

     

    註:

    要不要修改 httpd.conf 隨你,並不會影響 APT server 的功能,只是修改過後,從網頁就可以看到 RPM 的情形

2-12. 定期 mirror updates rpm

  • 安裝 mirrordir:

     

     

    定期 mirror:

    • vi /etc/cron.daily/mirrorupdates

       

      #! /bin/sh

      mirrordir ftp://linux.sinica.edu.tw/redhat/updates/9/en/os/ /var/ftp/pub/redhat/linux/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/redhat/linux/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

  •  

    • 這樣伺服器就會每天定時去 mirror updates rpm 和產生 rpm 索引清單了

      (要結束前請執行/etc/cron.daily/mirrorupdates,檢查看看有沒有錯誤)

2-13. client 端電腦的設定、操作

  • 安裝 apt:

     

     

    修改 sources.list:

    • vi /etc/apt/sources.list

       

      # Red Hat Linux 9

      rpm http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms

      rpm-src http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms

    •  

      修改成這樣

       

      # Red Hat Linux 9

      #rpm http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms

      #rpm-src http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms

      rpm http://YOUR_IP/redhat/apt/9 i386 os updates

      rpm-src http://YOUR_IP/redhat/apt/9 i386 os updates

      #其中的 YOUR_IP,請換成自己的伺服器

       

      註:sources.list 是設定 APT 伺服器來源的設定檔,每行設定最後的

      • os 代表 Red Hat Linux 9 的原始 rpm

        updates 代表 Red Hat 所出的更新(updates)rpm

        freshrpms 代表 freshrpms.net 維護的 add-on rpm(http://shrike.freshrpms.net/

        rpm-src 代表 source rpm

  •  

    定期更新:

    • vi /etc/cron.daily/upgrade

       

      #!/bin/bash

      apt-get update

      apt-get -y dist-upgrade

      apt-get clean

     

    • chmod 755 /etc/cron.daily/upgrade

       

      啟動crond:chkconfig --level 345 crond on

       

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


結語:

  1. 有點複雜:P做成功了嗎?~~~~事實上,上面的作法不過將 Red Hat Linux 9 六片光碟片(包含 source rpm)和 updates 全部複製到 /var/ftp/pub 下,然後將需要用到的部分用 link 的方式連結到 apt 資料夾,比較特別的是 RPMS.updates 這個資料夾,因為針對不同架構的機器, updates 的 rpm 也有所區別,所以用 find 指令,找到所有 updates 的 rpm,將他們 link 到 RPMS.updates,最後再用 genbasedir 指令產生相關檔案清單壓縮檔。
  2. 照上面的作法做完之後,我們不只架設了 APT 伺服器,只要啟動匿名(anonymous)FTP,同時也得到 FTP 和 HTTP 模式的網路安裝伺服器,可以讓使用者透過網路安裝 Red Hat Linux(網路安裝過程參考
  3. http://www.redhat.com/download/mirror.html
    在 Red Hat 的網站上列有兩個台灣的 mirror 站,我挑中央研究院的 ftp 站做為我的 mirror 來源,要是你對美頻寬充足的話,也可以直接使用Red Hat 的站台為 mirror 來源。
    Red Hat Linux 9 updates:ftp://ftp.redhat.com/pub/redhat/linux/updates/9/en/os/i386/
  4. 假如有玩 X Window,可以下載 synaptic 套件回來安裝,這是 apt 的圖形介面,有點像是 Debian GNU/Linux 的 aptitude(事實上,Debian 也有 synaptic)。(附圖
  5. 如果對影音有興趣,強力推薦 freshrpms 維護的其他 rpm,網路上常看到的影音相關軟體大概都找得到,這樣就不用四處找來找去的,且還有幾個不錯玩的遊戲,很難想像 freshrpms 相關網站和套件全部都是由 Matthias Saou 一個人所維護。
    freshrpms 的 Red Hat Linux 9 add-on packages:http://shrike.freshrpms.net/
  6. 上面所架設的 APT 伺服器,是用 HTTP 的方式在服務,若想要改成 FTP 的方式也是可以的,不過必須要先將匿名(anonymous)FTP 架設好。使用 FTP 的方式,可以限制同時登入的人數,作較嚴格的控管,不過 FTP 會有登入的過程(即使是匿名登入),速度不若 HTTP 來的好。
  7. 假如現在用的是 Red Hat Linux 8.0、7.3.........,稍微修改一下,就可以架設出適合自己版本的 APT 伺服器了,假如有需要的話:)

目錄結構:/var/ftp/pub/redhat

/var/ftp/pub/redhat/

  • |-- apt

    |   `-- 9

    |       `-- i386

    |           |-- RPMS.os -> /var/ftp/pub/redhat/linux/9/en/os/i386/RedHat/RPMS

    |           |-- RPMS.updates(在i386資料夾下只有此資料夾是自己所建立)

    |           |-- SRPMS.os -> /var/ftp/pub/redhat/linux/9/en/os/i386/SRPMS

    |           |-- SRPMS.updates -> /var/ftp/pub/redhat/linux/updates/9/en/os/SRPMS

    |           `-- base(此資料夾是由genbasedir 指令所產生)

    `-- linux

        |-- 9(此資料夾下是放原始的Red Hat Linux 9 source)

        |   `-- en

        |       `-- os

        |           `-- i386

        |               |-- RedHat

        |               |    `--RPMS

        |               `--SRPMS

        `-- updates(此資料夾下是放Red Hat Linux 9 的更新檔案)

            `-- 9

                `-- en

                    `-- os

                        |-- SRPMS

                        |-- athlon

                        |-- i386

                        |-- i586

                        |-- i686

                        `-- noarch

註:

目錄結構我儘量參照 Red Hat 的 ftp 官方網站建立,所以才會這麼多層,我們是可以依照自己的意思來建立的。

freshrpms 網站的一些連結:

可供參考資料:

FAQ

  • 1. 如何為 apt 設定 proxy?

    答:vi /etc/apt/apt.conf
    找到
    Proxy ""; // http://user:pass@host:port/
    加進你可用的 proxy
    Proxy "
    http://Your_proxy:port"; // http://user:pass@host:port/

     

    2. 我自己不想架設 apt server,freshrpms.net 又很難連的上去,有沒有其他的 apt server 可供使用?

    答:vi /etc/apt/sources.list 將以下 apt server 加進去即可(fro Red Hat Linux 9)

    rpm http://opensource.nchc.org.tw/redhat/apt/redhat/9/en i386 os updates drbl firefly

    #國家高速網路中心維護的 apt server:此站台的特色在於有 mirror firefly(螢火飛)的套件,另外還有國家高速網路中心在推廣的 DRBL 相關套件

    #有碰 X window 的人,螢火飛大的字型 patches 是一定要裝的;另外 DRBL 是建置無硬碟系統的方案,有興趣的人可以試試看

    #firefly:http://firefly.idv.tw/test/Forum.php?Board=1
    #DRBL:http://drbl.nchc.org.tw/

     

    rpm ftp://cle.linux.org.tw pub/shrike/RedHat os updates cle freshrpms

    #CLE 維護的 apt server:此站台最大的特色不用說,是有放 CLE 的套件,另外它還有 mirror freshrpms 的套件,所以若我們對外頻寬不是很好的話,可以以此站台取代 http://ayo.freshrpms.net

    #有玩 X window 的人,一定要試看看 freshrpms 維護的一些套件,像 mplayer、xine、xmms-mp3、xmule、synaptic ..........都是很實用的軟體,不用四處搜尋下載,可以節省很多時間

    #freshrpms 維護的套件:http://shrike.freshrpms.net/

     

    #底下是幾個國外的網站

    rpm http://apt.au.freshrpms.net/redhat/9/en i386 os updates

    rpm http://ftp-stud.fht-esslingen.de/apt/redhat/9 i386 os updates

    rpm http://redhat.usu.edu/mirrors/apt  redhat/9/en/i386 os updates

    rpm ftp://ftp.stw-bonn.de/pub/apt redhat/9/en/i386 os updates

    rpm ftp://apt-rpm.tuxfamily.org/apt redhat/9/en/i386 os updates

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值