Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10202383
  • 博文数量: 1669
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12594
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1669)

文章存档

2023年(4)

2022年(1)

2021年(10)

2020年(24)

2019年(4)

2018年(19)

2017年(66)

2016年(60)

2015年(49)

2014年(201)

2013年(221)

2012年(638)

2011年(372)

分类: LINUX

2011-12-06 18:35:01

Linux下Yum的使用  

2010-09-20 21:18:18|  分类: 工作 |  标签: |字号 

 

--------------

yum是个功能强悍的包管理工具,命令语法很简单的:yum --操作参数  命令 包名称1 包名称2 .......,,有些操作也可以没有包名称(软件名) ,支持再在报包名称中使用通配符*来一次安装多个名称前端一致的软件包。   下面把操作参数和命令列出来,大多数时候没必要要操作参数的。                                             
Options list (操作参数)
  -h, --help            显示帮助信息,并退出
  -t, --tolerant        忍受发生的错误         
  -C                    从缓冲中运行,而不是升级缓存           
  -R  [minutes]         最大化的命令等待时间           
  -d  [debug level]     调试输出级别                  
  --showduplicates      显示复制, 在repo,list/search命令下
  -e  [error level]     错误输出级别                     
  -q, --quiet           安静的操作                                         
  -y                    回答所有的问题为是               
  --version             显示 YUM版本信息并退出            
  --installroot=[path]  设置为root安装                    
  --enablerepo=[repo]   激活一个或多个仓库(支持通配符)  
  --disablerepo=[repo]  禁掉一个或多个仓库(支持通配符)
  -x [package], --exclude=[package]                        在名称或glob不包含包。
  --disableexcludes=[repo]                       禁掉出了这个之外的别的仓库
  --noplugins           禁掉yum插件
  --nogpgcheck          禁掉GPG验证检查,没有签名的软件安装加这个参数
  --disableplugin=[plugin]                        用名称禁掉插件
  --enableplugin=[plugin]                        用名称启用插件
  --skip-broken         忽略包的依赖问题
  --allow-downgrade     晕软件包降级
  --disablepresto     禁用Presto 插件并且不下载任何增量包
list of Commands:(操作命令)
check-update   检查可提供的包升级
clean          删除缓存数据      
deplist        列出包依赖相关   
downgrade      降级一个软件包
erase          移除一个或多个包从你的系统
groupinfo      显示关于包组的细节        
groupinstall   从组里安装软件包到你的系统
grouplist      列出当前的组              
groupremove    在一个组中移除包从您的系统
help           显示帮助用法信息         
info           显示关于包或一组包的细节信息
info-security  返回影响系统安全的数据
install        安装一个或多个软件包在你的系统                                         
list           列出一个包或某组的包                                                   
localinstall   安装本地 RPM                                                           
makecache      生成原数据缓存                                                                                 
reinstall      重新安装一个包                                                         
repolist       显示软件仓库的配置                                                     
resolvedep     决定哪个包提供了给定的依赖                                             
search         查找包细节居给定的字符串                                               
shell          运行交互式的yum shell                                                  
update         更新一个或多个系统 中已安装的包                                            
update-minimal        只升级安装最新的包,系统补丁
upgrade       升级整个系统,一般在系统版本升级的时候用
举例:比如下载了一个没有签名的软件包,可以这样安装

  1. yum  --nogpgcheck  install 软件包名称

我一般习惯先su到root,再用yum。网上很多直接再普通用户下用yum的用法,这个例子就应该是这样的

  1. su -c 'yum  --nogpgcheck  install 软件包名称‘

我觉得如果要连续操作的时候还是先切到su方便些,不然老要输入密码,命令格式也显的复杂。如果只是安装一个软件的话网上流行的这种方法很好,装完之后自动退出到普通用户模式,安全性高。本文只是列出常用的操作,有些参数和命令没有涉及,不够应该是够用了。
新装好的系统应该简单配置一下yum,载入几个常用的插件,让它更好用

  1. yum install yumex yum-presto yum-fastestmirror yum-security yum-allowdowngrade
  2. yumex      yum的扩展,图形前端
    yum-presto     增量包应用插件,有增量包的时候优先下载增量包,可以大大减少下载量
    yum-fastestmirror      可以让yum选择速度最快的源(软件仓库)
    yum-security      安全插件,具体功能我也不是很清楚
    yum-allowdowngrade  允许软件降级的插件

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

