linux 初学者之yum使用

一、什么是yum

Yum(全称为 Yellow dog Updater,
Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

yum工作流程

要用yum程序来管理程序包,得先需要有一个yum仓库。yum和yum仓库之间是通过文件传输协议来实现的。yum仓库的构建是在yum仓库的某个路径下放上一堆的rpm包并使用一个仓库构建程序把这对rpm包的信息抽取出来保存在repodata的目录下当作这个仓库元数据保存起来。客户端每一次使用一个仓库时,首先会联系这个仓库,获取这个仓库的元数据缓存在本地,从而知道这个仓库上到底有哪些程序包,每一个程序包到底依赖于哪个程序,每一个程序包安装时生产哪些文件目录列表等等一些信息。但需要安装数据包时,在本地通过分析已经安装的数据包,未安装的数据包,获取差异性,把本地没有的、此时又需要的数据包通过文件传输协议,从yum仓库中下载下来,然后调用rpm程序工具完成安装

从yum的工作流程可以看出,yum的核心是yum仓库中的各种程序包及仓库程序包信息的元数据repodata,使用yum的重点是构建yum仓库。

yum与rpm的关系

rpm为基础包管理器,可以独立工作

yum则是rpm的前端工具,是rpm的补充,不能独立工作。

二、yum的使用

(一)从0开始构建本地的yum仓库

(1) 在基于发行版安装树安装createrepo程序包

# yum
install createrepo

createrepo是构建仓库时生存repo的命令。

(2) 确定repository输出方式:

A、本地输出:提供一个放置rpm包的本地路径;

B、网络输出:提供一个文件服务器,配置好ftp服务或http服务;

a、配置ftp服务:

安装程序包: # yum install vsftpd

(系统默认的文件存放路径为:/var/ftp/pub)

启动服务:# service vsftpd start

关闭防火墙:# service iptables stop

如此可以在windows浏览器里输入 ftp://172.16.20.97(换成自己linux的ip地址) 回车,这时会有一个pub目录,进行下面的(4)的createrepo命令后就会在pub目录里有一个repodata了。

这时可以将此时得到的地址,编辑/etc/yum.repos.de/NAME.repo的baseurl了

创建完就可以yum clean all,再 yum makecache,更新repos

工作done!!!

b、http服务:

安装程序包:# yum install httpd

(系统默认的文件存放路径:/var/www/html)

启动服务:# service httpd start

PS:确保防火墙服务关闭;

 (3) 在准备好的目录中放置rpm程序包文件

本地输出的,就放置在自己准备好的目录里;ftp输出的就放置在/var/ftp/pub里;http输出的就放置在/var/www/html里。

 (4) 对此目录运行createrepo命令

# createrepo /DIR/IN/LOCAL  (/DIR/IN/LOCAL为自己准备好的存储程序包的目录)

# createrepo /var/ftp/pub

# createrepo /var/www/html

运行上述命令后,程序会自动在该目录里生成一个“repodata”文件目录,里面存放了本程序包仓库的元数据。

(5)修改仓库配置文件

  A. 知识补充

配置文件:指向仓库的位置以及相关的各种配置信息;每个yum命令行可以同时指向多个仓库,仓库间可以有优先级等相关的配置;

有两部分组成:

主配置文件:/etc/yum.conf

为各仓库指向提供公共配置文件;

各仓库的配置:/etc/yum.repos.d/*.repo

man yum.conf查看详细说明

各仓库配置参数:

a、[repositoryid]

# 对于当前系统的yum来讲,此repositoryid用于唯一标识此repository指向,因此,其必须惟一;

b、name=

# 当前仓库描述信息;

c、baseurl=url://path/to/repository/

url2://path/to/repository/

url3://path/to/repository/

# 指明repository的访问路径;通常为一个文件服务器上输出的某repository;(和mirrorslist是有排斥性的)

url:

ftp服务

ftp://SERVER/PATH/TO/REPOSITORY

http服务

http://SERVER/PATH/TO/REPOSITORY

本地目录:

file:///PATH/TO/REPOSTIROY

仓库指向的路径:repodata目录所在的父目录

http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/

d、enabled={1|0}

此仓库是否可被使用,不指明的话默认是1

e、gpgcheck={1|0}

是否对程序包做校验,不指明的话默认也为1

f、gpgkey=url://path/to/keyfile

指明gpgkey文件路径;当gpgcheck=1时必须指明gpgkey的路径

g、cost=#

指明当前repository的访问开销,默认为1000;访问消耗越小的越优先允许其访问本仓库

  B. 操作:

[[email protected] ~]# vim /etc/yum.repos.d/test.repo  其中test可以换成自己取的易辨识的文件名

然后安装上面说明,设置好repo id,name,baseurl,gpgcheck,enabled基本配置即可。

(6)更新repolist

(6.1)清理缓存

clean
[ packages | metadata | expire-cache | rpmdb | plugins | all ]

[程序包|仓库的元数据|过期的缓存|rpm数据库|插件|所有缓存]

PS:前面都是清理指定的文件数据,all是清理除目录的其他所有文件数据

命令格式例子: # yum clean all

(6.2)重新创建缓存

makecache: 缓存创建,自动连接至每一个可用仓库,下载其元数据,将其创建为缓存

命令格式:# yum makecache

(6.3)查看所有可用仓库

repolist: 列出已经配置的所有可用仓库        (默认是只列出已经启用的,即enabled=1的仓库)

repolist
[all|enabled|disabled]

PS:用# yum repolist 命令,系统会自动更新并重建yum 仓库的缓存

(二)yum仓库的使用与维护

(1)程序包查看:

(1.1)# yum list [all |
glob_exp1] [glob_exp2] [...]

[[email protected] ~]# yum list bash

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

Installed Packages

bash.x86_64                             4.1.2-29.el6                              @anaconda-CentOS-201410241409.x86_64/6.6

[[email protected] ~]#

(1.2)# yum list
{available|updates|installed|extras|obsoletes|recent} [glob_exp1] [...]

available: 可安装而尚未安装的

updates:可用于升级的包

installed:已安装过的包

extras:系统已安装但任何一个yum仓库都不存在的包

obsoletes:系统已安装但已被yum仓库废弃的包(有更新的包供升级)

recent:最近刚刚加进仓库的包

(1.3) # yum grouplist [hidden]
[groupwildcard] [...]  程序包组的查看

可以用# yum grouplist查看yum分的各个组:

Installed Groups:已安装的组

Installed Language Groups:已安装的语言组

Available Groups:可用的组

Available Language Groups:可用的语言组

每个组下面都有列表,可选择安装一个组或者多个组。

(2)程序包安装:

# yum  install package1
[package2] [...]

PS: 只需要提供一个或多个包名(如 bash,zsh,xen);

如果某包有在不同仓库中有多个不同版本,默认会安装最新版本,因此不需要提供版本号、发行号、适用的平台等信息;

如果要安装指定版本:install PACKAGE-VERSION ...

(3)重新安装(覆盖安装)

# yum reinstall package1
[package2] [...]

(4)程序包升级:包名+版本号

# yum  update [package1]
[package2] [...]

upgrade package1
[package2] [...]这个已经不常用了,红帽7已经可以用update代替了

(5) 程序包降级:包名+版本号

# yum downgrade package1
[package2] [...]

(6) 检查有哪些升级可用:

# yum check-update

(7)卸载:

# yum  remove | erase  package1
[package2] [...]

所有依赖于正卸载的程序包的程序包会被一并卸载

(8)查询:

(8.1)查询程序的相关简要信息:

# yum info PACKAGE ...

(8.2)在包名和sumary信息中搜索指定的关键字:

# yum search KEYWORD ...

(8.3)查询指定文件由哪个程序包安装生成:

# yum provides|whatprovides /PATH/TO/SOMEFILE

例子:

[[email protected] ~]# yum provides /bin/echoLoaded plugins: fastestmirror, refresh-packagekit, securityLoading mirror speeds from cached hostfilecoreutils-8.4-37.el6.x86_64 : A set of basic GNU tools commonly used in shell scriptsRepo        : base-testMatched from:Filename    : /bin/echo  (后面还有多行显示内容,太长,省略)

(9)安装或升级本地的程序包文件:

# yum localinstall rpmfile1
[rpmfile2] [...]

用于安装仓库中并不存在的程序包文件,这些程序包有可能又依赖于仓库中的某些程序包;

# yum localupdate rpmfile1
[rpmfile2] [...]

上面安装和升级里的rpmfile1和rpmfile2 要指明有效路径——使用绝对路径或者切换到程序包所在目录里使用命令。

PS:在红帽7中已经统一到 install和update、remove中了,但仍能用这个命名。

(10)包组管理:


(10.1) 列出所有包组:# yum grouplist

包组一般都多词,中间有空格,所以一个包组需要用引号引起来。否则会被当作多个包组而报错。

[[email protected] ~]# yum groupinfo Compatibility libraries
Loaded plugins: fastestmirror, refresh-packagekit,
security
Setting up Group Process
Loading mirror speeds from cached hostfile
Warning: Group Compatibility does not exist.
Warning: Group libraries does not exist.

(10.2)显示指定包组详情:# yum groupinfo group1 [...]

包组的信息只能用groupinfo查看,info报错

[[email protected] ~]# yum info "Compatibility libraries"
Loaded plugins: fastestmirror, refresh-packagekit,
security
Loading mirror speeds from cached hostfile
Error: No matching Packages to list

(10.3)安装:# yum groupinstall group1 [group2] [...]

(10.4)卸载:# yum groupremove group1 [group2] [...]

(10.5)升级:# yum groupupdate group1 [group2] [...]

在红帽7中已经统一到install、remove、update中,组名加双引号,引号前加@

Note: 可直接用install、remove或update来管理包组:

@GROUP_NAME

例子:  #  yum
install @"Server Platform Development"

三、练习

创建xen4仓库,分别通过本地及ftp或http服务输出

练习题解参考见附录

时间: 2024-08-02 10:20:55

linux 初学者之yum使用的相关文章

linux初学者-CIFS网络文件系统篇

linux初学者-CIFS网络文件系统篇 CIFS是一种通用网络文件系统,主要用于网络设备之间的文件共享.CIFS可以在linux系统和windows系统之间共享文件,因此这种文件系统主要用于客户端是windows系统. 提供CIFS的服务是SAMBA,下文将介绍SAMBA服务的一些配置以及用法. 1.SAMBA的安装和配置 "yum install samba samba-common samba-client -y".安装SAMBA服务. "systemctl start

linux初学者-系统日志(二)

linux初学者-系统日志(二) 先前在(一)中介绍到在不同主机间日志同步的方法,在一台主机上可以看到另一台主机的日志.这里会介绍系统日志方面的一些其他内容. 1.日志的采集格式 在日志的采集中,由图可以看出,这样的排列或者显示方式会增加分析区分的难度,尤其是在进行日志同步时,所以在日志的采集中有时需要用到一些明显的采集格式. 日志采集格式是在"/etc/chrony.conf"中编辑的,如果是改变日志同步的采集格式,就需要在日志的接收方配置.编辑格式如下图所示,编辑的文本必须在所有采

linux初学者-DNS配置篇

linux初学者-DNS配置篇 DNS在之前的网络管理篇已经做过介绍,下文将叙述DNS在学习工作中的一些配置以及应用. 1.高速缓存DNS 一台主机通过DNS服务器询问域名解析IP是需要一定的时间的,如果再次询问这个域名,同样需要之前的时间,这无疑延长了解析时间以及增加了服务器的负担,如果DNS服务器能够记住并且分享询问过的域名,那么其他主机在询问这个域名时就会快很多.这就是高速缓存DNS. 配置高速缓存,需要在DNS服务器上做如下配置: a."yum install bind -y"

linux初学者-ftp篇(一)

linux初学者-ftp篇(一) FTP是文件传输协议,是用于Internet上的控制文件的双向传输.用户可以通过客户机程序从远程主机上下载或者向远程主机上传文件. linux系统中,如果不了解SELINUX,需要将SELINUX下的enforing改为disabled,否则在进行上传或者下载时会有影响. 1.vsftpd服务的安装 在有yum源的前提下,输入"yum install vsftpd.x86_64 lftp.x86_64 -y"安装vsftpd服务,"vsftp

linux初学者-MariaDB图形管理篇

linux初学者-MariaDB图形管理篇 MariaDB不仅有文本管理方式,也有借助工具的图形管理方式.其图形管理的工具是"phpmyadmin".这个软件可以在"phpmyadmin"官网中下载,如下图所示. 下载好软件后,就可以配置MariaDB的图形管理了,其步骤如下: a."yum install httpd php php-mysql -y".安装httpd.php和php-mysql软件. b."tar jxf phpMy

linux初学者-iscsi篇

linux初学者-iscsi篇 之前介绍过网络文件共享系统NFS和CIFS.在系统中,设备也是可以共享的,这就是iSCSI,它可以用来建立和管理IP存储设备.主机和客户机等之间的相互连接.下文将简要介绍这种网络设备共享系统.       1.安装 因为iSCSI是设备共享系统,所以在进行操作之间,需要先有一个硬盘设备.本文中是使用"fdisk /dev/vdb"来新建一个分区设备"/dev/vdb1"来作为共享设备. "yum install target

linux初学者-squid代理篇

linux初学者-squid代理篇 Squid代理服务器是一种缓存服务器,一般分为正向代理和反向代理. 1.正向代理 客户端因为网络或者其他的问题,不能访问到一台Apache服务器,如果要访问到,则需要通过一台中间的代理服务器,这就是Squid的正向代理. Squid代理服务器可以访问到这个Apache服务器,并且缓存访问到的内容,再将缓存的内容给客户端看. 为了演示需要,本文中主机"double"有两个网卡,一个IP为"172.25.254.202",一个IP为&

linux初学者-mail篇

linux初学者-mail篇 邮件是在生活中比较常用的一个工具,在linux系统中的邮件也是.在linux中,邮件的发送所用的服务时postfix,邮件的接收所用的服务是pop(110端口).imap(143端口),所用软件为dovecot.下文将对两台主机进行配置,实现邮件的首发,并对邮件进行管理. 为了演示方便,将这两台主机的主机名分别设为"mailqq.qq.com"."mail163.163.com". 1.域名配置 在"mailqq.qq.com

linux初学者-Apache篇

linux初学者-Apache篇 Apache提供了超文本传输协议http,httpd是Apache超文本传输协议的主服务器.下文将对httpd的安装和配置进行简单的叙述.        1.安装 "yum install httpd -y".安装httpd服务. "systemctl start httpd"."systemctl enable httpd"."systemctl stop firewalld".对httpd