选择 FreeBSD 而不是 Linux 的技术性原因1
Ports
FreeBSD Ports 是一个惊人的工程壮举。NetBSD 的 pkgsrc (package source) 和 OpenBSD 的 ports collection 都源于 FreeBSD ports 系统。
通常当您在 Unix 操作系统上安装软件时,您需要找到并下载软件。然后解压软件,通常是压缩的 tar 包。然后在 INSTALL 、README 等其他文本文档中找到文档, 并阅读关于如何安装软件的说明。如果软件是以源码格式发布的,你需要编译它,这通常涉及到编辑一个 Makefile 或运行一个 configure 脚本。如果编译成功,你就需要测试和安装软件。如果软件有依赖性, 则需要先下载并安装这些依赖性。
FreeBSD ports Collection 使用 Makefile 来自动完成编译、 安装和卸载软件的过程, 并使用 make 命令。组成 port 的文件包含了所有必要的信息, 以便自动下载、 解压缩、 打补丁、 编译和安装应用程序, 而在 ports 目录下发出诸如 make install 或 make install clean 这样的开始命令之后, 用户只需要很少的干预 (如果有的话)。如果 port 需要依赖其它应用程序或库, 则会事先自动安装。
大多数 port 都配置了一组默认的选项, 这些选项被认为是适合大多数用户的。然而, 这也是 ports 系统的一大优点, 这些配置选项可以在安装前使用 make config 命令进行修改。该命令会弹出一个基于文本的界面, 允许用户选择所需的选项。
在写这篇文章的时候,集合中有超过 38487 个ports 可用。
在大多数情况下,ports 应用程序都是以预编译包的形式提供下载的, 并设置了默认的选项。这些软件包可以通过 FreeBSD pkg - Binary Package Management 应用程序来安装。预先编译的 port 被称为 "package"。
FreeBSD 项目有一个软件包联编场, 其中联编了所有支持的架构和主要版本的软件包。数据库中提供了所有软件包的联编日志和已知错误, 而每周的联编日志也可以通过邮件列表存档获得。
滚动发行软件包
在软件包方面,您有两个不同的分支可以选择。一个叫 "quarterly",另一个叫 "latest"。
Quarterly 是在每年 1 月、4 月、7 月和 10 月的季度开始时, 从修订系统中的 HEAD 分支中切割出来的 Ports 分支的名称, 也是由这些分支产生的二进制软件包集的名称。
Quarterly 分支为用户提供了更加可预测和稳定的 ports 和包的安装和升级体验。这基本上是通过只允许非功能更新来实现的。季度分支的目标是接收安全修复, 但也可能有版本更新, 或提交的回溯, 错误修复和 ports 合规性或框架变化。
如果您选择了 "latest"的分支,FreeBSD 就会成为第三方软件包的滚动发行版, 而且和 Arch Linux 很像, 它也会得到最新的软件。
Poudriere
Poudriere 是一个用于创建和测试 FreeBSD 软件包的工具。它利用 FreeBSD jail 系统来建立独立的编译环境。这些 jail 可以用来为不同版本的 FreeBSD 编译软件包。一旦这些软件包被编译完成,它们的布局就会与官方镜像相同。这些软件包可以被 FreeBSD pkg 二进制软件包管理工具所使用。
Poudriere 是一个用于测试和构建软件包的神奇工具,通过 Poudriere,您可以轻松地构建和设置自己的二进制软件包库,其中的软件包将完全按照您的规格和需求构建。
Poudriere 可以处理整个 ports 树的批量联编,ports 树的特定子集, 或包括其依赖关系在内的单个 port 。它能够自动地联编软件包, 生成联编日志文件, 提供一个经过签名的 pkg 仓库, 使得它能够在提交一个补丁到 FreeBSD bug 跟踪器之前测试 port 联编过程, 使得它能够使用不同的选项来测试不同的联编过程。Poudriere 在一个干净的 Jail 环境中进行联编, 在这个环境中, 它能够使用 zfs 的特定功能。这意味着没有对主机环境的污染,没有剩余的文件,没有意外的删除,没有对现有配置文件的修改。
Poudriere 的设置和使用非常简单,因为它没有任何依赖,并且可以在任何支持的 FreeBSD 版本上运行。
选择 FreeBSD 而不是 Linux 的技术性原因1的更多相关文章
- 选择 FreeBSD 而不是 Linux 的技术性原因3
选择 FreeBSD 而不是 Linux 的技术性原因3 jail FreeBSD Jails 系统是另一个惊人的工程壮举. 在 2000 年 3 月 14 日的 4.0 版本中,FreeBSD 引入 ...
- 选择 FreeBSD 而不是 Linux 的技术性原因4
Linux 二进制兼容性 FreeBSD 提供了与 Linux 的二进制兼容.这使得用户可以在 FreeBSD 系统上安装和运行许多 Linux 二进制文件, 而无需首先修改二进制文件.在某些特定情况 ...
- 选择 FreeBSD 而不是 Linux 的技术性原因2
ZFSZFS 文件系统是 FreeBSD 上的一等公民.这不仅意味着可以在 ZFS 上安装根目录,安装程序也支持这一点,而且还意味着很多基础系统工具都已经紧密地集成或构建了对 ZFS 的支持.在 Fr ...
- 【热文】 为什么很多硅谷工程师偏爱 OS X,而不是 Linux 或 Windows?
校对:伯乐在线 - 黄利民 链接: 1. Why do most of the developers in Silicon Valley prefer OS X over Linux or Windo ...
- 让 FreeBSD 和 Gentoo Linux 在 ZFS 存储卷上共存
自我回归到 Librem 15 已经有段时间了.我一般会选择 FreeBSD 来处理所有的事情,但有时会要访问一个运行在 Librem 平台上的 Linux OS,以便用它来帮助我对一些遗留的设备驱动 ...
- 企业开发中选择logback而不是log4j的理由
不知道看到这篇文章的Java工程师有没有考虑过这个问题:为什么在企业开发中会选择logback来记录日志,而不是log4j呢? 如果你以前没有考虑过这个问题,那么现在如果让你考虑一下,你可能觉的会是因 ...
- Effective C# 学习笔记(原则二:为你的常量选择readonly而不是const)
原则二.为你的常量选择readonly而不是const Prefer readonly to const 对于常量,C#里面有两个不同的版本:运行时常量(readonly)和编译时常量(co ...
- 优先选择nullptr而不是0和NULL
我们知道:0是一个int,而不是一个指针.如果C++在一个只有指针才能够使用的上下文中发现它只有一个0,那么它会勉强将0解释成空指针,但那时一种倒退行为.C++的主要方针是0就是一个int,而不是指针 ...
- 如何选择适合自己的Linux版本
如何选择适合自己的Linux版本: 1.Linux桌面系统,首选Ubuntu; 2.服务器端的Linux系统,首选RHEL或CentOS,这两种中首选CentOS,如果公司有钱,不在乎成本也可以选择R ...
随机推荐
- mybatis(六)插件机制及分页插件原理
转载:https://www.cnblogs.com/wuzhenzhao/p/11120848.html MyBatis 通过提供插件机制,让我们可以根据自己的需要去增强MyBatis 的功能.需要 ...
- Spring Cloud Alibaba+Nacos搭建微服务架构
1. Spring Cloud Alibaba 简介 Spring Cloud Alibaba是阿里巴巴为分布式应用提供的一站式解决方案,能够更方便快捷地搭建分布式平台,nacos拥有着替换eu ...
- git tag All In One
git tag All In One $ git tag --help # (cedec380)在指定的分支上打 tag $ git tag -a stable-version-1.1.1 cedec ...
- yarn & uninstall global & yarn global remove
yarn uninstall global yarn global remove https://yarnpkg.com/lang/en/docs/cli/remove/ https://yarnpk ...
- 召回 & 召回算法
召回 & 召回算法 recall https://developers.google.com/machine-learning/crash-course/classification/prec ...
- js in depth: Object & Function & prototype & __proto__ & constructor & classes inherit
js in depth: Object & Function & prototype & proto & constructor & classes inher ...
- TYLER ADAMS BRADBERRY:人到中年,要学会戒掉这三点
在一些国家的一些人当中,总会出现这样一个问题"中年危机".而到了中年,人与人间的差距似乎也变得越来越大.有人说,人到中年,是一个门槛,有的人迈过去了,有的人没迈过去.但是,其实实话 ...
- 冷饭新炒:理解JWT的实现原理和基本使用
前提 这是<冷饭新炒>系列的第五篇文章. 本文会翻炒一个用以产生访问令牌的开源标准JWT,介绍JWT的规范.底层实现原理.基本使用和应用场景. JWT规范 很可惜维基百科上没有搜索到JWT ...
- 4. Vue基本指令
目录 1. v-on指令 2. v-if指令 3. v-show指令 4. v-for指令 5. v-model指令 一. v-on指令 1. 基础用法 v-on是事件监听的指令, 下面来看简单用法 ...
- PHP中间件
定义 首先什么是php的中间件? 根据zend-framework中的定义: 所谓中间件是指提供在请求和响应之间的,能够截获请求,并在其基础上进行逻辑处理,与此同时能够完成请求的响应或传递到下一个中间 ...