yum 是 yellowdog updater modified 的缩写。yellowdog 是一个 Linux 的 distribution,RH 将这种升级技术用到自己的 distribution 形成了现在的 yum(原理和 apt 类似,但 apt 是编译代码,执行效率远高于用 python 写的 yum)。

yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个 distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了 Linux 用户一直头痛的 dependencies 的问题。这一点上,yum 和 apt 相同。apt 原为 debian 的 deb 类型软件管理所使用,但是现在也能用到 RH 门下的 rpm 了。

一般这类软件通过一个或者多个配置文件描述对应的 repository 的网络地址,通过 http 或者 ftp 协议在需要的时候从 repository 获得必要的信息,下载相关的软件包。这样,本地用户通过建立不同的 repository 的描述说明,在有 Internet 连接时就能方便进行系统的升级维护工作。另外,如果需要使用代理,可以用 http_proxy 和 ftp_proxy 这些 shell 里面标准环境变量的设定。

repository 是用 yum-arch 或者 createrepo 命令创建的,也可以用别人已有的 repository 作为镜像。

yum 的基本操作

yum 的基本操作包括软件的安装(本地,网络),升级(本地,网络),卸载,另外还有一定的查询功能。

设定好了本地的 yum 之后,就可以很方便的进行安装(现在假设就用 fc5 自带的 yum 进行安装),如我们需要安装虚拟机 bochs,可以使用

# yum install bochs

如果本地有相关的 rpm 文件,可以用

# yum localinstall ur.rpm

前者导致 yum 搜索现有 repository 中的数据(一般先会连接到这些 repository 下载更新数据),如果发现有此软件,则会通过分析其 dependencies 然后下载并安装所需软件。

如果需要卸载,可以使用

# yum remove bochs

或者

# yum erase bochs

这也会消解对应的 dependencies,如删除 firefox 会把 R 同时删掉,因为 R 依赖于 firefox

更新某个软件可以用

# yum update firefox

如果不带后面的程序名,将会升级所有可以升级的软件。过时的软件如果需要处理(如删掉)可以添加 ——obsolete 参数,或者使用 upgrade。如果需要更自动化一些的操作(避免回答一些问题)还可以增加一些参数,如

# yum -y upgrade

如果做完一次系统级的升级,将会下载大量 rpm 等等东西,这将占用较多的硬盘,可以使用

# yum clean packages

将相关的 rpm 文件删除,其他的一些有 headers, packages, cache, metadata, all

查看什么 rpm 提供某个程序可以使用

$ yum provides /bin/rpm

而使用

$ yum list rpm

会列出 rpm 相关的信息,而

$ yum list info

给出详细的说明,可以用

$ yum search rpm

获得一切能找到的与 rpm 相关的程序,搜索的对象是每个程序的描述部分。

更详细的参数说明请查阅相关的 man pages。在 yum-utils 里面可以找到叫 yumdownloader 的程序。使用它可以方便下载,如 srpm 等包

$ yumdownloader ——source firefox

如何使用 yum 升级我的 fc?

升级的核心部分很简单,首先,需要让 yum 能用新的 repository,fc 管理自己版本也用了一个 rpm,可以用如下命令更新这个包

# rpm -Uvh

此后就是用 yum 把 fc4 相关的程序更新到 fc5,

# yum -y upgrade

注意,由于某些自己安装的程序没有相关的 repository 程序替代,因此很可能干扰这个过程,如 qterm,原来的 repository 里面没有,偷懒的办法自然是先找到相关的 repository 并添加到 yum 的配置文件,笨拙的方法是先卸载这些东西…… 进行了漫长的等待之后(我做的那次下载了 1.5Gb+ 的东西),就可以看着一个一个的软件更新了,然后重启,用新内核 boot 成功就几乎大功告成了。

也许有一些应用软件无法处理老版本的配置文件,需要手动配置一下基本就行了。我的 fc5 就这样从 fc4 上长了出来~

FC 本身有一个关于升级的 FAQ,可以参考。

怎样配制 yum 添加新的 repository?

这主要需要关心 yum 的配置文件。它的主配置文件在 /etc/yum.conf,其说明可以参考这里。

其中重要的有 repository 的相关信息,在 fc5 里面,repository 的信息是分开存储的,一般在 /tec/yum.repos.d/ 里面,一般一个 repository 写成一个文件,如 fedora-core.repo。

