基本 yum 命令和用法

Page 1

基本 yum 命令和用法

這不是一個 yum 命令的詳細列表而是一些基本的,通用的,重要的一些。想要獲得詳細

列表請查看幫助頁面

● yum list [available|installed|extras|updates|obsoletes|all|recent] [pkgspec]

使用這個命令你可以列出任何在你係統上啓用或者安裝的倉庫裏的軟件包。它還可

以列出指定類型的軟件包,還可以用包的名字,架構,版本,發行日期作爲軟件包的規範重

新定義你的列表。

● yum list

默認情況下無參數的‘yum list‘列出在所有軟件倉庫裏的和系統安裝的所有的軟件包。

注意:‘yum list' 和‘yum list all'的結果是一樣的。

● yum list available

列出在所有可用的軟件倉庫裏可以安裝的軟件包

● yum list installed

這個命令和 rpm -qa 的功能是一樣的,可以列出系統上安裝的軟件列表

● yum list extra

這個命令獲得在系統上安裝但是沒有出現在激活的軟件倉庫裏的軟件包列表。用於

尋找等待升級或者不是從 fedora 更新鏡像上安裝的軟件包。

● yum list obsoletes

這個命令列出系統上安裝但是被軟件倉庫廢除的軟件包列表

● yum list updates

這個命令列出已安裝的可升級的軟件包列表

● yum list recent

1

Page 2

這個命令列出最近 7 天加入的軟件包列表

● yum list pkgspec

這個命令允許你自定義軟件包列表

pkgspec 的例子

? yum list zsh //會列出包 zsh 的詳細信息,比如有沒有安裝,包的架構,軟件倉庫等。

? yum list joe\*

? yum list \*.i386 //根據通配符列出符合要求的列表

● yum install/remove/update

......

● yum check-update

很像 yum list updates 但是如果有可用更新的話會返回退出代號 100。方便寫 shell 腳本

? yum grouplist

? yum groupinfo

? yum groupinstall

? yum groupupdate

? yum groupremove

要想查看上面的命令信息請查看 YumGroups 頁面

● yum info

顯示已安裝或者可獲得的軟件包詳細信息,它可以使用和 yum list 一樣的參數但最好

爲它指定一個軟件包名,例如:

$ yum info yum

Installed Packages

Name : yum

Arch : noarch

Version : 3.2.20

Release : 3.fc10

Size : 2.5 M

Repo : installed

Summary : RPM installer/updater

URL : http://yum.baseurl.org/

License : GPLv2+

Description: Yum is a utility that can check for and automatically download and

: install updated RPM packages. Dependencies are obtained and downloaded

: automatically prompting the user as necessary.

2

Page 3

● yum search

這個命令可以根據各種元數據查找軟件包的信息。它可以接受多個參數.它根據提供信息

的最高匹配次數輸出符合要求的軟件包信息列表.yum search 主要查找以下域:name(名

字),summary(摘要),description(描述),url.如果你想查找什麼軟件包提供某一個命令,請使用

yum provides.

yum search 的例子:

$ yum search python rsync ssh

========================= Matched: python, rsync, ssh

==========================

rdiff-backup.i386 : Convenient and transparent local/remote incremental

: mirror/backup

============================ Matched: python, rsync

============================

cobbler.noarch : Boot server configurator

============================= Matched: python, ssh

=============================

denyhosts.noarch : A script to help thwart ssh server attacks

pexpect.noarch : Pure Python Expect-like module

python-paramiko.noarch : A SSH2 protocol library for python

python-twisted-conch.i386 : Twisted SSHv2 implementation

============================= Matched: rsync, ssh

==============================

duplicity.i386 : Encrypted bandwidth-efficient backup using rsync algorithm

pssh.noarch : Parallel SSH tools

● yum provides/yum whatprovides

這個命令可以查找哪個軟件包提供請求的相關內容,可以使用通配符。例如:

$ yum provides MTA

2ostfix-2.5.5-1.fc10.i386 : Postfix Mail Transport Agent

Matched from:

Other : MTA

exim-4.69-7.fc10.i386 : The exim mail transfer agent

Matched from:

Other : MTA

sendmail-8.14.3-1.fc10.i386 : A widely used Mail Transport Agent (MTA)

3

Page 4

Matched from:

Other : Provides-match: MTA

$ yum provides \*bin/ls

coreutils-6.12-17.fc10.i386 : The GNU core utilities: a set of tools commonly

: used in shell scripts

