軟體的安裝升級與移除 Linux軟體安裝簡介 原始碼安裝 以 RPM 指令管理套件 使用 Yum 線上安裝、移除與更新套件
Linux軟體安裝簡介 原始碼壓縮檔 RPM封裝檔
原始碼壓縮檔 優點(彈性及自由化): 缺點: 可自行修改原始碼 可以自訂安裝的設定 需要知道如何編譯及安裝 需要編譯的相關軟體 安裝後查詢不易 難度較高
RPM封裝檔 優點 不需安裝編譯的相關軟體 簡單、方便升級 提供套件查詢、驗證功能 缺點 比較原始碼的安裝方式,較缺乏彈性
原始碼安裝 下載的檔案解開之後,有下列 2 種檔案 格式: 原始碼格式:軟體以原始碼方式散播,通常 以 C 或 C++ 等程式語言寫成。您需要安裝 gcc 及 make 等套件才可編譯程式。至於編譯 及安裝的方式,請參考該程式目錄下的 README 或 INSTALL 說明檔。
原始碼安裝 執行檔格式:軟體以執行檔 (二進位) 的方式散 播,因此下載時,請注意您的作業系統版本及 CPU 種類。以 Apache 軟體為例,除了提供原始 碼下載之外,也提供了執行檔下載。執行檔以 CPU 區分成 i686 (IBM 相容 PC)、PowerPC (如 麥金塔)... ;而 Linux 作業系統的類別中,分別 對 Red Hat Linux 及 Slackware Linux 做了最佳化。 至於安裝的方式,請參考該程式目錄下的說明 檔。
原始碼安裝 以下載 ntp 的原始碼為例,說明如何編 譯及安裝。 下載網址 http://linux.vbird.org/linux_basic/0520sour ce/ntp-4.2.4p7.tar.gz
原始碼安裝 瀏覽 README 說明檔之後,我們得知編譯 及安裝步驟分為下列 3 部分 (大致上原始碼 的安裝程式都是如此,但請仍以說明檔為主):
原始碼安裝 1. ./configure:執行程式目錄下的指令 稿,偵測目前系統的環境,及產生編譯 程式時所需的相關設定檔。若加上 -- prefix 參數可以指定要將程式安裝在何 處。 2. make:編譯程式。 3. make install:安裝編譯好的程式,需 以 root 身份執行。
原始碼安裝 執行以下指令編譯及安裝:
以 RPM 指令管理套件 RPM 的全名是 Red Hat Package Manager, 它是由 Red Hat 公司所開發的一個開放 性程式套件管理系統。 由於 Red Hat 公司鼓勵其他開發廠商以 此格式發行他們的軟體,因此目前 RPM 除了可以在本 Linux 發行版上運作 外,也可以在許多其他的 Linux 發行版 及 Unix 平台上執行。
rpm 指令概念說明 為了讓易於區別,底下我們將整個 RPM 套件管理系統簡稱為 RPM,將管 理 RPM 套件管理系統的程式稱為 rpm 程式或 rpm 指令,而將能夠被 rpm 程 式處理的安裝套件稱為 RPM 套件。其 關係可用下圖表示:
rpm 指令概念說明
rpm 指令概念說明 使用 RPM 套件管理系統具有下列優點, 而這也是 RPM 套件管理系統的設計目 標: 易於安裝、升級與移除套件 有強大的查詢功能 能夠進行套件驗證 支援套件以原始碼形式發行
rpm 指令的操作方法 RPM 套件通常以 xxx.rpm 的格式命名,例如 rhviewer-3.10a-13.i386.rpm。其中包含了套件 名稱 (rhviewer)、版本 (3.10a)、次版本 (13) 及平台 (i386),不過並不是所有套件的作者都 會根據這個格式來命名。 除了建構安裝套件外,rpm 指令具有 5 種基 本的操作模式,包含套件的:安裝、移除、 升級、查詢及驗證。我們可以使用 rpm --help 指令獲得完整的細節及參數:
rpm 指令的操作方法 在安裝、移除及更新套件時,必須取得 root 的權限,而查詢及驗證套件時則不 用。
套件安裝 使用 rpm 指令的安裝模式可以將套件內 所有的元件放至系統中的正確路徑,安 裝套件的指令是: 以此指令安裝時,會顯示套件的名稱 (不一定會與檔名相同),並顯示 # 號以 指示安裝程序正在進行中。
套件安裝 rpm 指令還能透過 FTP 或 HTTP 來進行遠距 的套件安裝或查詢。使用方式與在本機上並 無太大不同,只要在檔案前加上適當的 URL 位址即可,例如: 在安裝套件時,有時會出現要安裝的套件已 經安裝過、某個檔案已被其他的套件安裝, 或是不同套件之間有相依性的問題,以下分 別詳細說明。
重複安裝套件 要重複安裝一個原本就已經安裝的套件時, rpm 指令會顯示出類似下面的錯誤訊息: 如果您確定要安裝此套件,可以在命令列中 加上 --replacepkgs 參數,使rpm 指令忽略錯 誤訊息,取代原有套件:
套件中某個檔案已被其他套件 安裝 如果要安裝的套件中,有某個檔案已被 其他套件安裝於系統中,則 rpm 指令會 顯示錯誤的訊息: 要 rpm 指令忽略此訊息直接取代舊檔案, 可使用 --replacefiles 參數:
不同套件之間的相依性 有些 RPM 套件會與其他的 RPM 套件有 相依性,這些套件通常要別的套件已先 安裝於系統中才能正常執行。當您試圖 要安裝這類 RPM 套件,則 rpm 指令會 列出其所需的相關套件:
不同套件之間的相依性 比較好的解決方式是將其所需要的套件 先安裝好,以上例來說,先安裝 rhviewer 套件之後,再安裝 rhpainter 套件即可。此外,也可以加上 --nodeps 參數來略過相依性檢查,不過這樣強行 安裝的結果可能會使套件不能正常執行。
套件移除 移除模式會將指定的套件元件全部刪除, 但會保留已更改過的設定檔。移除 RPM 套件的指令如下: 要注意的是,這裡必須使用套件的名稱 "rhviewer" 或 "rhviewer-3.10a-13",而不 是使用當初安裝套件時所用的檔名 "rhviewer-3.10a-13.i386.rpm"。
套件移除 如果在移除套件時出現類似下列訊息, 代表移除套件會破壞其他套件的套件相 依性: 此時您必須先移除 rhpainter 套件後, 才能接著移除 rhviewer。或者您也可以 使用 --nodeps 參數,即可忽略此訊息 而強行移除套件,不過這樣可能會導致 其他套件無法正常執行。
套件升級 升級模式會安裝使用者所指定的更新版 本,並移除已安裝於系統中的相同套件。 升級套件的指令如下: 升級模式的運作方式是將系統中的舊版 本移除,再安裝新版本。您也可以使用 升級模式取代安裝模式來安裝新版本。 因為在沒有舊版本的情況下,使用 -U 這個參數仍可正常運作。
套件升級 以 rpm 指令升級套件時,如果有舊版的 套件存在於系統中,則會看到如下的訊 息: 這是 rpm 指令特有的設定檔智慧型升級訊息。 因為有些套件的設定檔格式在不同版本間並 不相容,因此 rpm 指令會將舊的設定檔 加 .rpmsave 副檔名儲存,並安裝新的設定檔, 您可以在套件安裝後立即比較新舊設定檔, 以決定是否要換回原來的設定。
套件升級 升級模式下的錯誤除了包含移除與安裝 模式下的錯誤外,還有一個比較特別的 是,當使用者試圖安裝一個比現有套件 更舊的套件時,會顯示如下訊息: 若決心要將套件 "升級" 到較舊的版本, 可使用 --oldpackage 參數:
套件更新 前面所講 rpm 指令的 5 種工作模式中,並不 包含更新模式,主要是因為更新模式可算是 升級模式的另一種使用方式。更新套件的指 令如下: rpm 指令在更新模式下會檢查在指令列中所 指定的套件是否比系統中原有的套件來得新。 如果情況屬實,rpm 指令會自動更新指定套 件。反之,若系統中並沒有指定套件的較舊 版本,rpm 指令並不會安裝此套件。
套件更新 而在升級模式下,不管系統中是否有較 舊的版本,rpm 指令都會安裝指定的套 件。 如果您從網路下載了許多的套件,且想 更新所有已經安裝在系統中的套件 (未 曾安裝的套件則不安裝),可以執行以 下指令: 如此 RPM 就會為我們更新所有系統中 已存在的套件。
套件查詢 想要取得 RPM 套件的相關資訊可以使 用查詢模式,使用 -q 參數可查詢一個 已安裝的套件內容。如執行 rpm -q rhviewer 指令將顯示 rhviewer 套件的套 件名稱、版本及次版本:
套件查詢 在查詢模式中可用套件指定參數配合查 詢: 也可以再加上資訊選擇參數來決定所要 顯示的資訊:
套件查詢
套件查詢 我們可以結合 -qi 參數得到一般性套件資 訊: 對於顯示檔案列表的 -l 參數,還可加上 -v 參數以獲得較完整的資訊,其輸出格 式類似 ls -l 指令的結果。
套件驗證 要驗證目前系統中的檔案是否與原始套 件相符,可使用驗證模式。-V 參數可 用來驗證套件的正確性。驗證模式會比 較原始套件資訊及目前系統中的檔案資 訊,包括每個檔案的大小、MD5 (一種 加密方式) checksum、權限、型別、擁 有者及所屬的檔案群組。 在驗證模式中也可以使用上一節所提到 的套件指定參數來指定特別的套件。例 如:
套件驗證 在上例中前 3 個指令會比較 RPM 組態 資料庫與目前系統中的檔案;而第4 個 指令則是比較原始 .rpm 檔的內容與目 前系統中的檔案,適用於 RPM 組態資 料庫毀損或遭人修改的狀況下。
套件驗證 在驗證後沒有任何輸出,表示套件正常。 如有不一致的地方,RPM 會顯示錯誤 碼。下表列出可能的錯誤碼及其代表的 意義:
rpm 指令常用的查詢實例 這裡舉幾個例子,加深您對 rpm 指令的 了解: 查詢套件所安裝的檔案:安裝某個套 件之後,常常困擾人的是,不曉得這 個套件究竟被裝到哪裡去。此時只要 執行 rpm -ql 套件名稱 指令即可,例如:
rpm 指令常用的查詢實例 查詢是否刪除套件檔案:當您誤刪了某些檔 案,又不知道到底刪掉些什麼時,只要執行 rpm -Va 指令即可對系統做完整的套件驗證, 得知是否刪除了某些套件檔案。 查詢檔案屬於哪個套件:遇到一些不認得的 檔案,想要知道這個檔案是否屬於某個套件, 可執行 rpm -qf /完整路徑/檔案名稱 指令查詢。 驗證套件的正確性:上兩個例子可以結合使 用,例如您懷疑某個程式 (如 vi) 有問題,而 想對該程式進行驗證,可以執行 rpm -Vf /bin/vi 指令。
rpm 指令常用的查詢實例 查詢套件的相關說明文件:想要取得 某個程式套件 (如 ispell) 的更多資訊, 可執行 rpm -qdf /usr/bin/ispell 以得知這 個程式所屬的說明文件有那些,其輸 出如下:
如何解決套件相依性及 查詢未安裝檔案所屬套件 如何解決套件相依性及 查詢未安裝檔案所屬套件 若您安裝此 Linux 發行版時,不是選擇 安裝所有的套件;或是自行從網路下載 了各種套件 ,在安裝這些套件時,常 常會遇到一些相依性的問題。例如欲安 裝書附光碟中的 PHP 套件,可能會遇 到以下狀況:
如何解決套件相依性及 查詢未安裝檔案所屬套件 如何解決套件相依性及 查詢未安裝檔案所屬套件 為了正確安裝 PHP 套件,必須先安裝缺少的 檔案,但是要怎麼知道安裝哪些套件才會有 這 2 個檔案呢?您可至 http://rpmfind.net/ 分 別搜尋 “libcurl.so.3”、“php-pear” 這些關鍵 字,由搜尋結果可以得知它們分別屬於 curl、 phppear 套件。 如此您只要由光碟或網站中取得此 2 個套件, 先行安裝即可。不過,在安裝這些套件的過 程中,可能還會遇到其他套件相依性的問題。 此時,同樣請依此方法解決。
如何解決套件相依性及 查詢未安裝檔案所屬套件 如何解決套件相依性及 查詢未安裝檔案所屬套件 有時候兩個套件之間可能會發生互相 需要的情形,例如前面安裝 PHP 套件 時,rpm 指令要求先行安裝 php-pear 套件,可是當安裝 php-pear 套件,卻 又顯示需要 PHP 套件:
如何解決套件相依性及 查詢未安裝檔案所屬套件 如何解決套件相依性及 查詢未安裝檔案所屬套件 這樣不就發生無解的無限迴圈嗎?此時 請將這兩個 RPM 套件檔放在同一個目 錄內,如下使用萬用字元同時安裝即可:
使用 Yum 線上安裝、移除與更新套件 Yum (Yellow dog Updater,Modified) 為 此 Linux 發行版內建的強大套件管理工 具,具有線上安裝、移除、與更新套件 的功能,其最為人稱道的特點在於它能 自動判斷並解決 RPM 套件的相依性問 題。 Yum 可說是全自動化的套件管理工具, 可以幫我們省下不少安裝與更新套件的 時間。
變更 Yum 的套件儲藏庫 Yum 預設使用的官方網站為 套件的儲藏庫 (Repository),當您想要使 用 yum 指令安裝某個套件時,只要指定 套件名稱,Yum 就會自動到儲藏庫下載 該套件檔,並且會同時尋找其他需要的 檔案一起下載,然後再進行安裝。 由於 CentOS 的官方網站位於美國,其 他國家使用者連線時的網路速度可能不 佳,加上全世界可能同時有上千台主機 需要下載檔案,所以網路塞車的情形大 概是無法避免的。
變更 Yum 的套件儲藏庫 建議將儲藏庫改為距離您最近的映射站, 增加檔案下載的效率,同時也能減少官 方網站的負荷。 在此將 CentOS 的套件儲藏庫位置,指 定到台灣的映射站。首先開啟 /etc/yum.repos.d/CentOS-Base.repo 檔並 如下修改:
.執行 # yum update 即可開始使用ftp.ncnu.edu.tw的yum來昇級 [base] 1.將mirrorlist 那段前面加上 # 註解起來(預設的國外伺服器) #mirrorlist=xxxxxxxxxxxxxxxxxxx #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 2.將baseurl,gpgkey 修改成下面這樣 baseurl=http://ftp.ncnu.edu.tw/Linux/CentOS/$releasever/os/$basearch/ baseurl=http://ftp.ncnu.edu.tw/Linux/CentOS/$releasever/updates/$basearch/ gpgkey=http://ftp.ncnu.edu.tw/Linux/CentOS/RPM-GPG-KEY-CentOS-6 [update] .執行 # yum update 即可開始使用ftp.ncnu.edu.tw的yum來昇級
使用 Yum 線上安裝套件 使用 yum 指令安裝套件的語法如下: 以安裝 PHP 套件為例,為您示範 yum 指令的線上安裝功能:
使用 Yum 線上安裝套件 ←安裝 php 套件
使用 Yum 線上安裝套件
使用 Yum 線上安裝套件
使用 Yum 線上安裝套件 使用 yum 指令安裝套件是不是很輕鬆又 簡單呢?
使用 Yum 移除套件 使用 yum 指令移除套件的語法如下: 以移除 httpd 套件為例,為您示範 yum 指令移除 套件的功能:
使用 Yum 移除套件
使用 Yum 移除套件 使用 yum 指令移除套件和安裝套件一 樣輕鬆簡單。如果使用 rpm 指令,要手 動先行移除 10 個套件,然後才能移除 httpd 套件,兩者的效率有很大的差別。
使用 Yum 查詢與搜尋套件 使用 yum 指令時只需要指定名稱便可 以安裝套件,不過要如何知道有哪些套 件可以安裝呢?如果您要查詢目前系統 未安裝,但是儲藏庫內有的套件,請如 下操作:
使用 Yum 查詢與搜尋套件 如果您想要查詢該套件的介紹時,則執 行 yum info 套件名稱 即可觀看套件介紹。 當您不清楚套件名稱時,可以使用關鍵 字搜尋套件,語法為 yum search 關鍵字。 例如要想尋找與 DNS 相關的套件,便 可執行 yum search DNS 指令搜尋。
使用 Yum 線上更新套件 yum 指令更新套件的語法為: 在更新套件前,可執行下面指令檢查目 前系統中是否有需要更新的套件:
使用 Yum 線上更新套件 看來已經有很多套件需要更新了,以更 新 bind 套件為例,為您解說如何更新 套件:
使用 Yum 線上更新套件
使用 Yum 線上更新套件 若您想要一次更新系統內所有套件,則 可以執行下面指令:
使用 Yum 線上更新套件 若想要關閉自動更新功能,則請執行 /etc/rc.d/init.d/yum stop; chkconfig yum off。
Linux 軟體下載網站 當您腦中出現 "在 Linux 上若是有這種 軟體該有多好啊!" 的念頭時,恰巧又 會寫程式,千萬不要捲起袖子就開始寫 了。除非您非常有創意,否則在您想到 之前,可能早就有人想到且開始實做了。 因此您不需要重複發明輪胎,在此介紹 2 個大型的軟體開發專案網站:
Linux 軟體下載網站 http://sourceforge.net http://freshmeat.net 這 2 個網站裡面有許多的開發專案在進 行,您只要輸入想找的關鍵字搜尋,或 是依照分類尋找,通常都可以找到您想 要的軟體,而且大都不只一個。 上面提到的網站,有時某軟體專案只提 供原始碼下載,若您想尋找是否有RPM 套件,可到 http://rpmfind.net/ 搜尋,因 為可能有其他的發行版或是熱心人士將 它包裝成 RPM 套件了。