# 7.2 網絡自動升級軟件
## 7.2 網絡自動升級軟件
在現在的因特網上面,cracker 實在是太多了!這些閑人會利用已經存在的系統漏洞,來進行偵測、入侵你的主機。 因此,除了未來架設防火墻之外,最重要的 Linux 日常管理工作,莫過于軟件的升級了! 不過,如果使用者還得要自己每天觀察網絡安全通報,并主動去查詢各大 distribution 針對這些漏洞來提供升級軟件包, 那真是太不人性化了!因此,目前就有很多在線直接更新的機制出現了!有了這些在線直接更新軟件的手段與方法, 我們系統管理員在管理主機系統上面,可就輕松的多啰!
- - - - - -
### 7.2.1 如何進行軟件升級
通常鳥哥安裝好 Linux 之后,會先開啟系統默認的防火墻機制,然后第一件事情就是進行全系統更新啦! 不論是哪一套 Linux 鳥哥都是這樣做的,因為要避免軟件資安的問題嘛!好了,那么 Linux 上面的軟件該如何進行更新與升級呢? 還記得你是如何安裝軟件的嗎?不就是 [rpm](http://linux.vbird.org/linux_basic/0520rpm_and_srpm.php), [tarball](http://linux.vbird.org/linux_basic/0520source_code_and_tarball.php) 與 dpkg 嗎? 所以啰,你的軟件如果想要升級,那就得依據當時你安裝該軟件的方式來進行升級啊!而每種方式都有其適用性:
- RPM:
這是目前最常見于 Linux distribution 當中的軟件管理方式,包括 CentOS / Fedora / SuSE / Red Hat / Mandriva 等等,都是使用這個方式來管理的;
- Tarball:
利用軟件的官方網站所釋出的原始碼在您的系統上面編譯與安裝, 一般來說,由于軟件是直接在自己的機器上面編譯的,所以效能會比較好一些。 不過,升級的時候就比較麻煩,因為又得要下載新的原始碼并且重新編譯一次。 這種安裝模式常見于某些特殊軟件 (沒有包含在 distribution 當中),或者是 Gentoo 這個強調效能的 distribution;
- dpkg:
是 debian 這個 distribution 所使用的軟件管理方式,與 RPM 很類似,都是透過預先編譯的處理,可以讓 end user 直接使用來升級與安裝。
舉例來說,如果你的系統是 CentOS ,我們知道他使用的是 RPM 類型的軟件管理模式,那如果你想要安裝 B2D 的軟件怎辦?要注意, B2D 是使用 debian 的 dpkg 來管理軟件的,兩者并不相同啊!要互相安裝太難了! 所以說,要升級的話,得先了解到你系統上的軟件安裝與管理的方法才行。
不過,有個特殊案例,那就是舊版本的 Linux (例如 Red Hat 9) 的軟件升級該如何是好? 由于舊版本的軟件支持度本來就比較差,商業公司或者是社群也沒有這么多心力放在舊版本的支持上, 所以,你這個時候可以選擇: (1)升級到較新的版本,例如 CentOS 6.x,或者是 (2)利用 Tarball 來自行升級核心與軟件。不過,比較建議升級到新版本啦,因為要自行以手動方式由 Tarball 安裝到最新的版本,實在是很費時費力,而且還得要常常查閱官方網站所推出的最新消息, 漏過一則都可能發生無法預期的狀況。
我們都曉得在 Windows 的環境下,他有提供一個 Live update 的項目可以自動的在線升級, 甚至很多的防病毒軟件與防木馬軟件也都有推出實時的在線更新,如此一來可以讓您的軟件維持在最新版的狀況, 真是好啊!咦!那我們的 Linux 是否有這樣的功能?如果有的話,那么系統自動進行軟件升級, 不就可以輕松又快樂了?沒錯!確實是這樣的!所以就讓我們來談一談 Linux 的在線升級機制吧!
在 Linux 最常見的軟件安裝方式: RPM / Tarball / dpkg 當中,Tarball 由于取得的是原始碼, 所以要用 Tarball 來作在線自動更新是不太可能進行的,所以僅能用 RPM 或 dpkg 這兩種軟件管理的方式來進行在線更新了。
但 RPM 與 dpkg 不是有所謂的相依屬性嗎?這倒不需要擔心吶!因為我們的 RPM 與 dpkg 軟件檔案都有一些軟件的基本信息, 并同時記錄了軟件的相依屬性 (記得使用 rpm -q 的查詢嗎),所以當分析這些基本信息并使用一些機制將這些相依信息記錄下來后, 再透過一些額外的網絡功能,就能夠自動的分析你的系統與修補軟件之間的差異, 并可進一步幫你分析所需要升級與相依屬性的軟件,就可達成自動升級的理想啦!
由于各家 distributions 在管理系統上都有自己獨特的想法,所以在分析 RPM 或 dpkg 軟件與方式上面就有所不同, 也就有底下這些不同的在線升級機制啦:
- yum:
CentOS 與 Fedora 所常用的自動升級機制,透過 FTP 或 WWW 來進行在線升級以及在線直接安裝軟件;
- apt:
最早由 debian 這個 distribution 所發展,現在 B2D 也是使用 apt ,同時由于 apt 的可移植性, 所以只要你的 RPM 可以使用 apt 來管理的話,就可以自行建立 apt 服務器來提供其他使用者進行在線安裝與升級。
- you:
所謂的 Yast Online Update (YOU) 是由 SuSE 所自行開發出來的在線安裝升級方式, 經過注冊取得一組賬號密碼后,就能夠使用 you 的機制來進行在線升級。不過如果是免費的版本, 則僅有 60 天的試用期!
- urpmi:
這個則是 Mandriva 所提供的在線升級機制!
講了這些升級機制并且與 distribution 作了對應,你就該了解到:『每個 distribution 可以使用的在線升級機制都不相同』的啊!所以請參考你的 distribution 所提供的文件來進行在線升級的設定喔!否則就得要自行手動下載安裝了! @\_@
鳥哥這里都是使用 CentOS 這個 Red Hat 兼容的 distributions 來介紹的,因此,底下僅介紹了 yum 而已。 不過,yum 已經能夠適用于 CentOS, Red Hat Enterprise Linux, Fedora 等等,也應該是挺夠用的了! 另外,基礎篇里面已經談過 rpm 與 yum 的用法,所以在這里僅是加強介紹與更新有關的用法而已喔!
- - - - - -
### 7.2.2 CentOS 的 yum 軟件更新、映像站使用的原理
我們曾經在基礎篇里面談過 yum 了,基本上他的原理是,我們的 CentOS 會跑到 yum 服務器上頭,下載了官方網站釋出的 RPM 表頭列表數據,該數據除了記載每個 RPM 軟件的相依性之外,也說明了 RPM 檔案所放置的容器 (repository) 所在。因此透過分析這些數據,我們的 CentOS 就能夠直接使用 yum 去下載與安裝所需要的軟件了! 詳細圖標與流程有點像這樣:

圖 7.2-1、使用 yum 下載清單表頭與取得容器相關資料示意圖
1. 先由配置文件判斷 yum server 所在 IP 地址;
2. 連接到 yum server 后,先下載新的 RPM 檔案的表頭數據;
3. 分析比較使用者所欲安裝/升級的檔案,并提供使用者確認;
4. 下載用戶選擇的檔案到系統中的 /var/cache/yum ,并進行實際安裝;
由于你所下載的清單當中已經含有所有官方網站所釋出的 RPM 檔案的表頭相依屬性的關系, 所以如果你想要安裝的軟件包含某些尚未安裝的相依軟件時,我們的 yum 會順便幫你下載所需要的其他軟件,預安裝后, 再安裝你所實際需要的軟件!從分析、下載到安裝,全部一口氣搞定!很簡單的啦!
不過,恐怕還是有問題。如果全世界使用 CentOS 的朋友通通聯機到同一部 Yum 服務器去下載所需要的 RPM 檔案,哇! 那帶寬不就很容易被塞爆!那怎辦?沒關系,有所謂的映射站啊! CentOS 在世界各地都有映射站,這些映射站會將官網的 yum 服務器的數據復制一份,同時在映射站上面也提供同樣的 yum 功能,因此,你可以在任何一部 yum 服務器的映像站上面下載與安裝軟件。底下是 CentOS 官網上面列出的亞洲地區映射站一覽表:
- <http://www.centos.org/modules/tinycontent/index.php?id=32>
現在的 yum 又很聰明,它會自動的去分析離你的主機最近的那部映射站,然后直接使用該部映像主機作為你的 yum 來源, 因此,『理論上』你不需要更動任何設定,在臺灣,你的 CentOS 就會使用臺灣地區的 yum 服務器啰!就這么簡單! 所以,接下來就讓我們直接來談談怎么使用 yum 吧!
**Tips:** yum 的原理與相關使用,我們在基礎篇里面已經分門別類的介紹過了,因此底下僅就比較重要的部分介紹一下啰!

- - - - - -
### 7.2.3 yum 的使用: 安裝, 軟件群組, 全系統更新
yum 可不止能夠在線自動升級而已,他還可以作查詢、軟件群組的安裝、整體版本的升級等等,好用的哩! 先來談論一下 yum 這個指令的用法吧:
```
[root@www ~]# yum [option] [查詢的工作項目] [相關參數]
選項與參數:
option:主要的參數,包括有:
-y :當 yum 詢問使用者的意見時,主動回答 yes 而不需要由鍵盤輸入;
[查詢的工作項目]:由于不同的使用條件,而有一些選擇的項目,包括:
install :指定安裝的軟件名稱,所以后面需接『 軟件名稱 』
update :進行整體升級的行為;當然也可以接某個軟件,僅升級一個軟件;
remove :移除某個軟件,后面需接軟件名稱;
search :搜尋某個軟件或者是重要關鍵字;
list :列出目前 yum 所管理的所有的軟件名稱與版本,有點類似 rpm -qa;
info :同上,不過有點類似 rpm -qai 的執行結果;
clean :下載的檔案被放到 /var/cache/yum ,可使用 clean 將他移除,
可清除的項目:packages | headers | metadata | cache 等;
在[查詢的工作項目]部分還可以具有整個群組軟件的安裝方式,如下所示:
grouplist :列出所有可使用的『軟件群組』,例如 Development Tools 之類的;
groupinfo :后面接 group_name,則可了解該 group 內含的所有軟件名;
groupinstall:這個好用!可以安裝一整組的軟件群組,相當的不錯用!
更常與 --installroot=/some/path 共享來安裝新系統
groupremove :移除某個軟件群組;
# 范例一:搜尋 CentOS 官網提供的軟件名稱是否有與 RAID 有關的?
[root@www ~]# yum search raid
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile <==這里就是在測試最快的映射站
* base: ftp.isu.edu.tw <==共有四個容器內容
* extras: ftp.isu.edu.tw <==每個容器都在 ftp.isu.edu.tw 上
* updates: ftp.isu.edu.tw
base | 3.7 kB 00:00 <==下載軟件的表頭列表中
extras | 951 B 00:00
updates | 3.5 kB 00:00
=================== Matched: raid =================<==找到的結果如下
dmraid.i686 : dmraid (Device-mapper RAID tool and library)
....(中間省略)....
mdadm.x86_64 : The mdadm program controls Linux md devices (software RAID
....(底下省略)....
# 范例二:上述輸出結果中, mdadm 的功能為何?
[root@www ~]# yum info mdadm
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.twaren.net
* extras: ftp.twaren.net
* updates: ftp.twaren.net
Installed Packages <==這里說明這是已經安裝的軟件!
Name : mdadm
Arch : x86_64
Version : 3.1.3
Release : 1.el6
Size : 667 k
Repo : installed
From repo : anaconda-CentOS-201106060106.x86_64
Summary : The mdadm program controls Linux md devices (software RAID
URL : http://www.kernel.org/pub/linux/utils/raid/mdadm/
License : GPLv2+
Description: The mdadm program is used to create, manage, and monitor
....(底下省略)....
# 由上述底線的 Summary 關鍵詞,知道這軟件在達成軟件磁盤陣列功能!!
```
yum 真是個很好用的東西,它可以直接查詢是否有某些特殊的軟件名稱。舉例來說,你可以利用底下的兩個方式取得軟件名稱:
- yum search "一些關鍵詞"
- yum list (可列出所有的軟件文件名)
然后再以正規表示法取得關鍵詞,或者是『 yum info "軟件名稱" 』就能夠知道該軟件的用途,最后再決定要不要安裝啊!上面的范例一就是在找出磁盤陣列的管理軟件。 如果確定要安裝時,那就參考參考底下的流程吧!
- 利用 yum 進行安裝
```
# 范例三:安裝某個軟件吧!以 mdadm 這個軟件名為例:
[root@www ~]# yum install mdadm
....(前面省略)....
Setting up Install Process
Package mdadm-3.1.3-1.el6.x86_64 already installed and latest version
Nothing to do
[root@www ~]# yum install mdadma
Setting up Install Process
No package <u>mdadma available.</u>
Nothing to do
```
仔細的看上述的兩個指令,第二個指令鳥哥故意寫錯字,讓軟件名稱由 mdadm 變成 mdadma 了!仿真同學如果打錯字時所輸出的訊息。由上述的訊息你可以知道,同樣結果是『Nothing to do』,但是 yum 會告訴你該軟件是『已安裝 (installed and lastest version)』還是『沒有該軟件 (No package mdadma avaliable)』。作這個范例是希望朋友們能夠仔細的看輸出的訊息啦!好啦!我們還是來安裝一個不曾裝過的, 就拿 javacc 這套軟件來裝看看好了!
```
[root@www ~]# yum list javacc*
Available Packages
javacc.x86_64 4.1-0.5.el6 base
javacc-demo.x86_64 4.1-0.5.el6 base
javacc-manual.x86_64 4.1-0.5.el6 base
# 共有三套軟件,分別是 javacc, javacc-demo, javacc-manual ,版本為 4.1-0.5.el6,
# 軟件是放置到名稱為 base 的容器當中存放的。
[root@www ~]# yum install javacc
....(前面省略)....
Setting up Install Process
Resolving Dependencies
--> Running transaction check <==開始檢查有沒有相依屬性的軟件問題
---> Package javacc.x86_64 0:4.1-0.5.el6 set to be updated
....(中間省略)....
=========================================================================
Package Arch Version Repository Size
=========================================================================
Installing:
javacc x86_64 4.1-0.5.el6 base 895 k
Installing for dependencies:
java-1.5.0-gcj x86_64 1.5.0.0-29.1.el6 base 139 k
java_cup x86_64 1:0.10k-5.el6 base 197 k
sinjdoc x86_64 0.5-9.1.el6 base 705 k
Transaction Summary
=========================================================================
Install 4 Package(s) <==安裝軟件匯整,共安裝 4 個,升級 0 個軟件
Upgrade 0 Package(s)
Total download size: 1.9 M
Installed size: 5.6 M
Is this ok [y/N]: y <==讓你確認要下載否!
Downloading Packages:
(1/4): java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64.rpm | 139 kB 00:00
(2/4): java_cup-0.10k-5.el6.x86_64.rpm | 197 kB 00:00
(3/4): javacc-4.1-0.5.el6.x86_64.rpm | 895 kB 00:00
(4/4): sinjdoc-0.5-9.1.el6.x86_64.rpm | 705 kB 00:00
-------------------------------------------------------------------------
Total 3.1 MB/s | 1.9 MB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 1/4
Installing : 1:java_cup-0.10k-5.el6.x86_64 2/4
Installing : sinjdoc-0.5-9.1.el6.x86_64 3/4
Installing : javacc-4.1-0.5.el6.x86_64 4/4
Installed: <==主要需要安裝的
javacc.x86_64 0:4.1-0.5.el6
Dependency Installed: <==為解決相依性額外裝的
java-1.5.0-gcj.x86_64 0:1.5.0.0-29.1.el6 java_cup.x86_64 1:0.10k-5.el6
sinjdoc.x86_64 0:0.5-9.1.el6
Complete!
```
瞧!經過 yum 我們可以很輕松的就安裝好一個軟件,并且這個軟件已經主動的幫我們做好相依屬性的克服了, 真是方便到爆!另外,CentOS 6.x 默認的情況下,yum 下載的數據除了每個容器的表頭清單檔案之外,所有下載的 RPM 檔案都會在安裝完畢之后予以刪除! 這樣你的系統就不會有容量被下載的數據塞爆的問題。但如果你想要下載的 RPM 檔案繼續保留在 /var/cache/yum 當中,就得要修改 /etc/yum.conf 配置文件了!
```
[root@www ~]# vim /etc/yum.conf <==看看就好,不要真的作!
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
....(底下省略)....
```
上述的特殊字體地方將 0 改成 1 ,這樣就能夠讓你的 RPM 檔案保存下來。不過,除非你有好多部主機要更新, 你想利用一臺先 yum 升級且下載,然后將所有的 RPM 檔案收集起來給內網的機器升級 (rpm -Fvh \*.rpm) 之外, 上面的 vim 修改動作不建議修改!因為你的 /var 恐怕會被塞爆啊!再次提醒!
- yum 安裝軟件群組
什么是『軟件群組』呢?由于 RPM 軟件將一個大項目分成好幾個小計劃來執行,每個小計劃都可以獨立安裝, 這樣的好處是可以讓使用者與軟件開發者安裝不同的環境!舉例來說,在桌面系統中 (Desktop),一般用戶應該不會跑去發展軟件吧? 所以針對桌面計算機,軟件群組又分為 "Desktop Platform" 與開發者 "Desktop Platform Development" 兩部份, 每個軟件群組內又含有多個不同的 RPM 軟件檔案!這樣做的用途是方便使用者安裝一整套的項目啦!
那么系統有多少軟件群組呢?又該如何觀察某個軟件群組有擁有的 RPM 檔案呢?我們就利用 Desktop Platform 這個項目來說明一下啰:
```
# 范例四:查詢系統有的軟件群組有多少個?
[root@www ~]# LANG=C yum grouplist
Installed Groups: <==這個是已安裝的軟件群組
Additional Development
Arabic Support
Armenian Support
Base
....(中間省略)....
Available Groups: <==這個是尚可安裝的軟件群組
Afrikaans Support
Albanian Support
Amazigh Support
....(中間省略)....
Desktop Platform
Desktop Platform Development
....(后面省略)....
# 范例五:那么 Desktop Platform 內含多少個 RPM 軟件呢?
[root@www ~]# yum groupinfo "Desktop Platform"
Group: 桌面環境平臺
Description: 受支援的 CentOS Linux 桌面平臺函式庫。
Mandatory Packages: <==主要的會被安裝的軟件有這些
atk
....(中間省略)....
Optional Packages: <==額外可選擇的軟件是這些
qt-mysql
....(底下省略)....
# 如果你確定要安裝這個軟件群組的話,那就這樣做:
[root@www ~]# yum groupinstall "Desktop Platform"
# 因為這里在介紹服務器的環境,所以上面的動作鳥哥是按下 n 來拒絕安裝的!
```
利用這個『 yum groupinstall "軟件群組名" 』可以讓你一口氣安裝很多的軟件, 而不必擔心某個軟件忘記裝了!實在是很不錯啦~而且利用 groupinfo 的功能你也可以發現一些不錯的軟件數據, 如此一來,你就可以更方便的管理你的 Linux 系統了,很不錯吧!
- 全系統更新
我們都知道使用『yum update』就可以進行軟件的更新。不過你曉得嗎? yum update 也可以直接進行同一版本的升級喔!舉例來說,你可以從 6.0 升級到 6.1 版本哩!而且中間過程完全無痛呦! 就跟一般軟件升級而已,并沒有不同呦!夠愉快吧!
不過,如果你是想要從較舊版的 CentOS 5.x 升級到 6.x 的話,那么可能就得要多費些功夫了。為啥不要重灌比較快呢?因為你可能已經有些數據設定好,所以不想變更嘛! 但老實說,不同版本 (ex> 5.x --> 6.x) 間的升級最好還是不要嘗試啦!重新安裝可能是最好的狀況。 底下列出酷學園的前輩提供的升級方式,以及 CentOS 官網直接提供的升級方式給你參考參考:
- 酷學園 TWU2 兄提供的 Red Hat 9 升級到 CentOS 3.x 的方法:
<http://phorum.study-area.org/index.php/topic,28648.html>
- CentOS 官網提供的 CentOS 4.x 升級到 5.x 的方法:
<http://lists.centos.org/pipermail/centos-announce/2007-April/013660.html>
- CentOS 維基百科提供的 CentOS 4.4 升級到 5.1 的方法:
[http://wiki.centos.org/HowTos/MigrationGuide/ServerCD\_4.4\_to\_5](http://wiki.centos.org/HowTos/MigrationGuide/ServerCD_4.4_to_5)
例題:請設定一下工作排程,讓你的 CentOS 可以每天自動更新系統答:可以使用『 crontab -e 』來動作,也可以編輯『 vim /etc/crontab 』來動作, 由于這個更新是系統方面的,所以鳥哥習慣使用 vim /etc/crontab 來進行指令的說明。 其實內容很簡單:
```
40 5 * * * root yum -y update && yum clean packages
```
這樣就可以自動更新了, 時間訂在每天的凌晨 5:40 。
- - - - - -
### 7.2.4 挑選特定的映射站:修改 yum 配置文件與清除 yum 快取
雖然 yum 是你的主機能夠聯機上 Internet 就可以直接使用的,不過,由于 CentOS 的映射站臺可能會選錯, 舉例來說,我們在臺灣,但是 CentOS 的映射站臺卻選擇到了大陸北京或者是日本去,有沒有可能發生啊! 有啊!鳥哥教學方面就常常發生這樣的問題,要知道,我們聯機到大陸或日本的速度是非常慢的呢!那怎辦? 當然就是手動的修改一下 yum 的配置文件就好啰!
在臺灣,鳥哥熟悉的 CentOS 映射站臺主要有[昆山科大](http://ftp.ksu.edu.tw/)、高速網絡中心與義守大學。 在學術網絡之外,鳥哥近來比較偏好高速網絡中心,似乎更新的速度比較快,而且連接臺灣學術網絡也非常快速哩! 因此,鳥哥底下建議臺灣的朋友使用高速網絡中心的 ftp 主機資源來作為 yum 服務器來源喔!不過,因為鳥哥的機器很多都在昆山科大, 所以在學術網絡上,使用的反而是昆山科大的 FTP 啰。目前高速網絡中心對于 CentOS 所提供的相關網址如下:
- <http://ftp.twaren.net/Linux/CentOS/6/>
如果你連接到上述的網址后,就會發現里面有一堆連結,那些連結就是這個 yum 服務器所提供的容器了! 所以高速網絡中心也提供了 addons, centosplus, extras, fasttrack, os, updates 等容器,最好認的容器就是 os (系統默認的軟件) 與 updates (軟件升級版本) 啰!由于鳥哥在我的測試用主機是利用 x86\_64 的版本, 因此那個 os 再點進去就會得到如下的可提供安裝的網址:
- [http://ftp.twaren.net/Linux/CentOS/6/os/x86\_64/](http://ftp.twaren.net/Linux/CentOS/6/os/x86_64/)
為什么在上述的網址內呢?有什么特色!最重要的特色就是那個『 repodata 』的目錄!該目錄就是分析 RPM 軟件后所產生的軟件屬性相依數據放置處!因此,當你要找容器所在網址時, 最重要的就是該網址底下一定要有個名為 repodata 的目錄存在!那就是容器的網址了! 其他的容器正確網址,就請各位看倌自行尋找一下喔!現在讓我們修改配置文件吧!
```
[root@www ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
```
如上所示,鳥哥僅列出 base 這個容器的原始內容而已,其他的容器內容請自行查閱啰!上面的數據需要注意的是:
- \[base\]:
代表容器的名字!中刮號一定要存在,里面的名稱則可以隨意取。但是不能有兩個相同的容器名稱,否則 yum 會不曉得該到哪里去找容器相關軟件列表檔案。
- name:
只是說明一下這個容器的意義而已,重要性不高!
- mirrorlist=:
列出這個容器可以使用的映射站臺,如果不想使用,可以批注到這行。由于等一下我們是直接設定映像站, 因此這行待會兒確實是需要批注掉的喔!
- baseurl=:
這個最重要,因為后面接的就是容器的實際網址! mirrorlist 是由 yum 程序自行去捉映像站臺, baseurl 則是指定固定的一個容器網址!我們剛剛找到的網址放到這里來啦!
- enable=1:
就是讓這個容器被啟動。如果不想啟動可以使用 enable=0 喔!
- gpgcheck=1:
還記得 RPM 的數字簽名嗎?這就是指定是否需要查閱 RPM 檔案內的數字簽名!
- gpgkey=:就是數字簽名的公鑰文件所在位置!使用默認值即可
了解這個配置文件之后,接下來讓我們修改整個檔案的內容,讓我們這部主機可以直接使用高速網絡中心的資源吧! 修改的方式鳥哥僅列出 base 這個容器項目而已,其他的項目請您自行依照上述的作法來處理即可!
```
[root@www ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://ftp.twaren.net/Linux/CentOS/6/os/x86_64/ <==就屬它最重要!
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# 底下其他的容器項目,請自行到高速網絡中心去查詢后自己處理!
[root@www ~]# yum clean all <==改過配置文件,最好清除既有清單
```
接下來當然就是給他測試一下啰!如何測試呢?再次使用 yum 即可啊!
```
# 范例:列出目前 yum server 所使用的容器有哪些?
[root@www ~]# yum repolist all
repo id repo name status
base CentOS-6 - Base enabled: 6,019
c6-media CentOS-6 - Media disabled
centosplus CentOS-6 - Plus disabled
contrib CentOS-6 - Contrib disabled
debug CentOS-6 - Debuginfo disabled
extras CentOS-6 - Extras enabled: 0
updates CentOS-6 - Updates enabled: 1,042
repolist: 7,061
# 在 status 上寫 enabled 才是有啟動的!由于 /etc/yum.repos.d/
# 有多個配置文件,所以你會發現還有其他的容器存在。
```
- - - - - -
- 修改容器產生的問題與解決之道
由于我們是修改系統默認的配置文件,事實上,我們應該要在 /etc/yum.repos.d/ 底下新建一個檔案, 該擴展名必須是 .repo 才行!但因為我們使用的是指定特定的映射站臺,而不是其他軟件開發生提供的容器, 因此才修改系統默認配置文件。但是可能由于使用的容器版本有新舊之分,你得要知道, yum 會先下載容器的清單到本機的 /var/cache/yum 里面去!那我們修改了網址卻沒有修改容器名稱 (中刮號內的文字), 可能就會造成本機的列表與 yum 服務器的列表不同步,此時就會出現無法更新的問題了!
那怎么辦啊?很簡單,就清除掉本機上面的舊數據即可!需要手動處理嗎?不需要的, 透過 yum 的 clean 項目來處理即可!
```
[root@www ~]# yum clean [packages|headers|all]
選項與參數:
packages:將已下載的軟件檔案刪除
headers :將下載的軟件文件頭刪除
all :將所有容器數據都刪除!
# 范例:刪除已下載過的所有容器的相關數據 (含軟件本身與列表)
[root@www ~]# yum clean all
```
例題:有一個網址: <http://free.nchc.org.tw/drbl-core/i386/RPMS.drbl-stable/> ,里面包含了臺灣的國家高速網絡中心所發展的自由軟件。 請依據該網址提供的數據,做成系統可以自動網絡安裝的 yum 格式。答:由于 <http://free.nchc.org.tw/drbl-core/i386/RPMS.drbl-stable/> 里面就有 repodata/ 目錄,因此,這個網址可以直接做成 yum 的容器配置文件。 你可以這么做的:
```
[root@www ~]# vim /etc/yum.repos.d/drbl.repo
[drbl]
name=This is DRBL site
baseurl=http://free.nchc.org.tw/drbl-core/i386/RPMS.drbl-stable/
enable=1
gpgcheck=0
[root@www ~]# yum search drbl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
============================== Matched: drbl ==============================
clonezilla.i386 : Opensource Clone System (ocs), clonezilla
drbl.i386 : DRBL (Diskless Remote Boot in Linux) package.
drbl-chntpw.i386 : Offline NT password and registry editor
....(底下省略)....
[root@www ~]# yum repolist all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base CentOS-6 - Base enabled: 6,019
c6-media CentOS-6 - Media disabled
centosplus CentOS-6 - Plus disabled
contrib CentOS-6 - Contrib disabled
debug CentOS-6 - Debuginfo disabled
drbl This is DRBL site enabled: 36 <==新的在此!
extras CentOS-6 - Extras enabled: 0
updates CentOS-6 - Updates enabled: 1,042
repolist: 7,097
```
drbl 這個新增的容器里面,擁有 36 個軟件喔!這樣夠清楚嗎?
- - - - - -
- 鳥哥的Linux私房菜:服務器架設篇 第三版
- 第一部份:架站前的進修專區
- 作者序
- 第一章、架設服務器前的準備工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架設服務器流程
- 1.3 自我評估是否已經具有架站的能力
- 1.4 本章習題
- 第二章、基礎網絡概念
- 2.1 網絡是個什么玩意兒
- 2.2 TCP/IP 的鏈結層相關協議
- 2.3 TCP/IP 的網絡層相關封包與數據
- 2.4 TCP/IP 的傳輸層相關封包與數據
- 2.5 連上 Internet 前的準備事項
- 2.6 重點回顧:
- 2.7 本章習題
- 2.8 參考數據與延伸閱讀
- 第三章、局域網絡架構簡介
- 3.1 局域網絡的聯機
- 3.2 本書使用的內部聯機網絡參數與通訊協議
- 第四章、連上 Internet
- 4.1 Linux 連上 Internet 前的注意事項
- 4.2 連上 Internet 的設定方法
- 4.3 無線網絡--以筆記本電腦為例
- 4.4 常見問題說明
- 4.5 重點回顧
- 4.6 本章習題
- 4.7 參考數據與延伸閱讀
- 第五章、 Linux 常用網絡指令
- 5.1 網絡參數設定使用的指令
- 5.2 網絡偵錯與觀察指令
- 5.3 遠程聯機指令與實時通訊軟件
- 5.4 文字接口網頁瀏覽
- 5.5 封包擷取功能
- 5.6 重點回顧
- 5.7 本章習題
- 5.8 參考數據與延伸閱讀
- 第六章、 Linux 網絡偵錯
- 6.1 無法聯機原因分析
- 6.2 處理流程
- 6.3 本章習題
- 6.4 參考數據與延伸閱讀
- 第二部分:主機的簡易資安防護措施
- 第七章、網絡安全與主機基本防護:限制端口, 網絡升級與 SELinux
- 7.1 網絡封包聯機進入主機的流程
- 7.2 網絡自動升級軟件
- 7.3 限制聯機埠口 (port)
- 7.4 SELinux 管理原則
- 7.5 被攻擊后的主機修復工作
- 7.6 重點回顧
- 7.7 課后練習
- 7.8 參考數據與延伸閱讀
- 第八章、路由觀念與路由器設定
- 8.1 路由
- 8.2 路由器架設
- 8.3 動態路由器架設:quagga (zebra + ripd)
- 8.4 特殊狀況:路由器兩邊界面是同一個 IP 網段: ARP Proxy
- 8.5 重點回顧
- 8.6 本章習題
- 8.7 參考數據與延伸閱讀
- 第九章、防火墻與 NAT 服務器
- 9.1 認識防火墻
- 9.2 TCP Wrappers
- 9.3 Linux 的封包過濾軟件:iptables
- 9.4 單機防火墻的一個實例
- 9.5 NAT 服務器的設定
- 9.6 重點回顧
- 9.7 本章習題
- 9.8 參考數據與延伸閱讀
- 第十章、申請合法的主機名
- 10.1 為何需要主機名
- 10.2 注冊一個合法的主機名
- 10.3 重點回顧
- 10.4 本章習題
- 10.5 參考數據與延伸閱讀
- 第三部分:局域網絡內常見的服務器架設
- 第十一章、遠程聯機服務器SSH / XDMCP / VNC / RDP
- 11.1 遠程聯機服務器
- 11.2 文字接口聯機服務器: SSH 服務器
- 11.3 最原始圖形接口: Xdmcp 服務的啟用
- 11.4 華麗的圖形接口: VNC 服務器
- 11.5 仿真的遠程桌面系統: XRDP 服務器
- 11.6 SSH 服務器的進階應用
- 11.7 重點回顧
- 11.8 本章習題
- 11.9 參考數據與延伸閱讀
- 第十二章、網絡參數控管者: DHCP 服務器
- 12.1 DHCP 運作的原理
- 12.2 DHCP 服務器端的設定
- 12.3 DHCP 客戶端的設定
- 12.4 DHCP 服務器端進階觀察與使用
- 12.5 重點回顧
- 12.6 本章習題
- 12.7 參考數據與延伸閱讀
- 第十三章、文件服務器之一:NFS 服務器
- 13.1 NFS 的由來與其功能
- 13.2 NFS Server 端的設定
- 13.3 NFS 客戶端的設定
- 13.4 案例演練
- 13.5 重點回顧
- 13.6 本章習題
- 13.7 參考數據與延伸閱讀
- 第十四章、賬號控管: NIS 服務器
- 14.1 NIS 的由來與功能
- 14.2 NIS Server 端的設定
- 14.3 NIS Client 端的設定
- 14.4 NIS 搭配 NFS 的設定在叢集計算機上的應用
- 14.5 重點回顧
- 14.6 本章習題
- 14.7 參考數據與延伸閱讀
- 第十五章、時間服務器: NTP 服務器
- 15.1 關于時區與網絡校時的通訊協議
- 15.2 NTP 服務器的安裝與設定
- 15.3 客戶端的時間更新方式
- 15.4 重點回顧
- 15.5 本章習題
- 15.6 參考數據與延伸閱讀
- 第十六章、文件服務器之二: SAMBA 服務器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服務器的基礎設定
- 16.3 Samba 客戶端軟件功能
- 16.4 以 PDC 服務器提供賬號管理
- 16.5 服務器簡單維護與管理
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考數據與延伸閱讀
- 第十七章、區網控制者: Proxy 服務器
- 17.1 什么是代理服務器 (Proxy)
- 17.2 Proxy 服務器的基礎設定
- 17.3 客戶端的使用與測試
- 17.4 服務器的其他應用設定
- 17.5 重點回顧
- 17.6 本章習題
- 17.7 參考數據與延伸閱讀
- 第十八章、網絡驅動器裝置: iSCSI 服務器
- 18.1 網絡文件系統還是網絡驅動器
- 18.2 iSCSI target 的設定
- 18.3 iSCSI initiator 的設定
- 18.4 重點回顧
- 18.5 本章習題
- 18.6 參考數據與延伸閱讀
- 第四部分:常見因特網服務器架設
- 第十九章、主機名控制者: DNS 服務器
- 19.1 什么是 DNS
- 19.2 Client 端的設定
- 19.3 DNS 服務器的軟件、種類與 cache only DNS 服務器設定
- 19.4 DNS 服務器的詳細設定
- 19.5 協同工作的 DNS: Slave DNS 及子域授權設定
- 19.6 DNS 服務器的進階設定
- 19.7 重點回顧
- 19.8 本章習題
- 19.9 參考數據與延伸閱讀
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服務器之三: FTP 服務器
- 21.1 FTP 的數據鏈路原理
- 21.2 vsftpd 服務器基礎設定
- 21.3 客戶端的圖形接口 FTP 聯機軟件
- 21.4 讓 vsftpd 增加 SSL 的加密功能
- 21.5 重點回顧
- 21.6 本章習題
- 21.7 參考數據與延伸閱讀
- 第二十二章、郵件服務器: Postfix
- 22.1 郵件服務器的功能與運作原理
- 22.2 MTA 服務器: Postfix 基礎設定
- 22.3 MRA 服務器: dovecot 設定
- 22.4 MUA 軟件:客戶端的收發信軟件
- 22.5 郵件服務器的進階設定
- 22.6 重點回顧
- 22.7 本章習題
- 22.8 參考數據與延伸閱讀