最近更新日期:2006/09/10
1. 為何需要進行軟體升級
1.1 如何進行軟體升級 1.2 各種 distributions 的自動升級機制 2. CentOS 的 yum 自動升級 2.1 yum 的設定檔 2.2 yum 的安裝、升級、移除、查詢等功能與安裝套件群組 2.3 不同版本間的升級: CentOS 4.2 to 4.3, FC1 to CentOS 4.3 3. Debian 的 apt 自動升級:以 B2D 為例 3.1 APT 的設定檔 3.2 實際使用 APT: apt-get, apt-cache 4. 重點回顧 5. 課後練習 6. 參考資料 7. 針對本文的建議:http://phorum.vbird.org/viewtopic.php?t=26298 ![]()
很多朋友在網路上面常常會這樣留言:
『大家好,我的 Linux 好像怪怪的,因為沒有辦法以 root 的身份登入了』,
呵呵!幾乎可以直接告訴這位朋友:『你的系統被入侵了』!嗄∼真假?早上才裝好,下午被入侵?
沒錯啊∼但∼對方是如何辦到的呢?
在前一章我們不是有提到『網路連線的 port 其實是由軟體所開啟的』, 所以,如果該軟體本身就有問題的話,那麼當然你的系統就容易被攻破了! 咦!那自由軟體幹嘛開發出有問題的程式啊?這是因為程式是人寫出來的, 在設計之初有些奇怪的用法可能沒有考慮到,或者是某些安全問題沒有考慮到, 而造成程式的疏失。當這樣的程式發佈後,很多人會針對這些程式進行檢驗,如果發現問題就會回報給社群。 那麼當回報後直到程式更新之前,總會有一段空窗期,這期間可能就會有些 cracker 開發出具有攻擊碼的程式, 如果這些攻擊程式散佈出來的話,那麼隨便一個小朋友拿到這樣的程式,就能攻擊你啦! 這個問題並非僅存在於某個單一作業系統,而是所有的作業系統都存在這樣的問題, 而且套件的漏洞倒不是一定是會被利用來進行入侵,有的時候,某些套件的漏洞可能導致您 Linux 主機的運行不良或者是容易產生系統當機等等的問題呢!所以,一個好的 Linux 主機, 他的套件最好是隨時保持在較新的版本上面,這樣還是比較好一點的啦!關於安全漏洞的通報您可以參考底下的網站:
![]()
還記得你是如何安裝你 Linux 上面的軟體嗎?不就是 rpm,
tarball 與 dpkg 嗎?
所以囉,你的軟體如果想要升級,那就得依據當時你安裝該軟體的方式來進行升級啊!
而每種方式都有其適用性:
不過,有個特殊案例,那就是舊版本的 Linux (例如 Red Hat 9) 的軟體升級該如何是好? 由於舊版本的軟體支援度本來就比較差,商業公司或者是社群也沒有這麼多心力放在舊版本的支援上, 所以,你這個時候可以選擇: (1)升級到較新的版本,例如 CentOS 4.3 或者是 SuSE 10 等等,或者是 (2)利用 Tarball 來自行升級核心與軟體 。不過,比較建議升級到新版本啦,因為要自行以手動方式由 Tarball 安裝到最新的版本,實在是很費時費力,而且還得要常常查閱官方網站所推出的最新消息, 漏過一則都可能發生無法預期的狀況。 但不管怎麼說,單純使用 RPM / Tarball / dpkg 的方式來安裝與升級軟體時, 你都必須要由原版光碟或者是由官方網站下載可安裝的套件檔案,然後再手動來實際安裝到你的系統上。 如此一來,你還是得要盯著官方網站提供的資訊,才能夠在第一時間進行升級的動作。 唉!怎麼這麼麻煩? 我們都曉得在 Windows 的環境下,他有提供一個 Live update 的項目可以自動的線上升級, 甚至很多的防毒軟體與防木馬軟體也都有推出即時的線上更新,如此一來可以讓您的軟體維持在最新版的狀況, 真是好啊!咦!那我們的 Linux 是否有這樣的功能?如果有的話,那麼系統自動進行軟體升級, 不就可以輕鬆又快樂了?沒錯!確實是這樣的!所以就讓我們來談一談 Linux 的線上升級機制吧! ![]()
在 Linux 最常見的套件安裝方式: RPM / Tarball / dpkg 當中,Tarball 由於取得的是原始碼,
所以要用 Tarball 來作線上自動更新是不太可能進行的,所以僅能用 RPM 或 dpkg
這兩種套件管理的方式來進行線上更新了。
但 RPM 與 dpkg 不是有所謂的相依屬性嗎? 這倒不需要擔心吶!因為我們的 RPM 與 dpkg 套件檔案都有一些套件的基本資訊, 並同時記錄了套件的相依屬性 (記得使用 rpm -q 的查詢嗎), 所以當分析這些基本資訊並使用一些機制將這些相依資訊記錄下來後, 再透過一些額外的網路功能,就能夠自動的分析你的系統與修補套件之間的差異, 並可進一步幫你分析所需要升級與相依屬性的套件,就可達成自動升級的理想啦! 由於各家 distributions 在管理系統上都有自己獨特的想法,所以在分析 RPM 或 dpkg 套件與方式上面就有所不同, 也就有底下這些不同的線上升級機制啦:
底下鳥哥以 CentOS 4.3 提供的 yum 線上升級架構來進行說明,同時亦簡單的介紹一下 B2D 這個 distribution 的 APT 來說明說明! ^_^!那為什麼不選擇其他的版本來介紹呢? 就如同區域網路那個章節裡面的 distribution 選擇提到的, 越穩定的版本就不容易發生程式臭蟲,不斷升級的情況就比較不會發生,所以,鳥哥這裡再次的說明一下, 如果要做為主機伺服器之用的話,盡量選擇較穩定且支援較多的版本,例如 CentOS, SuSE, Red Hat, B2D 及 debian 等 distribution 啊! ![]()
我們知道 CentOS 主要是以 RPM 來作為套件的管理機制,那麼 RPM 本身就有一些表頭資料記錄了這個套件本身的資訊,
包括了相依屬性之類的訊息等等, yum 這個咚咚就是藉由分析這些 RPM 套件的表頭資料,並且將這些表頭資料事先記錄下來,
當使用者要求升級或者是安裝的時候, yum 就會透過分析這些表頭資料來決定下載的檔案,
這些下載的檔案當然包括了相依屬性的套件了,所以說,yum
已經主動克服了套件之間的屬性相依問題囉!很棒吧!
那麼 yum 是如何動作的呢?基本上是這樣的:
![]()
基本上,在你一安裝完 CentOS 之後,系統就主動的幫你建立好 CentOS 的 yum server 設定了,
他的設定檔在:
截至目前為止 (2006/09/xx),最新的 CentOS 是 4.4 版,所以上頭這個連結你可以進入 4.4 那個目錄, 就能夠看到很多 CentOS 提供的各項套件資料了。其中比較重要的兩個目錄是:『 o s』以及『 update 』 ,分別是基礎套件以及修補過後的套件啦!既然知道了台灣地區的 FTP 網站後,自然就不需要連接到美國去下載檔案, 那麼連線下載的速度當然就會比較快啦!不過,你就得要自行修改修改設定檔了! 不過 CentOS 官方網站則是建議使用國碼來作為鏡相網站的選擇依據, 如此一來在大版本相同的環境下 (4.3 -> 4.4) 咱們的 CentOS 是可以自動升級到不同版本中的! 所以,鳥哥的設定檔是改成這個樣子的:
另外最要注意的是,在設定檔當中所指定的鏡像站台 (mirror) 離你越近越好,而且頻寬越大越好, 這樣你就可以比較方便快速的下載啊!而且,你必須已經成功的連結到該鏡像站台才行, 否則在執行 yum 時會發生某些問題喔!另外,你必須是 root 的身份才能使用 yum 啊! 也就是說:
![]()
yum 可不止能夠線上自動升級而已,他還可以作查詢、套件群組的安裝、整體版本的升級等等,好用的哩!
先來談論一下 yum 這個 client 端的指令用法吧:
什麼是『套件群組』呢?還記得在安裝的時候有出現套件選擇的地方吧?
在那個時候你選擇的資料可不是『套件名稱』喔,而是一堆『套件群組』,舉例來說,
你會看到『KDE 桌面環境』之類的,而不是每個 KDE 桌面的各項套件名稱,對吧!那個咚咚就是『套件群組』啦!
由於各大 distributions 預設都沒有選擇發展工具 (Development Tools),
這些工具包含了 gcc, kernel-devel 等等,那麼你如何使用 yum 一口氣安裝呢?
看看底下的範例:
![]()
什麼!不同的版本之間可以直接『網路』升級了喔?沒錯!而且整個流程還挺簡單的,
升級完成之後,絕大部分的服務都還不會有困擾!真是很不錯啊!那什麼是『不同版本?』舉例來說,
CentOS 4.2 升級到 CentOS 4.3 算是一種,而 Fedora Core 1 升級到 CentOS 4.3 則又是另外一種,
同樣是 CentOS 的升級比較容易,尤其 4.3 本來就是架構在 4.2 上面持續發展的結果;
不過如果是 Fedora Core 的話,可能就比較麻煩一點點。底下我們分別談一談這兩種方式的升級吧!
在 CentOS 的發展理念當中,如果推出了 4.3 ,那麼 4.2 以前的 4.x 版本就不會繼續發展,
所以使用者必須要將原本的 4.2 直接提升到 4.3 才行。那麼需要作些什麼動作呢?
不需要啊!只要修改一下 yum 的設定檔就好了。首先,同樣需要找到最近的鏡像站台,
我們依舊以義守大學的 FTP 網站來提供所需要的套件資料,修改成這樣:
上面的動作你可以參考底下這一篇官方說明文件:
如果你使用的是舊版的 Linux distributions ,例如 Fedora core release 1, Red Hat 9 等等的系統,
這些系統已經舊到沒有什麼更新的軟體出來,所以如果套件有臭蟲而需要更新時,
你可能就得要使用 Tarball 的方式手動的給他『 configure, make, make install 』等等的,
好累啊∼那如果我安裝 CentOS 呢?如果需要主動重新安裝的話,那舊的資料不是會不見嗎?
又得要備份,重新處理等等的,還是很累啊!
沒關係!有 yum 就搞定了!你可以將你的 FC1 升級到 CentOS 4.3 了,而且是『線上更新』喔! 厲害吧!不過,因為 FC1 使用的核心是 2.4 版,但 CentOS 4.3 使用的是新的 2.6.x , 這兩種核心可不能互相更新啊!所以囉,我們還需要一些額外的動作來進行升級,而不像前面 CentOS 4.2 升級到 4.3 那麼簡單!鳥哥底下的動作是參考這幾篇:
那如果真的空間不足怎麼辦?你可以將一些不需要的套件先移除啊!舉例來說, 你可以利用『 yum groupremove "Development Tools" 』之類的指令先將這些不是必備的套件群組移除, 以及其他 X 相關的套件也可以先移除,等到升級完畢後再以 yum 來重新安裝即可, 這樣可以節省很多升級時分析相依屬性所花費掉的時間喔! 同時你得要確認你的鏡像站台,以及 CentOS 的數位簽章檔案已經安裝到 RPM 資料庫當中才行, 同樣的,鳥哥還是以義守大學的 FTP 站為主要的來源鏡像站,但是你必須要先取得一些 RPM 相關的檔案, 這些檔案由於會與 FC1 原本的套件產生不相符合的特性,所以需要先捉下來並且強制安裝才行! 請你自行連上: 然後選擇最新的版本,例如鳥哥使用 4.3 (2006/08/10 以前) 這個版本,所以直接點選他, 然後依序選擇『os』->『i386』->『CentOS』->『RPMS』,然後下載底下這些檔案 (註:套件的版本號碼可能會有些不同喔!):
基本上這樣已經處理完畢了!也就是說,你的系統應該是由 FC1 順利的轉成 CentOS 4.3 才對! 不過,有些小細節你依舊需要注意喔:
![]()
APT 最早是 debian 這個社群的 Linux distribution 用來作為套件管理的一項機制,
後來實在很方便又好用,所以就被利用來做為其他 distributions 的線上升級管理機制了!
所以你會在很多地方看到有 FC 系列的 APT 伺服器、或者是自訂的 APT 伺服器等等的。
這個 APT 的使用與 yum 很類似吶!同樣也是透過套件的表頭分析後,然後與系統本身資料比對,
因此同樣也克服了屬性相依的困擾了,非常方便!底下我們就分別來談一談吧!
![]()
如同前面提到的 yum 一樣,既然是線上升級,那麼我們自然得要找到相對應的伺服器囉!
而一般有提供 apt 服務的 distributions 事實上他們都已經做好設定檔內相關的伺服器選擇了,
例如 B2D 就是一個例子。不過,
如果你是使用類似 Red Hat 9, Fedora Core Release 等版本的話,
可能由於種種原因讓你不能將該主機升級到類似 CentOS 等較新的版本時,那你就可以嘗試到底下的網站找找看
APT 主機了:
找到屬於你的 Linux 版本後,安裝 apt 就可以使用 apt 伺服器所提供的套件升級機制囉! 底下趕緊談一談,那麼如何處理 APT 的設定檔呢? APT 的設定檔都放在 /etc/apt 目錄下,而在該目錄下,規範 APT 主機的設定則放到 /etc/apt/sources.list 當中。 以 B2D 為例,他的 sources.list 是這樣的:
![]()
APT 的使用也實在是很簡單!只要利用 apt-get 即可!不過,不同於 yum 每次都會進行 RPM 檔案表頭的分析,
APT 則是將套件表頭的下載與實際的安裝分成兩個動作分別執行,先來談一談 apt-get 這個指令的用法吧!
當然,還是那句老話,除非您的主機上面有專屬的軟體需要該版本的 distribution 才能執行, 當轉成其他版本可能會發生無法執行的困擾時,那你只好使用舊版的 distribution, 並且找到對應的 APT 或 yum 伺服器,或者是『你自己建立一個 APT/yum 伺服器』來提供自己升級! 比較能夠免除一些程式臭蟲的困擾。如果沒有以上的困擾,那就直接升級到比較新的版本吧! 『比較新的版本不一定比較好,不過,在大部分的情況下, 較新版本對硬體的支援以及安全性方面,都會比較好一些。』但是,如果你的主機明明運作的很好, 短期你也不需要什麼新硬體的增加,而且你自己有在注意各個套件的安全性時,那不需要升級也是沒有問題的啦! ![]()
![]()
如果設定檔已經被改過,則更新的設定檔會被儲存成為 *.rpmnew 的副檔名。
並建議使用者應該要將舊的設定檔備份,然後以新的設定檔來進行重新設定。對於該軟體的執行穩定性會較佳。
你可以利用『 locate rpmnew 』來找出已經安裝的新版本設定檔,並據以處理該資料;
也可以利用 rpm -Va 來觀察系統上面所有的已經被更動過的檔案資料!
利用『 yum grouplist 』找出相關的套件群組,利用『 yum groupinfo "Develop Tools" 』找出該套件是否為您所需要,
最後用『 yum groupinstall "Develop Tools" 』安裝即可!
可以使用『 yum search gcc 』找出所需要的套件,然後用『 yum install xxx 』來安裝即可!
![]()
2002/08/02:第一次完成日期! 2003/06/29:加入自己寫的自動更新 RPM 的 bash scripts 功能! 2003/07/01:重新編寫一些內容介紹,此外,由於 Red Hat 6.x 有點老舊了,已經將 up2date 關於 Red Hat 6.x 以前的資料消除了! 2003/08/22:加入 Mandrake 的 urpmi 以及 APT Client 的設定方法 2006/08/08:將舊的文章移動到 此處。 2006/08/09:由於已經有這麼多的線上升級機制,所以鳥哥自己寫的 bash shell 不需要使用的啦!將他取消了! 2006/08/10:需要付費的 up2date 也取消了,有需要的話請自行前往舊文章處查閱啦! 2006/08/11:連 Mandriva 所需要的 urpmi 也拿掉了先! ^_^ 2006/09/10:本來 yum 的設定檔當中是以義守大學的 FTP 設定為主,改為 CentOS 建議的國碼為主! 2002/08/02以來統計人數 |
||||||||||||||||||||||||||||