yum

Linux程序包管理yum

1.  Yum是什麼?

yellowdogupdate modifier = yum

2.  爲什麼要使用yum?

yum:自行解決依賴關係

3.  Yum C/S架構:

spacer.gif

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:禁止做包校驗;

 

 

 

 

 

 

 


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