linux软件包的安装之----yum前端工具

YUM介绍:RPM前端工具,在将rpm包依赖关系做成数据库的前提下,自动查找依赖关系,并从某个仓库(repository)下载到所需要的安装包并在本地完成安装;在客户端,用yum可以安装在本地配置文件中可以找到的仓库,通过仓库的元数据(仓库(repository)中的rpm包的rpm信息被抽取出来,制作成yum仓库的元数据),可以知道仓库中有哪些软件包,以及对应的安装依赖关系。****例如:如果要安装Z,Z依赖X、Y,查到本地已经安装Y,则yum只需要从仓库(repository)中下载Z、X安装即可;;;根据本地rpm数据库中的数据,以及仓库(repository)中元数据判断要下载那些rpm包来安装,然后等待下载完成后自动调用rpm命令来安装这些下载下来的rpm包。

使用yum命令安装软件的流程:

yun  client先将仓库元数据下载至本地,在本地缓存下来,以后再通过yum安装rpm包时,就不用再连接远程仓库获取元数据了,可以在本地完成分析,需要用到那个软件包,他就联系对应仓库下载软件包,缓存仓库(repository)元数据的目的就是为了加速。

Yum仓库的实现方式有如下几种:

1)  ftp://

2)  http://

3)  在本地某个目录,例如file:///yum (注:file//为协议格式,/yum为仓库的路径)

实现yum的步骤(yum 仓库(repository)与yum client):

1)  配置好yum的仓库(repository),对应的[主机]路径下,存放着我们需要的rpm包,这些rpm包要有包含他们元数据的文件。***createrepo命令自动抽取rpm包元数据并生成元数据文件(一堆压缩后的xml文档,存放在.repo|.repofile|repodata目录下),这个隐藏目录存放的位置,就是yum仓库(repository)的位置。

2)  我们针对某个目录创建(来createrepo)元数据文件(repodata目录),通常就是yum仓库(repository)所在目录。

