QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1092|回复: 8

打破Debian神话之--丰富的urpm软件仓库[转]

[复制链接]
发表于 2005-1-11 00:03:05 | 显示全部楼层 |阅读模式
经过 linuxsir 的Mandrake版的 fundawang 同意,转载《打破Debian神话之二:丰富的urpm软件仓库》

如果你打算转载请标明原作者。尊重别人的劳动果实谢谢



打破Debian神话之二:丰富的urpm软件仓库

本文是《打破Debian神话》系列文章的第二篇。第一篇“urpmi系列工具”可以在这里找到。

本人再次声明,这一系列文章之所以起名叫作“打破Debian神话”,无意引起Debian和Mandrakelinux孰优孰劣的讨论。我只是一个Mandrakelinux的老用户,想要澄清一些事情,也希望那些Debianer的眼界放得开一些。

1. 最为关键的网址

http://easyurpmi.zarb.org/
http://www.urpmi-addmedia.org/

这两个网站的内容是基本相同的。本文的所有练习可能都要通过这两个网站来完成。建议你将这两个网址加入书签以便收藏。

2. Mandrakelinux的软件仓库(介质源)简介

所谓介质源(media source),是指这样一个软件仓库,该软件仓库中存放了大量专为某个发行版所制作的软件包,并通过一定的索引形式对软件包进行管理。这样的介质源,在Debian和Redhat/Fedora Core中的含义是差不多的。

在Mandrakelinux中,介质源可以是多种形式,既可以来自本机的硬盘、光盘,也可以来自局域网的共享文件夹,当然也可以由互联网上的FTP或 http服务器所提供。这里我们着重介绍从互联网上获得你所需要的软件包。而介质源的索引,称为hdlist或者是综合文件。hdlist和综合文件两者的功能是一样的,只不过hdlist多出了每个软件包的ChangeLog,所以会大很多。

介质源的格式一般为:

[code:1]<名称> <URL> with <hdlist/综合文件的相对路径>[/code:1]

我来举个例子可能会比较容易懂一点:

[code:1]main http://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/10.1/i586/media/main with media_info/synthesis.hdlist.cz[/code:1]

上面这句话代表了这样的一个介质源,它的名字叫做main,所有的RPM包都放在指定的目录中,而使用的综合文件是http://gd...../media/main/media_info/synthesis.hdlist.cz。
 楼主| 发表于 2005-1-11 00:12:30 | 显示全部楼层
3. Mandrakelinux 镜像服务器的结构

Mandrakelinux 镜像服务器一般是分成devel和official两个目录。devel中存放了开发中版本,包括cooker和community,而official中存放了正式版本。现在以official/10.1为例,介绍一下每个目录的作用。



大家请注意看红色的目录。可以知道,Mandrakelinux每个版本的软件仓库分别存放在main,contrib,j_package里边。而每个目录都有自己的media_info子目录,用来存放hdlist和综合文件。

main就是我们在光盘的ISO中看到的那些东西。

contrib里边会存放另外一些软件,比如mozilla-firefox,abiword,php5等等,这里边的软件很可能以后会被移动到main 里边,从而成为光盘的一部分(比如前两天,bash3刚刚从contrib移到main里)。但这并不说明contrib里边的东西不稳定或者不完善。实际上,在打包者眼里,contrib和main只是两个不同的仓库。只有在制作光盘的时候,main和contrib才会分得比较清楚。

j_package里边是一些需要java才能运行的程序。也许以后lumaqq会被放到里边。

official/updates里边主要是一些安全更新和漏洞修补。

就目前而言,main、contrib、j_package每个目录的容量都超过3G。这意味着,你所听到或者看到的几乎所有软件,都可以在这三个目录中找到现成的rpm包,你用不着自己编译。

4. 一个简单的例子

