cooltonygao 发表于 2005-10-22 13:44:12

用yum管理软件

http://fedora.redhat.com/docs/yum/
感觉这篇文章真的不错,于是在学习的过程中作了一些笔记,供大家学习指正

――――――――――――――――――――――――――――――――
通过yum来管理软件

Copyright at 2005 Stuart Ellis

――――――――――――――――――――――――――――――――
通过读manual来学习yum

man yum
man yum.conf

其他可用资源
Project web site

    http://linux.duke.edu/projects/yum/
Users mailing list

    https://lists.dulug.duke.edu/mailman/listinfo/yum/
Development mailing list

    https://lists.dulug.duke.edu/pipermail/yum-devel/
――――――――――――――――――――――――――――――――――――
rpm包通常包括一个数字签名来验证你的源,软件管理程序通过GPG public key来验证这些数字签名。yum和rpm程序共享一个keying,所有公共经过验证的key都保存在这个keying里。

关于仓库
软件仓库实际是一些准备好的目录或包括软件包和软件目录的网站。像yum这样的软件管理程序会通过这个仓库自动查找定位和获得软件包(我习惯把它们叫做源)。这种方法能把你从手动的安装和升级中解脱出来,

想看看你的源里有什么可用的软件包?
su -c 'yum grouplist'
―――――――――――――――――――――――――――――――――――――
关于依赖关系
在Fedora中有一些库是被很多应用软件共同使用的。当一个应用软件需要一个特殊的库,这样包含这个库的包就被列到依赖关系之中了。在安装一个软件之前,Fedora会确保满足这种依赖关系,对于rpm包来说这种依赖信息储存在rpm文件里。

yum在安装软件时也会想办法来满足这种依赖关系。它会自动安装依赖关系中需要的包,如果一个新程序的所需要的包和现在的系统冲突,那么yum会被中断。
――――――――――――――――――――――――――――――――――――

理解包的名字
以下是tsclient包的全名
tsclient-0.132-6.i386.rpm

rpm包的名字通常由三部分组成:
*包名称:tsclient
*版本号:tsclient-0.132-6
*适合的硬件结构:tsclient.i386

yum排列包的名称用这种格式:包名称.硬件结构.源
硬件结构一般都是机器结构最低的需要

i386        适用于当前的Intel兼容机
noarch        兼容所有计算机结构
ppc        适用于PowerPC,如Apple的Power Macintosh
x86_64        适用于64位Intel兼容处理器,如Opterons

也正是yum的名称的与rpm不同,所以yum会寻找和使用适合你机器体系的最新的包,当然你也可以指定要安装软件包的名称来获得更精确的软件。
在使用yum时,你可以使用以下格式来表示一个包:
*名称
*名称.结构
*名称-版本
*名称-版本-release
*名称-版本-release.结构
*epoch:名称-版本-release.结构

――――――――――――――――――――――――――――――――

Fedora Core中的软件管理工具

yum是一个完整的软件管理工具,但是FC中还有其他的补充yum的工具。
比如你桌面上的提醒标志就是up2date的一部分,通过它可以轻松的升级系统。

还可以用Desktop->System Settings->Add/Remove Applications来运行system-config-packages,这个管理用具只能通过你的安装光盘来安装软件,而不是通过网络。

rpm命令本身也有很多参数可以用来管理软件,但是你必须手动解决依赖关系,所以推荐大家使用yum
――――――――――――――――――――――――――――――――
使用yum管理软件

通过四种方法管理软件
*从源安装新的软件包
*安装单独的软件包
*升级现有的软件
*删除用不着的软件

每次的yum操作,yum都会从配置仓库下载最新的包信息,yum会花一点时间来为每个包下载源的索引和头文件。yum会分析这些数据来得出一个解决办法来争取你的同意,这个解决办法可能包括安装、升级、移除额外的包,而这一切都是为了解决依赖关系。

yum处理报告的格式
=============================================================================
Package               Arch       Version          Repository      Size
=============================================================================
Installing:
tsclient                i386       0.132-6          base            247 k
Installing for dependencies:
rdesktop                i386       1.4.0-2          base            107 k

Transaction Summary
=============================================================================
Install      2 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 355 k
Is this ok :

用y来接受这个改变,或者用N或直接回车来拒绝。

但是要注意除非你特别写明,不然yum使用的都是最新的包。
如果一个包在你的系统中是没有的,yum程序会引入源的public key。

下面是一个public key引入的例子
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
public key not available for tsclient-0.132-6.i386.rpm
Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
Importing GPG key 0x4F2A6FD2 "Fedora Project <[email protected]>"
Is this ok :

下载的包保存在缓存中
yum会把下载的包保存在/var/cache/yum中,从这里移除它们不会影响已经安装的软件。

――――――――――――――――――――――――――――――――――――
使用yum安装新软件
安装tsclient
su -c 'yum install tsclient'

安装多包MySQL Database
su -c 'yum groupinstall "MySQL Database"'

新的服务需要激活
当你安装一个服务,Fedora不会自动激活它,需要你配置一个新的服务,用Desktop->System Settings->Server Settings->Services,或者使用chkconfig或者service
――――――――――――――――――――――――――――――――――――
用yum升级软件
升级tsclient软件到最新的版本
su -c 'yum update tsclient'

有的新的软件需要重载,它的版本才会更新,比如正在运行着的软件和服务,还有内核需要从启。

