LinuxSir.cn,穿越时空的Linuxsir!

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

URPMI系统介绍

[复制链接]
发表于 2006-7-29 01:46:11 | 显示全部楼层 |阅读模式
本文基于打破Debian神话之二:丰富的urpm软件仓库。作者是fundawang。
鉴于一些朋友对URPMI系统的认识不够充分,我在这里重新写一下这个
 楼主| 发表于 2006-7-29 01:47:14 | 显示全部楼层

1. 最为关键的网址

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

这两个网站的内容是基本相同的。建议你将这两个网址加入书签以便日后使用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-29 01:51:57 | 显示全部楼层

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

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

在Mandriva中,介质源可以是多种形式,既可以来自本机的硬盘、光盘,也可以来自局域网的共享文件夹,当然也可以由互联网上的FTP或http服务器所提供。这里我们着重介绍从互联网上获得你所需要的软件包。

而介质源的索引,称为hdlist,hdlist分为一般的hdlist和synthesis hdlist,区别在于hdlist多出了每个软件包的ChangeLog以及文件清单,所以会大很多(通常是K和M的区别)。假如你使用的是综合文件作为索引,因为其中没有每个包的文件清单,urpmf libxxx.so.4是查不出来的。但是如果你已经将该软件安装,在系统中一样可以查出包里面的libxxx.so.4.

介质源的格式一般为:

<名称> <URL> with <hdlist的相对路径>

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

main http://gd.tuwien.ac.at/pub/linux ... 0.1/i586/media/main

上面这句话代表了这样的一个介质源,它的名字叫做main,所有的RPM包都放在指定的目录中,而使用的synthesis hdlist是
"http://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/10.1/i586/media/main/media_info/synthesis.hdlist.cz"
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-29 02:07:24 | 显示全部楼层

3. Mandrakelinux 镜像服务器的结构

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



devel/
official/
  10.0/
  10.1/
   SRPM/
   amd64/
   i586/
   media/
    main/
     media_info/
    contrib/
     media_info/
    j_package/
     media_info/
    updates/
     10.0/
     10.1/
      media_info/



Mandriva每个版本的软件仓库分别存放在main,contrib,j_package里边。而每个目录都有自己的media_info子目录,用来存放hdlist。

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

contrib里边会存放另外一些软件,比如abiword,这里边的软件很可能以后会被移动到main里边,从而成为光盘的一部分(比如前两天,bash3刚刚从contrib移到main里)。但这并不说明contrib里边的东西不稳定或者不完善。实际上,在打包者眼里,contrib和main只是两个不同的仓库。contrib里面的内容不是系统的首选软件.而main则一般会加入到安装光盘中去.

j_package里边是一些需要java才能运行的程序。

official/updates里边主要是一些安全更新和漏洞修补。这里需要强调一下,这个updates只是基于正式发行版本的安全更新,并不会有最新的软件版本.所以经常有朋友说怎么mandriva不出新版本的firefox啦,就在于你在这个源中找东西了

就目前而言,main、contrib、j_package每个目录的容量都超过3G。这意味着,你所听到或者看到的几乎所有软件,都可以在这三个目录中找到现成的rpm包,你用不着自己编译,这个也是mandriva的重大优点之一。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-29 02:19:00 | 显示全部楼层

4. 一个简单的例子

只有main里的东西才会被用来制作光盘的。显然,安装光盘根本装不下main里的所有东西。更不要说contrib.一个比较直观的例子就是星际译王的大部分字典都被砍掉了(当然,这里有版权方面的因素)。现在,我们来做个实验,把main里被砍掉的东西都找回来。

到1楼说的那个网址去,你会看到这个界面十分的容易使用。第一步就是选择系统的版本,例如你的是mandriva2007.就应该选择2007。architecture 是cpu类型,一般选I586.如果是AMD64的CPU则选X86_64,后面选urpmi(SMART个人认为有根本缺陷,而且本文主要叙述URPMI.所以这里不再叙述).第二步是选择所需要的软件仓库,这里我们只选择一个main就好了。在前进到第三步之前,请注意看一下第二步的最后一个选项,是一个复选框“***compress***”什么。这个选项是用来选择使用哪种索引文件:如果不勾上,使用的就是带有N长changelog的hdlist;如果勾上,使用的就是体积较小的综合文件。我反正觉得changelog一般没什么用,所以每次都是把这个选项勾上的。

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

urpmi.addmedia main http://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/10.1

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

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

urpmi zhcon

然后系统就开始下载并安装 zhcon 了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-29 02:24:47 | 显示全部楼层

5. 更为复杂的应用

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

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

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

urpmi.update -a

来更新全部介质源。

此外,你也可以将cooker添加为介质。cooker并不基于某一个发行版,而是该软件的最新版本.cooker的主要作用在于社区的开发者们检查新软件的问题.如果你决意使用cooker,只需将下面两条命令添加到crontab里(前提是你必须已经添加了cooker介质源):

urpmi.update -a
urpmi --auto --auto-select

第一条命令是更新所有的介质源,第二条命令是更新系统中现有的所有rpm软件包。这样你就可以随时使用到最新版本的软件包。不过,既然是开发中版本,没人能保证它的稳定性。根据大量的实践证明,COOKER很多软件都极不稳定.所以建议你更新前考虑清楚,并尽量减少包的安装量
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-29 02:28:47 | 显示全部楼层

6. 相关的注意事项

urpmi --auto --auto-select表面上是一个极为方便的更新手段.但实际应用中却极为危险.由于RPM系统的缺陷,URPMI会自动删除一些与更新包不匹配的旧包,而且是在新的包没有被装上的情况下,例如网络问题导致该包没有下载完成

所以建议大家不要用--auto参数,以避免你的系统崩溃
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-29 02:39:27 | 显示全部楼层

7. 关于MDE和SoS两个非官方的Mandriva仓库

谢谢mwmb2提起这两个仓库.很多时候这里经常用这两个仓库寻找新软件,事实上他们出的东西的确比较新而且比较系统化,例如有时KDE新版本刚出来就有最新的更新了

这两个仓库主要是这些朋友希望以自己的编译方法进行优化而建立的.相对于cooker比较稳定

如果你有兴趣了解更多MDE和SoS,下面是它们的网址。
MDE:http://www.mde.djura.org/index2006.0.html
SoS:http://www.seerofsouls.com/
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-29 02:42:55 | 显示全部楼层
~~~~~~~~~~~~全文结束~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-29 02:43:38 | 显示全部楼层
希望版主能够顶置本贴,以替换旧有内容
回复 支持 反对

使用道具 举报

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

本版积分规则

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