Linux程序包管理yum
1. Yum是什麼?
yellowdogupdate modifier = yum
2. 爲什麼要使用yum?
yum:自行解決依賴關係
3. Yum C/S架構:
4. Yum的工作方式
要使用yum,必須的有yum倉庫,在yum倉庫服務端的某個路徑中存放有程序包,使用createrepo命令構建這些程序包的元數據保存在repodata的目錄下,yum客戶端在首次啓動時,會從yum服務上下載元數據到本地進行緩存,以後yum客戶端在啓動時,首先會去服務端檢查yum元數據的特徵碼和本地緩存的yum的元數據的特徵碼做比較,如特徵碼一致則使用本地的元數據,如特徵碼不一致則從yum服務器端下載元數據到本地進行緩存
Yum倉庫的使用依賴於文件共享的文件服務服務器;常見的文件服務的服務器:1.ftp服務
2 .http服務 3 .本地文件目錄4 .NFS服務
rpm爲基礎包管理器;yum則是rpm的前端工具,yum的配置文件指向倉庫指路徑:repodata目錄所在的父目錄
5.yum配置文件
配置文件:指向倉庫的位置以及相關的各種配置信息;每個yum命令行可以同時指向多個倉庫,倉庫間可以優先級等相關的配置;
yum配置文件有兩部分組成:
主配置文件:/etc/yum.conf ;爲各倉庫指向提供公共配置文件;
各倉庫的定義:/etc/yum.repos.d/*.repo ;
注意! : /etc/yum.repos.d/目錄下文件以.repo結尾;每個repo配置文件中可以配置一至多個倉庫;
6. /etc/yum.conf文件
directive=VALUE
[main]:提供公共配置信息
cachedir=/var/cache/yum/$basearch/$releasever<--緩存目錄;
keepcache=0<--是否緩存已下載的rpm包 0:不緩存,安裝完成以後刪除rpm包;1 : 緩存
debuglevel=2<--調試級別;級別越高輸出的信息越詳細
logfile=/var/log/yum.log<--日誌文件存放位置
exactarch=1<--下載的程序包的平臺是否與當前平臺一致
obsoletes=1是否檢測包是否已被廢棄
gpgcheck=1<--在安裝前是否檢查每一個程序包的來源合法性;包完整性
plugins=1<--是否支持插件
installonly_limit=5<--限制每一次安裝的程序包個數
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum<--bug追蹤的路徑
distroverpkg=centos-release
….
#in /etc/yum.repos.d
7. 各倉庫配置
[repositoryid]<--對於當前系統的yum來講,此repositoryid用於惟一標識此repository指向,因此,其必須惟一;
name=<--當前倉庫描述信息;
baseurl=url://path/to/repository/<--指明repository的訪問路徑;通常爲一個文件服務器上輸出的某repository;
url:
ftp服務: ftp://SERVER/PATH/TO/REPOSITORY
http服務: http://SERVER/PATH/TO/REPOSITORY
本地目錄:: file:///PATH/TO/REPOSTIROY
enabled={1|0}此倉庫是否可被使用:默認爲1
gpgcheck={1|0} 是否對程序包做校驗;默認爲1
gpgkey=url://path/to/keyfile指明gpgkey文件路徑;
cost=#指明當前repository的訪問開銷,默認爲1000;
yum有內置變量,用於保存當前平臺的相信息;
(1)$raleasever: 當前OS發行版的主版本號;
例如,對CentOS6.6 x86_64,主版本號爲6;
(2)$arch:平臺
i386,i486
(3)$basearch: 基礎平臺, 例如i686, i586,i486以及i386的基礎平臺同爲i386;
(4)$YUM0-$YUM9
假如:
baseurl=http://repo.magedu.com/centos/$releasever/$basearch
當前系統爲CentOS6.6 x86_64
http://repo.magedu.com/centos/6/x86_64
創建yum倉庫
如何使用發行版光盤作爲yumrepository
(1)掛載光盤到指定掛載點,如/media/cdrom
(2)新建yum repo配置文件,類似如下所示:
[dvdbase]
name=CentOS6.6 X86_64 on dvd1
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
自己創建yum倉庫:
(1)在基於發行版安裝樹安裝 createrepo 程序包;
(2)確定repository輸出方式:
本地輸出:提供一個放置rpm包的本地路徑;
網絡輸出:提供一個文件服務器,配置好ftp服務或http服務;
ftp服務:
安裝程序包:vsftpd
文件存放路徑:/var/ftp/pub
啓動服務:servicevsftpd start
http服務:
安裝程序包:httpd
文件存放路徑:/var/www/html
啓動服務:servicehttpd start
Note:確保防火牆服務關閉;
(3)在準備好的目錄中放置rpm程序包文件
(4)對此目錄運行createrepo命令即可
示例
[[email protected]]# cat centos6.6.repo
[base]
name=CentOS$releasever $basearch on local server 172.16.0.1
baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-$basearch/
enabled=1
gpgcheck=0
[extra]
name=CentOS$releasever $basearch extras
baseurl=http://172.16.0.1/centos/$releasever/extras/$basearch/
enabled=1
gpgcheck=0
[epel]
name=FedoraEPEL for CentOS$releasever $basearch on local server 172.16.0.1
baseurl=http://172.16.0.1/fedora-epel/$releasever/$basearch/
enabled=1
gpgcheck=0
yum命令的使用格式
yum[options] [command] [package ...]
yum倉庫管理:
repolist:列出已經配置的所有可用倉庫
repolist[all|enabled|disabled]
列出默認已經啓用的倉庫
[root@localhost ~]# yumrepolist <--默認情況下會列出以啓用的倉庫 等同於yumrepolist enabled
已加載插件:fastestmirror,refresh-packagekit, security
Loading mirror speeds fromcached hostfile
倉庫標識 倉庫名稱 狀態
base CentOS 6 x86_64 on localserver 172.16.0.1 4,184
epel Fedora EPEL forCentOS6 x86_64 on local server 172.16.0.1 12,922
extra CentOS 6 x86_64 extras 2,334
repolist: 19,440
列出全部的repo倉庫
[root@localhost ~]# yumrepolist all
已加載插件:fastestmirror,refresh-packagekit, security
Loading mirror speeds fromcached hostfile
倉庫標識 倉庫名稱 狀態
C6.0-base CentOS-6.0 - Base 禁用
C6.0-centosplus CentOS-6.0 - CentOSPlus 禁用
...
C6.5-extras CentOS-6.5 - Extras 禁用
C6.5-updates CentOS-6.5 - Updates 禁用
base CentOS 6 x86_64 onlocal server 172.16.0.1 啓用: 4,184
base-debuginfo CentOS-6 - Debuginfo 禁用
c6-media CentOS-6 - Media 禁用
epel Fedora EPEL forCentOS6 x86_64 on local server 172.16.0.1 啓用: 12,922
extra CentOS 6 x86_64extras 啓用: 2,334
fasttrack CentOS-6 -fasttrack 禁用
repolist: 19,440
yum緩存管理:
clean:清理緩存
clean[ packages | metadata | expire-cache | rpmdb | plugins | all ]
示例
清空所有的緩存
[root@localhost~]# yum clean all
已加載插件:fastestmirror, refresh-packagekit, security
Cleaningrepos: base epel extra
清理一切
Cleaningup list of fastest mirrors
makecache: 緩存創建
自動連接至每一個可用倉庫,下載其無數據,將其創建爲緩存;
示例
[root@localhost ~]# yummakecache
已加載插件:fastestmirror,refresh-packagekit, security
Determining fastest mirrors
base |3.2 kB 00:00
base/group_gz | 216 kB 00:00
base/filelists_db | 4.3MB 00:00
base/primary_db | 3.3 MB 00:00
base/other_db | 1.8MB 00:00
epel | 3.0 kB 00:00
epel/filelists_db | 10 MB 00:01
epel/primary_db | 7.2 MB 00:00
epel/other_db | 4.3 MB 00:01
extra | 2.9 kB 00:00
extra/filelists_db | 1.7 MB 00:00
extra/primary_db | 1.1 MB 00:00
extra/other_db | 965 kB 00:00
元數據緩存已建立
yum程序包查看:
yumlist [all | glob_exp1] [glob_exp2] [...]
yumlist {available|updates|installed|extras|obsoletes} [glob_exp1] [...]
yum list [all | glob_exp1] [glob_exp2][...]
yum list available [glob_exp1] [...]
yum list updates [glob_exp1] [...]
yum list installed [glob_exp1] [...]
yum list extras [glob_exp1] [...]
yumgrouplist [hidden] [groupwildcard] [...]
示例
顯示當前系統所有已安裝和在倉庫中未安裝的軟件包
# yumlist all
顯示與mysql相關的軟件包
#yum list *mysql* <--可使用glob通配符 * ?
顯示當前系統上已經安裝的軟件包
#yum list installed
顯示當前系統中已安裝但在倉庫中不提供的包
#yum list extras
列出當前系統可用包組
#yum grouplist
yum程序包安裝:
yuminstall package1 [package2] [...]
Note:
1. 安裝時只需要提供包名;
2.如果某包有在不同倉庫中有多個不同版本,默認會安裝最新版本;如果要安裝指定版本:install PACKAGE-VERSION ...
例如:安裝mysql
#yum install mysql -y
重新安裝軟件包(覆蓋安裝)
reinstallpackage1 [package2] [...]
例如 :
#yum reinstall mysql -y
程序包升級:
update[package1] [package2] [...]
示例
#yum update mysql php
程序包降級:
downgradepackage1 [package2] [...]
例如
#yum downgrade mysql php -y
檢查有哪些升級可用:
check-update
例如
#yum check-update
程序包卸載:
remove| erase package1 [package2] [...]
所有依賴於正卸載的程序包的程序包會被一併卸載;
例如
#yum remove mysql php
查詢程序包
查詢程序的相關簡要信息:info PACKAGE ...
[root@localhost~]# yum info mysql
已加載插件:fastestmirror, refresh-packagekit, security
Loadingmirror speeds from cached hostfile
已安裝的軟件包
Name : mysql
Arch : x86_64
Version : 5.1.73
Release : 3.el6_5
Size : 2.4 M
Repo : installed
Fromrepo : base
Summary : MySQL client programs and sharedlibraries
URL : http://www.mysql.com
License : GPLv2 with exceptions
Description: MySQL is a multi-user, multi-threaded SQL database server. MySQL is a
: client/server implementationconsisting of a server daemon (mysqld)
: and many different clientprograms and libraries. The base package
: contains the standard MySQLclient programs and generic MySQL files.
在包名和sumary信息中搜索指定的關鍵字:searchKEYWORD ...
[root@localhost~]# yum search mysql
已加載插件:fastestmirror, refresh-packagekit, security
Loadingmirror speeds from cached hostfile
==================================================N/S Matched: mysql ===================================================
MySQL-python.x86_64: An interface to MySQL
MySQL-zrm.noarch: MySQL backup manager
apr-util-mysql.x86_64: APR utility library MySQL DBD driver
asterisk-mysql.x86_64: Applications for Asterisk that use MySQL
bacula-director-mysql.x86_64: Bacula Director with MySQL database support
bacula-storage-mysql.x86_64: MySQL Bacula storage daemon files
bytefx-data-mysql.x86_64: MySQL database connectivity for Mono
collectd-mysql.x86_64: MySQL module for collectd
dmlite-plugins-mysql.x86_64: MySQL plugin for dmlite
dovecot-mysql.x86_64: MySQL back end for dovecot
dpm-copy-server-mysql.x86_64: DPM copy server with MySQL database back-end
查詢指定文件由哪個程序包安裝生成:provides|whatprovides /PATH/TO/SOMEFILE
例如
[root@localhost~]# yum provides /etc/fstab
已加載插件:fastestmirror, refresh-packagekit, security
Loadingmirror speeds from cached hostfile
setup-2.8.14-20.el6_4.1.noarch: A set of system configuration and setup files
Repo : base
匹配來自於:
Filename : /etc/fstab
setup-2.8.14-20.el6_4.1.noarch: A set of system configuration and setup files
Repo : installed
匹配來自於:
Other : 提供依賴滿足:/etc/fstab
安裝或升級本地的程序包文件
用於安裝倉庫中並不存在的程序包文件,這些程序包有可能又依賴於倉庫中的某些程序包;
安裝本地的程序包文件
localinstallrpmfile1 [rpmfile2] [...]
示例
#yum localinstall zsh-4.3.10-7.el6.x86_64.rpm
#yum install zsh-4.3.10-7.el6.x86_64.rpm
升級本地的程序包文件
示例
localupdaterpmfile1 [rpmfile2] [...]
#yum localupdate zsh-4.3.10-9.el6.x86_64.rpm
包組管理:
列出所有包組:grouplist
顯示指定包組詳情:groupinfo group1 [...]
示例
[root@localhost~]# yum groupinfo '大系統性能'
已加載插件:fastestmirror, refresh-packagekit, security
設置組進程
Loadingmirror speeds from cached hostfile
組:大系統性能
描述:大系統的性能支持工具
必要的軟件包:
numactl
numad
默認的軟件包:
hwloc
libcgroup
libhugetlbfs
libhugetlbfs-utils
libtopology
可選的軟件包:
ksm_preload
numatop
tuna
安裝包組:groupinstall group1 [group2][...]
卸載包組:groupremove group1 [group2][...]
升級包組:groupupdate group1 [group2][...]
在centos 7 上: 可直接用install、remove或update來管理包組:
@GROUP_NAME
示例:
yuminstall @"Server Platform Development"
yum命令的可用選項:
-y:自動回答爲“yes”
--disablerepo=:臨時禁用在配置文件中配置並啓用的某repository;
--enablerepo=:臨時啓用指定的某repo;
--nogpgcheck:禁止做包校驗;