Matched from:

Filename : /bin/ls

yum shell

......

● yum clean

在正常使用 yum 時,會產生一些元數據和軟件包的緩存,這些緩存會佔用一定的空

間。yum clean 命令可以清除這些緩存文件。yum clean 處理的文件一般會被存儲在/var/cache/

yum.

● yum clean packages

清除軟件倉庫緩存目錄裏的緩存軟件包

● yum clean metadata

清除來自軟件倉庫的緩存的 xml 元數據。

● yum clean dbcache

yum 正常運行時會伴隨着產生或者下載一些 sqlite 數據庫文件,這個命令會清除來自

所有軟件倉庫的這些緩存文件的拷貝。

● yum clean all

清除來自所有軟件倉庫的所有的緩存文件。經常使用該命令可以確保不會佔用一些

不必要的空間。

4

Page 5

有用的(而且很少人知道的)rpm 命令

這裏是一個比較有用而且不是很多人知道的 rpm 命令使用列表.如果你想到使用過的更多

的內容,請隨時聯繫我們以便把它們收錄進來.

? rpm -qa --last

這個命令反序列出已安裝的軟件包和安裝時間,因此,最近安裝的軟件包會被列在前面.

例子:

$ rpm -qa --last | head -14

gnome-python2-gtkhtml2-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:44 PM EDT

gnome-python2-libegg-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:43 PM EDT

gnome-python2-gtkmozembed-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:43 PM EDT

gnome-python2-extras-2.19.1-16.fc9 Thu 17 Jul 2008 11:40:42 PM EDT

kernel-2.6.25.11-93.fc9 Thu 17 Jul 2008 04:01:13 PM EDT

hugin-0.7.0-0.3.20080528svn.fc9 Tue 15 Jul 2008 11:24:37 PM EDT

hugin-base-0.7.0-0.3.20080528svn.fc9 Tue 15 Jul 2008 11:24:35 PM EDT

enblend-3.1-0.5.20080529cvs.fc9 Tue 15 Jul 2008 11:24:34 PM EDT

perl-Image-ExifTool-7.25-2.fc9 Tue 15 Jul 2008 11:24:29 PM EDT

glew-1.5.0-2.fc9 Tue 15 Jul 2008 11:24:28 PM EDT

boost-1.34.1-13.fc9 Tue 15 Jul 2008 11:24:27 PM EDT

libicu-3.8.1-7.fc9 Tue 15 Jul 2008 11:24:25 PM EDT

plotutils-2.5-5.fc9 Tue 15 Jul 2008 11:24:23 PM EDT

libpano13-tools-2.9.12-7.fc9 Tue 15 Jul 2008 11:24:22 PM EDT

? rpm -qa --qf "%{size} %{name}.%{arch}\n" | sort -n

這個命令顯示系統上的所有軟件包的大小(按字節),名字.架構(顯示格式)的列表,並按

軟件包的大小從小到大的順序排列.

這個命令在尋找哪些軟件包占用比較大的空間時很有用.謹慎使用可以清除系統中不

必要的佔用空間的軟件包.

例子:

$ rpm -qa --qf "%{size} %{name}.%{arch}\n" | sort -n

22429792 Miro.i386

22495239 xulrunner.i386

23553254 anthy.i386

27332634 fonts-japanese.noarch

28805881 ghostscript.i386

29475842 foomatic.i386

29613520 selinux-policy-targeted.noarch

32793230 gnumeric.i386

36362111 gnome-games.i386

5

Page 6

38401148 gimp.i386

40969098 evolution.i386

41452165 perl.i386

42001812 mono-core.i386

46827945 samba-common.i386

48317271 libgweather.i386

49798328 gutenprint-foomatic.i386

52051447 kernel.i686

52058430 kernel.i686

52071231 kernel.i686

91610549 glibc-common.i386

? rmp --showrc

這個命令顯示 rpm 資源配置狀態,如果你在試圖找出在指定的文件中能夠使用的變量

定義時,它將非常有用.這個命令的輸入非常長而且複雜,使用 less 通過管道查看比較好.

? rpm -Va --nofiles --nomd5

這個命令檢查你的系統中 rpm 數據庫裏未解決的包依賴關係,衝突和其他軟件包相關

的問題,在一般情況下它不返回任何東西.

? rpm --eval <an rpm macro>

這個命令根據你指定的宏或者命令輸出 rpm 的返回值.

例子:

$ rpm --eval "%{_arch} %{_bindir}"

