软件系统依赖关系分析
依赖关系最简单的一个理解就是 Windows 上你玩游戏结果提示 directx 版本过低无法运行。以及常见的运行某个程序之后提示 mfc71.dll 未找到。还有就是用个软件结果安装说明上让你先去安装 .net 。
Linux 的依赖关系因为他的整个系统都是由各个不同的开发组开发的软件集合而成(这点不知道的话是不可能理解Linux依赖关系的起因的),每个软件都有不同的功能提供和调用。而 Linux 因为他的软件包组成可以很灵活,某些软件包不是必须的,有些软件功能可以有很多软件进行提供。所以有些软件互相之间的功能需求就需要“依赖关系”这种描述来进行说明控制。
Windows 也有这个问题,只不过因为整个系统是微软统一提供的,所以他可以进行版本接口公职,以及方便的通知附带多个版本的函数库和程序进行功能提供,以及强行的提供一些用户其实根本不需要的软件来提供Windows程序的“依赖关系”。依赖关系很明显的就是一些超高精简的 XP 去掉的内容会导致很多软件不能运行。可以说,简单的去掉 IE ,就可以让很多 Windows 程序失去依赖关系而不能运行。
Linux 的软件包管理器就是有解决这个问题而设计的原因。软件包管理器通过分析软件包里面的描述信息和系统当前安装情况的数据库来确定依赖关系是否满足和如何满足依赖关系(也就是需要再安装哪些软件才行)。