Chinaunix首页 | 论坛 | 博客
  • 博客访问: 228275
  • 博文数量: 30
  • 博客积分: 1617
  • 博客等级: 上尉
  • 技术积分: 317
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-02 10:32
文章分类

全部博文(30)

文章存档

2019年(1)

2016年(1)

2014年(1)

2012年(3)

2011年(4)

2010年(8)

2009年(5)

2008年(7)

我的朋友

分类: LINUX

2010-04-14 10:52:01

用安装 DVD 建立本地 yum 源

既然 yum 已经很好的解决了 RPM 包的依赖问题,本文要解决的就是速度问题。本地光驱的访问速度甚至快过 100M 局域网,而且在最近一些发行版安装盘中,已经预置好 repo 信息,并存放在名为 repodata 的目录中。可以说安装盘本身就是一个现成的 yum 源。在 RHEL5 中,预置了多个 repo,分别存放在 /Server/repodata,/Cluster/repodata 等目录中;在 Fedora12 中,存放在 /repodata 中。在 RHEL4 等一些旧发行版中,没有预置 repo 信息。在这种情况下,需要手工建立 repo 信息供 yum 使用。关于手工建立 repo 的信息,请参考下一节“利用安装 CD 建立本地 yum 源中”关于 createrepo 部分的示例。

首先,把光盘放入光驱,挂载光盘。

 # mount /dev/hdc /media/cdrom
 mount: block device /dev/hdc is write-protected, mounting read-only
 


如果在本地有安装盘镜像,也通过 loop 方式挂载到相应目录。

 # mount -o loop rhel-server-5.4-i386-dvd.iso /media/cdrom
 


然后,编辑 yum 源配置文件,添加一个本地 yum 源。这里是一张 RHEL5u4 的 DVD 安装盘,它的 repo 对应 /Server。

 # cat > /etc/yum.repos.d/dvd.repo < [dvd]
 name=install dvd
 baseurl=file:///media/cdrom/Server
 enabled=1
 gpgcheck=0
 END
 


对于 Fedora,系统安装后有默认远程 yum 源存在,建议在补装 RPM 包之前通过在 *.repo 文件中设置 "enabled=0" 临时禁用这些远程 yum 源。这样会迫使 yum 只使用本地光盘作为安装源,从来避免因外部下载带来时间的浪费。关于这部分的操作,请参考 doris_install_gnome_on_fc12.txt 中的相关部分。


--------------------------------------------------------------------------------

用安装 CD 建立本地 yum 源

对于 RHEL4 或者其它相对旧的发行版,或者仅有安装 CD 的情况下,还可以通过类似的方式补装 RPM 包吗?答案是肯定的,不过需要一个多余的步骤,即手工创建 repo 数据。

下面的示例,通过把 RHEL4u6 的 5CD 中的 RPMS 混合到一个目录中,然后用 createrepo 命令建立 repo 数据。

首先混装 CD:

 [root@localhost root]# mkdir -p /mnt/dvd
 # insert CD1
 [root@localhost root]# mount /dev/hdc /media/cdrom/
 [root@localhost root]# cp -prf /media/cdrom/Server /mnt/dvd/RPMS
 [root@localhost root]# umount /media/cdrom

 # insert CD2
 ...
 # insert CD3
 ...
 # insert CD4
 ...

 # insert CD5
 [root@localhost root]# mount /dev/hdc /media/cdrom/
 [root@localhost root]# cp -prf /media/cdrom/Server /mnt/dvd/RPMS
 [root@localhost root]# umount /media/cdrom

 # remove unused files
 [root@localhost root]# find /mnt/dvd/RPMS -name TRANS.TBL -exec rm -f {} \;
 


