From Fedora Project Wiki

< Zh‎ | Docs‎ | Drafts‎ | FAQ

如何使用 Yum 安装软件?

你可通过 yum 指令或 Yum 的图形程序安装软件。 例如你想安装 AbiWord,请在终端下执行

yum install abiword

请注意,你必须取得 root 权根来执行 yum install abiword


如何更新系統?

请在终端下执行

yum update

使用 Yum 安装 KDE

KDE 包含了很多软件包,最好使用 Yum 的图形程序来安装,以选择需要的内容。但是,如果需要在命令行安装,那么运行

yum groupinstall KDE

类似的,可以用这种方式安装其他成组的软件,如 GNOME 和 XFCE4 等等。查看全部分组的方式是

yum grouplist


找不到依赖关系怎么办

这里并不是要叙述 Yum 的工作原理,毕竟 Yum 理应自动地解决依赖关系,不需要了解底层的运作。而大家经常提到的“找不到依赖关系怎么办”,是在 Yum 报错之后,如何处理局面。

最简单的办法,是用 yum-skip-broken 插件绕过有问题的软件包,只更新可以顺利完成的那些。安装插件的办法是

yum install yum-skip-broken

安装全部插件的办法是

yum install yum-\*

然而通常不需要安装全部插件,因为插件本身也是软件,可能会有问题,造成 Yum 不稳定——这是题外话。

然而只使用 yum-skip-broken 不能解决全部问题。

我们更新软件包时,可以把我们的“愿望”分成两类:一类是必须要完成的,另一类则是可有可无的。yum-skip-broken 不会对我们的愿望做出任何判断。因此,如果更新必须完成,可能就需要手工干预了。另外,每个人对软件包的取舍都有自己的“权重”,是否可以牺牲(删除)一个软件包,使另一个软件包安装成功?Yum 和插件同样无法判断这些,当然需要手工干预了。

Yum 的特点是删除比安装容易,因为删除时看到的依赖关系问题一目了然,删除动作不会牵涉到新的软件包 (当然也有其他软件包管理工具,可以在删除的同时安装其他软件包,以交换的方式满足依赖关系,这是后话。) 根据上面的分析,手工干预的主要操作就是删除软件包。有时,如果软件包出现了打包问题,例如删除软件包时脚本出错,这时手工干预还包括 rpm 命令

yum remove XXXXX
rpm -e --noscripts XXXXX

如果问题不可以通过删除软件包解决,那么(这其实是依赖关系问题的另一类,也是比较直接的一类)只有等待上游发布所有依赖关系。有时,一个软件包可能来自多个仓库,例如 mplayer。若仓库A的 mplayer 版本比另一仓库B更新,却没有提供全部依赖关系,以至于无法安装,那么可以有两个解决方法:临时禁掉仓库A

yum --disablerepo=\* --disablerepo=A --enablerepo=B install mplayer

或者,指定安装仓库B中低版本的那一个

yum list mplayer
yum install mplayer-{版本号}

如果已经安装了仓库 A 中的某些依赖关系,那么需要在安装 mplayer 之前卸载掉。总之要使 mplayer 和依赖关系来自相同的仓库。

Yum 提速

安装插件,选择最快的镜像

yum install yum-fastestmirror

安装插件,使用 DeltaRPM 减小加载的内容

yum install yum-presto

安装 presto 插件之后,需要对仓库进行配置。只有少数仓库支持 DeltaRPM。

安装axelget插件,加快下载速度

axelget是wq1977朋友的作品,它是针对yum的一个提速插件,在安装axel这多线程下载应用程序之后,它能调用axel并将其整合进yum的下载工作中,使得下载速度得到极大幅度的提升。请参考:

http://www.linuxsir.org/bbs/showthread.php?t=290570 http://www.linuxsir.org/bbs/showthread.php?t=306063


最后,如果你有机会,请建立新的 fedora 镜像!只有镜像的数量和质量上去了,Yum 提速问题才会最终解决。