Linux 用户的 FreeBSD 比较介绍

介绍

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(加州大学伯克利分校软件发布)是在加州大学伯克利分校创建的一个 Unix 发行版,它扩展了 AT&T 的 Unix 操作系统的功能集,并具有可接受的许可条款。后来,决定尽量用开源替代品替换原始的 AT&T 操作系统,以便用户不需要获取 AT&T 许可证即可使用 BSD。最终,原始 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正常工作的编译器的说明。

软件的打包版本实际上是从端口系统生成的,使FreeBSD成为首选源的发行版,方便地提供软件包。您的系统可以由源构建和预打包软件组成,并且软件管理系统可以充分处理这两种安装方法的组合。

原版 vs 定制软件

对于熟悉一些较流行的 Linux 发行版的用户来说,FreeBSD 通常选择尽可能地提供未经修改的上游软件,这可能是一个有些奇怪的决定。

许多 Linux 发行版对软件进行修改,以便更容易地与其他组件连接,并试图使管理更容易。这种倾向的一个很好的例子是重构常见的 Web 服务器配置层次结构,以使服务器配置更加模块化。

虽然许多用户发现这些更改有帮助,但这种方法也存在缺点。对软件进行修改的一个问题是它假设知道什么方法最适合用户。它还使得软件对于来自其他平台的用户更加不可预测,因为它偏离了上游的惯例。

FreeBSD 的维护者通常确实使用补丁修改软件,但这些修改通常比一些 Linux 发行版的软件选择更为保守。一般来说,在 FreeBSD 生态系统中对软件的修改是为了使软件在 FreeBSD 环境中构建和运行正确所必需的,以及为了定义一些合理的默认值。通常情况下,放置在文件系统上的配置文件并不会被大幅修改,因此可能需要额外的工作来使组件之间进行通信。

FreeBSD 中常见工具的变体

FreeBSD 系统的另一个可能会让 Linux 用户感到困惑的方面是熟悉工具的可用性,这些工具在 FreeBSD 系统上的操作方式略有不同。

FreeBSD 团队维护了大量常见工具的自己版本。虽然许多在 Linux 系统上找到的工具来自 GNU 套件,但 FreeBSD 通常为其操作系统开发自己的变体。

这种决定有几个原因。由于 FreeBSD 负责开发和维护核心操作系统,控制这些应用程序的开发并将它们置于 BSD 许可证下是必不可少的或有用的。其中一些工具还与它们衍生的 BSD 和 Unix 工具有密切的功能联系,与 GNU 套件不同,后者通常不太向后兼容。

这些差异通常体现在命令的选项和语法上。你可能习惯于在 Linux 机器上以某种方式运行命令,但在 FreeBSD 服务器上可能不会产生相同的效果。重要的是要始终查看命令的 man 页面,以熟悉 FreeBSD 变体的选项。

标准 Shell

可能会引起一些困惑的另一个相关点是 FreeBSD 中默认的 shell 不是 bash。相反,FreeBSD 使用 tcsh 作为其默认 shell。

这个 shell 是 csh 的改进版本,csh 是为 BSD 开发的 C shell。bash shell 是 GNU 组件,因此作为 FreeBSD 的默认选择并不合适。虽然这两个 shell 在命令行上通常以类似的方式运行,但脚本编写不应该使用 tcsh。使用基本的 Bourne shell sh 更可靠,并避免了与 tcshcsh 脚本编写相关的一些众所周知的问题。

值得注意的是,如果你更喜欢 bash 环境,将你的 shell 更改为 bash 也非常简单。

更分层的文件系统

我们在上面多次提到,FreeBSD 在基本操作系统和可选组件(或端口)之间进行了区分。

这对于 FreeBSD 如何组织文件结构有一定的影响。在 Linux 中,可执行文件通常位于 /bin/sbin/usr/sbin/usr/bin 目录中,具体取决于它们的用途以及它们对核心功能的重要性。FreeBSD 识别了这些差异,但也在基本系统和作为端口安装的组件之间施加了另一层分离。基本系统软件位于上述目录之一。作为端口或软件包安装的任何程序都放置在 /usr/local/bin/usr/local/sbin 中。

/usr/local 目录包含一个目录结构,大部分与 //usr 目录中的结构相似。这是通过端口系统安装的软件的主根目录。几乎所有端口的配置都是通过位于 /usr/local/etc 中的文件完成的,而基本系统配置通常保存在 /etc 中。这使得很容易识别应用程序是基本系统端口的一部分,并有助于保持文件系统的清洁。

总结

FreeBSD 和 Linux 有许多共同之处,但如果你来自 Linux 背景,重要的是要认识和理解它们的差异。在它们的道路分歧的地方,这两个系统都有各自的优势,支持者可以指出做出选择的原因。

将 FreeBSD 视为自己的操作系统,而不是坚持通过 Linux 视角来看待它,将有助于避免与操作系统的斗争,并通常会带来更好的体验。我们希望你现在已经对前进时需要注意的差异有了相当好的理解。

如果你是新手运行 FreeBSD 服务器,下一步可能是阅读我们的 FreeBSD 入门指南。

你可能感兴趣的:(linux,服务器,linux,运维,服务器)