Terry Tsang
yum 能够自动获得软件包所需的依赖, 作为一个 RH, CentOS 用户, 还是比较喜欢这个工具
下面介绍一些小技巧
1. 获得网络 CentOS 源
http://mirrors.163.com/centos/
具备多个镜像地址,个人喜欢 163 而已
参考下面图面,可以观察到具备多个目录
修改 /etc/yum.repos.d/rhel-source.repo 文件, 载入图片中对应目录则可, 参考下面,载入 os, updates 目录的方法, 其他目录自行添加修改红色关键字部分
[os]
name=os
baseurl=http://mirrors.163.com/centos/6.4/os/x86_64/
enabled=1
gpgcheck=0
[updates]
name=updates
baseurl=http://mirrors.163.com/centos/6.4/updates/x86_64/
enabled=1
gpgcheck=0
2. 使用 RPM安装的方法自动获得epel, rpmforge 的软件包源.
这两个也是常用的软件源
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
3. 本地源
某些服务器无法连接公网 80, 无法访问公网, 由于这样子的情况下, 只能够使用本地源
最简单的方法就是吧 ISO 里面的文件全部复制到一个目录, 如 /rpmsource
然后对这个目录进行 ftp, http 开放就可以了。 方法(略)
本地源方法, 参考而已
[Packages]
name=updates
baseurl=http://10.1.1.1/centos/6.4/Packages
enabled=1
gpgcheck=0
4. 只下载, 不安装
利用下面方法, 只从网络下载 RPM 及对应的依赖包, 而不进行安装(方便分发到其他服务器)
参考上述,获得 CentOS 源
yum install -y yum-plugin-downloadonly.noarch
当安装了 yum-plugin-downloadonly.noarch 软件后, 用下面方法就可以实现下载
yum install -y --downloadonly --downloaddir=/tmp/. elinks
yum reinstall -y --downloadonly --downloaddir=/tmp/. elinks
yum update -y --downloadonly --downloaddir=/tmp/. elinks
上述对应下面三种场景
没有安装过 elinks (install)
已经安装了最新版本 elinks (reinstall)
已经安装 elinks 但不是最新版本 (update)
5. 在安装其他 rpm 时候遇到依赖关系的解决方法.
参考下面场景
[root@mini189d opennebula-4.2.0-1]# rpm -ivh opennebula-server-4.2.0-1.x86_64.rpm
error: Failed dependencies:
libxmlrpc_client++.so.4()(64bit) is needed by opennebula-server-4.2.0-1.x86_64
当前需要安装软件 opennebula-server-4.2.0-1.x86_64.rpm 但缺失 libxmlrpc_client++.so.4()(64bit) 库文件
可以用过下面方法解决
yum install -y libxmlrpc_client++.so.4
yum install -y "libxmlrpc_client++.so.4()(64bit)"
上述场景, 分别安装的是 32 bit 或 64bit 的依赖包, 自行对应选择
6. yum update 自行更新时候忽略更新内核.
==============>
系统每天凌晨 3 点自动执行 yum update 任务
但升级内核后,会出现下面情况
一些编译软件需要内核模块才能够被调用, 而内核模块需要与当前版本内核编译后才能够使用, 假设内核升级后,之前软件模块是不可兼容的, 需重新编译后才能够再次被调用,甚至可能导致在启动过程中因为无法加载该模块而无法启用某种系统文件而无法正常启用电脑,需现场修复
利用 下面方法进行自动升级过程忽略 kernel 自动更新
yum --exclude=packgeName\* update
yum --exclude=packgeName1\* --exclude=packgeName2\* update
yum -x 'packageName*' update
yum -x 'packageName1*' -x 'packageName2*' update
例如
yum -y --exclude=kernel\* update
yum -y -x 'kernel*' update
假如你已经制作自动化脚本, 而不希望修改脚本条件下可参考下面做法
vim /etc/yum.conf
[main]
exclude=kernel*