RHEL5中实现各种服务的准备条件:

(一)、制作YUM本地源:

YUM简介:

YUM是Yellow dog Updater Modified的简称,yum是软件的仓库,它可以是http或ftp站点,也可以是本地软件池,但必须包含rpm的header,

header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务

YUM有以下特点:

1、可以同时配置多个资源库(Repository) 
2、简洁的配置文件(/etc/yum.conf)
3、自动解决增加或删除rpm包时遇到的依赖性问题使用方便
4、YUM分为服务器端和客户端

服务器端:

方法一:使用光盘作为YUM数据库

mount  /dev/cdrom /media
rpm -ivh /media/Server/vsftpd…….rpm
umount /media
mount /dev/cdrom /var/ftp/pub
service vsftpd start

要求每次使用YUM服务器时,临时挂接光盘

mount  /dev/cdrom  /var/ftp/pub

方法二:使用光盘镜像作为YUM数据库

mount  /dev/cdrom /media
rpm -ivh /media/Server/vsftpd…….rpm
cp /dev/cdrom /opt/rhel5.iso
umount /media
mount -o loop /opt/rhel5.iso /var/ftp/pub

service vsftpd start

方法三:将光盘软件包复制到硬盘,重新构建YUM索引库

1>把光盘中的内容全部拷到/var/ftp/pub/中

mount  /dev/cdrom  /media
rpm -ivh /media/Server/vsftpd…….rpm
cp –rf /media/* /var/ftp/pub

2>然后启动vsftpd服务就可以了service vsftpd start

客户端配置:

修改配置文件

vi /etc/yum.repos.d/rhel-debuginfo.repo
[rhel-debuginfo]
name=Red Hat Enterprise Linux $releasever- $basearch - Debug
baseurl=file:///var/ftp/pub/Server
enabled=1
gpgcheck=

1rpm包管理命令:YUM

借助于YUM软件仓库,可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,而无需管理员逐个、手工地去安装每一个rpm包,使管理员在维度护在量linux服务器时更加轻松自如。特别是在拥有大量linux主机的本地网络中,构建一台源服务器可以大大缓解软件安装、升级等对于internet的依赖。

要成功使用YUM机制来更新系统和软件,需要有一个包含各种rpm安装文件的软件仓库,提供软件库的服务器也称为“源”服务器。在客户机中只要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件了。

YUM软件仓库即可以作为本地YUM源,即为本地主机提供软件源服务;也可以措助FTP或HTTP协议来进行发布,这样可以面向网络中的所有客户机提供软件源服务。为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中需要提供仓库数据库(repodata),其中收集了目录下所有rpm包的头部信息。

在RHEL6系统的安装光盘中,已针对软件目录Packages/建好了repodata数据,因此只要简单地将整个光盘中的内容或将光盘全部内容复制到硬盘通过HTTP或FTP进行发布,就可以作为软件仓库了。

A):本地YUM:(光盘源)

以下是rhel_6.0-i386-DVD的目录结构:

HighAvailability  高可用相关软件包,如rhcs等相关套件
Server 常规软件包,如mysql,httpd,开发工具,系统管理工具等
LoadBalancer 负载均衡相关软件包,如lvs,pirihan
ResilientStorage
Packages 真正存放所有软件包的目录
p_w_picpaths rhel安装进程所需要的引导和驱动镜像文件

isolinux 镜像文件引导时所需要的文件

用yum来安装所需要的软件包,先来搭建yum光盘源:

先将RHEL6的光盘挂载到某一目录下,如挂载到/mnt

mount  /dev/cdrom  /mnt

在/etc/yum.repos.d目录下创建一个以.repo结尾的文件:

vi  /etc/yum.repos.d/server.repo

Yum命令格式:

yum <options> <command><package...>

参数说明:

options: 常用的有:
-y : 如果在工作过程中如要使用者响应,这个参数可以直接回答yes
command:
list : 列出在yum server 上面有的RPM套件;若执行yum list installed则表示只列出系统中已安装的软件包,yum list available则表示只列出软件仓库中可用(尚未安装)的软件包,yum list update则表示列出可以升级版本的软件包。
install: 安装某个套件
update : 升级某个套件,如果update后面没有接套件名称,即更新目前主机所有已安装的套件.
info : 列出某个套件的详细信息,相当于rpm -qi package内容
clean : 将已下载到本机的packages或headers移除
remove : 移除已经安装在系统中的某个套件
yum update 全部更新
yum update package 更新指定程序包package
yum check-update 检查可更新的程序
yum info <package> 显示安装包信息
yum list 显示所有已经安装和可以安装的程序包
yum list <package> 显示指定程序包安装情况
yum search <keyword>查找软件包,
Yum search allhttpd
yum clean headers 清除header
yum clean packages 清除下载的rpm包
yum clean all 清除header与rpm包
yumgrouplist ,列出所有组
yum groupinstall 安装某个软件组如:yum groupinstallVirtualization安装虚拟化

问题解决:

1、如果首次安装软件包之后,再次安装别的软件包的时候,很可能会发现报错了,错误信息如下:Error: Cannot retrieve repository metadata (repomd.xml) for repository:
InstallMedia. Please verify its path and try again

其实,rhel6在首次读取改软件仓库之后,会把原本光盘根目录下,也就是一同被你拷贝到软件仓库目录的media.repo复制一份到/etc/yum.repos.d/,而该文件也就是导致本地yum源失效的罪魁祸首。

解决方法:
删除软件仓库中的media.repo

rm -f /share/rhel/media.repo


2
、如果安装软件包出现public key for …….rpm isnot install

解决方法:导入完整性验证的公钥

mount /dev/sr0 /mnt
rpm –-import /mnt/RPM-GPG-KEY-redhat-release

本地YUM(硬盘源)

在本地创建一个存放YUM源的目录,如mkdir  /yum

将RHEL6光盘中的所有内容拷贝到/yum中

mount /dev/cdrom /media
cp -rf /media/* /yum

在/etc/yum.repos.d目录下创建一个以.repo结尾的文件:

清理YUM缓存

yum clean all

验证本地YUM安装包

B):网络YUM(通过FTP或HTTP协议方式实现网络YUM安装RPM包)

在Linux主机中使用YUM客户端工具在线升级、安装软件时,由于受到网络连接速度、网络带宽的限制,往往给用户安装带来不必要的麻烦。但是如果在局域网中构建一个基于本地的YUM源服务器,则可以大大解决用户安装软件速度较慢的问题

通过FTP方式:(方式1:硬盘源)

实现步骤:

YUM服务器端配置:

将RHEL6光盘中的所有内容复制到本地硬盘相关目录下,如/var/ftp/rhel6

推荐步骤:

安装vsftpd服务软件包

mkdir/var/ftp/rhel6
mount /dev/cdrom/media
cp /media/*/var/ftp/rhel6

