鸟哥的 Linux ADSL 私房菜


简易 APT/YUM  服务器设定
最近更新日期:2004/06/23
 
用不惯 Tarball 安装套件却又担心 RPM 的属性相依问题吗?如果有一种套件管理工具可以克服 RPM 属性相依的方法该有多好!有没有这种工具?呵呵!有的,那就是 APT 与 YUM 这两个服务器了。APT (Advanced Package Tool) 是由 debian 这个 distribution 所发展的一个套件管理工具,其目的在克服 RPM 套件的属性相依问题,让使用者可以透过 APT 的分析直接安装/升级/删除相关联的套件喔。另一个很好用的就是 YUM (Yellow dog Updater, Modified) 这个咚咚,他是由 Duke University 所发起的计划,目的则与 APT 相似,都是在克服 RPM 的属性相依问题,方便使用者进行套件的安装、升级等等工作。由于 APT/YUM 这一类的服务器在『系统升级/管理』上面的功能发挥的很好,所以目前很多的 distributions 都把这两个服务器作为预设的服务喔。在这个章节当中,我们要介绍如何在您的 Linux 服务器上面建置一个 ATP 或 YUM 服务器,并且提供更新的 RPM 套件给 Client 端来使用!
 
前言
  :甚么是 APT/YUM 呢?他们如何运作
  :是否需要架设 APT/YUM 服务器
  :架设之前,您所需要启用的服务
APT 服务器
  :APT 服务器利用的机制
  :安装 APT 软件
  :APT 服务器的套件结构
  :APT 服务器设定 ( 以 HTTP 提供服务为例 )
  :Client 端的设定
YUM 服务器
  :YUM 服务器利用的机制
  :安装 yum 软件
  :yum 服务器的套件结构
  :yum 服务器设定
特殊案例
  :建立自己的更新套件
  :如何取得网络上的更新组件
主机的规划技巧与建议
参考资源

前言:

图一、APT/YUM 服务器的架构。

APT 服务器:
YUM 服务器
谈完了 APT 服务器之后,接下来我们就来谈一谈目前被 Red Hat 及 Fedora 列为预设的 RPM 套件安装/升级机制的 yum 这个服务器啦。
 

YUM 服务器利用的机制
    与 APT 类似的, yum 并没有开发新的网络传输机制,同样仅是利用原本主机就提供的 WWW 或者是 FTP 服务,来让 server/client 进行档案的传输。所以在您 yum 服务器上的 RPM 档案同样的需要放置在 WWW 或 FTP 服务可以存取的所在目录才行。这里鸟哥同样以 /var/www/html 这个 WWW 的目录作为说明。
     
    一般来说,我们需要的 RPM 档案就是原本光盘所提供的套件,以及后来厂商提供的升级套件,这两种 RPM 档案我分别将他放置在底下所示的目录内:
     
    表二、APT 主机相关 RPM 档案放置的目录示意表
    /var/www/html/yum/fedora/core1
                  |--base
                  |  `--headers
                  `--update
                    `--headers

    /var/www/html/yum/mandarke/10.0
                  |--base
                  |  `--headers
                  `--update
                    `--headers

     
    如同上表二所示,每一个版本的 Linux 内仅有两个目录,其中 base 是原版光盘的 RPM 档案,至于 update 则是升级的 RPM 档案。比较有趣的地方在于『经过 yum 分析 RPM 档案后的纪录数据是放置在该目录下的 headers 目录内。』举例来说,我们的 mandrake 10.0 升级用的 RPM 档案是放置在 /var/www/html/yum/mandrake/10.0/update 下,则在该目录下的 RPM 被分析后,每一个 RPM 档案的纪录文件则放置在 /var/www/html/yum/mandrake/10.0/update/headers 目录下喔。至于整个 yum 的机制为:
     
    1. 先将所有来自 Linux 原版光盘的 RPM 档案复制到 /full/path/base 档案中;
    2. 再将来自原 Linux 版本公司释出的 RPM 修补套件由 Internet 下载到 /full/path/update 当中;
    3. 利用 yum 的功能去分析每个目录下的 RPM 档案;
    4. 在 Client 端上面,每次进行 RPM 套件的升级/安装功能时, yum 会自动的读取 headers 内的纪录文件,并自动分析 RPM 套件的属性相依问题。
     
    与 APT 相比, yum 少了一个 Client 端同步化的步骤了,所以,可以避免使用者不小心遗忘了资料同步化而导致无法取得最新 RPM 纪录的问题喔。

安装 yum 软件
yum 在 Red Hat 及 Fedora 是标准配备,所以您无须伤脑筋。但如果您是其它的 distributions 而想要利用这个好用的 yum 功能,那么可以到底下的网站搜寻适合您的 yum 版本: 找到后,直接安装即可。

yum 服务器的套件结构
鸟哥觉得, yum 服务器的套件结构要比 apt 简单一些些,基本上只有底下几个咚咚: yum 相关的咚咚就只有这样,是否真的很简单啊?  ^_^

yum 服务器设定
yum 服务器的设定真是简单!最重要的是 WWW/FTP 的设定必须要正确才行。整个步骤是这样的:
 
