赵高 2007-11-11 09:25
yum相关资料汇集
一,yum介绍
原文联接:[url]http://hi.baidu.com/toih1000/blog/item/6f26d41ffa938409314e15c4.html[/url]
什么是 yum? yum 是 yellowdog updater modified 的缩写。yellowdog 是一个 Linux 的distribution,RH 将这种升级技术利用到自己的 distribution 形成了现在的 yum,感觉上 yum 和 apt的原理类似,但是 apt 是编译代码,执行效率远高于使用 python 写成的 yum。这是 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 作为镜像,这里部探讨如何建立一个 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 [url]http://download.fedora.redhat.com/pub/fedora[/url]\
/linux/core/5/i386/os/Fedora/RPMS/fedora-release-5-5.\
noarch.rpm
此后就是用 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=http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el3/en/i386/dries
这个一般看见就明白了,恕不赘述。
一些其他的工具
在 yum-utils 里面还有一些有用的工具,如 package-cleanup 用于清除本地安装的 rpm,还有维护repository 的一些工具,如repo-graph,repo-rss,repoclosure,repomanage,repoquery,reposync,repotrack,yum-builddep。
赵高 2007-11-11 09:27
二,yum使用
一. yum是什么
yum = Yellow dog Updater, Modified
主要功能是更方便的添加/删除/更新RPM包.
它能自动解决包的倚赖性问题.
它能便于管理大量系统的更新问题
注:为什么要使用yum而不用apt,最简单的原因,Fedora自带
二. yum特点
*可以同时配置多个资源库(Repository)
*简洁的配置文件(/etc/yum.conf)
*自动解决增加或删除rpm包时遇到的倚赖性问题
*使用方便
*保持与RPM数据库的一致性
三. yum安装
Fedora自带
#rpm -ivh yum-2.0.4-2.noarch.rpm
四. yum配置
注:修改和增加配置文件中的资源库,加快下载速度和拥有更多可更新的rpm包
将/etc/yum.conf的内容全部替换为
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=fedora-release
tolerant=1
exactarch=1
[fedora-us-1]
name=Fedora Core 1 -- Fedora US mirror
baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/os
[fedora-us-1-updates]
name=Fedora Core 1 updates -- Fedora US mirror
baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/updates
[fedora-us-1-stable]
name=Fedora Linux (stable) for Fedora Core 1 -- Fedora US mirror
baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/stable
[freshrpms]
name=Fedora Linux $releasever - $basearch - freshrpms
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms
五. yum应用
注:当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长.
检查有哪些可更新的rpm包
#yum check-update
安装rpm包,使xmms可以播放mp3
#yum install xmms-mp3
安装mplayer,同时自动安装相关的软件
#yum install mplayer
删除licq包,同时删除与该包有倚赖性的包
#yum remove licq
注:同时会提示删除licq-gnome,licq-qt,licq-text,非常方便
系统更新(更新所有可以升级的rpm包,包括kernel)
#yum -y update
每天定期执行系统更新
#chkconfig yum on
#service yum start
六. yum指令详解
*rpm包的更新
检查可更新的rpm包
#yum check-update
更新所有的rpm包
#yum update
更新指定的rpm包,如更新kernel和kernel source
#yum update kernel kernel-source
大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级
#yum upgrade
*rpm包的安装和删除
安装rpm包,如xmms-mp3
#yum install xmms-mp3
删除rpm包,包括与该包有倚赖性的包
#yum remove licq
注:同时会提示删除licq-gnome,licq-qt,licq-text
*yum暂存(/var/cache/yum/)的相关参数
清除暂存中rpm包文件
#yum clean packages
清除暂存中rpm头文件
#yum clean headers
清除暂存中旧的rpm头文件
#yum clean oldheaders
清除暂存中旧的rpm头文件和包文件
#yum clean 或#yum clean all
注:相当于yum clean packages + yum clean oldheaders
*rpm包列表
列出资源库中所有可以安装或更新的rpm包
#yum list
列出资源库中特定的可以安装或更新以及已经安装的rpm包
#yum list mozilla
#yum list mozilla*
注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包
列出资源库中所有可以更新的rpm包
#yum list updates
列出已经安装的所有的rpm包
#yum list installed
列出已经安装的但是不包含在资源库中的rpm包
#yum list extras
注:通过其它网站下载安装的rpm包
*rpm包信息显示(info参数同list)
列出资源库中所有可以安装或更新的rpm包的信息
#yum info
列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息
#yum info mozilla
#yum info mozilla*
注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包的信息
列出资源库中所有可以更新的rpm包的信息
#yum info updates
列出已经安装的所有的rpm包的信息
#yum info installed
列出已经安装的但是不包含在资源库中的rpm包的信息
#yum info extras
注:通过其它网站下载安装的rpm包的信息
*搜索rpm包
搜索匹配特定字符的rpm包
#yum search mozilla
注:在rpm包名,包描述等中搜索
搜索有包含特定文件名的rpm包
#yum provides realplay
七. 安全的更新freshrpms.net的rpm包
安装freshrpms.net的GPG key
#rpm --import http://freshrpms.net/packages/RPM-GPG-KEY.txt
编辑/etc/yum.conf,增加以下信息到尾部
[freshrpms]
name=Fedora Linux $releasever - $basearch - freshrpms
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms
gpgcheck=1
注:
检查GPG Key
# rpm -qa gpg-pubkey*
显示Key信息
#rpm -qi gpg-pubkey-e42d547b-3960bdf1
删除Key
#rpm -e gpg-pubkey-e42d547b-3960bdf1
赵高 2007-11-11 09:27
三,yum设置
添加和设置YUM源(参见[url=http://fedora.linuxsir.org/main/?q=node/132]http://fedora.linuxsir.org/main/?q=node/132[/url])
(1)添加livna源:
到[url=http://rpm.livna.org/%E4%B8%8B%E8%BD%BDlivna-release-7.rpm][color=#800080]http://rpm.livna.org/下载livna-release-7.rpm[/color][/url] ,并安装。
(2)添加freshrpms源(支持apt和yum):
到[url=http://www.freshrpms.net/][color=#800080]http://www.freshrpms.net[/color][/url] 页面点击click here下载freshrpms-release-1.1-1.fc.noarch.rmp,并安装。
另外还有:Aptrpms源(支持apt)、ulyssis源,安装方法见上面的地址。
(3)自动选择最快的源
由于yum中有的mirror速度是非常慢的,如果yum选择了这个mirror,这个时候yum就会非常慢,对此,可以下载fastestmirror插件,它会自动选择最快的mirror:
yum install fastestmirror
或:
yum install yum-fastestmirror -y
(4)使用图形界面的yum
如果觉得命令行的yum不方便,那么可以使用图形化的yumex,这个看起来更方便,因为可以自由地选择软件仓库:
yum install yumex
然后在系统工具中就可以看到yum extender了。
(5)yumExisting lock 错误的解决办法
附一句:如果系统启动的时候, yum 出现Existing lock /var/run/yum.pid: another copy is running as pid 3380. Aborting. 可以用下面的办法解决:
可以直接输入/etc/init.d/yum-updatesd stop
也可以 rm -f /var/run/yum.pid
主要原因就是yum在自动更新 只要关掉它就可以了
6、配置多媒体
(1)安装音乐播放器,由于不喜欢自带的,比较喜欢audacious类winamp的,因此安装audacious,在yumex中安装下面这些东西就可以了。
audacious
audacious-plugins
audacious-plugins-extra(让audacious能播放mp3、wma)
audacious-docklet(让audacious能最小化到托盘,安装后到中把这一项选上)
其它的plugin,根据需要选择安装,注意选择了audacious-plugins-extra,就不要选择nonfree-mp3、wma、aac了,否则会冲突。
(2)安装mplayer
不喜欢totem(比mplayer和kaffeien差太远),于是安装mplayer,
yum install mpalyer*
然后下载win32codecs包,以支持插入各类视频,解压后,放到/usr/lib/codecs,然后mkdir /usr/lib/win32,ln-s /usr/lib/codecs /usr/lib/win32
如果喜欢totem,建议删除totem,安装totem-xine。
7、启用自动登陆系统:
个人用户,懒得在启动的时候输入密码,可以设置自动登陆:系统->管理->登录屏幕->安全下可以设置自动登陆
8、浏览器使用:
喜欢opera的可以到[url=http://www.opera.com/]www.opera.com[/url] 下载operafor fedora的rpm包,安装后直接就可以用了,字体选择刚才安装的vera sans yuanti 和vera sans yuanti mono就会非常的漂亮了,不用象其它的那样再进行设置。
喜欢firefox的推荐下载swiftfox,到[url=http://getswiftfox.com/]http://getswiftfox.com/[/url]根据自己的cpu型号下载适合自己的swiftfox,解压后即可使用。我在解压后使用时出现SELinux权限问题,我的解决办法是:在系统->管理->SELinuxManagement中把SELinux改为允许(permission),不使用强制,这样就会只警告,不会中止它的运行。如果要严格地使用SELinux,需要使用chcon命令,这个我没使用过,不太熟悉,好象挺复杂的。
推荐安装的firefox扩展:downthemall(超快的下载工具)、tab mix plux(更方便多标签页浏览)、mediawrap(让你能收听嵌入在网页中的歌曲)
9、安装EVA QQ
目前pidgin登陆不了,而Eva则可以。而且Eva可以传送文件,感觉比其它客户端要好用一点。
到[url=ftp://ftp.fedora.cn/pub/fedora-cn/linux/6/i386/][color=#800080]ftp://ftp.fedora.cn/pub/fedora-cn/linux/6/i386/[/color][/url]下载eva-0.4.1-5.fc6.y2.i386.rpm
然后使用yum localinstall eva-0.4.1-5.fc6.y2.i386.rpm安装即可。
我是双击直接安装的,因为之前,我的系统上已经安装过kdelibs了,所以对于没有安装kdelibs的可以使用上面的命令试试。
10、安装beryl
(1)安装
首先安装显卡驱动,确认已经安装官方驱动:
$ glxinfo | grep rendering
direct rendering: Yes
然后开始安装
yum install beryl-gnome 或 yum install beryl-KDE
或者直接
yum install beryl(包括KDE与gnome)
(2)可能遇到的问题:
首先测试自身带的compiz desktop-effects效果是否正常。
在终端中输入desktop-effects,在出来的窗体中点击启用桌面效果,然后选择立方体,如果正常,则使用beryl一般也不会有什么问题。
如果出现如下提示:
compiz: No sync extension
打开/etc/X11/xorg.conf作如下修改:
在 "Device" section:加入
Option "AddARGBGLXVisuals" "True"
Option "DisableGLXRootClipping" "True"
在Module section:加入
Load "extmod"
如果是ATI则加入
Load "dri"
最后在Moudel section中加入:
SubSection "extmod"
Option "omit xfree86-dga"
EndSubSection
我在安装的时候出现了下面的问题,用以上方法成功解决(若出现启动beryl后。窗体没有边框,请确认使用了emerald,若仍不行,可以按上面的方法修改解决此问题)。
这是另一个beryl设置方案,大致都是差不多的,我没试过:
改/etc/X11/xorg.conf配置文件。
先备份原来的配置文件cp xorg.conf xorg.conf.bak, 然后在xorg.conf中Module段加入
SubSection "extmod"
Option "omit xfree86-dga"
EndSubSection
在Device段中加入
Option "DisableGLXRootClipping" "True"
Option "AddARGBGLXVisuals" "True"
Option "AllowGLXWithComposite" "True"
Option "RenderAccel" "True"
在配置文件的最后加入
Section "Extensions"
Option "Composite" "Enable"
EndSection
赵高 2007-11-11 09:38
四,使用Yum
使用Yum要做的第一件事情是更新其RPM header(文件头)列表。每一个RPM都有一个header,其中包含了完整的文件列表、软件包描述、实现的功能和提供的库、所需要的东西以及有什么冲突。Yum正是使用这些信息来决定如何升级和安装软件包的。
下面就来解决这个问题,输入以下命令:
yum check-update
运行这个命令,Yum将从yum.conf文件中指定的软件包服务器上下载当前的完整header文件列表。这个过程通常需要花费一定的时间,并且会有如下的一些显示信息:
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed
headers
getting /var/cache/yum/updates-released
/headers/pango-0-1.2.5-4.i386.hdr
pango-0-1.2.5-4.i386.hdr
100% |=======| 6.5 kB 00:02
......
当上述的步骤完成之后,说明Yum已经下载完了所有的header文件。如果想让现在系统上安装的所有软件都处于最新的状态,只需使用以下命令:
yum update
Yum会将现在系统上安装的所有软件和目前的软件仓库服务器上的软件进行比较,比较完成后,它会给出一个有关细节的信息列表让用户确认,列表的内容如下所示:
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Resolving dependencies
Dependencies resolved
I will do the following:
[install: kernel 2.4.22-1.2188.nptl.i686]
[update: pango 1.2.5-4.i386]
......
[update: XFree86-font-utils 4.3.0-55.i386]
Is this ok [y/N]:y
在本例中,Yum告诉我有76个可用更新(因为我进行测试的系统在安装完Fedora以后还从来没有更新过)。要安装所有这些更新,所要做的只是输入“y”即可。如果想更新的只是某一个特定的软件,可以将上述命令稍做修改:
yum update nmap
会看到如下所述的内容:
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
No Packages Available for Update
No actions to take
在上述的例子中,Yum告诉我,我的系统上的nmap已经是最新版本了,因此无需进行任何升级。下面我们来看一看如何安装一个机器上没有的软件包,比如要安装的是XChat IRC客户端,只需要输入以下命令即可:
yum install xchat
可能会看到如下信息:
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Resolving dependencies
Dependencies resolved
I will do the following:
[install: xchat 1:2.0.7-1.FC1.0.i386]
Is this ok [y/N]:
按“y”就可以进行软件的安装,会出现下列内容提示安装成功:
Getting xchat-2.0.7-1.FC1.0.i386.rpm
xchat-2.0.7-1.FC1.0.i386.
100% |==========| 1.1 MB 01:51
Running test transaction:
Test transaction complete, Success!
xchat 100 % done 1/1
Installed: xchat 1:2.0.7-1.FC1.0.i386
Transaction(s) Complete
虽然我的机器上的namp已经不需要再进行升级,不过我还想为其安装一个GUI界面,但又不知道需要什么软件包,这时只需要输入以下命令:
yum search nmap gui
可能看到的内容如下:
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Looking in available packages for a providing package
Available package: redhat-config-printer-gui.i386
0:0.6.79.5-1 from updates-released matches with
redhat-config-printer-gui
Available package: nmap.i386 2:3.48-1
from base matches with nmap
Available package: nmap-frontend.i386
2:3.48-1 from base matches with
Available package: nmap-frontend.i386
2:3.48-1 from base matches with nmap-frontend
......
2 results returned
如果现在需要一个并不是独立软件包的库文件,比如libc6.1-1.so.2,可以通过以下命令获取:
yum provides libc6.1-1.so.2
该命令会显示以下信息:
Gathering header information file(s)
from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Looking in available packages for a providing package
Available package: compat-libstdc++.i386
0:7.3-2.96.118 from base matches with
libstdc++-libc6.1-1.so.2
Available package: compat-libstdc++.i386
0:7.3-2.96.118 from base matches with
libstdc++-libc6.1-1.so.2(GCC.INTERNAL)
2 results returned
Looking in installed packages for a providing package
No packages found
Yum告知所查询的库位于compat-libstdc++的软件包中,并且现在还没有安装到本地系统上,所以只需要输入命令“yum install compat-libstdc++”即可完成该库的安装。如果要删除系统中的某软件,只需要输入以下命令:
yum remove nmap
该命令将会删除该软件包以及所有与之相关联的软件包。
在Yum升级或者安装软件时,它并不会自动清除磁盘缓冲区,所以要手动来完成这个过程。所幸的是这个过程非常简单,只需要输入以下命令即可:
yum clean all
该命令会删除所有缓冲区中的软件包以及所有不再需要的RPM header。如果要查看某一软件在本系统上的安装情况,可以使用以下命令:
yum info xchat
将会出现如下提示:
Gathering header information file(s)
from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Looking in Available Packages:
Looking in Installed Packages:
Name : xchat
Arch : i386
Version: 2.0.7
Release: 1.FC1.0
Size : 2.77 MB
Group : 应用程序/互联网
Repo : Locally Installed
Summary: GTK+ IRC (聊天) 客户。
Description:
X-Chat 是一个 X 窗口系统和 GTK+ 的 IRC 客户。
X-Chat 使用简便并包括一个好看的界面。