本文將筆者常用的 YUM 命令,完整說明於後,方便初學者參考、使用。
一、切換成 root 身份
以下操作除查詢用途外,多需先切換成 root 身份,請讀者注意。二、更新套件
這是最常用的 YUM 命令,開源碼系統有全球許多的自由開發者,隨時都可能有新的套件更新被發佈。所以,更新套件是 YUM 中最常用的一個命令型式,[root@Celeron-D ~]# yum update例子中,分別為:『全部更新』,『指定套件更新』及『指定部分套件名更新』。當有數個套件要同時安裝時,用「空白」間隔這些套件名稱。套件名加『*』符號,會檢查所有已安裝的套件中,名稱與「指定部分名稱」相符者,再進行更新。未安裝的套件,不會更新,也不會補安裝(除非因關連性而加裝)。
[root@Celeron-D ~]# yum update 套件名
[root@Celeron-D ~]# yum update 套件名*
有安全顧慮的套件,最好立即更新,其它套件倒是不用那麼頻繁。可是,何時更新?更新頻率如何?卻是沒有標準答案的問題。通常,我是在關機前,下一個「更新 + 關機」的複合命令,達到時常更新,卻又不影響正常使用。
三、安裝套件
Fedora 的「套件資料庫」收錄相當多的套件,但不是每個都全部需要。因此,在第一次安裝時,只有通過社群評估的套件才會預設安裝。其它套件都由系統管理者,依系統需求再加以安裝。[root@Celeron-D ~]# yum install 套件名當有數個套件要同時安裝時,用「空白」間隔這些套件名稱。
注意:雖然,安裝仍可在套件名加『*』符號,但是,一不小心會裝入一大堆不需要的套件;因此,並不建議『安裝套件』時在套件名後加『*』。
四、移除套件
將不需要或不再使用套件移除,可以回收硬碟空間,做更有效的運用。因為某些套件有關聯性,若移除時未注意,可以會使其它使用中的套件不能正常運作。[root@Celeron-D ~]# yum remove 套件名注意:移除套件的名稱,最好與安裝時的套件名稱相同。否則,會不能完整移除所安裝的套件。
[root@Celeron-D ~]# yum remove 套件名*
五、查詢套件(已知套件名)
在網路上找到一些程式,有時也提供 Linux 的安裝套件名。但是,若直接下載、安裝,有時不能正常執行,這是因為有些設定檔,未依 Linux 系統的不同而調整。建議用 YUM 查詢一下,是否 Fedora 的「套件資料庫」有收錄。若有的話,從已收錄的「套件資料庫」安裝,比較不會在將來使用時出問題。[root@Celeron-D ~]# yum list 套件名以上兩個命令都可以查詢套件是否已收錄。
[root@Celeron-D ~]# yum list | grep 部分套件名
六、查詢套件名(已知程式、模組名)
想安裝某個程式或模組,可是下了安裝指令卻出現這個訊息,例:欲安裝 vncserver[root@Celeron-D ~]# yum install vncserver這有可能是因為「套件名稱」與「程式名稱」不同所致,要先查出這個「程式」包裝在哪個「套件」中。使用正確的「套件名稱」安裝,才可正常執行。
Loaded plugins: langpacks, presto, refresh-packagekit
No package vncserver available.
Error: Nothing to do
[root@Celeron-D ~]# yum provides vncserver由以上結果可以發現,正確的「套件名稱」為 tigervnc-server。所以,正確的安裝命令應為
tigervnc-server-1.1.0-5.fc17.x86_64 : A TigerVNC server
Repo : fedora
Matched from:
Filename : /usr/bin/vncserver
tigervnc-server-1.1.0-6.1.fc17.x86_64 : A TigerVNC server
Repo : updates
Matched from:
Filename : /usr/bin/vncserver
tigervnc-server-1.1.0-6.1.fc17.x86_64 : A TigerVNC server
Repo : @updates
Matched from:
Filename : /bin/vncserver
tigervnc-server-1.1.0-6.1.fc17.x86_64 : A TigerVNC server
Repo : @updates
Matched from:
Filename : /usr/bin/vncserver
[root@Celeron-D ~]# yum install tigervnc-server註:「套件名稱」後的數字是套件的版本資料,除非要安裝特定版本,否則不用指定;YUM 會自動安裝最新的版本。
七、忽略某些「套件資料庫」
有些「套件資料庫」不想在當次的 YUM 操作中使用時,可以加參數,將這些「套件資料庫」忽略不檢查。[root@Celeron-D ~]# yum install 套件名 --disablerepo=updates通常使用情況為,欲安裝原始版本,故忽略更新版的「套件資料庫」;或只想更新部份套件,加快更新速度,例:暫時忽略 RPM Fusion 的更新(註:有時會很久)。
[root@Celeron-D ~]# yum update 套件名 --disablerepo=rpmfusion*
八、回復之前異常中斷之更新
若下了更新命令後,出現有未完成的更新訊息,[root@Celeron-D ~]# yum update這是因為在之前的更新命令未正確執行完畢,忽略不處理的話,什麼時候會出問題,誰也說不準。幸好,YUM 有個修復這個錯誤的命令,
. . . . . .
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
. . . . . .
[root@Celeron-D ~]#
[root@Celeron-D ~]# yum-complete-transaction上例中有兩個未完成的更新,這個命令會從最近一次未完成開始修復。重覆下這個命令,直到無任何未完成的更新為止。修復命令的執行時間多像更新一樣久,若不想更新,只想清除這個訊息,則用這個命令
Loaded plugins: . . . . . .
There are 2 outstanding transactions to completes. Finishing the most recent one
The remaining transaction had . . . . . .
. . . . . .
[root@Celeron-D ~]# yum-complete-transaction
. . . . . .
[root@Celeron-D ~]# yum-complete-transaction
Loaded plugins: . . . . . .
No unfinished transactions left.
[root@Celeron-D ~]#
[root@Celeron-D ~]# yum-complete-transaction --cleanup-only
九、特殊參數整理
有些參數是搭配其它操作一起使用,下表將這些參數與本文所提參數列出,方便參考。參 數 | 常用時機 | 作 用 |
---|---|---|
--disablerepo=套件庫名 | install update | 令 YUM 不檢查指定「套件資料庫」的更新資訊,有時某些「套件資料庫」無法連上,更新過程會一再嘗試,欲節省時間可暫忽略此資料庫。 |
--nogpgcheck | install | 某些非由 Fedora 維護的套件資料庫,未檢查通過無法安裝,閉其檢查。請小心使用,確認這些套件是由官方網站下載,如:adobe flash plugin 等。 |
--showduplicate | list | 查詢套件時,預設顯示『已安裝』及『最新版』,在某些查詢時,需要加這個參數已強制顯示所有『同名套件』。 |
--skip-broken | install update | 某些套件下載一直失敗,而關聯套件無法安裝,導致整個安裝、更新停止。強制忽略這些套件的作業,使其它安裝、更新正常執行。 |
-x 套件名 | update | 某個套件不處理,通常是在不更新某套件使用 |
-y | install update | 對 YUM 的詢問皆以 yes 回答。通常 YUM 在『檢查簽章』或『列出更新項目』時會詢問,若不回應 YUM 會停在該處。當安裝、更新的來源未確認安全時慎用。 |
後記
- 2013-02-02:加入 --showduplicate 說明
已測試版本:
- Fedora: 14, 17
感謝你的整理 :)
回覆刪除your blog is very much helpful!
回覆刪除farm fence
你們的鼓勵,是我繼續寫下去的動力。
回覆刪除所以yum install @mate-desktop, 其上的@應該是套件名的一部份囉?
回覆刪除若要查詢所有的套件. 是不是list後面空白即可?
對!
刪除但是會顯示很多套件,所以通常會再加上 grep,過濾出想看的套件。