对于如何安装软件,目前有两种思想流派。第一种是说软件应该自给自足,不依赖于其它任何部件,这点在 Windows 和 Mac OS X 系统中很流行。这种方式简化了软件的管理:每个软件都有自己独立的“领域”,安装和卸载它们不会对操作系统产生影响。如果软件依赖一项不常见的类库,那么这个类库一定是包含在软件安装包之中的。
第二种流派,主要在类 Linux 的操作系统中盛行,即软件应该是由一个个独立的、小型的软件包组成的。类库被包含在软件包中,包与包之间可以有依赖关系。安装软件时需要查找和安装它所依赖的其他特定版本的软件包。这些依赖包通常是从一个包含所有软件包的中央仓库中获取的。这种理念也催生了 Linux 发行版中那些复杂的依赖管理工具,如 dpkg 和 RPM。它们会跟踪软件包的依赖关系,并防止两个软件使用了版本相冲突的第三方包。
SELECTCOUNT(*) FROM role_method WHERE role_method.role_id =@role_id AND method_id IN ( SELECT method_id FROMmethod JOIN controller USING (controller_id) WHERE controller.name =@controller AND method.name =@method )