然后通过 createrepo 命令创建 yum 源数据。这正是“空间换时间”的预处理过程,视 RPM 数据的多少,大约需要几分钟。"-d" 参数表示在生成 xml 索引的同时生成 sqlite 格式的索引。完成过后,这两种索引文件均以压缩格式存放于 repodata 目录中,供 yum 查询所用。

 [root@localhost root]# cd /mnt/dvd

 [root@localhost dvd]# createrepo -d .
   1/2399 - RPMS/plymouth-theme-charge-0.8.0-0.2009.29.09.18.fc12.i686.rpm
   2/2399 - RPMS/aspell-0.60.6-7.fc12.i686.rpm
   3/2399 - RPMS/xml-common-0.6.3-30.fc12.noarch.rpm                       

 ......                            

 2397/2399 - RPMS/mythes-en-3.0-5.fc12.noarch.rpm
 2398/2399 - RPMS/hunspell-mi-0.20080630-3.fc12.noarch.rpm
 2399/2399 - RPMS/hicolor-icon-theme-0.11-1.fc12.noarch.rpm
 Saving Primary metadata
 Saving file lists metadata
 Saving other metadata
 Generating sqlite DBs
 Sqlite DBs complete

 [root@localhost dvd]# ls -l repodata/
 total 10004
 -rw-r--r--. 1 root root 2974902 2009-12-06 09:48 filelists.sqlite.bz2
 -rw-r--r--. 1 root root 2618445 2009-12-06 09:48 filelists.xml.gz
 -rw-r--r--. 1 root root  912087 2009-12-06 09:48 other.sqlite.bz2
 -rw-r--r--. 1 root root  951651 2009-12-06 09:48 other.xml.gz
 -rw-r--r--. 1 root root 1809806 2009-12-06 09:48 primary.sqlite.bz2
 -rw-r--r--. 1 root root  958302 2009-12-06 09:48 primary.xml.gz
 -rw-r--r--. 1 root root    2726 2009-12-06 09:48 repomd.xml
 


最后,编辑 yum 源配置文件,添加一个本地 yum 源。注意对应的目录,这次是 /mnt/dvd,因为 repodata 是在此路径下创建的。

 [root@localhost dvd]# cat > /etc/yum.repos.d/dvd.repo < [dvd]
 name=install dvd
 baseurl=file:///mnt/dvd
 enabled=1
 gpgcheck=0
 END
 


对于 RHEL4 一类不带 repodata 的安装 DVD,去掉混装 RPM 的一步,直接用 createrepo 命令建立源数据即可。


--------------------------------------------------------------------------------

补装单个软件包

