建站服务器
yum的配置一般有两种方式:
成都创新互联长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为古丈企业提供专业的成都网站建设、成都网站制作,古丈网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。一种是直接配置/etc目录下的yum.conf文件,
另外一种是在/etc/yum.repos.d目录下增加.repo文件。
一、yum的配置文件yum.conf详解
$cat/etc/yum.conf [main] cachedir=/var/cache/yum#yum下载的RPM包的缓存目录 keepcache=0#缓存是否保存,1保存,0不保存。 debuglevel=2#调试级别(0-10),默认为2(具体调试级别的应用,我也不了解)。 logfile=/var/log/yum.log#yum的日志文件所在的位置 exactarch=1#在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。 obsoletes=1#这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。 gpgcheck=1#是否检查GPG(GNUPrivateGuard),一种密钥方式签名。 plugins=1#是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。 installonly_limit=3#允许保留多少个内核包。 exclude=selinux*#屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。 #Thisisthedefault,ifyoumakethisbiggeryumwon'tseeifthemetadata#isnewerontheremoteandsoyou'll"gain"thebandwidthofnothavingto#downloadthenewmetadataand"pay"foritbyyumnothavingcorrect #information. #Itisesp.important,tohavecorrectmetadata,fordistributionslike #Fedorawhichdon'tkeepoldpackagesaround.Ifyoudon'tlikethischecking #interuptingyourcommandlineusage,it'smuchbettertohavesomething#manuallycheckthemetadataonceanhour(yum-updatesdwilldothis). #metadata_expire=90m #PUTYOURREPOSHEREorINseparatefilesnamedfile.repo #in/etc/yum.repos.d
二、*.repo文件详解
什么是repo文件?
repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!
我们以一份系统自带的repo文件做为实例来探讨(Fedora和redhat是一致的)(#号后面是我加的注释):
[fedora]#方括号里面的是软件源的名称,将被yum取得并识别name=Fedora$releasever-$basearch#这里也定义了软件仓库的名称,通常是为了方便阅读配置文件,一般没什么作用,$releasever变量定义了发行版本,通常是8,9,10等数字,$basearch变量定义了系统的架构,可以是i386、x86_64、ppc等值,这两个变量根据当前系统的版本架构不同而有不同的取值,这可以方便yum升级的时候选择适合当前系统的软件包,以下同……failovermethod=priority#failovermethod有两个值可以选择,priority是默认值,表示从列出的baseurl中顺序选择镜像服务器地址,roundrobin表示在列出的服务器中随机选择exclude=compiz**compiz*fusion-icon*#exclude这个选项是后来我自己加上去的,用来禁止这个软件仓库中的某些软件包的安装和更新,可以使用通配符,并以空格分隔,可以视情况需要自行添加#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/ #上面的一行baseurl第一个字符是'#'表示该行已经被注释,将不会被读取,这一行的意思是指定一个baseurl(源的镜像服务器地址) #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch#上面的这一行是指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,将$releasever和$basearch替换成自己对应的版本和架构,例如10和i386,在浏览器中打开,我们就能看到一长串镜可用的镜像服务器地址列表。 选择自己访问速度较快的镜像服务器地址复制并粘贴到repo文件中,我们就能获得较快的更新速度了,格式如下baseurl所示:baseurl=ftp://ftp.sfc.wide.ad.jp/pub/Linux/Fedora/releases/10/Everything/i386/oshttp://ftp.chg.ru/pub/Linux/fedora/linux/releases/10/Everything/i386/oshttp://ftp.yz.yamagata-u.ac.jp/pub/linux/fedora/linux/releases/10/Everything/i386/oshttp://mirror.nus.edu.sg/fedora/releases/10/Everything/i386/oshttp://mirror.yandex.ru/fedora/linux/releases/10/Everything/i386/oshttp://ftp.twaren.net/Linux/Fedora/linux/releases/10/Everything/i386/oshttp://ftp.itu.edu.tr/Mirror/Fedora/linux/releases/10/Everything/i386/osenabled=1#这个选项表示这个repo中定义的源是启用的,0为禁用gpgcheck=1#这个选项表示这个repo中下载的rpm将进行gpg的校验,已确定rpm包的来源是有效和安全的gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch#定义用于校验的gpg密钥,就是数位签章的公钥档所在位置!##以下的软件仓库基本上用不到,选项含义同上[fedora-debuginfo] name=Fedora$releasever-$basearch-Debug failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/debug/mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-debug-$releasever&arch=$basearchenabled=0gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch[fedora-source] name=Fedora$releasever-Source failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/source/SRPMS/mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-source-$releasever&arch=$basearchenabled=0gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
下面看看rhel5.8自带的repo文件
[root@10gasmyum.repos.d]#catrhel-debuginfo.repo [rhel-debuginfo] name=RedHatEnterpriseLinux$releasever-$basearch-Debug baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/$basearch/Debuginfo/enabled=0gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
我自己设置的本地yum库
[root@10gasmyum.repos.d]#catdvd.repo [dvd] name=installdvd baseurl=file:///mnt/Serverenabled=1gpgcheck=0
非常简单。
可以使用下面的命令查看所有的容器配置(Repository)是否生效
yumrepolistall
使用all参数列出了所有的容器配置,如果不加all只列出可用的Repository,这个可用性取决于repo配置文件中的enabled参数,如果为0,则不可用,为1则可用
例如:
[root@10gasmyum.repos.d]#yumrepolistall Loadedplugins:katello,product-id,security,subscription-manager Updatingcertificate-basedrepositories. Unabletoreadconsumeridentity repoidreponamestatus dvdinstalldvdenabled:3,285rhel-debuginfoRedHatEnterpriseLinux5Server-x86_64-Debugdisabledrepolist:3,285
显示出dvd这个repository是可用的,有3285个文件,rhel-debuginfo这个库是不可用的。
如果修改rhel-debuginfo中enabled为1然后再次查看
[root@10gasmyum.repos.d]#yumrepolistall Loadedplugins:katello,product-id,security,subscription-manager Updatingcertificate-basedrepositories. Unabletoreadconsumeridentityftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/x86_64/Debuginfo/repodata/repomd.xml:[Errno4]IOError:Tryingothermirror. repoidreponamestatus dvdinstalldvdenabled:3,285rhel-debuginfoRedHatEnterpriseLinux5Server-x86_64-Debugenabled:0repolist:3,285
配置好以后,执行yum update,报错:Error performing checksum
[root@web1 yum.repos.d]# yum update
Loaded plugins: katello, product-id,security, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
base| 3.7 kB 00:00
base/primary_db |4.4 MB 00:02
http://mirrors.ustc.edu.cn/centos/6.4/os/x86_64/repodata/1e584feac3f3fb76ad4b6fb7e1bc8d44fa124814e9d186dc913ded3c63a216b3-primary.sqlite.bz2: [Errno -3] Error performingchecksum
Trying other mirror.
base/primary_db| 4.4 MB 00:02
http://mirrors.ustc.edu.cn/centos/6.4/os/x86_64/repodata/1e584feac3f3fb76ad4b6fb7e1bc8d44fa124814e9d186dc913ded3c63a216b3-primary.sqlite.bz2: [Errno -3] Error performing checksum
Trying other mirror.
Error: failure:repodata/1e584feac3f3fb76ad4b6fb7e1bc8d44fa124814e9d186dc913ded3c63a216b3-primary.sqlite.bz2from base: [Errno 256] No more mirrors to try.
google了一下,说是在rhel6中repomd.xml文件使用sha256作为hash 算法 ,在rhel5中默认使用的是sha作为hash算法。
但我是在redhat 5.8 上使用5.9的yum。 也出现了这种错误。
# yum clean all 清空yum的注册记录.