LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2886|回复: 5

关于好使好用之URPMI程序(使用MDV朋友必看)

 关闭 [复制链接]
发表于 2006-3-12 02:55:59 | 显示全部楼层 |阅读模式
原名:打破Debian神话之二:丰富的urpm软件仓库。作者是fundawang。为了避免争议,特修改标题重新发布

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

本人再次声明,这一系列文章之所以起名叫作“打破Debian神话”,无意引起Debian和Mandrakelinux孰优孰劣的讨论。我只是一个Mandrakelinux的老用户,想要澄清一些事情,也希望那些Debianer的眼界放得开一些。
 楼主| 发表于 2006-3-12 02:57:39 | 显示全部楼层

1. 最为关键的网址

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

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

使用道具 举报

 楼主| 发表于 2006-3-12 02:59:13 | 显示全部楼层

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

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

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

介质源的格式一般为:
  1. <名称> <URL> with <hdlist/综合文件的相对路径>
复制代码
我来举个例子可能会比较容易懂一点:
  1. main http://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/10.1/i586/media/main with media_info/synthesis.hdlist.cz
复制代码
上面这句话代表了这样的一个介质源,它的名字叫做main,所有的RPM包都放在指定的目录中,而使用的综合文件是http://gd...../media/main/media_info/synthesis.hdlist.cz。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-12 03:00:09 | 显示全部楼层

3. Mandrakelinux 镜像服务器的结构

Mandrakelinux 镜像服务器一般是分成devel和official两个目录。devel中存放了开发中版本,包括cooker和community,而official中存放了正式版本。现在以official/10.1为例,介绍一下每个目录的作用。
  1. devel/
  2. official/
  3.   10.0/
  4.   10.1/
  5.     SRPM/
  6.     amd64/
  7.     i586/
  8. [color=red]      media/
  9.         main/
  10.           media_info/
  11.         contrib/
  12.           media_info/
  13.         j_package/
  14.           media_info/[/color]
  15.   updates/
  16.     10.0/
  17. [color=red]    10.1/
  18.       media_info/[/color]
复制代码
大家请注意看红色的目录。可以知道,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包,你用不着自己编译。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-12 03:01:33 | 显示全部楼层

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一般没什么用,所以每次都是把这个选项勾上的。

第三步的时候,你会得到一个类似这样的命令:
  1. urpmi.addmedia main http://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/10.1/i586/media/main with media_info/synthesis.hdlist.cz
复制代码
以root身份执行这条命令,你会看到系统在一步一步地添加main这个介质。

介质添加完成以后呢?我们来试一下吧:
  1. urpmi zhcon
复制代码
如何?zhcon是不是马上就安装上了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-12 03:02:44 | 显示全部楼层

5. 更为复杂的应用

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

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

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

此外,你也可以将cooker添加为介质。cooker是一个开发中版本,每天更新极快。如果你决意使用cooker,只需将下面两条命令添加到crontab里(前提是你必须已经添加了cooker介质源):
  1. urpmi.update -a
  2. urpmi --auto --auto-select
复制代码
第一条命令是更新所有的介质源,第二条命令是更新系统中现有的所有rpm软件包。这样你就可以随时使用到最新版本的软件包。不过,既然是开发中版本,没人能保证它的稳定性。
回复 支持 反对

使用道具 举报

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

本版积分规则

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