Linux的程序包管理器(中)——yum命令从未如此详细过

与rpm包管理器相比,yum包管理器恐怕更受用户的青睐,其很大的原因在于这款包管理器能自动解决rpm包之间的相互依赖关系。本文就CentOS 6.6为例,尽可能详细的给读者朋友们讲解yum包管理器的用法。

yum(Yellowdog Updater Modified的缩写)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,用户无须繁琐地一次次下载、安装。---引自“百度百科”。因此我们就可以判断出它实际上是一个C/S工具,有客户端和服务器端。通常把服务器端叫做“yum仓库”。这个叫法非常贴切,每当我们用yum安装一个程序的时候,它就如同一个机器人,自动的从yum仓库中找到相应的包,搬到我们的系统上自动为我们安装。

yum的配置文件是/etc/yum.conf,其中定义了yum仓库的位置等信息

从图中我们可以看出在/etc/yum.repos.d/目录下存有不止一个的yum仓库,实际上系统自带的yum仓库就存放在该目录下,其命名以.repo结尾,后文我们将为大家讲解yum仓库的相关内容

yum命令的使用:

安装:yum install PACKAGE_NAME ...  可以同时安装多个程序,yum从yum仓库中找到该程序后,会询问用户是否安装。

例如:使用yum安装mysql程序:yum install mysql

如果想实现完全自动化安装,只需要在程序包名后面加上 -y,替用户自动回答为yes。则上述安装命令还可以写为:yum install mysql -y

如果要安装指定的程序包版本的程序:yum install PACKAGE_NAME-VERSION

注:使用yum命令也可以安装本地的程序包:yum localinstall /path/to/rpm_package_file ...,在CentOS 7上可以直接使用yum install /path/to/rpm_package_file ...安装本地程序包

 重装:yum reinstall PACKAGE_NAME ...

例如:使用yum重装nginx:yum reinstall nginx -y

 升级:yum update PACKAGE_NAME;检查当前系统上可升级的程序:yum check-update;如果有多个版本的升级包可用,且仅期望升级到指定版本:yum update PACKAGE-VERSION

例如升级nginx,从1.4.7-1升级到1.6.2-1版本:yum update nginx -y

降级:yum downgrade PACKAGE_NAME。注:将当前版本降级到它的前一级,如果想降级到指定版本,需指明包版本号

例如,将现版本的nginx降级到1.4.7-1版本:yum downgrade nginx-1.4.7-1.el6.ngx  -y

卸载包:yum erase PACKAGE_NAME 或 yum remove PACKAGE_NAME。注:被依赖的包会被一并卸载。

查询类命令:

        查询某程序是否安装:yum list PACKAGE_NAME,不加包名,将列出系统上安装的所有包

查看某包的摘要信息:yum info PACKAGE_NAME

   

根据关键字模糊查询包名或包的摘要信息包含此KEYWORD的相关列表:yum search KEYWORD

查询某文件是由哪个包安装生成:yum provides /path/to/somefile 或 yum whatprovides /path/to/somefile

    附:包组管理。通常在开发程序包时,需要使用,如:Development Tools、Server Platform Development、Desktop Platform Development、Debug Tools等包组

显示所有包组:yum grouplist

显示某包组的相关信息:yum groupinfo "GROUP_NAME"

安装包组:yum groupinstall "GROUP_NAME"或 yum install @"GROUP_NAME"

卸载包组:yum groupremove "GROUP_NAME"或 yum remove @"GROUP_NAME"

升级包组:yum groupupdate "GROUP_NAME"或 yum update @"GROUP_NAME"

    下面为读者朋友们讲解一下yum仓库的有关内容。

在/etc/yum.repo.d/目录中,以.repo命名的都是yum仓库。yum仓库存放了众多rpm包以及和rpm包元数据相关的服务器路径,yum命令的安装,升级都是依赖于yum仓库。

yum仓库类命令:

列出当前系统上所有可用的仓库: yum repolist

禁用某个yum仓库   yum --disablerepo=REPO_ID repolist,如禁用nginx仓库: yum --disablerepo=nginx repolist

启用某个yum仓库yum --enablerepo=REPO_ID repolist,如启用nginx仓库: yum --enablerepo=nginx repolist

