yum軟件包管理詳解
yum
依賴關系
程序包管理器的前端工具:yum(Yellowdog Update Modifier)
自動解決依賴關系:x-->y-->z
文件服務器(共享rpm包):通過yum有支持的文件共享機制將各rpm包通過文件服務共享
repository:倉庫
1.各rpm包;
2.依賴關系、程序包安裝后所能生成文件列表等元數據文件
ftp、http、nfs、file
yum客戶端:
1.配置文件:指定各可用的yumn倉庫;
2.緩存元數據:yum會到各個可用的yum倉庫獲取元數據,並緩存至本地;
3.分析元數據:根據具體的操作請求完成元數據分析,檢測依賴關系、文件列表等信息
4.執行具體操作;
客戶端配置文件指定對應服務器的訪問方式:
ftp ftp://server/path/to/repo
http http://server/path/to/repo
nfs nfs://server/nfs_path
file file:///path/to/repository
yum用法和常用命令
Usage: yum [options] COMMAND
List of Commands:
check Check for problems in the rpmdb
check-update 檢查是否有軟件包更新
clean 刪除緩存的數據
deplist 列出軟件包的依賴關系
distribution-synchronization Synchronize installed packages to the latest available versions
downgrade 降低程序包的版本
erase 從系統中移除一個或多個軟件包
groupinfo 顯示組的詳細信息
groupinstall 向系統中安裝一組軟件包
grouplist 列出可安裝的組
groupremove 從系統中移除一組軟件包
help 顯示用法信息
history Display, or use, the transaction history
info 顯示關於軟件包或組的詳細信息
install 向系統中安裝一個或多個軟件包
list 列出一個或一組軟件包
load-transaction load a saved transaction from filename
makecache 創建元數據緩存
provides 查找提供指定內容的軟件包
reinstall 覆蓋安裝一個包
repolist 顯示已配置的倉庫
resolvedep 判斷哪個包提供了指定的依賴
search 在軟件包詳細信息中搜索指定字符串
shell 運行交互式的 yum 外殼
update 更新系統中的一個或多個軟件包
update-minimal Works like update, but goes to the 'newest' package match which fixes a problem that affects your system
updateinfo Acts on repository update information
upgrade 更新軟件包同時考慮軟件包取代關系
version Display a version for the machine and/or available repos.
要使用yum管理應用程序,首先得配置其可用的yum倉庫,保存在配置文件中:
/etc/yum.conf
/etc/yum.repo.d/*.repo
配置文件格式:有兩段組成,類似windows的ini配置文件
[main] :主配置段
[repo] :倉庫配置段
[main]
# 緩存程序位置
cachedir=/var/cache/yum/$basearch/$releasever
# 是否保存已經下載安裝好的程序包,1緩存,0不緩存
keepcache=0
debuglevel=2
# 日志文件目錄
logfile=/var/log/yum.log
# 查詢程序包的精確匹配
exactarch=1
obsoletes=1
# 檢驗程序包的來源合法性和完整性
gpgcheck=1
# yum是否支持插件
plugins=1
in /etc/yum.repo.d
配置repo:
[repo_ID]
name=String
baseurl=倉庫的訪問路徑
enabled={1|0}
gpgcheck={1|0}
gpgkey=公鑰文件(可以在本地,可以是服務器路徑)
cost=定義倉庫開銷,默認為1000 誰的cost值越小就會被優先使用
[base]
name=Centos 6.5 X86_64 relase
baseurl=http://172.18.119.102/Cento6-6.5/86_64/
enabled=1
gpgcheck=1
gpgkey=http://172.18.119.102/Cento6-6.5/86_64/RPM-GPG-KEY-6
yum的命令
repolist [all|enabled|disabled]:列出所有可以的yum repo
clean [all|packages|metadata|expire-cache|rpmdb|plugins]
list [all|installed|available]
info package_name: 列出包的描述信息
groupinfo "package_group_name": 顯示包組信息
groupinstall "package_group_name": 安裝包組
groupremove "package_group_name": 卸載包組
install package_name...: 安裝指定的程序包
reinstall package_name...:重新安裝指定的程序包
update package_name...:升級指定的程序包
現在的版本:x-1.2.1 x-1.2.2 x-1.2.3
升級到指定的版本:yum update x-1.2.2
erase|remove package_name...: 卸載指定的程序包
whatprovides|provides /path/to/samefile:查詢某文件是由哪一個包安裝生成的
downgrade package_name: 降級
deplist package_name:查詢指定的程序包依賴哪些包
安裝本地包:
install /path/to/package_file
手動進制檢查來源及完整性: --nogpgcheck
yum install /tmp/lrzsz.x86_64.rpm --nogpgcheck
yum配置文件中可用的四個宏:(通過python的方式來調用的)
$releasever: 程序的版本,對yum而言指的是redhat-release版本;只替換主版本號如6
$arch:系統cpu架構
[root@server yum.repos.d]# python
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.uname()
('Linux', 'server', '2.6.32-642.el6.x86_64', '#1 SMP Tue May 10 17:27:01 UTC 2016', 'x86_64')
$basharh: 系統基礎架構,如i686,i586等的基本架構為i386
$YUM0-9: 在系統中自定義的環境變量
獲取當前系統相應宏替換結果的辦法:
[root@server yum.repos.d]# python
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> import yum,pprint
>>> yb = yum.YumBase()
>>> pprint.pprint(yb.conf.yumvar)
{'arch': 'ia32e',
'basearch': 'x86_64',
'infra': 'stock',
'releasever': '6',
'uuid': '845921a8-4a8e-4406-aebf-2309a3d72467'}
>>> quit()
案例1:創建完全自定義的本地源把平時收藏的一些RPM軟件包放在一個目錄里,就變成一個自定義源了,可以用YUM來管理,靈活性相當大。
1、創建本地yum倉庫
mkdir -p /opt/rpm #可以有N級目錄
cp ... #復制RPM包到上述目錄
2、創建repo文件
cat >>/etc/yum.repos.d/Test.repo<<-EOF
[Local]
name=Local Yum
baseurl=file:///opt/rpm
gpgcheck=0
enabled=1
3、安裝createrepo
yum install createrepo #使用yum安裝createrepo
rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/createrepo-0.9.9-23.el7.noarch.rpm
4、創建索引
createrepo /opt/rpm
yum makecache #更新緩存
四、添加yum源
[html] view plaincopy
[1] Add RPMforge Repository for yum because that has many useful packages.
[root@dlp ~]#
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
[root@dlp ~]#
rpm -Uvh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Preparing… ###################################### [100%] 1:rpmforge-release ###################################### [100%]
[root@dlp ~]#
sed -i -e "s/enabled = 1/enabled = 0/g" /etc/yum.repos.d/rpmforge.repo
[2] Add repository EPEL that is provided from Fedora project.
[root@dlp ~]#
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@dlp ~]#
rpm -Uvh epel-release-6-8.noarch.rpm
Preparing… ###################################### [100%] 1:epel-release ###################################### [100%]
[root@dlp ~]#
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo