YUM介紹和配置本地YUM源
簡介
yum(全稱為 Yellow dog Updater, Modified)是一個Shell前端軟體包管理器。基于RPM包管理,能夠從指定的伺服器自動下載下傳RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載下傳、安裝。yum提供了查找、安裝、删除某一個、一組甚至全部軟體包的指令,并且可以同時配置多個資源庫Repository(/etc/yum.repo.d目錄下),全局配置檔案(/etc/yum.conf)簡潔,使用起來很友善。
常用指令組合
yum check-update 檢查可更新包
yum update 更新所有包
yum update kernel 更新指定包:kernel
yum install httpd 安裝指定軟體
yum -y install httpd
yum remove httpd 删除軟體apache
yum info packagename 擷取軟體包資訊
yum provides filename檢視特定檔案屬于哪個軟體包
eg:查詢semanage指令對應的軟體包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<code>[root@Zabbix_server ~]</code><code># semanage</code>
<code>-</code><code>bash</code><code>: </code><code>/usr/sbin/semanage</code><code>: No such </code><code>file</code> <code>or directory</code>
<code>[root@Zabbix_server ~]</code><code># yum provides /usr/sbin/semanage</code>
<code>Loaded plugins: fastestmirror, product-</code><code>id</code><code>, subscription-manager</code>
<code>This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.</code>
<code>Loading mirror speeds from cached hostfile</code>
<code>policycoreutils-python-2.0.83-19.39.el6.i686 : SELinux policy core python utilities</code>
<code>Repo : base</code>
<code>Matched from:</code>
<code>Filename : </code><code>/usr/sbin/semanage</code>
<code>[root@Zabbix_server ~]</code><code># yum install -y policycoreutils-python </code>
<code>[root@Zabbix_server ~]</code><code># which semanage</code>
<code>/usr/sbin/semanage</code>
<code>[root@Zabbix_server ~]</code><code># rpm -qf /usr/sbin/semanage </code>
<code>policycoreutils-python-2.0.83-19.39.el6.i686</code>
<code>[root@Zabbix_server ~]</code><code>#</code>
yum緩存(/var/cache/yum/)的相關參數
yum clean packages 清除暫存中rpm封包件
yum clearn headers 清除暫存中rpm頭檔案
yum clean oldheaders 清除暫存中舊的rpm頭檔案
yum clearn 或#yum clearn all 清除暫存中舊的rpm頭檔案和封包件(相當于yum clean packages + yum clean oldheaders)
包清單相關參數
yum list 列出資源庫中所有可以安裝或更新的rpm包
yum list mozilla 列出資源庫中特定的可以安裝或更新以及已經安裝的rpm包
yum list mozilla*
yum list updates 列出資源庫中所有可以更新的rpm包
yum list installed 列出已經安裝的所有的rpm包
yum grouplist 查找組清單
yum groupinstall "Games and Entertainment" 安裝特定的組包,名字必須用雙引号標明
rpm包資訊顯示(info參數同list)
yum info 列出資源庫中所有可以安裝或更新的rpm包的資訊
yum info mozilla 列出資源庫中特定的可以安裝或更新以及已經安裝的rpm包的資訊
yum info mozilla* 可以在rpm包名中使用比對符,如列出所有以mozilla開頭的rpm包的資訊
yum info updates 列出資源庫中所有可以更新的rpm包的資訊
yum info installed 列出已經安裝的所有的rpm包的資訊
搜尋rpm包
yum search mozilla 搜尋比對特定字元的rpm包
yum provides realplay 搜尋有包含特定檔案名的rpm包
配置檔案
yum的配置檔案分為兩部分:main和repository
main部分定義了全局配置選項,整個yum配置檔案應該隻有一個main。常位于/etc/yum.conf中。
repository部分定義了每個源/伺服器的具體配置,可以有一到多個。常位于/etc/yum.repo.d目錄下的各檔案中。
/etc/yum.conf
<a href="http://blog.51cto.com/attachment/201311/105758877.png" target="_blank"></a>
cachedir=/var/cache/yum/$basearch/$releasever
yum下載下傳檔案的存放位置
keepcache=1
設定是否,儲存1為儲存 0為不儲存
metadata_expire=1800
設定過期時間
pkgpolicy=newest
一共有兩個選項,newest和last,這個作用是如果你設定了多個repository,而同一軟體在不同的repository中同 時存 在,yum應該安裝哪一個,如果是newest,則yum會安裝最新的那個版本。如果是last,則yum會将伺服器id以字母表排序,并選擇最後的那個 伺服器上的軟體安裝。一般都是選newest。
tolerant=1
如果值為1,則yum會忽略任何的有關包的錯誤。舉例來說,當執行yum來安裝baz時,如果baz包已經安裝在系統中了,則yum會繼續重複安裝baz,而不會報錯。預設值為1。
exactarch=1
設定為1,則yum隻會安裝和系統架構比對的軟體包,例如,yum不會将i686的軟體包安裝在适合i386的系統中。預設為1
/etc/yum.repo.d
在/etc/yum.repo.d目錄下會發現一些字尾是.repo的檔案,這些檔案都是官方源的repo檔案
<code>[root@justin yum.repos.d]</code><code># ls</code>
<code>packagekit-media.repo rhel-</code><code>source</code><code>.repo</code>
<code>[root@justin yum.repos.d]</code><code>#</code>
<a href="http://blog.51cto.com/attachment/201311/143028999.png" target="_blank"></a>
檢視yum是否安裝(RHEL6系列預設在安裝系統時候就已經安裝了)
<code>[root@justin ~]</code><code># rpm -q yum</code>
<code>yum-3.2.29-30.el6.noarch</code>
<code>[root@justin ~]</code><code>#</code>
如果系統沒有安裝可以挂載安裝盤手動安裝
17
18
19
20
21
<code>[root@justin ~]</code><code># mount /dev/cdrom /mnt/cdroom/</code>
<code>mount</code><code>: block device </code><code>/dev/sr0</code> <code>is write-protected, mounting </code><code>read</code><code>-only</code>
<code>[root@justin ~]</code><code># cd /mnt/cdroom/Packages/</code>
<code>[root@justin Packages]</code><code># ls | grep yum</code>
<code>anaconda-yum-plugins-1.0-5.1.el6.noarch.rpm</code>
<code>kabi-yum-plugins-1.0-2.el6.noarch.rpm</code>
<code>PackageKit-yum-0.5.8-20.el6.i686.rpm</code>
<code>PackageKit-yum-plugin-0.5.8-20.el6.i686.rpm</code>
<code>yum-3.2.29-30.el6.noarch.rpm</code>
<code>yum-metadata-parser-1.1.2-16.el6.i686.rpm</code>
<code>yum-plugin-aliases-1.1.30-14.el6.noarch.rpm</code>
<code>yum-plugin-changelog-1.1.30-14.el6.noarch.rpm</code>
<code>yum-plugin-downloadonly-1.1.30-14.el6.noarch.rpm</code>
<code>yum-plugin-security-1.1.30-14.el6.noarch.rpm</code>
<code>yum-plugin-tmprepo-1.1.30-14.el6.noarch.rpm</code>
<code>yum-plugin-verify-1.1.30-14.el6.noarch.rpm</code>
<code>yum-plugin-versionlock-1.1.30-14.el6.noarch.rpm</code>
<code>yum-presto-0.6.2-1.el6.noarch.rpm</code>
<code>yum-rhn-plugin-0.9.1-40.el6.noarch.rpm</code>
<code>yum-utils-1.1.30-14.el6.noarch.rpm</code>
<code>[root@justin Packages]</code><code># rpm -ivh yum-3.2.29-30.el6.noarch.rpm</code>
由于RHEL的yum線上更新是收費的,如果沒有注冊的話是不能使用的,即不能線上安裝軟體。在這種情況下,想使用RHEL系統,要麼注冊要麼換用其他Yum源!
RHEL配置本地Yum源
<code>[root@justin yum.repos.d]</code><code># yum install php</code>
<code>Loaded plugins: product-</code><code>id</code><code>, refresh-packagekit, security, subscription-manager</code>
<code>Updating certificate-based repositories.</code>
<code>Unable to </code><code>read</code> <code>consumer identity</code>
<code>Setting up Install Process</code>
<code>No package php available.</code>
<code>Error: Nothing to </code><code>do</code>
挂載本地CD光牒
使用mount發現無法挂載,提示沒有發現媒體
<code>[root@justin ~]</code><code># mount /dev/cdrom /media/cdrom/</code>
<code>mount</code><code>: No medium found</code>
檢視VMware:VM---setting---Hardware---CD/DVD--右邊Device裡勾選Connected;Connection裡Use ISO image file裡選擇iso檔案後确定即可
配置本地yum源
<a href="http://blog.51cto.com/attachment/201311/152136829.png" target="_blank"></a>
<code>[root@justin cdrom]rpm --</code><code>import</code> <code>RPM-GPG-KEY-redhat-legacy-release</code>
<code>[root@justin cdrom]rpm --</code><code>import</code> <code>RPM-GPG-KEY-redhat-beta</code>
<code>[root@justin cdrom]</code><code># touch /etc/yum.repos.d/rhel-local.repo</code>
<code>[root@justin cdrom]</code><code># vim /etc/yum.repos.d/rhel-local.repo</code>
<code>[rhel-</code><code>local</code><code>]</code>
<code>name=Red Hat Enterprise Linux 6.3</code>
<code>baseurl=</code><code>file</code><code>:</code><code>///mnt/cdrom</code>
<code>enabled=1</code>
<code>gpgcheck=1</code>
<code>gpgkey=</code><code>file</code><code>:</code><code>///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release</code>
<code>[root@justin cdrom]</code><code># yum clean all</code>
<code>Cleaning repos: InstallMedia rhel-</code><code>local</code>
<code>Cleaning up Everything</code>
<code>[root@justin cdrom]</code><code>#yum makecache</code>
[rhel-local]為庫名稱,在使用yum安裝軟體時顯示倉庫源時就是顯示該項,而不是rhel-local.repo中的rhel-local;
如果要開啟gpg驗證,需要将CD光牒中自帶的公鑰RPM-GPG-KEY-redhat-legacy-release導入系統(通過rpm 導入系統後檔案放在了/etc/pki/rpm-gpg/目錄下),然後通過指定公鑰位址 來和軟體内部的私鑰比對,手動驗證:rpm -K 軟體全路徑全稱
<code>[root@justin Packages]</code><code># rpm -K zlib-devel-1.2.3-27.el6.i686.rpm</code>
<code>zlib-devel-1.2.3-27.el6.i686.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP</code><code>#fd431d51)</code>
<code>[root@justin Packages]</code><code># rpm -K zlib-devel</code>
<code>error: zlib-devel: </code><code>open</code> <code>failed: No such </code><code>file</code> <code>or directory</code>
<code>[root@justin Packages]</code><code># cd</code>
<code>[root@justin ~]</code><code># rpm -K zlib-devel-1.2.3-27.el6.i686.rpm</code>
<code>error: zlib-devel-1.2.3-27.el6.i686.rpm: </code><code>open</code> <code>failed: No such </code><code>file</code> <code>or directory</code>
<code>[root@justin ~]</code><code># cd -</code>
<code>/media/Packages</code>
<code>[root@justin Packages]</code><code>#</code>
使用yum時,首先搜尋的是repodata檔案,是以指定yum源路徑時指定到repodata所在的目錄即可,如果隻有RPM軟體包可以通過createrepo指令将一個包含RPM檔案的檔案夾轉換為yum的倉庫,也就是生成repodata檔案,該指令預設未安裝。
enabled可不指定,預設為ebabled=1,即啟用該庫,0為不啟用。
使用yum倉庫出現的錯誤:nsufficient space in download directory /var/cache/yum/i386/6/c6-tong/packages
<a href="http://s3.51cto.com/wyfs02/M01/72/30/wKiom1XekdmgTWzxAAIN8y8qgDM430.jpg" target="_blank"></a>
解決方法:
<code>root@node1 ~]</code><code># df -h --檢視磁盤空間,空間已滿 </code>
<code>檔案系統 容量 已用 可用 已用%% 挂載點 </code>
<code>/dev/mapper/VolGroup-lv_root</code>
<code> </code><code>6.5G 6.1G 0 100% / --根分區空間已滿,清除檔案 </code>
<code>tmpfs 504M 0 504M 0% </code><code>/dev/shm</code>
<code>/dev/sda1</code> <code>485M 46M 414M 10% </code><code>/boot</code>
<code>/dev/sr0</code> <code>3.6G 3.6G 0 100% </code><code>/mnt</code>
<code>[root@node1 home]</code><code>#</code>
清理磁盤空間,可以先使用yum clean all嘗試、删除目錄下安裝包、擴充空間
使用yum安裝軟體包出現程序占用
<code>[root@localhost src]</code><code># yum grouplist</code>
<code>Existing lock </code><code>/var/run/yum</code><code>.pid: another copy is running as pid 2395.</code>
<code>Another app is currently holding the yum lock; waiting </code><code>for</code> <code>it to </code><code>exit</code><code>...</code>
<code> </code><code>The other application is: PackageKit</code>
<code> </code><code>Memory : 53 M RSS (374 MB VSZ)</code>
<code> </code><code>Started: Mon Dec 14 18:08:43 2015 - 02:04 ago</code>
<code> </code><code>State : Sleeping, pid: 2395</code>
<code> </code><code>Started: Mon Dec 14 18:08:43 2015 - 02:06 ago</code>
此時直接殺掉pid2395
<code>[root@localhost src]</code><code># ps -ef|grep 2395</code>
<code>root 2395 2393 0 18:08 ? 00:00:01 </code><code>/usr/bin/python</code> <code>/usr/share/PackageKit/helpers/yum/yumBackend</code><code>.py get-packages unknown</code>
<code>root 2427 2399 0 18:11 pts</code><code>/1</code> <code>00:00:00 </code><code>grep</code> <code>2395</code>
<code>[root@localhost src]</code><code># kill -9 2395</code>
<code>root 2395 2393 0 18:08 ? 00:00:01 [yumBackend.py] <defunct></code>
<code>root 2431 2399 0 18:11 pts</code><code>/1</code> <code>00:00:00 </code><code>grep</code> <code>2395</code>
<code>[root@localhost src]</code><code>#</code>
直接殺程序啥不掉
<code>[root@localhost src]</code><code># rm -f /var/run/yum.pid </code>
<code>Setting up Group Process</code>
<code>Installed Groups:</code>
<code> </code><code>Additional Development</code>
<code> </code><code>Base</code>
此時可以通過強制關掉yum程序:rm -rf /var/run/yum.pid
本文轉自 justin_peng 51CTO部落格,原文連結:http://blog.51cto.com/ityunwei2017/1318617,如需轉載請自行聯系原作者