鸟哥的Linux私房菜(服务器)- 主机基本安全之二: Linux线上自动升級
生活随笔
收集整理的這篇文章主要介紹了
鸟哥的Linux私房菜(服务器)- 主机基本安全之二: Linux线上自动升級
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
主機(jī)基本安全之二:?Linux?線上自動(dòng)升級
切換解析度為 800x600 最近更新日期:2006/09/10 本文已不再維護(hù),更新文章請參考這裡
1.?為何需要進(jìn)行軟體升級
1.1?如何進(jìn)行軟體升級
1.2?各種 distributions 的自動(dòng)升級機(jī)制
2.?CentOS 的 yum 自動(dòng)升級
2.1?yum 的設(shè)定檔
2.2?yum 的安裝、升級、移除、查詢等功能與安裝套件群組
2.3?不同版本間的升級:?CentOS 4.2 to 4.3,?FC1 to CentOS 4.3
3.?Debian 的 apt 自動(dòng)升級:以 B2D 為例
3.1?APT 的設(shè)定檔
3.2?實(shí)際使用 APT:?apt-get,?apt-cache
4.?重點(diǎn)回顧
5.?課後練習(xí)
6.?參考資料
7.?針對本文的建議:http://phorum.vbird.org/viewtopic.php?t=26298
為何需要進(jìn)行軟體升級
很多朋友在網(wǎng)路上面常常會這樣留言: 『大家好,我的 Linux 好像怪怪的,因?yàn)闆]有辦法以 root 的身份登入了』, 呵呵!幾乎可以直接告訴這位朋友:『你的系統(tǒng)被入侵了』!嗄~真假?早上才裝好,下午被入侵? 沒錯(cuò)啊~但~對方是如何辦到的呢?
在前一章我們不是有提到『網(wǎng)路連線的 port 其實(shí)是由軟體所開啟的』, 所以,如果該軟體本身就有問題的話,那麼當(dāng)然你的系統(tǒng)就容易被攻破了! 咦!那自由軟體幹嘛開發(fā)出有問題的程式啊?這是因?yàn)槌淌绞侨藢懗鰜淼?#xff0c; 在設(shè)計(jì)之初有些奇怪的用法可能沒有考慮到,或者是某些安全問題沒有考慮到, 而造成程式的疏失。當(dāng)這樣的程式發(fā)佈後,很多人會針對這些程式進(jìn)行檢驗(yàn),如果發(fā)現(xiàn)問題就會回報(bào)給社群。 那麼當(dāng)回報(bào)後直到程式更新之前,總會有一段空窗期,這期間可能就會有些 cracker 開發(fā)出具有攻擊碼的程式, 如果這些攻擊程式散佈出來的話,那麼隨便一個(gè)小朋友拿到這樣的程式,就能攻擊你啦!
這個(gè)問題並非僅存在於某個(gè)單一作業(yè)系統(tǒng),而是所有的作業(yè)系統(tǒng)都存在這樣的問題, 而且套件的漏洞倒不是一定是會被利用來進(jìn)行入侵,有的時(shí)候,某些套件的漏洞可能導(dǎo)致您 Linux 主機(jī)的運(yùn)行不良或者是容易產(chǎn)生系統(tǒng)當(dāng)機(jī)等等的問題呢!所以,一個(gè)好的 Linux 主機(jī), 他的套件最好是隨時(shí)保持在較新的版本上面,這樣還是比較好一點(diǎn)的啦!關(guān)於安全漏洞的通報(bào)您可以參考底下的網(wǎng)站:?
如何進(jìn)行軟體升級
還記得你是如何安裝你 Linux 上面的軟體嗎?不就是?rpm,?tarball?與 dpkg 嗎? 所以囉,你的軟體如果想要升級,那就得依據(jù)當(dāng)時(shí)你安裝該軟體的方式來進(jìn)行升級啊! 而每種方式都有其適用性:
不過,有個(gè)特殊案例,那就是舊版本的 Linux (例如 Red Hat 9) 的軟體升級該如何是好? 由於舊版本的軟體支援度本來就比較差,商業(yè)公司或者是社群也沒有這麼多心力放在舊版本的支援上, 所以,你這個(gè)時(shí)候可以選擇:?(1)升級到較新的版本,例如 CentOS 4.3 或者是 SuSE 10 等等,或者是 (2)利用 Tarball 來自行升級核心與軟體?。不過,比較建議升級到新版本啦,因?yàn)橐孕幸允謩?dòng)方式由 Tarball 安裝到最新的版本,實(shí)在是很費(fèi)時(shí)費(fèi)力,而且還得要常常查閱官方網(wǎng)站所推出的最新消息, 漏過一則都可能發(fā)生無法預(yù)期的狀況。
但不管怎麼說,單純使用 RPM / Tarball / dpkg 的方式來安裝與升級軟體時(shí), 你都必須要由原版光碟或者是由官方網(wǎng)站下載可安裝的套件檔案,然後再手動(dòng)來實(shí)際安裝到你的系統(tǒng)上。 如此一來,你還是得要盯著官方網(wǎng)站提供的資訊,才能夠在第一時(shí)間進(jìn)行升級的動(dòng)作。 唉!怎麼這麼麻煩?
我們都曉得在 Windows 的環(huán)境下,他有提供一個(gè) Live update 的項(xiàng)目可以自動(dòng)的線上升級, 甚至很多的防毒軟體與防木馬軟體也都有推出即時(shí)的線上更新,如此一來可以讓您的軟體維持在最新版的狀況, 真是好啊!咦!那我們的 Linux 是否有這樣的功能?如果有的話,那麼系統(tǒng)自動(dòng)進(jìn)行軟體升級, 不就可以輕鬆又快樂了?沒錯(cuò)!確實(shí)是這樣的!所以就讓我們來談一談 Linux 的線上升級機(jī)制吧!
各種 distributions 的自動(dòng)升級機(jī)制
在 Linux 最常見的套件安裝方式: RPM / Tarball / dpkg 當(dāng)中,Tarball 由於取得的是原始碼, 所以要用 Tarball 來作線上自動(dòng)更新是不太可能進(jìn)行的,所以僅能用 RPM 或 dpkg 這兩種套件管理的方式來進(jìn)行線上更新了。
但 RPM 與 dpkg 不是有所謂的相依屬性嗎? 這倒不需要擔(dān)心吶!因?yàn)槲覀兊?RPM 與 dpkg 套件檔案都有一些套件的基本資訊, 並同時(shí)記錄了套件的相依屬性 (記得使用 rpm -q 的查詢嗎), 所以當(dāng)分析這些基本資訊並使用一些機(jī)制將這些相依資訊記錄下來後, 再透過一些額外的網(wǎng)路功能,就能夠自動(dòng)的分析你的系統(tǒng)與修補(bǔ)套件之間的差異, 並可進(jìn)一步幫你分析所需要升級與相依屬性的套件,就可達(dá)成自動(dòng)升級的理想啦!
由於各家 distributions 在管理系統(tǒng)上都有自己獨(dú)特的想法,所以在分析 RPM 或 dpkg 套件與方式上面就有所不同, 也就有底下這些不同的線上升級機(jī)制啦:
底下鳥哥以 CentOS 4.3 提供的 yum 線上升級架構(gòu)來進(jìn)行說明,同時(shí)亦簡單的介紹一下 B2D 這個(gè) distribution 的 APT 來說明說明! ^_^!那為什麼不選擇其他的版本來介紹呢? 就如同區(qū)域網(wǎng)路那個(gè)章節(jié)裡面的 distribution 選擇提到的, 越穩(wěn)定的版本就不容易發(fā)生程式臭蟲,不斷升級的情況就比較不會發(fā)生,所以,鳥哥這裡再次的說明一下,?如果要做為主機(jī)伺服器之用的話,盡量選擇較穩(wěn)定且支援較多的版本,例如?CentOS, SuSE, Red Hat, B2D 及 debian?等 distribution 啊!
CentOS 的 yum 自動(dòng)升級
我們知道 CentOS 主要是以 RPM 來作為套件的管理機(jī)制,那麼 RPM 本身就有一些表頭資料記錄了這個(gè)套件本身的資訊, 包括了相依屬性之類的訊息等等, yum 這個(gè)咚咚就是藉由分析這些 RPM 套件的表頭資料,並且將這些表頭資料事先記錄下來, 當(dāng)使用者要求升級或者是安裝的時(shí)候, yum 就會透過分析這些表頭資料來決定下載的檔案, 這些下載的檔案當(dāng)然包括了相依屬性的套件了,所以說,yum 已經(jīng)主動(dòng)克服了套件之間的屬性相依問題囉!很棒吧!
那麼 yum 是如何動(dòng)作的呢?基本上是這樣的:
yum 的設(shè)定檔
基本上,在你一安裝完 CentOS 之後,系統(tǒng)就主動(dòng)的幫你建立好 CentOS 的 yum server 設(shè)定了, 他的設(shè)定檔在:
不過 CentOS 官方網(wǎng)站則是建議使用國碼來作為鏡相網(wǎng)站的選擇依據(jù), 如此一來在大版本相同的環(huán)境下 (4.3 -> 4.4) 咱們的 CentOS 是可以自動(dòng)升級到不同版本中的! 所以,鳥哥的設(shè)定檔是改成這個(gè)樣子的:
主要是將 mirrorlist 那個(gè)變數(shù)的最後面加上國碼『&cc=tw』就可以了!如果未來有較新的版本時(shí), 那麼你的 yum 就能夠自動(dòng)升級囉!另外,除了 [base] 與 [update] 之外,其實(shí) CentOS 還提供很多的額外套件, 這包括了: addons, extras, centosplus, contrib 等等,這些資料你也可以加入到設(shè)定檔當(dāng)中, 來幫助你容易安裝某些非正規(guī)支援的套件資料啊! ^_^
另外最要注意的是,在設(shè)定檔當(dāng)中所指定的鏡像站臺 (mirror) 離你越近越好,而且頻寬越大越好, 這樣你就可以比較方便快速的下載啊!而且,你必須已經(jīng)成功的連結(jié)到該鏡像站臺才行, 否則在執(zhí)行 yum 時(shí)會發(fā)生某些問題喔!另外,你必須是 root 的身份才能使用 yum 啊! 也就是說:
yum 的安裝、升級、移除、查詢等功能
yum 可不止能夠線上自動(dòng)升級而已,他還可以作查詢、套件群組的安裝、整體版本的升級等等,好用的哩! 先來談?wù)撘幌?yum 這個(gè) client 端的指令用法吧:
yum 真是個(gè)很好用的東西,他可以直接查詢是否有某些特殊的套件, 你可以利用『?yum search "一些關(guān)鍵字"?』或者是『?yum list?』列出所有的套件名稱, 然後再以正規(guī)表示法取得關(guān)鍵字,或者是『yum list "套件名稱"?』 就能夠知道該套件的用途, 最後再?zèng)Q定要不要安裝啊!上面的範(fàn)例一就是在找出磁碟陣列的管理軟體, 如果確定要安裝時(shí),那就可以這樣處理:
瞧!經(jīng)過 yum 我們可以很輕鬆的就安裝好一個(gè)軟體,並且這個(gè)軟體已經(jīng)主動(dòng)的幫我們做好相依屬性的克服了, 真是方便到爆!另外,你必須要知道,剛剛那個(gè)被下載安裝的 mdadm 檔案被放置到 /var/cache/yum 裡面去了, 如果你要節(jié)省硬碟空間的話那麼可以在安裝完畢後將該檔案移除,就用:
這樣就能夠清除掉已下載的檔案囉~節(jié)省一下硬碟空間啊!OK~那如何進(jìn)行整體的更新呢? 比如說鳥哥剛剛裝完了 CentOS 4.3 ,但這個(gè)版本已經(jīng)推出若干時(shí)間,所以也已經(jīng)作了很多更新了, 那鳥哥如何整體更新啊?很簡單,就用如下的指令:
加一個(gè)『 -y 』的參數(shù)可以讓系統(tǒng)自動(dòng)幫你回答『 yes 』,在背景處理時(shí)會比較方便一點(diǎn)。 如果你是第一次執(zhí)行,那就會發(fā)現(xiàn):哇!怎麼下載的資料量到達(dá)數(shù)百 MB 之譜!沒錯(cuò)啊! 所以記得?/var/ 這個(gè)目錄的容量要給大一點(diǎn)才行! 否則就會出現(xiàn)無法完整下載所有更新檔案的問題啊! @_@
不同版本間的升級
什麼!不同的版本之間可以直接『網(wǎng)路』升級了喔?沒錯(cuò)!而且整個(gè)流程還挺簡單的, 升級完成之後,絕大部分的服務(wù)都還不會有困擾!真是很不錯(cuò)啊!那什麼是『不同版本?』舉例來說, CentOS 4.2 升級到 CentOS 4.3 算是一種,而 Fedora Core 1 升級到 CentOS 4.3 則又是另外一種, 同樣是 CentOS 的升級比較容易,尤其 4.3 本來就是架構(gòu)在 4.2 上面持續(xù)發(fā)展的結(jié)果; 不過如果是 Fedora Core 的話,可能就比較麻煩一點(diǎn)點(diǎn)。底下我們分別談一談這兩種方式的升級吧!
Debian 的 apt 自動(dòng)升級:以 B2D 為例
APT 最早是 debian 這個(gè)社群的 Linux distribution 用來作為套件管理的一項(xiàng)機(jī)制, 後來實(shí)在很方便又好用,所以就被利用來做為其他 distributions 的線上升級管理機(jī)制了! 所以你會在很多地方看到有 FC 系列的 APT 伺服器、或者是自訂的 APT 伺服器等等的。 這個(gè) APT 的使用與 yum 很類似吶!同樣也是透過套件的表頭分析後,然後與系統(tǒng)本身資料比對, 因此同樣也克服了屬性相依的困擾了,非常方便!底下我們就分別來談一談吧!
APT 的設(shè)定檔
如同前面提到的 yum 一樣,既然是線上升級,那麼我們自然得要找到相對應(yīng)的伺服器囉! 而一般有提供 apt 服務(wù)的 distributions 事實(shí)上他們都已經(jīng)做好設(shè)定檔內(nèi)相關(guān)的伺服器選擇了, 例如 B2D 就是一個(gè)例子。不過, 如果你是使用類似 Red Hat 9, Fedora Core Release 等版本的話, 可能由於種種原因讓你不能將該主機(jī)升級到類似 CentOS 等較新的版本時(shí),那你就可以嘗試到底下的網(wǎng)站找找看 APT 主機(jī)了:
其實(shí)設(shè)定檔的內(nèi)容很簡單,第一個(gè)欄位指的是『用哪一種套件管理員』的意思,主要有 deb 以及 rpm 還有 rpm-src 等,deb 是 debian 專屬的套件管理方式啦! ^_^!第二欄以後就得要一起看才行! 以上表的第一行為例,其實(shí)他是說,提供 deb 的網(wǎng)址有三個(gè),分別是:
實(shí)際使用 APT
APT 的使用也實(shí)在是很簡單!只要利用 apt-get 即可!不過,不同於 yum 每次都會進(jìn)行 RPM 檔案表頭的分析, APT 則是將套件表頭的下載與實(shí)際的安裝分成兩個(gè)動(dòng)作分別執(zhí)行,先來談一談 apt-get 這個(gè)指令的用法吧!
請記得,那個(gè) update 的參數(shù)並不是在進(jìn)行更新, 而是在進(jìn)行伺服器與用戶端的套件表頭清單更新而已, 但這個(gè)動(dòng)作相當(dāng)重要,如果你沒有作這個(gè)動(dòng)作的話,你的套件就不會更新了! 在 apt-get update 後,再使用 apt-get dist-upgrade 這樣就能夠?qū)⒄麄€(gè)系統(tǒng)給他升級了!很快樂吧!不過,由於我們沒有加上『-y』這個(gè)參數(shù), 所以在上表當(dāng)中,我們會老是需要輸入一些有的沒有的指令, 這樣的話,就不適合作為背景的自動(dòng)升級了!所以,如果你想要在背景以 crontab 的方法自動(dòng)的幫你升級的話,在 B2D 的環(huán)境下使用:
這樣每天的凌晨 5:40 就會自動(dòng)的進(jìn)行整體升級,而且會主動(dòng)的克服相依屬性的問題喔! 另外,除了完整的將套件給他全部升級之外,我們還可以利用 apt 伺服器的功能來進(jìn)行查詢的動(dòng)作喔! 這個(gè)時(shí)候就得要 apt-cache 來幫忙了!
瞧!利用 apt-cache 就能夠找到很多有用的資訊!包括利用 show 這個(gè)參數(shù)也能夠?qū)⒃撎准匾捻?xiàng)目給他列出來! 以上面的 grep 這個(gè)套件為例, apt-cache 就列出很多例如版本資訊、衝突資訊 (conflicts) 等等, 尤其是描述 (Description) 的部分,就更可以讓使用者瞭解該套件的用途了! ^_^!另外, 那個(gè) depends 則可以特別列出與該套件有衝突或者是相依屬性的檔案名稱!也是個(gè)很有幫助的參數(shù)喔! 至於如果你想要安裝一個(gè)套件的話,例如 zlibc 這個(gè)套件時(shí),就可以這樣做:
如同前面提到的,如果你原本的系統(tǒng)並不是使用 apt 來進(jìn)行線上升級的機(jī)制,而你想要使用 apt 的話, 目前很多伺服器都有提供相對應(yīng)版本的升級,其中以 RPM 套件管理的 Red Hat 與 Fedora 最常見! 臺灣楊錦昌老師也提供了完整的 APT 教學(xué),您可以看看:
重點(diǎn)回顧
課後練習(xí)
參考資料
切換解析度為 800x600 最近更新日期:2006/09/10 本文已不再維護(hù),更新文章請參考這裡
| 在現(xiàn)在的 Internet 上面,Cracker 實(shí)在是太多了!這些 Cracker 會利用已經(jīng)存在的系統(tǒng)漏洞,來進(jìn)行偵測、入侵您的主機(jī), 因此,除了未來架設(shè)防火牆之外,最重要的 Linux 日常管理工作,莫過於套件的升級了! 不過,經(jīng)由每日觀察網(wǎng)路安全通報(bào)所告知的套件漏洞,以及等待各大 distribution 針對這些漏洞來提供 RPM 檔案,以使 Client 來升級的過程中,實(shí)在是有點(diǎn)緩慢啊!因此, 目前就有很多線上直接更新的機(jī)制出現(xiàn)了!有了這些線上直接更新 RPM 的手段與方法,我們系統(tǒng)管理員在管理主機(jī)系統(tǒng)上面,可就輕鬆的多囉!趕緊來看看吧! |
1.?為何需要進(jìn)行軟體升級
1.1?如何進(jìn)行軟體升級
1.2?各種 distributions 的自動(dòng)升級機(jī)制
2.?CentOS 的 yum 自動(dòng)升級
2.1?yum 的設(shè)定檔
2.2?yum 的安裝、升級、移除、查詢等功能與安裝套件群組
2.3?不同版本間的升級:?CentOS 4.2 to 4.3,?FC1 to CentOS 4.3
3.?Debian 的 apt 自動(dòng)升級:以 B2D 為例
3.1?APT 的設(shè)定檔
3.2?實(shí)際使用 APT:?apt-get,?apt-cache
4.?重點(diǎn)回顧
5.?課後練習(xí)
6.?參考資料
7.?針對本文的建議:http://phorum.vbird.org/viewtopic.php?t=26298
為何需要進(jìn)行軟體升級
很多朋友在網(wǎng)路上面常常會這樣留言: 『大家好,我的 Linux 好像怪怪的,因?yàn)闆]有辦法以 root 的身份登入了』, 呵呵!幾乎可以直接告訴這位朋友:『你的系統(tǒng)被入侵了』!嗄~真假?早上才裝好,下午被入侵? 沒錯(cuò)啊~但~對方是如何辦到的呢?
在前一章我們不是有提到『網(wǎng)路連線的 port 其實(shí)是由軟體所開啟的』, 所以,如果該軟體本身就有問題的話,那麼當(dāng)然你的系統(tǒng)就容易被攻破了! 咦!那自由軟體幹嘛開發(fā)出有問題的程式啊?這是因?yàn)槌淌绞侨藢懗鰜淼?#xff0c; 在設(shè)計(jì)之初有些奇怪的用法可能沒有考慮到,或者是某些安全問題沒有考慮到, 而造成程式的疏失。當(dāng)這樣的程式發(fā)佈後,很多人會針對這些程式進(jìn)行檢驗(yàn),如果發(fā)現(xiàn)問題就會回報(bào)給社群。 那麼當(dāng)回報(bào)後直到程式更新之前,總會有一段空窗期,這期間可能就會有些 cracker 開發(fā)出具有攻擊碼的程式, 如果這些攻擊程式散佈出來的話,那麼隨便一個(gè)小朋友拿到這樣的程式,就能攻擊你啦!
這個(gè)問題並非僅存在於某個(gè)單一作業(yè)系統(tǒng),而是所有的作業(yè)系統(tǒng)都存在這樣的問題, 而且套件的漏洞倒不是一定是會被利用來進(jìn)行入侵,有的時(shí)候,某些套件的漏洞可能導(dǎo)致您 Linux 主機(jī)的運(yùn)行不良或者是容易產(chǎn)生系統(tǒng)當(dāng)機(jī)等等的問題呢!所以,一個(gè)好的 Linux 主機(jī), 他的套件最好是隨時(shí)保持在較新的版本上面,這樣還是比較好一點(diǎn)的啦!關(guān)於安全漏洞的通報(bào)您可以參考底下的網(wǎng)站:?
- 臺灣電腦危機(jī)處理小組(TWCERT):http://www.cert.org.tw/
- Red Hat 的官方說明:http://www.redhat.com/apps/support/errata/
| Tips: 事實(shí)上,自由軟體的安全性還是比較好的!因?yàn)橛刑嗳藥兔z驗(yàn)程式碼與更新程式碼, 並且,萬一程式真的有問題,在發(fā)現(xiàn)問題到推出修補(bǔ)程式的期間是比較短的, 也就是說,攻擊者可以利用的時(shí)間相對縮短,當(dāng)然使用自由軟體的我們就比較安全啦! ^_^ |
如何進(jìn)行軟體升級
還記得你是如何安裝你 Linux 上面的軟體嗎?不就是?rpm,?tarball?與 dpkg 嗎? 所以囉,你的軟體如果想要升級,那就得依據(jù)當(dāng)時(shí)你安裝該軟體的方式來進(jìn)行升級啊! 而每種方式都有其適用性:
- RPM:這是目前最常見於 Linux distribution 當(dāng)中的套件安裝管理方式, 包括 CentOS / Fedora / SuSE / Red Hat / Mandriva 等等,都是使用這個(gè)方式來管理的;
- Tarball:利用軟體的官方網(wǎng)站所釋出的原始碼在您的系統(tǒng)上面編譯與安裝, 一般來說,由於軟體是直接在自己的機(jī)器上面編譯的,所以效能會比較好一些。 不過,升級的時(shí)候就比較麻煩,因?yàn)橛值靡螺d新的原始碼並且重新編譯一次。 這種安裝模式常見於某些特殊軟體 (沒有包含在 distribution 當(dāng)中),或者是 Gentoo 這個(gè)強(qiáng)調(diào)效能的 distribution;
- dpkg:是 debian 這個(gè) distribution 所使用的套件管理方式,與 RPM 很類似,都是透過預(yù)先編譯的處理,可以讓 end user 直接使用來升級與安裝。
不過,有個(gè)特殊案例,那就是舊版本的 Linux (例如 Red Hat 9) 的軟體升級該如何是好? 由於舊版本的軟體支援度本來就比較差,商業(yè)公司或者是社群也沒有這麼多心力放在舊版本的支援上, 所以,你這個(gè)時(shí)候可以選擇:?(1)升級到較新的版本,例如 CentOS 4.3 或者是 SuSE 10 等等,或者是 (2)利用 Tarball 來自行升級核心與軟體?。不過,比較建議升級到新版本啦,因?yàn)橐孕幸允謩?dòng)方式由 Tarball 安裝到最新的版本,實(shí)在是很費(fèi)時(shí)費(fèi)力,而且還得要常常查閱官方網(wǎng)站所推出的最新消息, 漏過一則都可能發(fā)生無法預(yù)期的狀況。
但不管怎麼說,單純使用 RPM / Tarball / dpkg 的方式來安裝與升級軟體時(shí), 你都必須要由原版光碟或者是由官方網(wǎng)站下載可安裝的套件檔案,然後再手動(dòng)來實(shí)際安裝到你的系統(tǒng)上。 如此一來,你還是得要盯著官方網(wǎng)站提供的資訊,才能夠在第一時(shí)間進(jìn)行升級的動(dòng)作。 唉!怎麼這麼麻煩?
我們都曉得在 Windows 的環(huán)境下,他有提供一個(gè) Live update 的項(xiàng)目可以自動(dòng)的線上升級, 甚至很多的防毒軟體與防木馬軟體也都有推出即時(shí)的線上更新,如此一來可以讓您的軟體維持在最新版的狀況, 真是好啊!咦!那我們的 Linux 是否有這樣的功能?如果有的話,那麼系統(tǒng)自動(dòng)進(jìn)行軟體升級, 不就可以輕鬆又快樂了?沒錯(cuò)!確實(shí)是這樣的!所以就讓我們來談一談 Linux 的線上升級機(jī)制吧!
各種 distributions 的自動(dòng)升級機(jī)制
在 Linux 最常見的套件安裝方式: RPM / Tarball / dpkg 當(dāng)中,Tarball 由於取得的是原始碼, 所以要用 Tarball 來作線上自動(dòng)更新是不太可能進(jìn)行的,所以僅能用 RPM 或 dpkg 這兩種套件管理的方式來進(jìn)行線上更新了。
但 RPM 與 dpkg 不是有所謂的相依屬性嗎? 這倒不需要擔(dān)心吶!因?yàn)槲覀兊?RPM 與 dpkg 套件檔案都有一些套件的基本資訊, 並同時(shí)記錄了套件的相依屬性 (記得使用 rpm -q 的查詢嗎), 所以當(dāng)分析這些基本資訊並使用一些機(jī)制將這些相依資訊記錄下來後, 再透過一些額外的網(wǎng)路功能,就能夠自動(dòng)的分析你的系統(tǒng)與修補(bǔ)套件之間的差異, 並可進(jìn)一步幫你分析所需要升級與相依屬性的套件,就可達(dá)成自動(dòng)升級的理想啦!
由於各家 distributions 在管理系統(tǒng)上都有自己獨(dú)特的想法,所以在分析 RPM 或 dpkg 套件與方式上面就有所不同, 也就有底下這些不同的線上升級機(jī)制啦:
- yum:
CentOS 與 Fedora 所常用的自動(dòng)升級機(jī)制,透過 FTP 或 WWW 來進(jìn)行線上升級以及線上直接安裝套件;
- up2date:
這是 Red Hat 所使用的自動(dòng)升級機(jī)制,需要註冊才能使用,並且依據(jù)付費(fèi)與否而管制其流量;
- apt:
最早由 debian 這個(gè) distribution 所發(fā)展,現(xiàn)在 B2D 也是使用 apt ,同時(shí)由於 apt 的可移植性, 所以只要你的 RPM 可以使用 apt 來管理的話,就可以自行建立 apt 伺服器來提供其他使用者進(jìn)行線上安裝與升級。?
- you:
所謂的 Yast Online Update (YOU) 是由 SuSE 所自行開發(fā)出來的線上安裝升級方式, 經(jīng)過註冊取得一組帳號密碼後,就能夠使用 you 的機(jī)制來進(jìn)行線上升級。不過如果是免費(fèi)的版本, 則僅有 60 天的試用期!
- urpmi:
這個(gè)則是 Mandriva 所提供的線上升級機(jī)制!
底下鳥哥以 CentOS 4.3 提供的 yum 線上升級架構(gòu)來進(jìn)行說明,同時(shí)亦簡單的介紹一下 B2D 這個(gè) distribution 的 APT 來說明說明! ^_^!那為什麼不選擇其他的版本來介紹呢? 就如同區(qū)域網(wǎng)路那個(gè)章節(jié)裡面的 distribution 選擇提到的, 越穩(wěn)定的版本就不容易發(fā)生程式臭蟲,不斷升級的情況就比較不會發(fā)生,所以,鳥哥這裡再次的說明一下,?如果要做為主機(jī)伺服器之用的話,盡量選擇較穩(wěn)定且支援較多的版本,例如?CentOS, SuSE, Red Hat, B2D 及 debian?等 distribution 啊!
CentOS 的 yum 自動(dòng)升級
我們知道 CentOS 主要是以 RPM 來作為套件的管理機(jī)制,那麼 RPM 本身就有一些表頭資料記錄了這個(gè)套件本身的資訊, 包括了相依屬性之類的訊息等等, yum 這個(gè)咚咚就是藉由分析這些 RPM 套件的表頭資料,並且將這些表頭資料事先記錄下來, 當(dāng)使用者要求升級或者是安裝的時(shí)候, yum 就會透過分析這些表頭資料來決定下載的檔案, 這些下載的檔案當(dāng)然包括了相依屬性的套件了,所以說,yum 已經(jīng)主動(dòng)克服了套件之間的屬性相依問題囉!很棒吧!
那麼 yum 是如何動(dòng)作的呢?基本上是這樣的:
- 先由設(shè)定檔判斷 yum server 所在處;
- 連接到 yum server 後,先下載新的 RPM 檔案的表頭資料;
- 分析比較使用者所欲安裝/升級的檔案,並提供使用者確認(rèn);
- 下載使用者選擇的檔案到系統(tǒng)中的 /var/cache/yum ,並進(jìn)行實(shí)際安裝;
yum 的設(shè)定檔
基本上,在你一安裝完 CentOS 之後,系統(tǒng)就主動(dòng)的幫你建立好 CentOS 的 yum server 設(shè)定了, 他的設(shè)定檔在:
- /etc/yum.conf
- /etc/yum.repos.d/CentOS-Base.repo
- http://ftp.isu.edu.tw/pub/Linux/CentOS/
不過 CentOS 官方網(wǎng)站則是建議使用國碼來作為鏡相網(wǎng)站的選擇依據(jù), 如此一來在大版本相同的環(huán)境下 (4.3 -> 4.4) 咱們的 CentOS 是可以自動(dòng)升級到不同版本中的! 所以,鳥哥的設(shè)定檔是改成這個(gè)樣子的:
| [root@linux ~]# vi /etc/yum.repos.d/CentOS-Base.repo [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch &repo=os&cc=tw # 注意!上面兩行是同一行! gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4#released updates [update] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch &repo=updates&cc=tw # 注意!上面兩行是同一行! gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4 ......(底下省略)..... |
另外最要注意的是,在設(shè)定檔當(dāng)中所指定的鏡像站臺 (mirror) 離你越近越好,而且頻寬越大越好, 這樣你就可以比較方便快速的下載啊!而且,你必須已經(jīng)成功的連結(jié)到該鏡像站臺才行, 否則在執(zhí)行 yum 時(shí)會發(fā)生某些問題喔!另外,你必須是 root 的身份才能使用 yum 啊! 也就是說:
- 你必須使用 root 的身份來執(zhí)行 yum ;
- 設(shè)定檔內(nèi)指定的鏡像站臺必須能與你進(jìn)行網(wǎng)路連接;
- 鏡像站臺頻寬越大越好,所以選擇離你越近的鏡像站越好!
yum 的安裝、升級、移除、查詢等功能
yum 可不止能夠線上自動(dòng)升級而已,他還可以作查詢、套件群組的安裝、整體版本的升級等等,好用的哩! 先來談?wù)撘幌?yum 這個(gè) client 端的指令用法吧:
| [root@linux ~]# yum [option] [工作項(xiàng)目] [套件] 參數(shù): option:主要的參數(shù),包括有:-y :當(dāng) yum 詢問使用者的意見時(shí),主動(dòng)回答 yes 而不需要由鍵盤輸入;--installroot=/some/path :安裝在其他的路徑,而不在目前目錄樹的架構(gòu)中;對於建立虛擬機(jī)器相當(dāng)有幫助!不過,一般使用者應(yīng)該用不到。 [工作項(xiàng)目]:由於不同的使用條件,而有一些選擇的項(xiàng)目,包括:install :指定安裝的套件名稱,所以後面需接『 套件名稱 』update :進(jìn)行整體升級的行為;當(dāng)然也可以接某個(gè)套件,僅升級一個(gè)套件;remove :移除某個(gè)套件,後面需接套件名稱;search :搜尋某個(gè)套件或者是重要關(guān)鍵字;list :列出目前 yum 所管理的所有的套件名稱與版本,有點(diǎn)類似 rpm -qa;info :同上,不過有點(diǎn)類似 rpm -qai 的執(zhí)行結(jié)果;clean :下載的檔案被放到 /var/cache/yum ,可使用 clean 將他移除,可清除的項(xiàng)目:packages | headers | metadata | cache 等; 另外,在[工作項(xiàng)目]部分還可以具有整個(gè)群組套件的安裝方式,如下所示:grouplist :列出所有可使用的『套件組』,例如 Development Tools 之類的;groupinfo :後面接 group_name,則可瞭解該 group 內(nèi)含的所有套件名;groupinstall:這個(gè)好用!可以安裝一整組的套件群組,相當(dāng)?shù)牟诲e(cuò)用!更常與 --installroot=/some/path 共用來安裝新系統(tǒng)groupupdate :升級整個(gè)套件群組;groupremove :移除某個(gè)套件群組;範(fàn)例一:搜尋 CentOS 的更新主機(jī)上是否有 RAID 磁碟陣列相關(guān)套件? [root@linux ~]# yum search raid .....前面省略..... mdadm.i386 1.6.0-3 base Matched from: mdadm controls Linux md devices (software RAID arrays) mdadm is used to create, manage, and monitor Linux MD (software RAID) .....後面省略..... # 看到否?輸出資料的特殊字體那一行就顯示了你可以安裝的套件名稱然後你可以這樣:[root@linux ~]# yum info mdadm Name : mdadm Arch : i386 Version: 1.6.0 Release: 3 Size : 84 k Repo : base Summary: mdadm controls Linux md devices (software RAID arrays) Description: .....後面省略..... # 瞧一瞧啊!套件的版本名稱、資料大小、還有該套件出處 (base)! # 需要注意看的是 Summary 與 Description 這兩個(gè)注意事項(xiàng)內(nèi)容! |
| 範(fàn)例二:安裝某個(gè)套件吧!以 mdadm 為例: [root@linux ~]# rpm -q mdadm package mdadm is not installed # 鳥哥的主機(jī)並沒有安裝這個(gè)玩意兒~所以底下開始安裝先![root@linux ~]# yum install mdadm Setting up Install Process Setting up repositories update 100% |=========================| 951 B 00:00 base 100% |=========================| 1.1 kB 00:00 addons 100% |=========================| 951 B 00:00 extras 100% |=========================| 1.1 kB 00:00 # 上面這個(gè)階段在讀取 RPM 檔案的檔頭資料;--> Populating transaction set with selected packages. Please wait. ---> Downloading header for mdadm to pack into transaction set. mdadm-1.6.0-3.i386.rpm 100% |=========================| 8.2 kB 00:00 ---> Package mdadm.i386 0:1.6.0-3 set to be updated --> Running transaction check # 上面這個(gè)階段則是在下載檔案以及準(zhǔn)備更新的階段Dependencies Resolved =============================================================================Package Arch Version Repository Size ============================================================================= Installing:mdadm i386 1.6.0-3 base 84 kTransaction Summary ============================================================================= Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 84 k Is this ok [y/N]: y # 至於這個(gè)階段則在分析相依屬性,並且讓使用者確認(rèn)下載開始wnloading Packages: (1/1): mdadm-1.6.0-3.i386 100% |=========================| 84 kB 00:00 Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running TransactionInstalling: mdadm ######################### [1/1]Installed: mdadm.i386 0:1.6.0-3 Complete! # 最終則下載與安裝的結(jié)果! |
| [root@linux ~]# yum clean packages Cleaning up Packages 2 packages removed |
| [root@linux ~]# yum -y update |
- 安裝套件群組的功能
什麼是『套件群組』呢?還記得在安裝的時(shí)候有出現(xiàn)套件選擇的地方吧? 在那個(gè)時(shí)候你選擇的資料可不是『套件名稱』喔,而是一堆『套件群組』,舉例來說, 你會看到『KDE 桌面環(huán)境』之類的,而不是每個(gè) KDE 桌面的各項(xiàng)套件名稱,對吧!那個(gè)咚咚就是『套件群組』啦! 由於各大 distributions 預(yù)設(shè)都沒有選擇發(fā)展工具 (Development Tools), 這些工具包含了 gcc, kernel-devel 等等,那麼你如何使用 yum 一口氣安裝呢? 看看底下的範(fàn)例:
利用這個(gè)『 yum groupinstall "套件群組名" 』可以讓你一口氣安裝很多的套件, 而不必?fù)?dān)心某個(gè)套件忘記裝了!實(shí)在是很不錯(cuò)啦~而且利用 groupinfo 的功能你也可以發(fā)現(xiàn)一些不錯(cuò)的套件資料, 如此一來,你就可以更方便的管理你的 Linux 系統(tǒng)了,很不錯(cuò)吧!範(fàn)例三:查詢與安裝『套件群組』 [root@linux ~]# yum grouplist Installed Groups:Administration ToolsAuthoring and PublishingCompatibility Arch Support .....中間省略..... Available Groups:Development ToolsXFCE-4.2 .....中間省略..... Done # 看到?jīng)]!上面就列出來你已經(jīng)安裝的套件群組,還有尚可安裝的其他套件群組, # 真是非常的方便!那麼如何知道 Development Tools 裡面有啥咚咚?[root@linux ~]# yum groupinfo "Development Tools" Group: Development ToolsRequired Groups: <==所需要的相依屬性資料Development LibrariesDefault Metapkgs: <==預(yù)設(shè)內(nèi)部所需要的中繼套件EmacsOptional Metapkgs: <==最好還含有這些套件較佳RubyXEmacs .....中間省略.....Mandatory Packages: <==一些所需要的套件資料pkgconfiggcc-ppc32makegccautoconf .....中間省略.....Default Packages:gcc-g77cscope .....中間省略.....Optional PackagesdejagnuElectricFencegcc-gnat .....中間省略..... # 總共會列出來這個(gè)『套件群組』內(nèi)含有的各項(xiàng)資料,如果你需要安裝的話,就可以:[root@linux ~]# yum groupinstall "Development Tools"
例題:請?jiān)O(shè)定一下工作排程,讓你的 centOS 可以每天自動(dòng)更新系統(tǒng)
答:- 可以使用『 crontab -e 』來動(dòng)作,也可以編輯『 vi /etc/crontab 』來動(dòng)作, 由於這個(gè)更新是系統(tǒng)方面的,所以鳥哥習(xí)慣使用 vi /etc/crontab 來進(jìn)行指令的說明。 其實(shí)內(nèi)容很簡單: 40 5 * * * root yum -y update && yum clean packages 這樣就可以自動(dòng)更新了, 時(shí)間訂在每天的凌晨 5:40 ,並且更新完成後會主動(dòng)的將下載的套件資料移除喔!
不同版本間的升級
什麼!不同的版本之間可以直接『網(wǎng)路』升級了喔?沒錯(cuò)!而且整個(gè)流程還挺簡單的, 升級完成之後,絕大部分的服務(wù)都還不會有困擾!真是很不錯(cuò)啊!那什麼是『不同版本?』舉例來說, CentOS 4.2 升級到 CentOS 4.3 算是一種,而 Fedora Core 1 升級到 CentOS 4.3 則又是另外一種, 同樣是 CentOS 的升級比較容易,尤其 4.3 本來就是架構(gòu)在 4.2 上面持續(xù)發(fā)展的結(jié)果; 不過如果是 Fedora Core 的話,可能就比較麻煩一點(diǎn)點(diǎn)。底下我們分別談一談這兩種方式的升級吧!
- CentOS 4.2 升級到 CentOS 4.3
在 CentOS 的發(fā)展理念當(dāng)中,如果推出了 4.3 ,那麼 4.2 以前的 4.x 版本就不會繼續(xù)發(fā)展, 所以使用者必須要將原本的 4.2 直接提升到 4.3 才行。那麼需要作些什麼動(dòng)作呢? 不需要啊!只要修改一下 yum 的設(shè)定檔就好了。首先,同樣需要找到最近的鏡像站臺, 我們依舊以義守大學(xué)的 FTP 網(wǎng)站來提供所需要的套件資料,修改成這樣:
因?yàn)?/etc/yum.repos.d/CentOS-Base.repo?的內(nèi)容與前面相同, 所以鳥哥在這裡不再浪費(fèi)篇幅,請往前翻閱吧!設(shè)定好了之後,接下來給他進(jìn)行:1. 先修改 /etc/yum.conf [root@linux ~]# vi /etc/yum.conf .....前面省略..... # 直接在檔案的最底下加入這一行來增加一些額外的功能: plugins=12. 再修改 /etc/yum.repos.d/CentOS-Base.repo [root@linux ~]# vi /etc/yum.repos.d/CentOS-Base.repo # 內(nèi)容與『 yum 的設(shè)定檔』說明相同,請回到本小節(jié)的最前面查閱該設(shè)定
記得是『?upgrade?』而不是『?update?』喔!兩者用法不同啊! 然後接下來就是一段時(shí)間的等待啊!沒辦法,因?yàn)閺木W(wǎng)路上面捉資料下來是需要時(shí)間的! 還好鳥哥的環(huán)境是在學(xué)術(shù)網(wǎng)路內(nèi),所以連結(jié)同樣是學(xué)術(shù)網(wǎng)路的義守大學(xué)還挺快的就是了! ^_^! 整個(gè)升級的時(shí)間大約花費(fèi) 20 分鐘以內(nèi),升級完畢之後,重新開機(jī)瞧一瞧登入畫面!哇!變成 CentOS 4.3 了, 真是快速又方便!而且原本有啟動(dòng)的服務(wù)幾乎沒有任何問題,同樣可以正常的啟動(dòng)吶!^_^[root@linux ~]# yum upgrade
上面的動(dòng)作你可以參考底下這一篇官方說明文件:
- http://www.centos.org/modules/news/article.php?storyid=118
- Fedora Core Release 1 升級到 CentOS 4.3
如果你使用的是舊版的 Linux distributions ,例如 Fedora core release 1, Red Hat 9 等等的系統(tǒng), 這些系統(tǒng)已經(jīng)舊到?jīng)]有什麼更新的軟體出來,所以如果套件有臭蟲而需要更新時(shí), 你可能就得要使用 Tarball 的方式手動(dòng)的給他『 configure, make, make install 』等等的, 好累啊~那如果我安裝 CentOS 呢?如果需要主動(dòng)重新安裝的話,那舊的資料不是會不見嗎? 又得要備份,重新處理等等的,還是很累啊!
沒關(guān)係!有 yum 就搞定了!你可以將你的 FC1 升級到 CentOS 4.3 了,而且是『線上更新』喔! 厲害吧!不過,因?yàn)?FC1 使用的核心是 2.4 版,但 CentOS 4.3 使用的是新的 2.6.x , 這兩種核心可不能互相更新啊!所以囉,我們還需要一些額外的動(dòng)作來進(jìn)行升級,而不像前面 CentOS 4.2 升級到 4.3 那麼簡單!鳥哥底下的動(dòng)作是參考這幾篇:
- twu2 兄提供的不同版本間升級:http://phorum.study-area.org/viewtopic.php?t=28648
- CentOS 官方網(wǎng)站提供的一些升級建議:
http://www.centos.org/modules/newbb/viewtopic.php?topic_id=428&forum=6
http://www.centos.org/modules/newbb/viewtopic.php?topic_id=382
在這個(gè)步驟當(dāng)中,你最好先將一些重要資料備份起來,包括 /etc 與 /home 整個(gè)目錄, 還有其他你有開啟的服務(wù)的資料,包括 MySQL 或者是 WWW 的網(wǎng)頁資料等,請自行備份喔。 另外,我們的 yum 預(yù)設(shè)是將下載的套件通通放置到 /var/cache/yum 當(dāng)中,所以你的 /var 目錄所在 partition 的容量也需要至少 1GB 以上的容量,而且安裝軟體所在目錄 /usr 所在的 partition 最好也能夠有 2GB 以上的空間,否則容易出現(xiàn)空間不足的錯(cuò)誤訊息而無法繼續(xù)。0. 前處理:先準(zhǔn)備好你的資料,以及刪除不需要的資料 [root@linux ~]# yum clean packages headers # 先刪除原本的 yum 資料,因?yàn)?FC1 使用的也是 yum , # 所以最好先將之前 FC1 的 yum 資料刪除,比較不會有問題;
那如果真的空間不足怎麼辦?你可以將一些不需要的套件先移除啊!舉例來說, 你可以利用『 yum groupremove "Development Tools" 』之類的指令先將這些不是必備的套件群組移除, 以及其他 X 相關(guān)的套件也可以先移除,等到升級完畢後再以 yum 來重新安裝即可, 這樣可以節(jié)省很多升級時(shí)分析相依屬性所花費(fèi)掉的時(shí)間喔!
同時(shí)你得要確認(rèn)你的鏡像站臺,以及 CentOS 的數(shù)位簽章檔案已經(jīng)安裝到 RPM 資料庫當(dāng)中才行, 同樣的,鳥哥還是以義守大學(xué)的 FTP 站為主要的來源鏡像站,但是你必須要先取得一些 RPM 相關(guān)的檔案, 這些檔案由於會與 FC1 原本的套件產(chǎn)生不相符合的特性,所以需要先捉下來並且強(qiáng)制安裝才行! 請你自行連上:
- http://ftp.isu.edu.tw/pub/Linux/CentOS/
- centos-release-4-3.2.i386.rpm
- centos-yumconf-4-4.5.noarch.rpm
- kernel-2.6.9-34.EL.i686.rpm
- udev-039-10.12.EL4.i386.rpm
由於 kernel 2.6 使用的裝置管理是以 udev 這個(gè)套件來處理的,與原本的 kernel 2.4 並不相同, 為了避免使用者進(jìn)行錯(cuò)誤的安裝,所以 yum 會主動(dòng)的分析核心與裝置管理套件的差異, 如果兩者無法配合就產(chǎn)生錯(cuò)誤訊息且強(qiáng)制中斷 yum ,那結(jié)果就是導(dǎo)致無法以 yum 進(jìn)行升級啦! 要躲過這個(gè)困擾,你就得要先手動(dòng)的安裝上頭那幾個(gè) RPM 檔案。同時(shí)安裝 kernel 的過程當(dāng)中會發(fā)生錯(cuò)誤訊息, 先不要理他,等到後續(xù)步驟再來重新處理即可! 既然 kernel 2.6 會與 2.4 版衝突,而鳥哥的原本的 FC1 本來就有 2.4 版的核心嘛! 那即使安裝了新的 kernel-2.6.9-34.EL.i686.rpm 核心,但核心版本衝突的問題還是沒有解決的, 所以啊,你就得要這樣做了:1. 安裝升級所需要的 RPM 檔案: [root@linux ~]# rpm --import \ > http://ftp.isu.edu.tw/pub/Linux/CentOS/4.3/os/i386/RPM-GPG-KEY-centos4 [root@linux ~]# rpm -Uvh centos-release-4-3.2.i386.rpm [root@linux ~]# rpm -Uvh centos-yumconf-4-4.5.noarch.rpm [root@linux ~]# rpm -ivh --force --nodeps kernel-2.6.9-34.EL.i686.rpm # 在這個(gè)動(dòng)作時(shí),由於我們的核心並非是 CentOS ,所以這個(gè)動(dòng)作會發(fā)生一些錯(cuò)誤, # 先不要理他,待會兒的動(dòng)作再重新處理即可。 [root@linux ~]# rpm -ivh --force --nodeps udev-039-10.12.EL4.i386.rpm
將一些舊版本的核心給他移除後,你的系統(tǒng)就只有剩下剛剛安裝的那個(gè) CentOS 的新核心, 所以核心版本的衝突當(dāng)然就不存在了。要注意的是,你現(xiàn)在絕不可重新開機(jī),否則你的系統(tǒng)就掛了! 因?yàn)闆]有核心了喔!切記切記!然後開始要設(shè)定好升級時(shí)要使用的 yum 設(shè)定檔了!2. 移除會有衝突的 2.4 版核心,連同其原始碼 [root@linux ~]# rpm -qa | grep kernel kernel-2.4.22-1.2197.nptl kernel-2.4.22-1.2115.nptl kernel-2.4.22-1.2199.nptl kernel-source-2.4.22-1.2197.nptl kernel-source-2.4.22-1.2199.nptl .....其他省略..... [root@linux ~]# rpm -e kernel-source-2.4.22-1.2199.nptl [root@linux ~]# rpm -e kernel-source-2.4.22-1.2197.nptl [root@linux ~]# rpm -e kernel-2.4.22-1.2115.nptl [root@linux ~]# rpm -e kernel-2.4.22-1.2197.nptl [root@linux ~]# rpm -e kernel-2.4.22-1.2199.nptl # 反正就是找到核心與核心原始碼的套件後,就將他移除!記得套件名為: # kernel 與 kernel-source ,其他的不用動(dòng)! [root@linux ~]# rpm --rebuilddb
設(shè)定檔裡面先只要有這兩個(gè)項(xiàng)目即可,因?yàn)槲覀儍H注視在整體版本的升級, 所以其他的額外功能部分先不要理他!以後再來處理即可啊!接下來就準(zhǔn)備要升級了!這樣做吧:3. 規(guī)範(fàn)設(shè)定檔 [root@linux ~]# vi /etc/yum.upgrade [main] cachedir=/var/cache/yum debuglevel=2 logfile=/var/log/yum.log pkgpolicy=newest distroverpkg=fedora-release installonlypkgs=kernel kernel-smp kernel-hugemem kernel-unsupported tolerant=1 exactarch=1 plugins=1[upgrade] name=CentOS-4.3 - upgrade baseurl=http://ftp.isu.edu.tw/pub/Linux/CentOS/4.3/os/i386/[update] name=CentOS-4.3 - Updates baseurl=http://ftp.isu.edu.tw/pub/Linux/CentOS/4.3/updates/i386/
理論上,如果你的 FC1 沒有安裝什麼奇怪的軟體,而且『硬碟空間也足夠』 ,那麼 yum 應(yīng)該會開始幫你一個(gè)一個(gè)的下載軟體並且分析屬性相依問題後,就開始進(jìn)行安裝的步驟。 不過,如果發(fā)現(xiàn)一些軟體衝突的問題時(shí),那麼你就得要先以 rpm -e 將舊的軟體先移除, 等到升級完畢後再安裝回來即可。只不過這個(gè)動(dòng)作將依你的環(huán)境而有所不同。 鳥哥的 FC1 實(shí)在是舊的可以,所以很多軟體都有衝突,因此事先移除了很多的套件, 忙了快要半小時(shí)後,系統(tǒng)才順利的開始進(jìn)行安裝。由於鳥哥主機(jī)所在環(huán)境的網(wǎng)路下載的速度尚可而已, 所以由開始下載到升級完畢,大概花了一個(gè)半小時(shí)左右! @_@4. 開始升級的動(dòng)作: [root@linux ~]# yum -y -t -c /etc/yum.upgrade upgrade
透過這三個(gè)指令我們可以再將剛剛沒有完成的核心安裝一遍,同時(shí)再以新的 yum 來進(jìn)行升級, 這個(gè)時(shí)候我們的系統(tǒng)應(yīng)該是很 OK 的啦!不過,有的小問題,那就是『開機(jī)的設(shè)定檔還沒有更新』喔! 所以你還得要這樣做:5. 重新安裝核心,並處理 RPM 資料庫與更新其他套件 [root@linux ~]# rpm -ivh --force --nodeps kernel-2.6.9-34.EL.i686.rpm [root@linux ~]# rpm --rebuilddb [root@linux ~]# yum update
在今日 (2006/08/10) 能夠安裝的最新核心版本是 2.6.9-34.0.2.EL ,所以上面的第一個(gè) title 才會是這樣的設(shè)定資料,要記得與你的環(huán)境符合啊(如果你不是使用 4.3 來升級)!如果忘記上面各項(xiàng)資料的意義, 請參考『鳥哥的 Linux 私房菜 基礎(chǔ)篇 boot loader?』的介紹啊! 如果設(shè)定好了這個(gè)開機(jī)資訊,嘿嘿!請重新開機(jī)試看看吧! ^_^6. 設(shè)定開機(jī)設(shè)定檔 [root@linux ~]# vi /boot/grub/menu.lst default=0 timeout=10 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title CentOS (2.6.9-34.0.2)root (hd0,0)kernel /boot/vmlinuz-2.6.9-34.0.2.EL ro root=/dev/hda1 hdd=ide-scsi rhgbinitrd /boot/initrd-2.6.9-34.0.2.EL.img title CentOS (2.6.9-34.EL)root (hd0,0)kernel /boot/vmlinuz-2.6.9-34.EL ro root=/dev/hda1 hdd=ide-scsi rhgbinitrd /boot/initrd-2.6.9-34.EL.img
基本上這樣已經(jīng)處理完畢了!也就是說,你的系統(tǒng)應(yīng)該是由 FC1 順利的轉(zhuǎn)成 CentOS 4.3 才對! 不過,有些小細(xì)節(jié)你依舊需要注意喔:
- 觀察您的系統(tǒng)是否有啟動(dòng)原有的服務(wù),亦可利用 chkconfig --list;
- 如果你的舊系統(tǒng)曾有使用 tarball 的方式來安裝軟體,則升級完畢後你必須要重新安裝一次該軟體;
- 系統(tǒng)可能會產(chǎn)生很多的 .rpmnew 的檔案,請使用 locate 搜尋,並且重新處理設(shè)定檔。
Debian 的 apt 自動(dòng)升級:以 B2D 為例
APT 最早是 debian 這個(gè)社群的 Linux distribution 用來作為套件管理的一項(xiàng)機(jī)制, 後來實(shí)在很方便又好用,所以就被利用來做為其他 distributions 的線上升級管理機(jī)制了! 所以你會在很多地方看到有 FC 系列的 APT 伺服器、或者是自訂的 APT 伺服器等等的。 這個(gè) APT 的使用與 yum 很類似吶!同樣也是透過套件的表頭分析後,然後與系統(tǒng)本身資料比對, 因此同樣也克服了屬性相依的困擾了,非常方便!底下我們就分別來談一談吧!
APT 的設(shè)定檔
如同前面提到的 yum 一樣,既然是線上升級,那麼我們自然得要找到相對應(yīng)的伺服器囉! 而一般有提供 apt 服務(wù)的 distributions 事實(shí)上他們都已經(jīng)做好設(shè)定檔內(nèi)相關(guān)的伺服器選擇了, 例如 B2D 就是一個(gè)例子。不過, 如果你是使用類似 Red Hat 9, Fedora Core Release 等版本的話, 可能由於種種原因讓你不能將該主機(jī)升級到類似 CentOS 等較新的版本時(shí),那你就可以嘗試到底下的網(wǎng)站找找看 APT 主機(jī)了:
- http://apt.freshrpms.net/
| 1. 先處理 APT 伺服器來源的設(shè)定資料: [root@linux ~]# vi /etc/apt/sources.list deb ftp://debian.tnc.edu.tw/pub/debian/ stable main non-free contrib deb http://security.debian.org/ sarge/updates main contrib non-free deb ftp://debian.tnc.edu.tw/pub1 b2d/ deb http://ftp2.de.debian.org/debian-volatile sarge/volatile main # 上面的格式是這樣的: # <deb 的標(biāo)頭格式> <APT伺服器網(wǎng)址> <相對網(wǎng)址路徑> <目錄一> <目錄二> ... |
- ftp://debian.tnc.edu.tw/pub/debian/stable/main
- ftp://debian.tnc.edu.tw/pub/debian/stable/non-free
- ftp://debian.tnc.edu.tw/pub/debian/stable/contrib
| Tips: 事實(shí)上, /etc/apt/apt.conf 還可以提供其他額外的設(shè)定喔,例如使用 Proxy 以及規(guī)範(fàn)下載後的套件在安裝完畢後應(yīng)該進(jìn)行的處理步驟,舉例來說,是否需要將該套件移除! 你應(yīng)該要使用 man apt.conf 查詢一下該檔案的用法喔! |
實(shí)際使用 APT
APT 的使用也實(shí)在是很簡單!只要利用 apt-get 即可!不過,不同於 yum 每次都會進(jìn)行 RPM 檔案表頭的分析, APT 則是將套件表頭的下載與實(shí)際的安裝分成兩個(gè)動(dòng)作分別執(zhí)行,先來談一談 apt-get 這個(gè)指令的用法吧!
| [root@linux ~]# apt-get [-qy] [-c config_file] [更新項(xiàng)目] [套件名稱] 參數(shù): -q :不要在螢?zāi)簧陷敵鲇嵪?#xff0c;常用在背景環(huán)境的執(zhí)行當(dāng)中喔! -y :自動(dòng)在進(jìn)行 apt-get 時(shí)回答 y 的回應(yīng); -c :後面接的是設(shè)定檔,一般系統(tǒng)會主動(dòng)的以 /etc/apt 內(nèi)的設(shè)定檔為依據(jù)。 [更新項(xiàng)目]:要 apt-get 進(jìn)行的工作,主要有這幾項(xiàng):update :就是更新伺服器與用戶端的套件表頭清單,這個(gè)動(dòng)作務(wù)必要進(jìn)行!install :後面需要加上要安裝的套件名稱才行!upgrade :進(jìn)行『已安裝套件』的完整升級,不過未安裝套件則不予安裝;dist-upgrade:以 upgrade 相似,但是當(dāng)新版本的套件有其他相依屬性的套件加入時(shí),單純的 upgrade 將無法進(jìn)行安裝,此時(shí)就得要使用 dist-upgrade 了!clean :清除已經(jīng)下載到 /var/cache/apt/archives/ 的套件檔案。remove :移除某個(gè)套件啊!範(fàn)例一:進(jìn)行套件標(biāo)頭更新後,進(jìn)行整體套件的更新動(dòng)作 [root@linux ~]# apt-get update 下載:1 ftp://debian.tnc.edu.tw stable/main Packages [3349kB] 下載:2 http://ftp2.de.debian.org sarge/volatile/main Packages [3893B] .....中間省略..... 讀取 3868kB 用了 24s (159kB/s) 讀取套件清單中... 完成[root@linux ~]# apt-get dist-upgrade 讀取套件清單中... 完成 了解套件依存關(guān)係中... 完成 籌畫升級套件中...完成 下列的套件都將被【刪除】:blt-common ettercap-plugins libgdbmg1-dev 下列的【新】套件都將被安裝:dictionaries-common ettercap-common .....後面省略..... 下列的套件都將維持舊版本:fontconfig libxft-dev libxft2 libxft2-dbg .....後面省略..... 下列的套件都將更新:apache apache-common apache-utils apache2 .....後面省略..... 更新 105 個(gè)套件,新安裝 32 個(gè)套件,刪除 3 個(gè)套件,另不更新 7 個(gè)套件。 需要下載 122MB 的檔案。 解壓縮後將消耗 39.6MB 的空間。 繼續(xù)執(zhí)行嗎? 是按 [Y] 鍵,否按 [n] 鍵 y 下載:1 ftp://debian.tnc.edu.tw stable/main libc6-dev 2.3.2.ds1-22sarge3 [2535kB] 下載:2 http://security.debian.org sarge/updates/main login 1:4.0.3-31sarge8 [576kB] .....中間省略..... 讀取 122MB 用了 11m47s (172kB/s) 正在預(yù)先設(shè)定套件 ... (正在讀取資料庫 ... 系統(tǒng)目前總共安裝有 112550 個(gè)檔案和目錄。) 正預(yù)備替換 libc6-dev 2.3.2.ds1-22 (使用 .../libc6-dev_2.3.2.ds1-22sarge3_i386.deb) 正在解壓縮替換的套件檔 libc6-dev ... .....中間省略..... Please *restart* your Apache2 ! Y/N ? y .....中間省略.....[root@linux ~]# apt-get clean # 這個(gè)動(dòng)作會將剛剛下載的幾個(gè) deb 的套件給他移除!節(jié)省硬碟空間! |
| [root@linux ~]# vi /etc/crontab 40 5 * * * root /usr/bin/apt-get update && /usr/bin/apt-get -y dist-upgrade |
| [root@linux ~]# apt-cache [搜尋項(xiàng)目] 參數(shù): [搜尋項(xiàng)目]:apt-cache 可以搜尋 apt 所列出的套件標(biāo)頭資料喔!可用項(xiàng)目有: pkgnames:列出本系統(tǒng)上面的所有套件名稱!!有點(diǎn)類似 (rpm -qa); dump :列出所有的套件標(biāo)頭以及其相關(guān)的相依屬性套件! search :後面可接要搜尋的字串,例如 apt-cache search postfix show :後面接套件名稱,可以顯示出該套件的主要內(nèi)容的描述! showpkg :列出後面所接套件的相依屬性以該其套件提供的相關(guān)功能! depends :可以列出與後面所接套件有相依屬性或者是衝突的相關(guān)資料!範(fàn)例一:找出與 grep 有關(guān)的套件 [root@linux ~]# apt-cache search grep .....前面省略..... grep - GNU grep, egrep and fgrep grep-dctrl - Grep Debian package information .....後面省略.....[root@linux ~]# apt-cache show grep Package: grep Essential: yes Priority: required Section: base Installed-Size: 660 Maintainer: Ryan M. Golbeck <rmgolbeck@debian.org> Architecture: i386 Version: 2.5.1.ds1-4 Provides: rgrep Pre-Depends: libc6 (>= 2.3.2.ds1-4) Conflicts: rgrep Filename: pool/main/g/grep/grep_2.5.1.ds1-4_i386.deb Size: 170290 MD5sum: 68196ad14b098b0eb4b91f4a7cfa8ff2 Description: GNU grep, egrep and fgrep'grep' is a utility to search for text in files; it can be used from thecommand line or in scripts. Even if you don't want to use it, other packageson your system probably will.[root@linux ~]# apt-cache depends grep grep特別依存關(guān)係: libc6衝突: <rgrep> |
| [root@linux ~]# apt-get install zlibc |
- http://163.19.59.1/~linux/student_samba/apt/apt_server.html
重點(diǎn)回顧
- 由於程式是由人所撰寫的,因此程式在執(zhí)行的過程中難免可能會出現(xiàn)一些安全性的問題或者是程式臭蟲的問題。 所以,絕大部分的情況下,將套件保持在最新的版本較能夠避免被 cracker 所入侵的問題
- 絕大部分的自由軟體之維護(hù)的人員比專屬軟體還要多,所以程式發(fā)生臭蟲後的除錯(cuò)與更新時(shí)間較快速!!
- 你不一定要將你的 distribution 更新到最新,不過,更新到最新可以保有較佳的硬體支援與網(wǎng)路安全。
- 由於 distribution 發(fā)展的不同,基本的套件安裝可以分為 rpm, dpkg 及 tarball 三種常見模式;
- 各個(gè) distribution 均有推出自家的線上升級機(jī)制,如 CentOS 的 yum, Debian 的 apt, Red Hat 的 up2date 以及 SuSE 的 YOU 等等。各種版本均不可混用。
- yum 這個(gè)升級方案在使用時(shí),會主動(dòng)的 (1)下載表頭資料與 (2)進(jìn)行使用者所需要的更新動(dòng)作;
- apt-get 必須要使用 apt-get update 更新表頭資料後,才能夠進(jìn)行使用者所要求的動(dòng)作!
- 線上升級機(jī)制常常需要使用到 crontab 的工作排程支援;
課後練習(xí)
- 請找到您的 distribution 所提供的線上升級機(jī)制,立刻進(jìn)行全部更新的動(dòng)作。
- 請前往臺灣電腦危機(jī)處理小組註冊,並取得各項(xiàng)危險(xiǎn)通告的電子郵件通知!
- 在 RPM base 的系統(tǒng)當(dāng)中,如果升級的套件所含有的設(shè)定檔在系統(tǒng)當(dāng)中已經(jīng)被更動(dòng)過,則該設(shè)定檔會如何被安裝到系統(tǒng)中? 如果設(shè)定檔已經(jīng)被改過,則更新的設(shè)定檔會被儲存成為 *.rpmnew 的副檔名。 並建議使用者應(yīng)該要將舊的設(shè)定檔備份,然後以新的設(shè)定檔來進(jìn)行重新設(shè)定。對於該軟體的執(zhí)行穩(wěn)定性會較佳。
- 承上題,如何找出系統(tǒng)上面含有被更動(dòng)過的設(shè)定檔?以 rpm base 的系統(tǒng)為例? 你可以利用『 locate rpmnew 』來找出已經(jīng)安裝的新版本設(shè)定檔,並據(jù)以處理該資料; 也可以利用 rpm -Va 來觀察系統(tǒng)上面所有的已經(jīng)被更動(dòng)過的檔案資料!
- 請找出 CentOS 內(nèi)的 "Development Tools" 相關(guān)的資料,如果您尚未安裝,請安裝他! 利用『 yum grouplist 』找出相關(guān)的套件群組,利用『 yum groupinfo "Develop Tools" 』找出該套件是否為您所需要, 最後用『 yum groupinstall "Develop Tools" 』安裝即可!
- 你在進(jìn)行 CentOS 安裝時(shí),選擇的是預(yù)設(shè)安裝,裝完畢後才發(fā)現(xiàn)沒有 gcc 這個(gè)編譯器。 請問你如何安裝 gcc ? 可以使用『 yum search gcc 』找出所需要的套件,然後用『 yum install xxx 』來安裝即可!
參考資料
- 臺灣電腦危機(jī)處理小組(TWCERT):http://www.cert.org.tw/
- Red Hat 的官方說明:http://www.redhat.com/apps/support/errata/
- APT 官方網(wǎng)站:http://apt.freshrpms.net/
- Rondo 的 APT 實(shí)做:http://163.19.59.1/~linux/student_samba/apt/apt_server.html
- APT Server:http://install.opennms.org/apt/
- 由 Red Hat 9 升級到 CentOS 4.1:http://www.owlriver.com/tips/centos-31-ex-rhl-9/
- twu2 兄提供的不同版本間升級:http://phorum.study-area.org/viewtopic.php?t=28648
- CentOS 官方網(wǎng)站提供的一些升級建議:
http://www.centos.org/modules/newbb/viewtopic.php?topic_id=428&forum=6
http://www.centos.org/modules/newbb/viewtopic.php?topic_id=382 - SuSE 的 YOU 自動(dòng)升級機(jī)制須知:
http://support.novell.com/linux/registration/
http://support.novell.com/techcenter/articles/RegandUpdate_SLE10.html
總結(jié)
以上是生活随笔為你收集整理的鸟哥的Linux私房菜(服务器)- 主机基本安全之二: Linux线上自动升級的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸟哥的Linux私房菜(服务器)- 主机
- 下一篇: 驾照考试:理论考试注意事项