3)  客户端(主配置文件/etc/yum.conf):yum  install | reinstall |remove   rpm包基名(yum对程序包管理要依赖于仓库才能完成,需要通过配置文件告诉yum 仓库(repository)的位置,可以编辑主配置文件或者配置文件/etc/yum.repos.d/*.repo,配置文件/etc/yum.repos.d/*.repo被视为主配置文件的一部分)。

下面介绍yum客户端主配置文件/etc/yum.conf:

[main]        #此配置文件格式是分段配置,section[repository_id]定义仓库,section[main]是特

#殊的,除了它以外每一个中括号括起来就是一个仓库的名称,main是为后面每一个仓库提#供默认的配置;同一yum客户端可以有多个仓库,但是全局配置[main]只有一个,也可以#在主配置文件中写上仓库名称定义它,也可以在/etc/yum.repos.d/下新建一个*.repo文件,#并在里面定义仓库。

Cachedir=/….PATH…(告诉yum将什么目录当成缓存目录)

Keepcache=0            (通过yum仓库下载到本地的rpm包是否在安装后删除,还是长期保存)

Debuglevel=2(调试级别)(运行过程中是否显示错误信息,级别越高显示的越详细)

Logfile=/..PATH..(日志文件位置,使用yum执行了什么操作会保存在日志中以供以后检索)

Exactarch=1     (1表示下载软件包时必须和本地硬件平台精确匹配;0反之)

Gpgcheck=1     (gpg用于验证软件包的来源合法性以及完整性,这里表示每次安装一个软件包是是否要自动完成来源合法性的检测,1为yes)

定义yum仓库的配置文件详解:

如果希望定义一个yum仓库,可以在/etc/yum.repos.d/下创建一个以.repo为后缀名的配置文件,每一个.repo文件由[repository_id]以及下面跟的几个指令组成:常用指令如下:

Name=……(仓库的描述信息,无意义,但不可以缺少这个值,中间可以有空格)

Baseurl=……(告诉yum这个仓库可以通过什么路径访问,一般ftp://;http://;file://

Enabled={0|1}(是否启用此仓库,没写enabled指令都是默认启用的,1为启用,0为不启用)

Gpgcheck={0|1}(是否启用gpg校验,没写gpgcheck指令默认为启用,1,为启用,0为不启

#用,如果为1,要告诉yum用于gpg校验的key文件路径,可在本地也可在远程主机上)

Gpgkey=/….PATH….

Cost=1000(在几个yum仓库中优先选哪个,cost值越低越优先使用)

*)[repository_id]可以随便取名,主要是本机唯一的,不与其他repository_id冲突即可。

示例:

[base]

Name=centos

Baseurl=http://172…(这个路径下必须直接能够找到repodata目录!!)

Enabled=1

Gpgcheck=0

这样就完成了一个yum仓库的定义,配置好yum仓库后本地就可以通过yum命令来安装程序了。

Yum命令介绍:

Yum subcommand:

List[all|installed|available|updates(可更新的包)|extras(本地不属于任何yum仓库的包)|recent(新添加进仓库的包)] #支持globbing,例如#yum list all  bind*#all指所有包,installed指已安装的包,available指可安装的包。

Repolist[all|enabled|disabled]查看当前可使用的yum仓库,默认采用enabled选项

*yum有包组的概念,可以安装/卸载一整个包组,如果包组名中间有空格的话需要用引号引起来。

Grouplist(显示已安装/可安装的包组)

Groupinfo  “包组名”(查看包组信息:描述、必须装的包、默认装的包、可选装的包)

*yum仓库元数据缓存到本地可以加速yum操作,但缺点是如果yum仓库更新的话,yum无法反映出之后的更新,因此在必要时要清空本地的缓存,管理缓存的选项如下:

Clean  [packages(清空本地缓存的包)|metadata(清空本地缓存的元数据)|all(清空所有数据)]

Makecache(手动建立元数据缓存)#yum  makecache

安装子命令:

Install  packagename….(可以有多个包,用空格隔开)(可以用globbig)

-y(自动回答为yes)

Reinstall  packagename(重新安装软件包)

升级子命令:

Update packagename

Update-to  packagename-version(指定升级到哪个版本)

Check-update(检查一下本地有哪一些可以升级的软件包)

卸载子命令:

Remove   packagename(用yum命令卸载包,依赖此包的软件也将一并被卸载)

查询某文件可以有那个rpm包来提供:

Provides  /path/to/somefiles  #例:yum provides/etc/fstab(次包已安装)

例:yumprovides /etc/named.cong(此包未安装)

搜索rpm包

Search      关键字#例yum  search init

安装包组:

Groupinstall  包组名…(可以跟多个包组名,如果包组名中间有空格的话需要用引号引起来)

*******我们的开发环境(把下面几个包组安装好以后,我们就可以手动编译其他程序了,或制作源码rpm包为2进制rpm包了)

Rhel5/centos5上面安装:

1)Development Tools (2)Server Platform Development (3)Develogmentlibraries

Rhel6/centos6上面安装:

1)Development Tools (2)Server Platform Development (3)Desktop PlatformDevelopment

例#yum groupinstall  “..” “..” “..”

Groupupdate          包组名#包组更新

Groupremove           包组名#包组卸载

Downgrade               包组名#包组降级

使用yum安装升级本地rpm包(好处:可以通过yum仓库自动解决安装升级过程中发生的依赖关系问题,自动下载安装依赖的库,rpm包等等,rhel5(localinstall|localupdate),rhel6(install|update))

语法格式:yum  localinstall|localupdate|install|update  /path/XXXX.rpm

其他yum命令:

History(查看本机用户前几次使用yum操作的历史记录)

Version(为rpmdb提供的一个版本)

--nogpgcheck(此选项可跳过gpg检测,在命令行上指定的选项可以覆盖配置文件中的选项)

创建yum仓库

  • 用系统安装光盘来创建一个本地的yum仓库:

安装光盘本身就是一个yum仓库,将光盘挂载在系统上,光盘的那个挂载点就可以直接当做yum仓库来使用。

示例如下:

#yum clean all

#mount /dev/cdrom /media/cdrom

#vi /etc/yum.repos.d/base.repo(创建一个以.repo后缀结尾的文件就行,文件名自己取,只要不和其他repo文件重名即可,改baseurl)

baseurl=file:///media/cdrom      :x(保存退出)

#yum  makecache

#yum  repolist

**  .repo文件创建实例:

#vi /etc/yum.repos.d/mybase.repo

[centos6]                              #这是仓库名,可以随便取,不与其他仓库名重复即可。

name=centos 6.4 x86_64 #“=”号前后不能有空格

baseurl=http://172…/x86_64/ #这个是远程的服务器上已http方式提供的yum仓库源

gpgcheck=0                                   #可以不写这一行,只要在主配置文件中将这一项设置为0。

enable=1                                        #可以不写这一行,默认为1.

cost=1000                                               #优先级

[cdrom_centos6]                                   #这是仓库名,可以随便取,不与其他仓库名重复即可。

name=centos base repo                    #“=”号前后不能有空格

baseurl=file:///media/cdrom #这个是远程的服务器上已http方式提供的yum仓库源

gpgcheck=0                                   #可以不写这一行,只要在主配置文件中将这一项设置为0。

enable=1                                        #可以不写这一行,默认为1.

cost=2000                                               #优先级

:x(保存退出)

  • 创建连接到互联网上yum源的yum仓库

步骤:查看互联网上的yum源的包含repodata目录的目录如:

http://centos.ustc.edu.cn/centos/5/os/i386/   或者

http://centos.ustc.edu.cn/centos/5/os/x86_64/

将baseurl的值设置为上面的网址即可。

问题:1)如果新的版本出现,旧版本的目录就空了,如rhel6.4àrhel6.5

2)要批量给自己的服务器配置yum仓库,但是有的服务器是rhel5,有的服务器是rhel6,有的服务器是32位操作系统,有的服务器是64位操作系统。

解决方案:在定义baseurl选项时,可以使用yum的内置变量,它在/etc/yum.repos.d/下有样例文件CentOS-Base.repo

#less CentOS-Base.repo(下面介绍yum的内置变量)

$releasever:检查并替换为当前系统的主要发行版本号,它不包括次版本(rhel6.5,为6)

$basearch: 检查并替换为当前系统的硬件平台(cpu架构),x86_64或i386,这个值可以用命令uname  -m 来显示;此变量会将ix86(x指[3456])统统替换为i386

例:baseurl=http://mirror.sohu.com/centos/$releasever/os/$basearch/

这个路径不论有的服务器是rhel5,有的服务器是rhel6,有的服务器是32位操作系统,有的服务器是64位操作系统。都可以使用!!!

4)  制作yum仓库

#yum install createrepo(createrepo:为1个yum仓库创建元数据)

使用方法:

#mkdir /yum

#mv xen-4.1/   /yum

#cd /yum

#createrepo /yum/xen-4.1

#cd /yum/xen-4.1/repodata;ls

其中:

xxx.filelists.xxx当前yum仓库内所有rpm包的文件列表,yumprovides命令依赖此文件。

xxx.primary.xxx:包含当前yum仓库内所有rpm包的文件列表以及rpm包之间的依赖关系。

xxx.other.xxx: 包含当前yum仓库内所有rpm包的changelog(改变日志),用命令来查询:

rpm  -q  --changelog  包名,可以在制作rpm包时修改它的changelog。

repomod.xml:记录上面3个文件的时间戳,每次用createrepo命令创建repodata目录都会更新这个文件。

***:我们使用yum命令安装程序时,它会拿缓存在本地的repomod.xml中的时间戳与远程yum仓库中的repomod.xml中的时间戳做比较,若远程时间戳较新,它会自动更新元数据,并自动下载与安装软件包。

***:使用自建的yum仓库:

#vi /etc/yum.repos.d/xen.repo

[xen-4.1]                               #这是仓库名,可以随便取,不与其他仓库名重复即可。

name= xen-4.1 x86_64               #“=”号前后不能有空格

baseurl=file:///yum/xen-4.1 #这个是远程的服务器上已http方式提供的yum仓库源

gpgcheck=0                                   #可以不写这一行,只要在主配置文件中将这一项设置为0。

enable=1                                        #可以不写这一行,默认为1.

:x(保存退出)

#yum  repolist   #yum install xen

5)  yum缓存位置:/var/cache/yum下

*)如果我们学习了网络服务器http、ftp后,将这些yum源一导出,也可作为网络yum源!

linux软件包的安装之----yum前端工具

时间: 2024-12-19 19:37:54

linux软件包的安装之----yum前端工具的相关文章

Linux运维学习历程-第十三天-yum前端工具与源码编译安装

yum 前端工具 1.yum 2.源码编译安装http 二.作业: 1.输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序 2.删除kernel包后,无法启动,并恢复之 3.源码安装apache

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

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

linux软件包的安装之----rpm软件包管理工具

程序语言开发的程序:系统调用:库,动态库(开发时指向的库) 程序:只要Windows上开的程序所指向的库遵循POSIX规范将源码拿到linux上编译时没问题的,运行应该也没有问题,能否运行还要看依赖的库文件是否存在:因为linux.Windows的ABI不同,Windows上编译好的程序无法在linux上正常运行,即使程序源码遵循POSIX规范. API:POSIX(可移植os规范) ABI:应用二进制接口 linux发行商:32bit:i386,预先编译好以后提供给用户二进制程序 64bit:

linux软件包的安装之----源码编译安装

前提:必须装好前面说过的开发环境,rhel6上的3个开发包组 Rhel5/centos5上面安装: 1)Development Tools (2)Server Platform Development (3)Develogmentlibraries Rhel6/centos6上面安装: 1)  Development Tools (2)Server Platform Development (3)Desktop PlatformDevelopment **由于tarball中的c程序源码文件之间

linux软件包的安装之----编译源码格式的rpm包(后缀名为.src.rpm的软件包)

编译源码格式的rpm包-----à并制作为二进制格式的rpm包 实例 #useradd  mockbuild (需要使用mockbuild用户来编译) #rpm –ivh nginx--src.rpm(会在当前目录下生成rpmbuild目录) #cd rpmbuild;ls(以下是子目录介绍) SOURCES:存放的是程序源代码.补丁.脚本等. SPECS:nginx.spec文件    指示如何解压,打补丁,如何./configure,make,makeinstall,如何封装为nginx-.

【我的Linux,我做主!】rpm包管理器/yum前端工具/编译安装从入门到精通

Linux软件包管理之--rpm网络操作系统都是架构在底层硬件之上的,目前内核有Linux系列,UNIX系类,Windows系列等,再向上是程序库调用,程序的实现方式在不同的操作系统中实现的方式也不尽相同.操作系统向外输出供用户使用的接口称之为API(Application Programming Interface),向用户输出统一的调用接口,这样当一个文件使用调用接口后就可以在不同的操作系统中按照统一的格式输入输出了.(如下图)ABI(Application Binary Interface

Linux软件包的安装

软件包安装 软件包分类 源码包特点 源码包的优点是:开源,如果有足够的能力,可以修改源代码可以自由选择所需的功能软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高卸载方便 缺点:安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误编译过程时间较长,安装比二进制安装时间长因为是编译安装,安装过程中一旦报错新手很难解决 脚本安装包: 二进制包 1)分类 DPKG包:是由Debian Linux所开发出来的包管理机制,通过DPKG包,Debian Linux就可以

linux软件包的安装和卸载

这里分两种情况讨论:二进制包和源代码包. 一.linux二进制分发软件包的安装和卸载 Linux软件的二进制分发是指事先已编译好二进制形式的软件包的发布形式,其长处是安装使用容易,缺点则是缺乏灵活性,假如该软件包是为特定的硬件/操作系统平台编译的,那他就不能在另外的平台或环境下正确执行. 1.*.rpm形式的二进制软件包 安装:rpm -ivh *.rpm 卸载:rpm -e packgename 说明: RPM(RedHat Packge Manager)是RedHat公司出的软件包管理器,使

2018-3-14Linux系统管理(12) Linux程序包管理(2)yum前端管理工具

我们在之前的章节中讲到了Linux的程序包管理的基础与实现,后面也讲述了RPM包的管理命令实现了管理包的功能,主要用的是rpm命令,那么rpm实现程序管理总结如下:    rpm命令实现程序管理:       安装:-ivh, --nodeps, --replacepkgs       卸载:-e, --nodeps, --replacepkgs       升级:-Uvh, -Fvh, --nodeps, --oldpackage       查询:-q, -qa, -qf, -qi, -qd