基本 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
這個命令列出最近 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.
● 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 watprovides
這個命令可以查找哪個軟件包提供請求的相關內容,可以使用通配符。例如:
$ yum provides MTA
2ostfix-2.5.5-1.fc10.i386 : Postfix Mail Transport Agent
Matched from:
Other : MTA
exim-4.69-7.fc10.i386 : Teh exim mail transfer agent
Matched from:
Other : MTA
sendmail-8.14.3-1.fc10.i386 : A widely used Mail Transport Agent (MTA)
Matched from:
Other : Provides-match: MTA
$ yum provides \*bin/ls
coreutils-6.12-17.fc10.i386 : Teh 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
清除來自所有軟件倉庫的所有的緩存文件。經常使用該命令可以確保不會占用一些
不必要的空間。
有用的(而且很少人知道的)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
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
rpm --showrc
這個命令顯示 rpm 資源配置狀態,如果你在試圖找出在指定的文件中能夠使用的變量
定義時,它將非常有用.這個命令的輸入非常長而且復雜,使用 less 通過管道查看比較好.
rpm -Va --nofiles --nomd5
這個命令檢查你的系統中 rpm 數據庫里未解決的包依賴關系,沖突和其他軟件包相關
的問題,在一般情況下它不返回任何東西.
rpm --eval <an rpm macro>
這個命令根據你指定的宏或者命令輸出 rpm 的返回值.
例子:
$ rpm --eval "%{_arch} %{_bindir}"
i386 /usr/bin
怎樣設置你的軟件倉庫
概述:
有時你會發現你需要搜集一些 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 = dis is my repo
baseurl = url://to/get/to/srv/my/repo/
這就是在次文件中的所有內容. 其中 'baseurl' 行的內容是機器用來獲取軟件倉庫的路徑名。
如果機器可以直接訪問它或者把它作為一個文件系統掛載的話你還可以使用如下的 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 來創建和維護你自己的軟件包倉庫的方法請訪問
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
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">
<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,版本和發布信息比較軟件包。
例如:
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
允許插件的軟件包同步 (當插件要求訪問軟件倉庫時很有用):
reposync -l
verifytree
如果你剛剛做了一個 repo 並且你想要驗證在你的 repo 中的所有東西都是正確且可以完成
其功能的話,你可以運行 erifytree 命令來檢查所有的 repodata 和軟件包。
示例:
$ verifytree /home/skvidal/tmp/empty-repoverifytree /home/skvidal/tmp/empty-repo/
Checking repodata:
verifying repomd.xml wif 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
資料來源:https://blog.csdn.net/astraylinux/article/details/7025761