在現在的 Internet 上面,Cracker 實在是太多了!這些 Cracker 會利用已經存在的系統漏洞,來進行偵測、入侵您的主機, 因此,除了未來架設防火牆之外,最重要的 Linux 日常管理工作,莫過於套件的升級了! 不過,經由每日觀察網路安全通報所告知的套件漏洞,以及等待各大 distribution 針對這些漏洞來提供 RPM 檔案,以使 Client 來升級的過程中,實在是有點緩慢啊!因此, 目前就有很多線上直接更新的機制出現了!有了這些線上直接更新 RPM 的手段與方法,我們系統管理員在管理主機系統上面,可就輕鬆的多囉!趕緊來看看吧! |
[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 ......(底下省略)..... |
[root@linux ~]# yum [option] [工作項目] [套件] 參數: option:主要的參數,包括有: -y :當 yum 詢問使用者的意見時,主動回答 yes 而不需要由鍵盤輸入; --installroot=/some/path :安裝在其他的路徑,而不在目前目錄樹的架構中; 對於建立虛擬機器相當有幫助!不過,一般使用者應該用不到。 [工作項目]:由於不同的使用條件,而有一些選擇的項目,包括: 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 共用來安裝新系統 groupupdate :升級整個套件群組; groupremove :移除某個套件群組; 範例一:搜尋 CentOS 的更新主機上是否有 RAID 磁碟陣列相關套件? [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 這兩個注意事項內容! |
範例二:安裝某個套件吧!以 mdadm 為例: [root@linux ~]# rpm -q mdadm package mdadm is not installed # 鳥哥的主機並沒有安裝這個玩意兒∼所以底下開始安裝先! [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 # 上面這個階段在讀取 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 # 上面這個階段則是在下載檔案以及準備更新的階段 Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: mdadm i386 1.6.0-3 base 84 k Transaction Summary ============================================================================= Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 84 k Is this ok [y/N]: y # 至於這個階段則在分析相依屬性,並且讓使用者確認下載開始 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 Transaction Installing: mdadm ######################### [1/1] Installed: mdadm.i386 0:1.6.0-3 Complete! # 最終則下載與安裝的結果! |
[root@linux ~]# yum clean packages
Cleaning up Packages
2 packages removed
|
[root@linux ~]# yum -y update
|
範例三:查詢與安裝『套件群組』 [root@linux ~]# yum grouplist Installed Groups: Administration Tools Authoring and Publishing Compatibility Arch Support .....中間省略..... Available Groups: Development Tools XFCE-4.2 .....中間省略..... Done # 看到沒!上面就列出來你已經安裝的套件群組,還有尚可安裝的其他套件群組, # 真是非常的方便!那麼如何知道 Development Tools 裡面有啥咚咚? [root@linux ~]# yum groupinfo "Development Tools" Group: Development Tools Required Groups: <==所需要的相依屬性資料 Development Libraries Default Metapkgs: <==預設內部所需要的中繼套件 Emacs Optional Metapkgs: <==最好還含有這些套件較佳 Ruby XEmacs .....中間省略..... Mandatory Packages: <==一些所需要的套件資料 pkgconfig gcc-ppc32 make gcc autoconf .....中間省略..... Default Packages: gcc-g77 cscope .....中間省略..... Optional Packages dejagnu ElectricFence gcc-gnat .....中間省略..... # 總共會列出來這個『套件群組』內含有的各項資料,如果你需要安裝的話,就可以: [root@linux ~]# yum groupinstall "Development Tools" |
例題:請設定一下工作排程,讓你的 centOS 可以每天自動更新系統 答:
40 5 * * * root yum -y update && yum clean packages這樣就可以自動更新了, 時間訂在每天的凌晨 5:40 ,並且更新完成後會主動的將下載的套件資料移除喔! |
1. 先修改 /etc/yum.conf [root@linux ~]# vi /etc/yum.conf .....前面省略..... # 直接在檔案的最底下加入這一行來增加一些額外的功能: plugins=1 2. 再修改 /etc/yum.repos.d/CentOS-Base.repo [root@linux ~]# vi /etc/yum.repos.d/CentOS-Base.repo # 內容與『 yum 的設定檔』說明相同,請回到本小節的最前面查閱該設定 |
[root@linux ~]# yum upgrade
|
0. 前處理:先準備好你的資料,以及刪除不需要的資料 [root@linux ~]# yum clean packages headers # 先刪除原本的 yum 資料,因為 FC1 使用的也是 yum , # 所以最好先將之前 FC1 的 yum 資料刪除,比較不會有問題; |
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 # 在這個動作時,由於我們的核心並非是 CentOS ,所以這個動作會發生一些錯誤, # 先不要理他,待會兒的動作再重新處理即可。 [root@linux ~]# rpm -ivh --force --nodeps udev-039-10.12.EL4.i386.rpm |
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 ,其他的不用動! [root@linux ~]# rpm --rebuilddb |
3. 規範設定檔 [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/ |
4. 開始升級的動作: [root@linux ~]# yum -y -t -c /etc/yum.upgrade upgrade |
5. 重新安裝核心,並處理 RPM 資料庫與更新其他套件 [root@linux ~]# rpm -ivh --force --nodeps kernel-2.6.9-34.EL.i686.rpm [root@linux ~]# rpm --rebuilddb [root@linux ~]# yum update |
6. 設定開機設定檔 [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 rhgb initrd /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 rhgb initrd /boot/initrd-2.6.9-34.EL.img |
1. 先處理 APT 伺服器來源的設定資料: [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 的標頭格式> <APT伺服器網址> <相對網址路徑> <目錄一> <目錄二> ... |
[root@linux ~]# apt-get [-qy] [-c config_file] [更新項目] [套件名稱] 參數: -q :不要在螢幕上輸出訊息,常用在背景環境的執行當中喔! -y :自動在進行 apt-get 時回答 y 的回應; -c :後面接的是設定檔,一般系統會主動的以 /etc/apt 內的設定檔為依據。 [更新項目]:要 apt-get 進行的工作,主要有這幾項: update :就是更新伺服器與用戶端的套件表頭清單,這個動作務必要進行! install :後面需要加上要安裝的套件名稱才行! upgrade :進行『已安裝套件』的完整升級,不過未安裝套件則不予安裝; dist-upgrade:以 upgrade 相似,但是當新版本的套件有其他相依屬性的套件加入時, 單純的 upgrade 將無法進行安裝,此時就得要使用 dist-upgrade 了! clean :清除已經下載到 /var/cache/apt/archives/ 的套件檔案。 remove :移除某個套件啊! 範例一:進行套件標頭更新後,進行整體套件的更新動作 [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 讀取套件清單中... 完成 了解套件依存關係中... 完成 籌畫升級套件中...完成 下列的套件都將被【刪除】: blt-common ettercap-plugins libgdbmg1-dev 下列的【新】套件都將被安裝: dictionaries-common ettercap-common .....後面省略..... 下列的套件都將維持舊版本: fontconfig libxft-dev libxft2 libxft2-dbg .....後面省略..... 下列的套件都將更新: apache apache-common apache-utils apache2 .....後面省略..... 更新 105 個套件,新安裝 32 個套件,刪除 3 個套件,另不更新 7 個套件。 需要下載 122MB 的檔案。 解壓縮後將消耗 39.6MB 的空間。 繼續執行嗎? 是按 [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) 正在預先設定套件 ... (正在讀取資料庫 ... 系統目前總共安裝有 112550 個檔案和目錄。) 正預備替換 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 # 這個動作會將剛剛下載的幾個 deb 的套件給他移除!節省硬碟空間! |
[root@linux ~]# vi /etc/crontab 40 5 * * * root /usr/bin/apt-get update && /usr/bin/apt-get -y dist-upgrade |
[root@linux ~]# apt-cache [搜尋項目] 參數: [搜尋項目]:apt-cache 可以搜尋 apt 所列出的套件標頭資料喔!可用項目有: pkgnames:列出本系統上面的所有套件名稱!!有點類似 (rpm -qa); dump :列出所有的套件標頭以及其相關的相依屬性套件! search :後面可接要搜尋的字串,例如 apt-cache search postfix show :後面接套件名稱,可以顯示出該套件的主要內容的描述! showpkg :列出後面所接套件的相依屬性以該其套件提供的相關功能! depends :可以列出與後面所接套件有相依屬性或者是衝突的相關資料! 範例一:找出與 grep 有關的套件 [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 the command line or in scripts. Even if you don't want to use it, other packages on your system probably will. [root@linux ~]# apt-cache depends grep grep 特別依存關係: libc6 衝突: <rgrep> |
[root@linux ~]# apt-get install zlibc
|