网上一般提供 yum 升级的 repository 都会提供类似的说明,如 DAG,他提供了可供安装的 rpm,装上后 yum 就配置好了,可以直接用上面的命令执行系统维护,又如 dries,可以建立一个 dries.repo 文件,内容是

[dries]

name=Extra Fedora rpms dries – $releasever – $basearch

baseurl=

一些其他的工具

在 yum-utils 里面还有一些有用的工具,如 package-cleanup 用于清除本地安装的 rpm,还有维护 repository 的一些工具,如 repo-graph,repo-rss,repoclosure,repomanage,repoquery,reposync,repotrack, yum-builddep。

下面介绍一下yum的更为详细的用法:

yum详解
使用redhat,fedora的linuxer肯定都为rpm著名的dependency hell而头疼(这也是所有基于rpm发行版都有的问题)。foo is needed by bar,bar is needed by foo。要装卸个软件,还得辛辛苦苦地梳理清楚所有依赖性问题,rpm的几个搜索站点成了时常光顾的场所,如果不幸碰到循环依赖,那就只有干瞪眼的分了。 有时加个–nodeps参数,倒是眼不见,心不烦,但这样装上的软件,你能保证正常使用吗,这样卸载软件,你能保证不影响其它软件工作吗,恐怕谁也不能 给出肯定的答案。每到这时,帽子们只有看着debian的apt暗自羡慕了。好在,这些都已经成为过去时了。基于rpm的发行版现在也有了像apt那样自 动解决依赖关系的包管理工具了。其中一个著名的就是apt4rpm,这基本上是debian系统apt的在rpm发行版的移植。但是使用Redhat和 Fedora的linuxer你们知道吗,还有一个与apt功能类似的rpm包管理系统,那就是yum。Fedora系统已经自带,Redhat也有相应 的rpm下载。与apt相比,yum的功能一点也不弱,甚至还有许多胜过apt 之处。比如说,yum是Fedora系统自带的,因此它能使用fedora官方的软件源,完成各种官方发布的各种升级。对于第三方软件源的支持,yum也 不差,大多数支持apt的repository,也能支持yum,比如说freshrpms,fedora.us,livna等等。此外yum有一个比较 详细的log,可以查看何时升级安装了什么软件包等。yum的代码较apt更为精简等。

一、YUM简介:
yum,是Yellow dog Updater, Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow dog updater),后经杜克大学的开 发团队进行改进,遂有此名。yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相 关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以是本地软件池,但必须包含rpm的header,header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。
如果没有安装,先我们要到下面的地址下载与自己系统相对应的版本的 yum:

比如我用的是Fedora core 4.0 就下载如下的包安装:

[root@localhost beinan]# rpm -ivh freshrpms-release-1.1-1.fc.noarch.rpm
warning: freshrpms-release-1.1-1.fc.noarch.rpm: Header V3 DSA signature: NOKEY, key ID e42d547b
Preparing… ########################################### [100%]
1:freshrpms-release ########################################### [100%]

二、YUM的配置文件
yum的一切配置信息都储存在一个叫yum.conf的配置文件中,通常位于/etc目 录下,这是整个yum系统的重中之重,所以有必要详细介绍。下面是一个从网上找来的yum.con文件,让我们以此为例,进行说明。