1. 先建立所需要的目录:
[root@test root]# mkdir /var/www/html/yum/fedora/core1/base
[root@test root]# mkdir /var/www/html/yum/fedora/core1/update
 
2. 复制原版光盘的内容:
# 利用 mount 与 cp umount 等功能,将原本光盘的内容整个复制到
# /var/www/html/yum/fedora/core1/base 当中。
 
3. 利用 mirrordir 下载升级套件。鸟哥这里建议使用中山大学的 FTP 网站:
[root@test root]# mirrordir -v \
> http://linux.cdpa.nsysu.edu.tw/Linux/Fedora/linux/core/updates/1/i386/ \
> /var/www/html/yum/fedora/core1/update
 
4. 进行 RPM 套件分析:
[root@test root]# yum-arch /var/www/html/yum/fedora/core1/base
[root@test root]# yum-arch /var/www/html/yum/fedora/core1/update
 
5. 为 client 建立 yum.conf 内容:
[root@test root]# vi /etc/yum.conf
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=fedora-release
tolerant=1
exactarch=1

[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=http://127.0.0.1/yum/fedora/core1/base

[update]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://127.0.0.1/yum/fedora/core1/update
 
6. 开始自我升级:
[root@test root]# yum -y update

 
没错!别怀疑!整个 yum 服务器的架设就是这么简单啊!

特殊案例

建立自己的更新套件
如果您曾经自己修改一些 SRPM 的档案,并且重新打包成为 RPM 套件,然后发行给自己的 Linux 机器来安装,此外,您也可能取得一些计划所释出的 RPM 档案,例如 opnewebmail 所释出的 RPM 套件,这些 RPM 档案您又想放置在自己的服务器上面,以方便自己未来升级与查询之用,那么应该怎么放置呢?最简单的方法就是将这些档案放置在 /var/www/html/yum/fedora/core1/update 里面,不过可能会有问题,例如如果您使用 mirrordir 进行数据的映像时,那么您放置的 RPM 档案将会被删除喔!
 
事实上,我们可以自己设定好额外的升级目录啊!举例来说,鸟哥自己所制作出来的 RPM 档案都是放置在:
/var/www/html/yum/fedora/core1/myself
当然,该目录是自己建立的,然后将自己新增的 RPM 档案通通给他复制进去该目录下,之后,就是制作 header 档案啦:
yum-arch /var/www/html/yum/fedora/core1/myself
最后只要在 /etc/yum.conf 里面新增一个目录:
[myself]
name=My personal RPM files
baseurl=http://127.0.0.1/yum/fedora/core1/myself
当然啦,要利用您的 RPM 档案的 client ,他的 /etc/yum.conf 就需要加入上面的设定,(注意:127.0.0.1 是在自己的机器上面跑的缘故,您必须要填写正确的 yum server 的主机名称或 IP 才行。)如此一来,您的 RPM 档案就可以被利用啦!

如何取得网络上的更新组件
上面提到的服务器几乎都是以 FTP 的方式在 internet 上面取得最新的 RPM 套件档案。那如果您的内部网域本身并不提供 FTP 对外联机时,该如何是好?鸟哥曾经遇过一个特别的状况,在该网域内仅提供 port 80 的对外联机,除此之外,一切都是关闭的!而我们使用的 mirrordir 及 ncftp 都是以 ftp 来对外联机,这该如何是好?
 
好在天无绝人之路啊!记得鸟哥在前面 网络升级套件 那个章节里面提到的 zzgetrpm.sh 档案吗?您只要下载该档案,然后填写正确的 URL ,就可以透过 port 80 下载网络上最新的更新套件了!而后在内部网域当中,您当然就可以透过各方式来进行 yum/apt 的升级噜!^_^

主机的规划技巧与建议
那么架设一部 APT/YUM 主机需要注意哪些事项呢?因为您的 APT 主机还需要运行 WWW ,所以您可能需要独立出一个 partition 以进行虚拟主机的设定,或者是在 /var/www/html 这个预设的 WWW 主页的硬盘空间要足够!反正 APT 主机需要注意的地方最主要还是在于硬盘的空间了!此外, APT 主机最好可以放置在对外频宽较高的网段内,因为还需要对 Internet 取得 update 的 RPM 档案嘛!
 
而如果您的 APT 主机仅作为 APT 的 update 之用时,而 WWW 仅是附属的功能,那么您在安置 RPM 的所在目录最好额外的限制使用者的浏览网段,避免被外部的人(来自 Internet)作为联机升级的主要主机,那可能会占据掉您的连外频宽吶!所以,可能的话,使用虚拟主机,并且加以设定浏览的属性,例如使用 iptables 设定防火墙,或以 httpd.conf 里面的 ACCEPT/DENY 功能来抵挡,也是一个不错的想法喔!至于 WWW 主机的相关设定请参考前面的章节。

参考资源:
简易 APT/YUM 服务器设定

2003/08/27:首次完成
2004/06/23:首次加入 yum 服务器的说明!并有实做的例子喔!

2003/08/27 以来统计人数


Designed by VBird during 2001-2004.  Aerosol Lab.