分类: LINUX
2010-04-14 10:52:01
用安装 DVD 建立本地 yum 源
既然 yum 已经很好的解决了 RPM 包的依赖问题,本文要解决的就是速度问题。本地光驱的访问速度甚至快过 100M 局域网,而且在最近一些发行版安装盘中,已经预置好 repo 信息,并存放在名为 repodata 的目录中。可以说安装盘本身就是一个现成的 yum 源。在 RHEL5 中,预置了多个 repo,分别存放在
首先,把光盘放入光驱,挂载光盘。
# 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 对应
# cat > /etc/yum.repos.d/dvd.repo <
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 <
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!