1.2 Kali与Debian的关系

Kali Linux分发版是基于Debian测试版的。因此,Kali Linux中的大多数软件包直接来自于Debian的软件仓库。

虽然Kali Linux很大程度上依赖于Debian,但在某种意义上讲,我们也是完全独立自主的,我们有自己的基础架构,有自己的自由,可以做我们想做的任何修改。

1.2.1 软件包流程

在Debian方面来说,贡献都每天都在更新软件包,并把其上传至Debian非稳定分发版中。从这里,一旦大多数讨厌的BUG被解决掉,这些软件包就迁移到Debian 测试分发版上。这个迁移过程也保证了在Debian测试版中软件包之间的依赖是正常的。

Debian测试版的目的是让Kali Linux与其能保持相当的一致性,这样我们就能以Debian测试版作为基础。而要添加Kali专有的软件包到分发版中,我们遵循两个步骤:

首先,我们拿到Debian测试版并强制把Kali软件包(只位于kali-dev-only软件仓库中)并入其中,构建了kali-dev软件仓库。这个软件仓库将时不是中断:比如,我们的Kali专有软件包可能无法安装,直到他们基于更新的库重新编译完。在其它情况下,我们也可能对已有的分支进行更新,无论是再次变成可安装的,还是修复依赖于更新的分支软件版本的软件包的可安装性。在任何情况下,kali-dev都不是针对最终用户的。

kali-rolling是要求Kali Linux用户跟踪的分发版,它是基于kali-dev版本,kali-dev版本是以相同方式从Debian非稳定版构建出来的Debian测试版而构建的。只有软件包所有的依赖在目标分发版中都完备时,软件包才会进行迁移。

1.2.2 管理与Debian之间的差异

作为一个设计决策,我们试图尽可能地减少软件包的分布数量。然而,为了实现Kali的一些独有的特性,必须得有一些改变。为了限制这些变化带来的影响,我们努力把这些变化发送到上游去,无论是通过直接集成还是通过添加所需的要求,总之是在无需通过再次修改上游软件包的情况下,直接使能了所期望的特性。

Kali软件包跟踪器可以帮助我们对Kali与Debian之间的分歧保持跟踪。在任何时候,我们能够查找哪个软件包被分支了,其是不是与Debian同步了,或者是不是要求更新了,等等。所有的软件包都是在Git软件仓库中基于Debian分支进行维护的,同时还有一个Kali分支。得益于这些,更新一个分叉的软件包只需进行两个简单的步骤:更新Debian分支,然后合并到Kali分支。

虽然在Kali中分叉的软件包相对而言比较少,但添加的软件包却不少:截至到2017年4月差不多有400个了。这其中的大多数软件包都是自由软件,符合Debian自由软件指导方针。而我们的终极目标是让这些软件包无论什么时候都是与Debian一样有效的。这也是为什么我们要努务遵循Debian策略,并让这些好软件包在Debian中使用的原因。然而,不幸的是,也有例外:有些软件包几乎不能创建。由于时间仓促,有些软件包已被推到Debian中。