QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7261|回复: 18

什么叫最小化依赖关系?

[复制链接]
发表于 2005-6-12 12:35:25 | 显示全部楼层 |阅读模式
由于软件大部分都是在 FC 或 SUSE 或 MDK 这样的庞大系统里开发出来的,源代码的交叉引用比比皆是,这虽然充分利用的开源的优势,节省了时间,但这也正是开源的一大致命点,因为这造成了千丝万缕、绞缠不清、极其混乱复杂的依赖关系,甚至循环依赖,自己咬自己尾巴。这跟封闭源代码环境的 windows 下开发出来的软件不同,他们依赖的基本库就那么几个,并不是你想用什么就有什么,有很多产品可供挑选。即便遇到私有库,软件打包的时候已经自带了,这样就较少担心你的软件会在少得可怜的几个版本的 windows 上不能运行。

为了使系统结构化、层次化,便于拆卸、组装等 DIY,宁可损失一些不重要的功能,选材时所有软件应该尽量自包含,所有软件尽可能在简单环境下编译制作,尽可能不依赖其他软件,顶多依赖系统核心的基本库,这称为最小化的依赖关系。否则,你抽掉一根不起眼的“椽子”,却撼动了整幢房屋的根基,这是极不正常的。
发表于 2005-6-12 13:28:10 | 显示全部楼层
KDE,我想知道的是,为什么一个源码软件包要打包成好多rpm包?这样做有什么好?
什么主包啊,devel包啊,好像magic安装的时候可以选择不安开发工具似的。而且感觉很是没有必要,打成一个包又有什么不好?
回复

使用道具 举报

发表于 2005-6-12 13:39:12 | 显示全部楼层
打成两个包的好处是,当可以定制安装时,若用户不在机器上做开发工作,便可以不安装devel包。一个包便无从选择了。
回复

使用道具 举报

发表于 2005-6-12 14:56:50 | 显示全部楼层
我觉得所有的devel包都很小,根本不值得一提。。。
而且有些devel包在编译一些依赖的软件的时候还是要用的
并非做开发才会用到。
回复

使用道具 举报

 楼主| 发表于 2005-6-12 23:03:34 | 显示全部楼层
不要片面认为开发就是写程序,其实编译安装本身就是开发工作的最后一步。
回复

使用道具 举报

发表于 2005-6-13 08:02:55 | 显示全部楼层
那就更对啦
谁得linux系统会不从源码安装软件呢?
回复

使用道具 举报

 楼主| 发表于 2005-6-13 13:26:46 | 显示全部楼层
[quote:fd4a41fea3="wjping119"]那就更对啦
谁得linux系统会不从源码安装软件呢?[/quote]有,企业用户使用的服务器版本基本就不需要。
回复

使用道具 举报

发表于 2005-6-13 13:43:36 | 显示全部楼层
说了半天
magic还不能定制安装,能定制安装那天也说不准是哪一天。magic是针对个人桌面用户的,服务器版本也不知道会是在何年何月发布。安装与不安装devel包的在空间的占用方面区别不大,而且编译软件要用,当然应该安装,可是这样就没有必要做成好几个包,看上去乱七八糟。
更为重要的是,magic根本没有必要非要跟着老套的rpm模式走
回复

使用道具 举报

 楼主| 发表于 2005-6-13 20:57:30 | 显示全部楼层
这也是为了和其他发行版保持源代码级兼容。
回复

使用道具 举报

发表于 2005-6-13 21:12:36 | 显示全部楼层
只是编译成一个包罢了,这样就不兼容了?
回复

使用道具 举报

发表于 2005-6-14 11:52:09 | 显示全部楼层
fedora 以后的办法,除了像现在这样,将 devel 分开,将 stripped debuginfo 自动分开之外,还要将 static library 分开或者干脆禁用,还可能将 doc 分开打包。多分开几个软件包不是问题,只要能自动进行这个过程就好了。至于用户,用户手里有 yum 或者 apt,用户不在乎软件包分成了几片。一个软件包如果某些部分比其他部分升级更多,或者使用更少,那么分成两个包是好主意。不使用 devel 的人可以少占用一点空间哪
回复

使用道具 举报

发表于 2005-6-14 12:16:15 | 显示全部楼层
这样和Debian差不多了。
回复

使用道具 举报

 楼主| 发表于 2005-6-14 19:56:48 | 显示全部楼层
[quote:c291651a9d="wjping119"]只是编译成一个包罢了,这样就不兼容了?[/quote]
是的!fdr 很多软件的 srpm 编译时依赖系统里安装有特定的 devel 包,如果没有(rpm 数据库里没有这个记录),普通用户就不能直接拿 fdr 的 srpm 在 magic 上直接 rebuild,这就人为造成了一种源代码级的不兼容。
回复

使用道具 举报

发表于 2005-6-14 20:31:15 | 显示全部楼层
罪过罪过,我做包从来不分 devel ………
回复

使用道具 举报

发表于 2005-6-14 20:47:58 | 显示全部楼层
[quote:dda046f39b="KDE"][quote:dda046f39b="wjping119"]只是编译成一个包罢了,这样就不兼容了?[/quote]
是的!fdr 很多软件的 srpm 编译时依赖系统里安装有特定的 devel 包,如果没有(rpm 数据库里没有这个记录),普通用户就不能直接拿 fdr 的 srpm 在 magic 上直接 rebuild,这就人为造成了一种源代码级的不兼容。[/quote]哦 原来是这样

KDE 老大有没有看到有关 pkgconfig 的讨论?就是前段时间提到的,只让 pkgconfig 输出真正需要的库,这样就不会一个程序链接一大片了,依赖关系就可以少很多?
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-4-25 21:50 , Processed in 0.077988 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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