介绍
FreeBSD是一个免费和开源的类Unix操作系统和流行的服务器平台。 虽然FreeBSD和其他基于BSD的系统与像Linux这样的系统有许多共同之处,但是有些地方这两个家族在重要的方面有分歧。
在本指南中,我们将简要讨论FreeBSD和Linux之间的一些共性,然后再讨论它们之间的重要区别。 下面的许多点可以准确地应用于BSD派生系统的更大系列,但作为我们的重点的结果,我们将主要参考FreeBSD作为家族的代表。
FreeBSD和Linux共享的特性
在我们开始检查FreeBSD和Linux不同的领域之前,让我们来广泛地讨论这些系统的共同之处。
虽然每个家庭雇用的具体许可不同(我们将在后面讨论),但这两个系统系列都是免费和开源的。 用户可以根据自己的需要查看和修改源代码,并在开放环境中进行开发。
FreeBSD和基于Linux的发行版本都是类Unix。 FreeBSD与过去的Unix系统密切相关,而Linux是从头开始创建的一个开放的类Unix的替代。 此关联用于决定系统的设计,组件应如何互操作,以及系统应该看起来和完成的一般期望。
常见的类Unix的行为,主要是双方家庭多数都是导致POSIX兼容 。 系统的整体感觉和设计相当标准化,并使用类似的模式。 文件系统层次结构类似地划分,shell环境是两个系统的主要交互方法,并且编程API共享类似的特征。
由于这些考虑,FreeBSD和Linux发行版可以共享许多相同的工具和应用程序。 有些情况要求这些程序的版本或风格在系统之间不同,但是与非类Unix系统相比,应用程序可以更容易移植。
考虑到这些要点,我们现在继续讨论这两个操作系统系统有所不同的领域。 希望这些共性能帮助你更准确地消化有关他们差异的信息。
许可差异
FreeBSD和Linux系统最基本的区别之一是许可问题。
Linux内核,基于GNU的应用程序以及源于Linux世界的许多软件都采用某种形式的GPL或GNU通用公共许可证。 此许可证通常被描述为“Copyleft”许可证,这是一种许可形式,允许自由查看,分发和修改源代码,同时要求任何衍生作品维护该许可。
另一方面,FreeBSD包括内核和FreeBSD贡献者创建的任何工具,根据BSD许可证授权其软件。 此许可证类型比GPL更容许,因为它不需要衍生工作来维护许可条款。 这意味着任何人或组织都可以使用,分发或修改程序,而无需提交更改或释放他们正在创建的工作的源。 唯一的要求是原始版权和BSD许可证的副本包括在衍生作品的源代码或文档中(取决于发布方法),并且包括了提供的限制责任的免责声明。 主许可证是非常短的,并且可以找到这里 。
每种许可类型的吸引力几乎完全依赖于哲学和用户的需求。 GPL许可证促进共享和一个开放的生态系统,超越所有其他考虑。 专有软件必须非常小心,不要依赖基于GPL的软件。 另一方面,BSD许可软件可以自由地合并到专有的封闭源应用程序中。 这使得许多企业和个人更希望通过他们的软件获利,因为它可以直接销售软件并保留源代码。
开发人员倾向于选择一种许可哲学,而每种都有其优势。 了解这些系统的许可证可以帮助我们开始理解其发展中的一些选择和理念。
FreeBSD谱系及其影响
FreeBSD和Linux系统之间的另一个重要区别是每个系统的沿袭和历史。 除了上面讨论的许可差异之外,这也许是每个营地坚持的哲学的最大影响力。
Linux是由Linus Torvalds开发的一个内核,用来取代他在赫尔辛基大学使用的面向教育的限制性MINIX系统。 结合其他组件,许多来自GNU套件,建立在Linux内核上的操作系统具有许多类似Unix的属性,尽管它不是直接从以前的Unix操作系统派生的。 由于Linux是从头开始的,没有一些继承的设计选择和遗留的考虑,它可以明显不同于与Unix更紧密的系统。
FreeBSD与其Unix遗产有许多直接关系。 BSD或Berkeley Software Distribution是在加利福尼亚大学伯克利分校创建的Unix的一个分发版本,扩展了AT&T的Unix操作系统的功能集,并且具有可接受的许可条款。 后来,决定尝试用尽可能多的原始AT&T操作系统替换开源代码,以便用户不需要获得使用BSD的AT&T许可证。 最终,原始AT&T Unix的所有组件都在BSD许可下重写,并移植到i386架构作为386BSD。 FreeBSD是从这个基础分支的,以努力维护,改进和现代化的工作,已经在那里,并最终被重新基于一个不完整的版本称为BSD-Lite为了许可问题。
通过漫长的多阶段派生过程,FreeBSD在许可方面不受阻碍,但与其过去保持密切联系。 开发者努力创建系统仍然投资于Unix的做事方式,可能是因为FreeBSD总是打算作为一个公开授权的Unix克隆操作。 这些根源影响了任何进一步发展的方向,也是我们将讨论的一些选择背后的原因。
核心操作系统与其他软件的分离
FreeBSD和Linux发行版之间的开发工作和系统设计的主要区别是系统的范围。 FreeBSD团队将内核和基本操作系统开发为一个内聚单元,而Linux在技术上仅指内核,其他组件来自各种来源。
这可能看起来像一个小的区别,但实际上影响你如何与每个系统交互和管理。 在Linux中,发行版可能会将一组选定的软件包捆绑在一起,确保它们能够很好地进行互操作。 然而,大多数组件将来自广泛的源,并且分发开发者和维护者被赋予将它们模制成正确运行的系统的任务。
在这个意义上,基本组件与通过分布的存储库可用的可选软件包没有太大的不同。 分发的包管理工具用于以完全相同的方式跟踪和管理这些组件。 分发可能维护不同的存储库,基于哪些团队负责某些包,以便核心开发团队只需要担心软件可用的一个子集,但这是一个组织和重点的差异,一般不会导致软件的差异管理从用户的角度。
相比之下,FreeBSD维护了整个核心操作系统。 内核和软件集合,许多是由FreeBSD开发人员自己创建的,作为一个单元维护。 它不是那么简单,换出作为这个核心集合的一部分的组件,因为它在某种意义上是一个单片集合的软件。 这允许FreeBSD团队非常密切地管理主操作系统,确保紧密集成和更可预测性。
包含在核心操作系统中的软件被认为与作为可选添加提供的组件完全分离。 FreeBSD提供了大量的可选软件,就像Linux发行版一样,但是它是单独管理的。 核心系统被独立地更新为单个单元,并且可以单独更新可选软件。
如何发布版本
大多数Linux版本是从各种来源收集软件并根据需要进行修改的结果。 分发维护者决定要在安装介质中包括哪些组件,要包括在分发维护的存储库中的哪些组件等。在一起测试组件之后,创建包含所测试的软件的发布。
在最后一节中,我们了解到:
- FreeBSD操作系统的大部分是由FreeBSD团队开发的。
- 基本操作系统是正在生产的主要输出。
- 基本软件被认为是一个内聚的整体。
这些特性导致了与大多数Linux发行版不同的发布软件的方法。 由于FreeBSD在操作系统级别组织事物,所有基本组件都维护在单个源代码存储库中。 这有几个重要的含义。
首先,由于这些工具都是在单个存储库中同时开发的,所以只需选择存储库的一个分支的修订版即可形成发布。 这与大多数软件发布的方式类似,因为从有组织的代码库中选择稳定点。
由于基本操作系统都处于活动版本控制之下,这也意味着用户可以“跟踪”不同分支或稳定级别,这取决于他们希望系统组件的测试程度。 用户不必等待开发人员批准更改以使他们的系统上。
这有点类似于跟踪由某些Linux发行版中的稳定性组织的不同存储库的用户。 在Linux中,您可以跟踪软件包存储库,而在FreeBSD中,您可以跟踪集中式源存储库的分支。
软件差异和系统设计
我们将讨论的剩余差异将与软件本身和系统的一般特性相关。
支持的软件包和源安装
从用户的角度来看,FreeBSD和大多数Linux发行版之间的主要区别是包装软件和源代码安装软件的可用性和支持。
虽然大多数Linux发行版仅提供分发支持软件的预编译二进制包,但FreeBSD包含预构建包以及用于从源代码编译和安装的构建系统。 对于大多数软件,这允许您选择使用合理的默认值构建的预编译软件包和通过自己构建在编译过程中自定义软件的能力。 FreeBSD通过一个称为“ports”的系统来实现。
FreeBSD端口系统是FreeBSD知道如何构建的软件的集合。 表示该软件的组织层次是中可用/usr/ports
目录,用户可以深入到每个应用程序的目录。 这些目录包含几个文件,这些文件指定可以获取源文件的位置,以及编译器关于如何正确地修补源以便在FreeBSD中正常工作的指令。
软件的打包版本实际上是从ports系统生成的,使FreeBSD成为一个源代码第一个分发版本,提供了方便的软件包。 您的系统可以包括源内置软件和预打包软件,软件管理系统可以充分处理这两种安装方法的组合。
Vanilla和定制软件
一个对于熟悉一些更流行的Linux发行版的用户来说看起来有点奇怪的一个决定是FreeBSD通常选择在可能的情况下提供未经修改的上游软件。
许多Linux发行版对软件进行了修改,以便更容易地与其他组件连接,并尝试使管理更容易。 这种趋势的好例子是重新构建常见的Web服务器配置层次结构,使服务器配置更加模块化。
虽然许多用户发现这些更改有帮助,但这种方法也有缺点。 修改的一个问题是它假定知道什么方法最适合用户。 它也使得软件对于来自其他平台的用户更不可预测,因为它不同于上游协议。
FreeBSD的维护人员经常做修改补丁软件,但这些通常是比一些Linux发行版'包的选择更加保守的变化。 一般来说,FreeBSD生态系统中对软件的修改是使软件在FreeBSD环境中正确构建和运行所需的修改,以及定义一些合理默认值所需的修改。 放置在文件系统上的配置文件通常不会被大量修改,因此可能需要采取一些额外的工作来使组件相互通信。
FreeBSD常用工具的风味
FreeBSD系统的另一个可能导致Linux用户混淆的方面是熟悉的工具的可用性,它们与Linux系统上的工作略有不同。
FreeBSD团队维护自己版本的大量常用工具。 虽然在Linux系统上发现的许多工具都来自GNU套件,但FreeBSD通常会为其操作系统推出自己的变体。
这个决定有几个原因。 由于FreeBSD负责开发和维护核心操作系统,因此控制这些应用程序的开发并将其置于BSD许可证下是必不可少或有用的。 这些工具中的一些也与BSD和Unix工具具有密切的功能关系,而GNU套件通常往往不太向后兼容。
这些差异通常表现在命令的选项和语法中。 您可能习惯于以某种方式在Linux机器上运行命令,但这些命令在FreeBSD服务器上可能无法正常工作。 要经常检查是很重要的man
的命令页以熟悉FreeBSD的变种的选项。
标准外壳
这可能会造成一些混乱的一个相关问题是,在FreeBSD下默认的shell不是bash
。 相反,FreeBSD使用tcsh
作为默认的shell。
这个shell的改进版本csh
,这是BSD开发了C shell。 在bash
外壳是一个GNU组件,使其成为一个糟糕的选择,作为FreeBSD的默认值。 而两个壳通常在命令行上相似的方式发挥作用,脚本不应该在完成tcsh
。 使用基本的Bourne shell sh
更可靠,避免了一些与之相关的证据充分的陷阱tcsh
和csh
脚本。
还值得一提的是,它是非常简单的改变你的shell来bash
,如果你是在那种环境更舒适。
更分层的文件系统
我们上面提到过几次,FreeBSD区分基本操作系统和可以安装在该层之上的可选组件或端口。
这对FreeBSD如何组织文件结构中的组件有影响。 在Linux中,可执行文件通常位于/bin
, /sbin
, /usr/sbin
,或/usr/bin
目录取决于他们的目的,是多么重要,他们是核心功能。 FreeBSD可以识别这些差异,但也会在作为基本系统一部分安装的组件和作为端口安装的组件之间施加另一级别的隔离。 基本系统软件驻留在上述目录之一。 被安装为一个端口或包的任何程序都放在内/usr/local/bin
或/usr/local/sbin
。
将/usr/local
目录包含了大部分反映在发现结构的目录结构/
或/usr
目录。 这是通过ports系统安装的软件的主根目录。 几乎所有端口的配置都是通过位于文件来完成/usr/local/etc
,而基本系统配置保存在/etc
如常。 这使得易于识别应用程序是否是基本系统端口的一部分,并有助于保持文件系统的清洁。
最后的想法
FreeBSD和Linux有很多共同点,但如果你是来自Linux背景,重要的是要认识和理解它们的不同之处。 在他们的路径发散的地方,两个系统都有它们的优势,来自任一阵营的支持者可以指出做出选择的原因。
将FreeBSD作为自己的操作系统,而不是坚持通过Linux镜头查看它将帮助您避免与操作系统的战斗,并且通常会带来更好的体验。 到目前为止,我们希望您对这些差异有一个很好的理解,以便在您向前推进时注意。
如果你是新来运行FreeBSD的服务器,一个良好的下一步可能是我们的指南开始使用FreeBSD的 。