i386 /usr/bin

6

Page 7

怎樣設置你的軟件倉庫

概述:

有時你會發現你需要蒐集一些 rpm 格式的軟件包,把他們放到一個地方,並且能夠通過運

行系統的 yum 工具去使用它們.這樣做其實很簡單.

yum 使用的軟件倉庫其實就是一個目錄.這個目錄包含有很多 rpm 軟件包和 yum 用來獲

得軟件包信息(相關性,文件列表等)的"元信息".yum 就可以通過 ftp/http 或者文件的 URI(包括

通過 NFS)獲取它.

步驟:

1.蒐集一些軟件包放到一個目錄裏.你可以創建任意多個子目錄,但是必須有一個存放所有

子目錄的頂層目錄.我們就在這裏創建我們的軟件倉庫.

2.yum 使用存儲在每一個 rpm 包裏的信息摘要去完成它的工作.這個摘要信息

由'createrepo'程序創建,如果你沒有'createrepo'可以通過以下方式安裝:

yum install createrepo

如果你在不使用 rpm 的機器上組建軟件倉庫,可以從下面的地址下載'createrepo'

http://createrepo.baseurl.org/ 然後手動安裝.

安裝完'createrepo'之後就可以運行它,它只有一個參數,就是你想創建軟件倉庫的那個頂層

目錄.假如第一步我們創建的目錄是/srv/my/repo,我們只需運行:

createrepo /srv/my/repo

你會看到很多內容飛過但是最後應該會以無錯結束。最後你應該會有一個叫

做/srv/my/repo/repodata 的目錄,該目錄至少含有 4 個文件。

3. 爲了讓 yum 知道你的這個軟件倉庫,你需要把一個.repo 文件加入到你的 yum 的配置

文件中。在你需要使用這個軟件倉庫的系統上,在以下目錄下創建一個新的文

件:'''/etc/yum.repos.d/'''。文件名可以是任意合法文件名但是文件擴展名必須是以.repo 結尾。

這裏是我們將其命名爲: 'myrepo.repo'.

在該文件中我們只需要包含以下內容即可:

[myrepo]

name = This is my repo

baseurl = url://to/get/to/srv/my/repo/

這就是在次文件中的所有內容. 其中 'baseurl' 行的內容是機器用來獲取軟件倉庫的路徑名。

7

Page 8

如果機器可以直接訪問它或者把它作爲一個文件系統掛載的話你還可以使用如下的 baseurl:

baseurl = file:///srv/my/repo/

''注意:上面的路徑中 file 後是三個反斜槓 (/)而不是兩個,上面的寫法是正確的。

如果你通過 http 或者 https 服務器訪問該文件,你可以使用如下的 baseurl:

baseurl = http://servername/my/repo

更多的關於客戶端 repo 配置細節可以在 yum.conf 的幫助頁面中找到。

4. 現在當你每次修改誒,刪除或者添加一個新的 RPM 包到/srv/my/repo 時你只需要

重新創建一下軟件倉庫的 metadata 就可以了。步驟和第二步中的一樣。

== 更多高級選項==

1. createrepo --update: 有時候你的軟件倉庫中含有很多的軟件包,雖然只是其中的一小

部分有所改動但是你卻不必爲每個軟件包重新產生元數據,這樣做明顯太浪費時間了。

這就是 re --update 選項誕生的原因。你像之前一樣運行 createrepo 命令但是添加了--

update 選項.

例如:

createrepo --update /srv/my/repo

現在 createrepo 只更新那些在上次產生元數據之後被改變,添加或者刪除 u 了的項目。

2. createrepo -x package_file_name: 假設你有幾個軟件包在你的軟件倉庫目錄中,但是你

確實不想被人隨便看到,你可以使用 createrepo 命令輕鬆的運行軟件包:

createrepo -x filename -x filename2 -x filename* /srv/my/repo

如果你像知道更多關於使用 createrepo 來創建和維護你自己的軟件包倉庫的方法請訪問

8

Page 9

createrepo 的幫助文件或者本集中的其他文檔。

Yum 組和軟件倉庫

Yum 支持組命令

* grouplist

* groupinfo

* groupinstall

* groupremove

* groupupdate

組從“group”xml 元數據中讀取數據,每個軟件倉庫可選支持組功能。如果 yum 沒有一個軟

件倉庫支持組功能那麼所有的組操作都不能工作。

* grouplist

yum grouplist [hidden]