注:命令行启用或禁用yum仓库的优先级要高于配置文件/etc/yum.repos.d/*.repo中enable定义的属性。

清理yum仓库缓存:yum clean all;通常在切换yum仓库的时候,需要先清理缓存

我们可以使用系统自带的yum仓库,但在公司里有些时候网络环境不太给力,那么我们也可以自己配置yum仓库,Linux允许用户在一个repo文件中定义多个仓库,也可以将多个仓库一一命名为repo文件。

 yum仓库定义的格式:

[REPO_ID]定义了仓库在此系统上的唯一标识,如[base]

name=REPO的描述信息

 baseurl=yum客户端访问仓库的路径,注:要顶格写,如:baseurl=ftp://172.16.0.1/pub/CentOS6/;常用的文件协议有:ftp://、http://、nfs、file:///(最后一个/表示根文件系统路径)。

enabled={1|0}是否启用此yum仓库

gpgcheck={1|0}是否检查包的来源合法性和包的完整性

gpgkey=指定公钥key的存放路径,如:ftp://172.16.0.1/pub/CentOS6/gpg-key

cost=开销值,默认为1000,值越小yum客户端越优先选择,当有多个yum仓库时可指定某个yum仓库被率先访问

附:yum客户端配置的高级用法

①在yum客户定义仓库时可使用cost定义仓库的使用开销,默认为1000;

②baseurl中指定路径时可使用变量:$releasever: 当前OS发行版的主版本号

$arch: 平台

$basearch: 基础平台,例如i686,i586,i486,i386系列的基础平台都是i386,如:http://mirrors.sohu.com/centos/$releasever/os/$basearch

③可以使用mirrorlist指令替换baseurl:指向一个URL,此URL是一个文本文件,其中保存了大量镜像服务器列表;用户使用yum仓库时,会获取此列表文件,而后通过fastestmirror插件判断哪一个镜像为访问速度最快的服务器,并以之做为本次访问的baseurl;

在定义yum仓库的时候,其实只需要定义[REPO_ID]、baseurl、enabled就满足了一个yum仓库使用的基本条件了。定义完之后,不要以为就可以用了,还需要用createrepo程序将其组建起来。

    构建yum仓库命令:createrepo <DIR >。注:需先yum安装该程序。

实战:将CentOS6.6DVD2中的rpm包放到FTP服务器上,创建成yum仓库。供公司内部使用。

为了给大家演示,使用两台虚拟机,一台作为ftp服务器(IP:172.16.24.1),一台作为客户端(IP:172.16.24.24)

将dvd光盘映像添加进虚拟机,开机启动系统。

启动ftp服务: service vsftpd start

创建dvd的挂载点:mkdir /media/cdrom;

以只读方式挂载光盘:mount /dev/cdrom /media/cdrom;

在/var/ftp/pub/中,创建一个目录pub存放这些rpm包,并将dvd目录下Packages目录下的所有包复制到/var/ftp/pub/pub目录中:cp /media/cdrom/Packages/* /var/ftp/pub/pub(注:这个目录是ftp服务器的共享目录,放在其他目录下的用朋友请检查客户机是否有权访问到这个目录)

安装构建yum仓库程序:yum install createrepo -y 或者将crearepo的rpm包下载至FTP服务器上,使用rpm -i createrepo-主版本号-次版本号-发行号-其他.rpm安装

构建仓库:createrepo /var/ftp/pub/pub/

在客户机上编辑配置文件指向该仓库:vi /etc/yum.repos.d/ftp.repo

[ftp_pub]

baseurl=ftp://172.16.24.1/pub/pub

enabled=1

gpgcheck=0

cost=200

保存退出;

清理yum缓存:yum clean all;并查看结果:

结果测试:安装axel:yum install axel

注:新上传到ftp上rpm包,要重建yum仓库,切记!

时间: 2024-11-07 04:24:18

Linux的程序包管理器(中)——yum命令从未如此详细过的相关文章

linux之程序包管理器(rpm)

linux下的程序包可支持多种工具编写的,如C.C++.PERL等. 但是这种高级语言编写出来的代码是我们人能看懂的,但是计算机是看不懂的,那么计算机怎么执行,怎么了解人要它做什么呢? 这就需要我们做一些转换了,把人能读懂的语言让机器也能识别,这个过程就是由编译器完成的,通常是吧代码语言转换成二进制语言. 过程:预处理.编译.汇编.链接 一个程序的运行大部分时间是离不开库的. 什么是库呢?库也是一种程序,只不过与其他程序不同,库没有执行入口,不能独立运行,只能被其他独立运行的程序调用的时候才能执

程序包管理:rpm&yum命令

1.软件包管理简介 Windows中所有的软件包都不可以直接在linux系统中直接安装使用. linux系统中软件包分类: 源码包(脚本安装包) 源代码直接开放的包,绝大部分是C语言写的: 二进包(源码包编译之后的包.RPM包.系统默认包) 优点:安装快速,简化安装过程但不能看到源代码,例如qq等: redhad系列和ubanto系列最大的区别就是二进制软件包不同,rehad用的二进制包是.rpm包,debin系列用的是deb包,其余的部分两种发行版本基本一致. 源码包的优点: 开源,可以修改源

linux程序包管理之rpm程序包管理器与yum前端工具

这里主要讲以CentOS为例,rpm程序包管理器的相关内容: CentOS的程序包管理器:   1) 程序包的命名规则:        源代码包:            software_name-VERSION.tar.gz            VERSION:major.minor.release                major:主版本号,通常代表重大功能改进的版本分支:                minor:次版本号,通常代表在某个版本的分支中的某个功能发生变化:     

Linux的程序包管理器(上)——rpm详解

在使用Linux操作系统的过程中,我们需要的一些服务(例如Nginx)并没有提供,需要用户自行安装相应的程序包,才能使用相应的服务.本文以CentOS6.6为例,分三小节为读者朋友们尽可能详细的讲解rpm.yum以及程序包的编译安装三种程序包的管理方法. rpm rpm包管理工具是Red Hat公司贡献的一款rpm程序包管理器,在RHEL.CentOS.Fedora.SUSE等主流发行版本中,被广泛使用. rpm包管理工具可用于安装,升级,卸载,重新安装程序:也可以用于查询当前系统上安装了哪些程

linux rpm程序包管理器

在linux中的应用程序结构形式分为三种:1)源代码形式2)二进制形式3)程序包形式其中源代码是最权威的,二进制形式经过了一系列的编译.汇编.连接等等其他操作得到可以执行的程序及其他相关的文件,而程序包形式则是二进制形式进一步进行操作,使之可以自动安装程序包中的所有文件,当然在卸载的时候,也可以一并删除:一般来说,我们对于程序包形式的程序的操作比较常用.比较方便. 有了程序包之后,我们就需要程序包管理器来管理程序包,借此来方便终端用户的安装.卸载.升级.安装信息查询及校验等工作: 我们在这只说R

Linux的程序包管理器(下)——编译安装

前面介绍了rpm和yum包管理器的用法,但有的时候一些程序仅提供了源代码比,需要我们自己编译安装.源代码之间是不会放在一个文件中,而他们直接又存在着各种各样的依赖性关系.因此需要一个源代码构建工具对源代码进行组织,和几个开发包组专门解决依赖性关系. Linux当中autoconf工具可以自动生成一个configure脚本,此脚本能检查当前系统上编译环境是否能满足当前程序的编译需要:同时,还能确定后续的编译工作所期望编译进程序中的特性.而我们从源代码网站下载下来的源代码通常都会提供configur

Linux程序包管理--rpm和yum的原理和基本用法

Linux中的程序包主要分为两类: 二进制可执行安装包和源代码程序文件包. 本文主要讲解使用rpm程序包管理器和yum管理器前端工具来实现对二进制可执行安装包的安装, 查询, 升级和卸载等相关操作. Linux中在二进制可执行安装程序包安装上会涉及多个文件的操作, 操作过程就会比较复杂, 为简化该过程就使用程序安装包管理器来管理程序包的安装过程, 大大简化了程序包安装过程. Linux根据发行版本不同, 使用不同的程序包管理器实现对程序包的管理, 在这里主要介绍两大分支: debian: 使用d

rpm,yum程序包管理器

在早期我们在Linux上安装程序时,都采用的源代码来安装应用程序,这就意味着我们每次都要经过预处理,编译,汇编,链接最后生成可执行的二进制文件:这样的操作太过繁琐,为简化安装步骤,便于广大用户的安装部署程序,程序提供商就在特定的系统上面编译好相关程序的安装文件并进行打包,提供给大家下载,而对这些程序包进行管理的就是程序包管理器: 不同Linux发行版本,就有不同的程序包管理器:在这里列举一些常用的程序包管理器: 在Debian中dpkg工具来管理所有.deb后缀名的包文件:Redhat中就使用最

linux的程序包管理-rpm

我们知道,程序就是指令加上数据的集合或者称为算法加上数据结构的集合.应用程序以源代码和二进制的形式存在:源代码是包含了整个应用程序的编程语言的所有代码的文本文件:二进制则是将源代码经过一系列的转换操作之后得到的可以直接执行的文件.    使用源代码安装应用程序的步骤为:预处理(预处理器) --> 编译(编译器) --> 字节码 --> 汇编(汇编器) --> 链接(链接器) --> 可以直接执行的二进制程序文件.当我们使用源代码安装应用程序时,不同操作系统的相同操作安装出来的