启动vsftpd服务:

service vsftpd start
chkconfig vsftpd on

在另一台客户端测试,首先创建repo文件指定YUM源位置

vi /etc/yum.repos.d/server.repo

[Server]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/rhel6/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[HighAvailability]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/rhel6/HighAvailability
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[LoadBalancer]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/rhel6/LoadBalancer
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[ResilientStorage]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/rhel6/ResilientStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

验证:

在客户端上安装RPM包,如samba

若YUM服务器开启了selinux功能,客户端通过YUM安装会失败

解决方法1:

关闭selinux功能setenforce 0

方法2:

setsebool allow_ftpd_full_access on

YUM服务器开启了防火墙,客户端通过YUM安装会失败

解决方法1:

关闭iptables

方法2:

在INPUT规则链上创建允许FTP访问的规则

通过FTP方式:(方式2:光盘源)

YUM服务器端配置:(IP:192.168.0.2)

先将RHEL6系统光盘挂载到/var/ftp/pub目录下

确保vsftpd服务启动

YUM客户端配置:(IP:192.168.0.1)

在/etc/yum.repos/目录下创建一个以.repo为后缀的文件,内容如下:

[Server]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/pub/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[HighAvailability]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/pub/HighAvailability
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[LoadBalancer]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/pub/LoadBalancer
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[ResilientStorage]
name=RedHat Enterprise Linux base
baseurl=ftp://192.168.0.2/pub/ResilientStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

在客户端上测试

2、通过HTTPD方式:与ftp方式类似

对于用户搜集的非RHEL6光盘的更多其他软件包(必须包括存在依赖关系的所有安装文件)除了应准备相应的目录以外,还需要手动创建repodata数据文件,这就要用到createrepo工具(RHEL6光盘中有)

以RHEL6安装光盘中Packages/目录的RPM包为例:

安装createrepo工具:

createrepoa主要用于收集目录中的rpm包文件的头信息,以创建repodata软件仓库数据(经gzip压缩的xml文件)。

mount  /dev/cdrom /mnt  //挂载光盘
rpm–ivh /mnt/Packages/createrepo-0.9.8-4.el6.noarch.rpm

注意:安装createrepo包时要依赖以下两个包:deltarpm和python-deltarpm,不能忽略这两个包

安装FTP服务器:

rpm  -ivh /mnt/Packages/vsftpd-2……..(按TAB键自动补齐)

配置软件仓库目录:

可参考安装光盘的Server目录

mkdir/var/ftp/pub/Packages
mkdir/var/ftp/pub/repodata

从光盘把所有的RPM包复制到/var/ftp/pub/Packages目录下(要确保硬盘有足够的磁盘空间)

cp  - a /mnt/Packages/* /var/ftp/pub/Packages/

创建软件仓库信息文件:

cd/var/ftp/pub/
createrepo --database ./
ls repodata/
filelists.sqlite.bz2 other.sqlite.bz2 primary.sqlite.bz2 repomd.xml
filelists.xml.gz other.xml.gz primary.xml.gz

可以看到已经创建好了相应的软件仓库信息文件

在客户端上创建扩展名为.repo的文件,内容参考上面的有产设置。