完成本地源配置过后,接下来就可以用 yum 进行 RPM 包的补装了。首先,查看刚刚配置好的 yum 源。

 # yum list
 Loaded plugins: rhnplugin, security
 This system is not registered with RHN.
 RHN support will be disabled.
 dvd                                                      | 1.3 kB     00:00
 dvd/primary                                              | 732 kB     00:00
 dvd: [##############################################################] 2292/2292/

 Installed Packages
 Deployment_Guide-en-US.noarch              5.2-11                      installed
 GConf2.i386                                2.14.0-9.el5                installed
 ImageMagick.i386                           6.2.8.0-4.el5_1.1           installed
 ......

 Available Packages
 Deployment_Guide-as-IN.noarch              5.2-11                      dvd
 Deployment_Guide-bn-IN.noarch              5.2-11                      dvd
 Deployment_Guide-de-DE.noarch              5.2-11                      dvd
 ......
 zlib-devel.i386                            1.2.3-3                     dvd
 zsh.i386                                   4.2.6-3.el5                 dvd
 zsh-html.i386                              4.2.6-3.el5                 dvd
 


然后,通过熟知的 yum install 来补装软件包。从输出信息可以看到,yum 会帮我们处理好 RPM 包的依赖关系。同时由于包都在本地,下载的时间几乎可以忽略。很快 gcc 将安装到系统中。

 # yum install gcc
 Loaded plugins: rhnplugin, security
 This system is not registered with RHN.
 RHN support will be disabled.
 Setting up Install Process
 Resolving Dependencies
 --> Running transaction check
 ---> Package gcc.i386 0:4.1.2-46.el5 set to be updated
 --> Processing Dependency: libgomp >= 4.1.2-46.el5 for package: gcc
 --> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc
 ...
 --> Finished Dependency Resolution

 Dependencies Resolved

 ================================================================================
 Package                Arch         Version                  Repository   Size
 ================================================================================
 Installing:
 gcc                    i386         4.1.2-46.el5             dvd         5.2 M
 Installing for dependencies:
 glibc-devel            i386         2.5-42                   dvd         2.0 M
 ...

 Transaction Summary
 ================================================================================
 Install      5 Package(s)
 Update       0 Package(s)
 Remove       0 Package(s)

 Total download size: 8.8 M
 Is this ok [y/N]: y
 Downloading Packages:
 --------------------------------------------------------------------------------
 Total                                           1.2 GB/s | 8.8 MB     00:00
 Running rpm_check_debug
 Running Transaction Test
 Finished Transaction Test
 Transaction Test Succeeded
 Running Transaction
  Installing     : kernel-headers                                           1/5
  ...
  Installing     : gcc                                                      5/5

 Installed:
  gcc.i386 0:4.1.2-46.el5

 Dependency Installed:
  glibc-devel.i386 0:2.5-42                   glibc-headers.i386 0:2.5-42
  kernel-headers.i386 0:2.6.18-164.el5        libgomp.i386 0:4.4.0-6.el5

 Complete!
 


--------------------------------------------------------------------------------

补装分组软件包

分组安装在需要补装如桌面系统,开发工具的时候,显得犹为方便快捷。

首先,查看 yum 源中的分组列表。

 [root@localhost root]# yum grouplist
 Loaded plugins: rhnplugin, security
 This system is not registered with RHN.
 RHN support will be disabled.
 Setting up Group Process
 dvd/group          
    | 1.0 MB     00:00
 Installed Groups:
   Administration Tools
   Editors
   GNOME Desktop Environment
   ...

 Available Groups:
   Authoring and Publishing
   DNS Name Server
   Development Libraries
   ...

 Done
 


然后,通过 yum groupinstall 来补装软件包。yum 会自动解析出分组所包含的 RPM 软件包,并处理好它们的依赖关系。同样,mysql-server 很快被安装到系统中。

 [root@localhost root] # yum groupinstall "MySQL Database"
 Loaded plugins: rhnplugin, security
 This system is not registered with RHN.
 RHN support will be disabled.
 Setting up Group Process
 Resolving Dependencies
 ...
 --> Finished Dependency Resolution

 Dependencies Resolved

 ================================================================================
 Package                    Arch       Version                  Repository Size
 ================================================================================
 Installing:
 MySQL-python               i386       1.2.1-1                  dvd        82 k
 libdbi-dbd-mysql           i386       0.8.1a-1.2.2             dvd        17 k
 ...
 Installing for dependencies:
 libdbi                     i386       0.8.1-2.1                dvd        35 k
 libdbi-drivers             i386       0.8.1a-1.2.2             dvd        14 k
 ...

 Transaction Summary
 ============================================
 Install     12 Package(s)
 Update       0 Package(s)
 Remove       0 Package(s)

 Total download size: 17 M
 Is this ok [y/N]: y
 Downloading Packages:
 ---------------------------------------------------------------------------
 Total                                           1.3 GB/s |  17 MB     00:00
 Running rpm_check_debug
 Running Transaction Test
 Finished Transaction Test
 Transaction Test Succeeded
 Running Transaction
  Installing     : perl-DBI                                                1/12
  Installing     : mysql                                                   2/12
  ...
  Installing     : libdbi-dbd-mysql                                       12/12

 Installed:
  MySQL-python.i386 0:1.2.1-1
  libdbi-dbd-mysql.i386 0:0.8.1a-1.2.2
  ...

 Dependency Installed:
  libdbi.i386 0:0.8.1-2.1              libdbi-drivers.i386 0:0.8.1a-1.2.2
  ...

 Complete!
 

阅读(1365) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~