找回密码
 注册
查看: 918|回复: 3

同cjacker 和大家探讨包管理的逻辑

[复制链接]
发表于 2003-8-10 21:38:17 | 显示全部楼层 |阅读模式
由于在现在和未来可能采用不同的软件包管理系统(现在是RPM将来可能是Gentoo的Portage),因此有必要在安装程序中使用一种于包管理独立的逻辑。当然此逻辑应该反映软件包关系的内在规律。我的设想是这样的:
第一步:从源始包文件中获得包之间的依赖性关系、包体积等必要的信息,将其转换为统一的、于包管理系统无关的 python 数据结构。并将此数据结构输出到一个 packages-infor.py 之中。所有不同的软件包管理系统在此处输入不同,但输出却使用相同的格式。因此不同的包管理系统需要不同的转换程序。这里假定 RpmPkgInfor.py 即为生成 packages-infor.py 的脚本。
第二步:根据 packages-infor.py 和 packages-arrange.py,确定软件包的顺序和分布。这里 packages-infor.py 来自第一步,packages-arrangement.py 来自第一步,而 packages-arrangement.py 则手工创建。packages-arrangement.py 只含有光盘容量限制(例如第一张光盘能用于软件包的空间不超过 550M,第二张光盘能用于软件包的空间不超过 630M,等等);那些包必须存放在第一张光盘、那些包必须存放在第一张或第二张光盘上;软件包的分组。 而输出为 packages-position.py。packages-positions.py 含有一个定义了包括包之间依赖性关系、包大小等信息的数据结构。所有包按依赖性关系的顺序排放,即某一个包只能依赖于它前面的包。这里假定 PkgArrange.py 为完成此转换的脚本。PkgArrange.py 是和包关系系统无关的。
第三步:MagicInstaller 获取 packages-positions.py,从中读取包的分组情况、依赖性关系等数据,供用户选择。

第一步的目的在于整理信息;第二步的目的是便于管理者对包进行控制,并生成便于 MagicInstaller 使用的输出;第三步则直接面向用户。

由于我对各种包管理系统的理解有限,因此把我的想法拿出来征求大家,尤其是 cjacker 的意见,看其中有没有逻辑上的错误。如果设计有错,最终发现出问题,就悔之晚矣。

多谢!
发表于 2003-8-11 06:16:56 | 显示全部楼层
考虑一下使用make工具?make里的任务也有逻辑关系~如果能自动生成Makefile就好了~
回复

使用道具 举报

发表于 2003-8-11 20:15:01 | 显示全部楼层
我对第三点提点建议,在面向用户这方面,我认为安装程式最好要把系统级的软件包单独列出来,并默认为全选,再加上对用户的提示,让他们不要擅动这里的配置,因为少了这其中一个,可能就有一些软件无法运行,windows安装的时候是不会让用户配置系统级组件的吧。然后再是一些如桌面应用,开发,服务器之类的应用分组。
回复

使用道具 举报

 楼主| 发表于 2003-8-11 21:40:48 | 显示全部楼层
[quote:10da519840="qianzheng82"]我对第三点提点建议,在面向用户这方面,我认为安装程式最好要把系统级的软件包单独列出来,并默认为全选,再加上对用户的提示,让他们不要擅动这里的配置,因为少了这其中一个,可能就有一些软件无法运行,windows安装的时候是不会让用户配置系统级组件的吧。然后再是一些如桌面应用,开发,服务器之类的应用分组。[/quote]

嗯,这个我想到了。在 package-arrangement.py 中允许指定锁定某些 package。被锁定的 package 以加锁形式显示。列出加锁包有助于帮助用户理解 linux 系统的组成。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2025-1-9 06:06 , Processed in 0.060210 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

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