升级多包
su -c 'yum groupupdate "MySQL Database"'

使用yum删除软件
当要删除一个软件,yum会自动检查你所要删除的软件和它带来的依赖关系,然后予以删除。
su -c 'yum remove tsclient'
删除多包
su -c 'yum groupremove "MySQL Database"'

数据和配置文件的移除
当删除一个软件,有时候会删除配置文件,但是当配置文件没有被删除掉,当你再次安装这个软件,仍然会使用这个配置文件。
――――――――――――――――――――――――――――
用yum搜索包
用名字来搜索特定的包,使用list函数。搜索tsclient
su -c 'yum list tsclient'
还可以更精确的查找
su -c 'yum list tsclient-0.132'

高级搜索

如果你不知道包的名字,可以使用search和provides选项,search这个选项会放宽查找的范围,比如查找名字、描述、摘要和维护人员姓名等等。比如查找和PalmPilots相关的
su -c 'yum search PalmPilot'

provides会检查所有软件包来找到某个文件和函数,这个设置需要下载更多的索引文件
寻找包含libneon文件的包
su -c 'yum provides libneon'

yum命令里面的通配符也是? *,不过要在前面加上\
su -c 'yum list tsc\*'

――――――――――――――――――――――――――――――――
使用yum升级系统
要升级整个系统用
su -c 'yum update'

Fedora提供了自动升级系统的脚本,这个脚本可以每天升级整个系统。可以下面方法激活这个脚本
su -c '/sbin/chkconfig --level 345 yum on; /sbin/service yum start'

这个并没有什么特别的,只是可以授权给etc/rc.d/init.d/yum这个控制脚本,这个控制脚本会激活脚本/etc/cron.daily/yum.cron ,这个脚本是cron服务每天下午4点自动运行yum来升级整个系统。

――――――――――――――――――――――――――――
使用其他的源
Fedora自带Fedora Project的源,还包括Fedora Extras的源

以前版本的Fedora Core
你必须手动配置Fedora3来得到Fedora Extras的源,详细情况请看http://fedora.redhat.com/projects/extras/. 至于FC1和FC2的用户可以看http://www.fedora.us/

还有一些软件分散在其他的源中,比如http://www.jpackage.org/存放着大量的Java软件包。

增加额外的源的配置文件通常在/etc/yum.repos.d/ 目录下。在源的网站可以找到他们的定义文件,定义文件扩展名是.repo
然后把这文件复制到/etc/yum.repos.d/ 目录下就好了
su -c 'cp example.repo /etc/yum.repos.d/'

每个源的配置文件都应该有一个gpgkey设置。这个设置用来定位源的用来校验包的提供情况public key的位置。当你第一次用这源,这个public key将被自动引入

FC4的up2date会自动使用yum,而FC3和以前的版本必须手动来修改/etc/sysconfig/rhn/sources file 来使up2date使用yum

手动设置源
也可以手动来加入一个public key给你的rpm keyring,要引入GPG-PUB-KEY.asc文件
su -c 'rpm --import GPG-PUB-KEY.asc'

当然你也可以直接从网站上引入public key
su -c 'rpm --import http://www.therepository.com/GPG-PUB-KEY.asc'

为FC3引入Fedora Public Key
su -c 'rpm --import /usr/share/rhn/RPM-GPG-KEY-fedora'

――――――――――――――――――――――――――――――――――
维护yum

yum系统一般不需要日常的维护。当为了确保最佳的状态,可以废除或删掉你不再需要的配置文件和缓存文件。

废除和删除源
可以设置成enable=0来废除这个源,要彻底的删除它的话
1,删除/etc/yum.repos.d/ 目录下相应的文件
2,删除/var/cache/yum/ 目录下的缓存文件

通常yum会保留下载的包和数据以备以后使用,但是也可以清理掉它们
su -c 'yum clean headers'

su -c 'yum clean packages'

――――――――――――――――――――――――――――――――――――――

手动的安装软件

当源里没有某个包,也可以下载后通过localinstall函数手动安装

su -c 'yum localinstall tsclient-0.132-4.i386.rpm'

当然当遇到依赖关系也会提醒你。

――――――――――――――――――――――――――――――――――――――

通过代理服务器来使用yum

实际上你也可以通过标准的网页代理服务器来登陆源。如果你通过代理服务器上网可以在/etc/yum.conf 设定一下。这个设定必须包括代理服务器的完整的URL,包括TCP端口。如果你的代理需要用户名和口令通过 proxy_username 和 proxy_password 来设置。

比如
# 代理服务器:端口
proxy=http://mycache.mydomain.com:3128
# 账号
proxy_username=yum-user
proxy_password=qwerty

对/etc/yum.conf 的修改是全局性的,要是想要针对某个用户的设置,需要把下面的配置内容加入用户的shell profile中,当然,bash shell的profile是~/.bash_profile
# 为这个用户设置代理情况
http_proxy="http://mycache.mydomain.com:3128"
export http_proxy

如果需要用户名和口令则需要把它们加入URL中
# 用户名是yum-user,口令是qwerty
http_proxy="http://yum-user:[email protected]:3128"
export http_proxy

指环王 发表于 2005-10-22 15:56:22

:mrgreen: 味道好级了
页: [1]
查看完整版本: 用yum管理软件