现在我们来盘算一下,四张光盘的10.1 Official,大概有多少内容。第一张盘上有一大坨安装程序,第二张盘上有一小坨2.4内核,第四张盘上还有一个根本没法用的KDE 3.3。所以,这四张盘中,实际的rpm库容量,很可能不会超过2.4G。

而我前面已经说过了,只有main里的东西才会被用来制作光盘的。显然,这四张光盘根本装不下main里的所有东西。一个比较直观的例子就是zhcon、星际译王的字典都被砍掉了。现在,我们来做个实验,把main里被砍掉的东西都找回来。

到1楼说的那个网址去,你会看到这个界面十分的容易使用。第一步就是选择系统的版本,默认就是10.1 i586。第二步是选择所需要的软件仓库,这里我们只选择一个main就好了。在前进到第三步之前,请注意看一下第二步的最后一个选项,是一个复选框“***compress***”什么。这个选项是用来选择使用哪种索引文件:如果不勾上,使用的就是带有N长changelog的hdlist;如果勾上,使用的就是体积较小的综合文件。我反正觉得changelog一般没什么用,所以每次都是把这个选项勾上的。

第三步的时候,你会得到一个类似这样的命令:

[code:1]urpmi.addmedia main http://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/10.1/i586/media/main with media_info/synthesis.hdlist.cz[/code:1]

以root身份执行这条命令,你会看到系统在一步一步地添加main这个介质。

介质添加完成以后呢?我们来试一下吧:

[code:1]urpmi zhcon[/code:1]

如何?zhcon是不是马上就安装上了。

5. 更为复杂的应用

在上面的例子中,我们使用urpmi.addmedia命令添加了main这个介质源。当然,我们也可以把contrib、j_package都添加进来。这完全取决于个人喜好了。

你可能还听说过plf这种介质源。这里边基本上都是包含潜在版权或法律问题的软件。比如DVDrip这样的功能。如果你觉得没关系的话,也可以一并加进来。

urpm的会把hdlist或综合文件下载到本地硬盘上再进行分析。这样会导致一个问题:如果本地的综合文件比较旧,而远程的RPM介质源比较新,就会造成RPM文件搜索失败。要更新本地的hdlist或综合文件,我们要使用的命令是 urpmi.update <介质源名称>。你也可以用 urpmi.update -a 来更新全部介质源。

此外,你也可以将cooker添加为介质。cooker是一个开发中版本,每天更新极快。如果你决意使用cooker,只需将下面两条命令添加到crontab里:

[code:1]urpmi.update -a
urpmi --auto --auto-select[/code:1]

第一条命令是更新所有的介质源,第二条命令是更新系统中现有的所有rpm软件包。这样你就可以随时使用到最新版本的软件包。不过,既然是开发中版本,没人能保证它的稳定性。




最后对fundawang表示感谢!!
回复

使用道具 举报

发表于 2005-1-11 05:43:12 | 显示全部楼层
好贴!
回复

使用道具 举报

发表于 2005-1-11 07:05:31 | 显示全部楼层
  
回复

使用道具 举报

发表于 2005-1-11 10:04:58 | 显示全部楼层
好东西。可惜就是国内没有好的urpmi 介质,目前好像只有中科大有。
回复

使用道具 举报

 楼主| 发表于 2005-1-11 11:51:03 | 显示全部楼层
听说Mandrake正在考虑在国内放几台服务器!   
回复

使用道具 举报

发表于 2005-1-11 14:16:19 | 显示全部楼层
不错,MDK如果在国内也有服务器就好了。
urpmi命令在那版开始有的?
回复

使用道具 举报

 楼主| 发表于 2005-1-11 14:55:16 | 显示全部楼层
具体年代不知道,不过8.0的时候是有的!

家里有一张4.1,不过是老爸用来作修复用的,我还从来没有装过!
回复

使用道具 举报

发表于 2005-1-11 15:22:34 | 显示全部楼层
我用10.1才知道有此命令的,很强大。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-14 09:55 , Processed in 0.042562 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表