這個操作將爲你的系統在兩個單獨的列表中列出所有已經安裝的和可用的組。如果你

使用了 hidden 參數那麼所有被設置的組在 xml <uservisible> 標記文件中將被設置爲“No”。

* groupinfo

yum groupinfo groupname

該操作將顯示每個組的詳細信息,包括:描述信息,是必須安裝還是默認或者可選安

裝包。

* groupinstall, groupupdate

yum groupinstall groupname

9

Page 10

yum groupupdate groupname

儘管以上兩個命令有所不同,但是他們執行同樣的功能。他們將嘗試安裝/升級所有

在組中類型爲“defalut”或者“mandatory”的包 (默認做此操作)。 (要改變這種類型的包,請

修改 yum.conf 配置文件中的 group_package_types 選項)並且此操作會安裝任何安裝或升級所

需要的額外依賴關係包。

* groupremove

yum groupremove groupname

這個操作將刪除在命名組中的任何類型的所有包,並且所有依賴於該組中的包也會被

刪除。

在你的軟件倉庫中設置屬於自己的組

這個過程相當的簡單,你只需要做以下兩步工作即可::

1. 在組中創建一個 yum 所使用的格式的組文件。

2. 告訴 createrepo 包含你的軟件倉庫中的該組文件。

第一步

你可以打開一個文本編輯器並且手動創建一個組 xml 文件或者你也可以用 yum-utils 中的

yum-groups-manager 命令來完成。

像下面這樣使用 groups-create 命令

yum-groups-manager -n "My Group" --id=mygroup --save=mygroups.xml --mandatory

yum glibc rpm

之後你將看到一個如下文件:

<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">

10

Page 11

<comps>

<group>

<id>mygroup</id>

<default>False</default>

<uservisible>True</uservisible>

<display_order>1024</display_order>

<name>My group</name>

<description></description>

<packagelist>

<packagereq type="mandatory">glibc</packagereq>

<packagereq type="mandatory">rpm</packagereq>

<packagereq type="mandatory">yum</packagereq>

</packagelist>

</group>

</comps>

第二步

要把這個文件包含進軟件倉庫,只需要告訴 cretaerepo 在創建或者重新創建你自己的軟

件倉庫的時候使用該文件就可以了。

createrepo -g /path/to/mygroups.xml /srv/my/repo

========================================

========================================

========================================

怎樣管理軟件倉庫

? repomanage

這個工具允許你爲新的或舊的軟件包創建列表以傳遞給其他的命令。如果你想從一個目

錄結構中標記一個指定的軟件包集的話,那麼該命令很有用。它直接愛軟件包上操作,通過

他們的 rpm epoch,版本和發佈信息比較軟件包。

11

Page 12

例如:

repomanage -k2 --old /some/dir | xargs rm -f

這個操作將列出/some/dir 目錄內的陳舊的軟件包,同時-k2 命令告訴要抑制版本爲 2

的軟件包。

? reposync

這個工具允許你下載整個遠程 yum 軟件倉庫或者遠程軟件倉庫的一部分。它還將使用一

個本地目錄來與遠程的軟件倉庫同步。

示例:

從’updates’軟件倉庫同步所有軟件包到當前目錄:

reposync --repoid=updates

僅從 ’updates’軟件倉庫同步最新的軟件包到當前目錄:

reposync -n --repoid=updates

同步軟件包從 ’updates’和 ’extras’軟件倉庫到當前目錄:

reposync --repoid=updates --repoid=extras

同步所有軟件包從 ’updates’軟件倉庫到 repos 目錄:

reposync -p repos --repoid=updates

同步所有的軟件倉庫至 'localcache' 目錄( 每個軟件倉庫對應自己的路徑):

reposync -p localcache

允許插件的軟件包同步 (當插件要求訪問軟件倉庫時很有用):

12

Page 13

reposync -l

? verifytree

如果你剛剛做了一個 repo 並且你想要驗證在你的 repo 中的所有東西都是正確且可以完成

其功能的話,你可以運行 erifytree 命令來檢查所有的 repodata 和軟件包。

示例:

$ verifytree /home/skvidal/tmp/empty-repoverifytree /home/skvidal/tmp/empty-repo/

Checking repodata:

verifying repomd.xml with yum

verifying filelists checksum

verifying primary checksum

verifying primary_db checksum

verifying other_db checksum

verifying other checksum

verifying filelists_db checksum

Checking groups (comps.xml):

verifying comps.xml with yum

comps file missing or unparseable

13

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章