[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
retries=1

[base]
name=Fedora Core $releasever – $basearch – Base
baseurl=

[updates-released]
name=Fedora Core $releasever – $basearch – Released Updates
baseurl=

[Fedora.us]
name=Fedora.us – $basearch – Extras
baseurl=

[Dag Wieers]
name=Dag RPM Repository for Fedora Core
baseurl=

[Livna]
Name=Livna RPM, Fedora Core $releasever – $basearch
baseurl=

[freshrpms]
name=FreshRPMs
baseurl=

第一部分(这是yum的全局性设置。默认一般不必改动。)
[main]
cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum。
debuglevel:除错级别,0──10,默认是2
logfile:yum的日志文件,默认是/var/log/yum.log。
pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。
distroverpkg:指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。
tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
除了上述之外,还有一些可以添加的选项,如
exclude=,排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像也是检查的。

第二部分:
配置repository服务器了,这是最令人激动的,有了好的repository,就如家门口开了大卖场,要什么东西稍微跑跑腿就行,对了这还是个免费的大卖场。
所有服务器设置都应该遵循如下格式:

[serverid]
name=Some name for this server
baseurl=url://path/to/repository/

其中serverid是用于区别各个不同的repository,必须有一个独一无二的名称。
name,是对repository的描述,支持像$releasever $basearch这样的变量;
baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:
baseurl=url://server1/path/to/repository/


其中url支持的协议有 http:// ftp:// file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl只能有一个,也就是说不能像如下格式:
baseurl=url://server1/path/to/repository/
baseurl=url://server2/path/to/repository/
baseurl=url://server3/path/to/repository/
其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。
url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如:

[updates-released]
name=Fedora Core $releasever – $basearch – Released Updates
baseurl=


gpgcheck=1
exclude=gaim
failovermethod=priority

其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用,
failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。

几个变量
$releasever,发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch,cpu体系,如i686,athlon等
$basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。
对yum.conf设定完成,我们就可以好好体验yum带来的方便了。

对 了,万事具备,只欠东风。还有一件事没有做。那就是导入每个reposity的GPG key,前面说过,yum可以使用gpg对包进行校验,确保下载包的完整性,所以我们先要到各个repository站点找到gpg key,一般都会放在首页的醒目位置,一些名字诸如 RPM-GPG-KEY.txt之类的纯文本文件,把它们下载,然后用rpm –import xxx.txt命令将它们导入,最好把发行版自带GPG-KEY也导入,rpm –import /usr/share/doc/redhat-release-*/RPM-GPG-KEY 官方软件升级用的上。

FC3: rpm –import /usr/share/doc/fedora-release-3/RPM-GPG-KEY-fedora

FC4: rpm –import /usr/share/doc/fedora-release-4/RPM-GPG-KEY-fedora

至此一切准备工作都已完毕。

三、用YUM升级软件
打开终端,切换到root用户,yum的操作大都须有超级用户的权限。
首 先,yum update,这一步是必须的,yum会从服务器的header目录下载rpm的header,放在本地的缓存中,这可能会花费一定的时间,但比起yum 给我们带来方便,这些时间的花费又算的了什么呢?header下载完毕,yum会判断是否有可更新的软件包,如果有,它会询问你的意见,是否更新,还是说 y吧,把系统始终up to date总是不错的,这时yum开始下载软件包并使用调用rpm安装,这可能要一定时间,取决于要更新软件的数目和网络状况,万一网络断了,也没关系,再 进行一次就可以了。升级完毕,以后每天只要使用yum check-update检查一下有无跟新,如果有,就用yum update进行跟新,时刻保持系统为最新,堵住一切发现的漏洞。

用yum update packagename 对某个单独包进行升级。
yum还有一个升级指令,yum upgrade,它的初衷是更换废弃的包,但现在通常用来进行重大的升级,如把发行版整个升高一个版本,由于牵动太大,还不如安装新的系统。

1.列出所有可更新的软件清单
命令:yum check-update

2.安装所有更新软件
命令:yum update

3.仅安装指定的软件
命令:yum install

4.仅更新指定的软件
命令:yum update

5.列出所有可安裝的软件清单
命令:yum list

四、用YUM安装删除软件
装了系统添加删除软件是常事,yum同样可以胜任这一任务,只要软件是rpm安装的。
安装的命令是,yum install xxx,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断。
删除的命令是,yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。

1.用YUM安装软件包
命令:yum install

2.用YUM删除软件包
命令:yum remove

五、用YUM查询软件信息
我 们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字。这时yum的查询功能就起作用了。你可以用 yum search keyword这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和messeger有关的rpm包,于 是我们可能得到gaim,kopete等等,并从中选择。
有时我们还会碰到安装了一个包,但又不知道其用途,我们可以用yum info packagename这个指令来获取信息。

1.使用YUM查找软件包
命令:yum search

2.列出所有可安装的软件包
命令:yum list

3.列出所有可更新的软件包
命令:yum list updates

4.列出所有已安装的软件包
命令:yum list installed

5.列出所有已安装但不在 Yum Repository 內的软件包
命令:yum list extras

6.列出所指定的软件包
命令:yum list

7.使用YUM获取软件包信息
命令:yum info

8.列出所有软件包的信息
命令:yum info

9.列出所有可更新的软件包信息
命令:yum info updates

10.列出所有已安裝的软件包信息
命令:yum info installed

11.列出所有已安裝但不在 Yum Repository 內的软件包信息
命令:yum info extras

12.列出软件包提供哪些文件
命令:yum provides

六、清除YUM缓存
yum 会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确 的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all一 股脑儿端

1.清除缓存目录(/var/cache/yum)下的软件包
命令:yum clean packages

2.清除缓存目录(/var/cache/yum)下的 headers
命令:yum clean headers

3.清除缓存目录(/var/cache/yum)下旧的 headers
命令:yum clean oldheaders

4.清除缓存目录(/var/cache/yum)下的软件包及旧的headers
命令:yum clean, yum clean all (= yum clean packages; yum clean oldheaders)

附:

由于 Fedora 的 yum
预设的更新主机在外国,也就是 Fedora 的官方更新主机
连线到国外下载,速度之慢,可想而知….

在这里,我们可以修改 yum 的配置文件
把连线主机,改成国内各大学的 Linux 更新主机,如此速度就会比较快
————————
/etc/yum.conf
———————–

[base]
name=Fedora Core $releasever – $basearch – Base baseurl=

[updates-released]
name=Fedora Core $releasever – $basearch – Released Updates baseurl=

注意红色的地方,就是 yum 会去连接的更新主机网址
改成以下,可自由选择搭配
base 主机:
(大小写有差别,请先实际连接测试,看看服务器是否仍存在)





updates 主机:
(大小写有差别,请先实际测试连接,看看服务器是否仍存在)





路径中的 /1/ 是代表 core 1
如是使用core 2,请自行改成 /2/
改完后保存,不必重启服务,立刻生效
然后 yum 的更新速度就會飞快了

Fedora core 3 和 4 的 yum base 配置设定法:
FC3 和 FC4 的 yum base 配置设定,有别于之前 FC2
并不是在 /etc/yum.conf 中设定
设定方法如下:
cd /etc/yum.repos.d/
vi fedora.repo (设定 base 主机,仅列出需要修改处)

baseurl=
#mirrorlist=

vi fedora-updates.repo (设定 update 主机,仅列出需要修改处)

baseurl=
#mirrorlist=

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Redhat Linux下用yum升级系统
yum也可以升级Redhat Linux系统,在Redhat Linux系统安装盘中默认没有yum的安装包,由于Redhat Linux与Centos Linux基本一致,因此可以用同版本同内核的Centos Linux的yum包在Redhat Linux上进行安装。安装过程在上面章节已经讲述,这里不在多说。
由于使用的是Centos Linux的yum包在Redhat Linux下进行的安装,因此在Redhat Linux下需要增加资源库,定义yum的非官方库文件,让一些必需的软件包通过yum也能够安装。
首先建立dag.repo,定义非官方库:
[root@localhost ~]# vi /etc/yum.repos.d/dag.repo
[dag]
name=Dag RPM Repository for RHEL4
baseurl=
enabled=1
gpgcheck=1
接着导入非官方库的GPG:
[root@localhost ~]# rpm --import \

注意:此步骤很重要,如果没有导入授权的RPM-GPG-KEY,在使用yum升级安装软件时就会提示软件不合法,结合上下文可以看出,在Centos下进行yum配置的时候,并没有涉及到导入RPM-GPG-KEY,那是因为连接的资源库为Centos官方的库,而升级的系统也是Centos,当然无需授权,而这里我们升级的系统是Redhat Linux,而用的资源文件是Centos的,所以必须导入Centos的RPM-GPG-KEY,系统才认为升级的包是合法的。
最后,就可以使用非官方定义的rpm包升级系统:
[root@localhost ~]#yum update

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

关于源(仓库,repository)
仓库(repository)是一个预备好的目录(本地目录),或是一个网站,包含了软件包(RPM 软件包)和索引文件。
软件管理工具,类似 yum,可以在仓库中自动地定位并获取正确的 RPM 软件包。这样,您就不必手动搜索和安装新应用程序和升级补丁了。只用一个命令,您就可以更新系统中所有软件,也可以根据指定搜索目标来查找安装新软件。
有一系列的服务器,为每个版本的 Fedora 分别提供了一些仓库。常用的这样的服务器有:
台灣義守大學的Mirror站
上海交通大学的Mirror站

添加上海交通大学的源
其实就是添加一个源地址描述文件,系统中所有源地址描述文件都放在/etc/yum.repos.d/目录下,文件后缀为.repo。

软件管理工具(我的系统中的是yum)能够根据这些文件从仓库里(服务器上)找到索引文件。然后分别下载这些索引文件到/var/cache /yum/这个目录下面。这些索引文件中有该仓库中最新的RPM软件包的记录,当然还有软件的依赖关系等等的描述。软件管理工具对比该索引文件和系统中安装了的软件包,就能够知道那些软件包有跟新。这时候就会提醒你是否要从仓库中下载这些软件包跟新。

编辑一个.repo文件/etc/yum.repos.d/sjtu.repo
然后把下面的内容复制到打开的 sjtu.repo 中:

view plaincopy to clipboardprint?

  1. [Fedora-ftp.sjtu.edu.cn] 
  2. name=Fedora 12 - i386 
  3. baseurl=
  4. enabled=1
  5. gpgcheck=0
  6. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora 
  7. [Everything-ftp.sjtu.edu.cn] 
  8. name=Everything 12 - i386 
  9. baseurl=
  10. enabled=1
  11. gpgcheck=0
  12. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora 
  13. [updates-ftp.sjtu.edu.cn] 
  14. name=Fedora updates 
  15. baseurl=
  16. enabled=1
  17. gpgcheck=0
  18. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora 

[Fedora-ftp.sjtu.edu.cn] name=Fedora 12 - i386 baseurl= enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora [Everything-ftp.sjtu.edu.cn] name=Everything 12 - i386 baseurl= enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora [updates-ftp.sjtu.edu.cn] name=Fedora updates baseurl= enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora

这里一共有三个源的地址,分别对应于Fedora-ftp.sjtu.edu.cn,Everything- ftp.sjtu.edu.cn,updates-ftp.sjtu.edu.cn。我们可以看到,在/var/cache/yum下面有对应的三个文件夹,分别存放从这三个源中下载的索引文件和RPM软件包。

我的系统是fedora 12 i386,所以name=fedora 12 - i386。

然后执行yum makecache,这其实就是软件管理工具yum从这三个站点(或者说仓库)下载索引文件,对比更新。如最开始所说的过程。
使用系统安装的iso文件作为源

如果没有网络,或者网速很差,手头又有系统安装的iso文件,可以使用该iso文件作为我们的源。

同上,在/etc/yum.repo.d/目录下创建一个.repo文件,例如,我创建了一个文件dvd_iso.repo,编辑内容如下:

view plaincopy to clipboardprint?

  1. [dvd_iso] 
  2. name = install from dvd_iso 
  3. baseurl = file:///mnt/cdrom/ 
  4. enable = 1
  5. gpgcheck=0

[dvd_iso] name = install from dvd_iso baseurl = file:///mnt/cdrom/ enable = 1 gpgcheck=0

baseurl = file:///mnt/cdrom/和上面添加上海交大源中指明源的路径的含义相同。我们只需要将iso文件mount到/mnt/cdrom文件夹下面,就能够使用这个iso文件中的RPM软件包了。(个人感觉,这就是使用red hat 9 的system-config-packages 命令或者添加/删除程序,再安装软件的时候,会提示你插入光碟。刚开始,不了解fedora现在的软件包管理方法,就只想着从iso添加软件。这个就是那个一个相同的方法。)

安装第三方仓库 rpmfusion

下面两行命令,有两个作用:

1.在/etc/yum.repo.d/目录下面创建了rpm fusion的源描述文件

2.在/etc/pki/rpm-gpg/目录下面安装了安装rpm fusion

  rpm -ivh
rpm -ivh

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在RHCE5中构建yum仓库(整理也是一种收获)
                        制作:chinanpt
                                    QQ:350072715

在Red Hat Enterprise Linux 5中在安装时没有选择所有软件包,以后在使用过程中想再增加缺少的软件包,通常情况可以通过两种途径完成。
一、是通过rpm手工安装需要安装的软件包;
二、是通过注册RHN,然后由yum通过internet连接到RHN站来新增软件包。
这两种情况都有其不便之外,第一种由于存在软件包的依赖性关系,可能需要在安装一个rpm包之前要安装多个与之关联的软件包,而往往这些依赖的包的名称我们无法正确定位。尤其经常提示缺乏某一动态函数库时,我们就不容易方便查到所需软件包的名称。第二种方法虽然不存在上述情况,但显而易见的问题是需要连接 internet,而且安装软件包的速度会很慢。
为了避免上述两种情况的弊端,我们可以通过自己创建本地的repository(仓库)的方法来实现软件包的快速安装。(此方法前提是你有Red Hat Enterprise Linux 5安装介质盘)
1.        创建挂载点
mkdir /yum
2.        挂载安装介质盘
mount /dev/cdrom /mnt
3.        复制光盘内容到/yum目录中
cp /mnt/* /yum
4.        安装创建repository的软件包
   rpm -ivh createrepo-0.4.4-2.fc6.noarch.rpm
5.        把/yum/repodate目录下的所有内容移动到指定的位置/home/repodate
mv /yum/Server/repodata/*把系统原有的存放repository内容的目录改名
6.        创建自己的repository(给yum创建软件库)
  createrepo –g /home/repodate/comps-rhel5-server-core.xml /yum/Server/ repodate
7.        修改yum的repository配置文件,指定baseurl路径为本地file。
cd /etc/yum.repos.d
vi rhel51-server.repo,修改的内容如下
[rhel51-server]
name=Red Hat Enterprise Linux $releasever - $basearch
baseurl=file:///yum/Server
enable=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
8.        如果还想实现更新库的功能,只需要把从RHN下载的新的软件包copy到Server目录下,再运行createrepo命令更新库内容就可以了
9.        测试:安装安装vsftp软件包
[root@localhost ftp]# yum install vsftpd
Failed to set locale, defaulting to C
Loading "installonlyn" plugin
Loading "rhnplugin" plugin
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for vsftpd to pack into transaction set.
vsftpd-2.0.5-10.el5.i386. 100% |=========================|  17 kB    00:00     
---> Package vsftpd.i386 0:2.0.5-10.el5 set to be updated
--> Running transaction check
Dependencies Resolved
=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
vsftpd                  i386       2.0.5-10.el5     Server            137 k
Transaction Summary
=============================================================================
Install      1 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         
Total download size: 137 k
Is this ok [y/N]: y
Downloading Packages:
Running Transaction Test
warning: vsftpd-2.0.5-10.el5: Header V3 DSA signature: NOKEY, key ID 37017186
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: vsftpd                                                 [1/1]warning: /etc/logrotate.d/vsftpd.log created as /etc/logrotate.d/vsftpd.log.rpmnew
  Installing: vsftpd                                                 [1/1]warning: /etc/pam.d/vsftpd created as /etc/pam.d/vsftpd.rpmnew
  Installing: vsftpd                                                 [1/1]warning: /etc/vsftpd/ftpusers created as /etc/vsftpd/ftpusers.rpmnew
  Installing: vsftpd                                                 [1/1]warning: /etc/vsftpd/user_list created as /etc/vsftpd/user_list.rpmnew
  Installing: vsftpd                                                 [1/1]warning: /etc/vsftpd/vsftpd.conf created as /etc/vsftpd/vsftpd.conf.rpmnew
  Installing: vsftpd                                                 [1/1]warning: /etc/vsftpd/vsftpd_conf_migrate.sh created as /etc/vsftpd/vsftpd_conf_migrate.sh.rpmnew
  Installing: vsftpd                       ######################### [1/1]
Installed: vsftpd.i386 0:2.0.5-10.el5
Complete!
[root@localhost ftp]#
10.        测试:卸载vsftpd
[root@localhost ftp]# yum remove vsftpd
Failed to set locale, defaulting to C
Loading "installonlyn" plugin
Loading "rhnplugin" plugin
This system is not registered with RHN.
RHN support will be disabled.
Setting up Remove Process
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package vsftpd.i386 0:2.0.5-10.el5 set to be erased
--> Running transaction check
Dependencies Resolved
=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Removing:
vsftpd                  i386       2.0.5-10.el5     installed         283 k
Transaction Summary
=============================================================================
Install      0 Package(s)         
Update       0 Package(s)         
Remove       1 Package(s)         
Is this ok [y/N]: y
Downloading Packages:
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Removing  : vsftpd                       ######################### [1/1]
Removed: vsftpd.i386 0:2.0.5-10.el5
Complete!
[root@localhost ftp]#

阅读(1823) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~