> For the complete documentation index, see [llms.txt](https://freebsd-journal-cn.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://freebsd-journal-cn.bsdcn.org/20210102-an-li-yan-jiu/we-get-letters.md).

# 读者来信

* 原文链接：[We Get Letters](https://freebsdfoundation.org/wp-content/uploads/2021/03/We-Get-Letters.pdf)
* 作者：MICHAEL W LUCAS

噢，慷慨、华丽、无偿的 FreeBSD 期刊来信答疑者：

FreeBSD 13 随时可能发布。它有一堆我急切想上手的新特性，但我对全新版本心怀戒备。关于何时升级，有何建议？

而且，他们真的用冰淇淋付你报酬吗？

谢谢。

——不想停机

DNO：

我知道这个故事。你职业生涯早期曾师从一位胡子拉碴的系统管理员，他在 Unix 战争中失去一只眼睛，在自举 K\&R C 编译器时炸掉了一叶肝，那飘逸的灰白胡子里还用绳结编着 Alpha 引导加载程序的副本。你拿某个别的新版本问过他同样的问题。他抓起那只“Free the Berkeley 4.4”咖啡杯——里面装着上一个敢在他那匠心独具降温的数据中心里散发体温的 Ultrix 销售员的指骨——狠狠晃了晃，把骨头撒在办公桌上读其中的智慧。在四周机架服务器的轰鸣声中，再加上他曾对明尼苏达大学 Gopher 开发者把服务器改为付费许可一事大吼大叫而彻底毁掉的嗓子，你只能屏息聆听，才能从噪音里筛出他嘶哑低语的智慧。

“绝不、绝不安装 .0 版本。”

这种话给年轻的系统管理员留下了深刻印象。

替这老独眼龙说句话，在拨号时代，他的话是无可超越的智慧。下载一个操作系统发行版最快的方式是邮购一盘备份磁带。关键补丁通过 Usenet 分发，如果你足够幸运，有一个账号在一条 1.544 兆比特上行链路的站点上。便宜的服务器要花数千美元，或者一个可用于移植的肝脏——前提是能找到一个还不够小心、还没把自己肝脏玩完的销售员。

如今已是另一个世界。首先，我们有了销售员。而且他们都已被警告过肝脏那回事。

如果你今天还在盯着某个 .0 发行版——你已经太晚了。

现代操作系统是公开的，就像某个好莱坞明星那堆亲密感染一样公开。发现问题的时间应该在发行之前。我不在乎你跑哪种 Unix，它们都是公开的。即便闭源 Unix 开发者也会给客户提供预发行介质，尽管我确实不知道你为何要给他们超出那离谱授权费的帮助。开发者已经请求、恳求、哄劝、哀求甚至威胁用户去测试发行候选、进行中的版本、快照和补丁，长达数月乃至数年。而你居然还在这里问能不能信任最终产品？

你这个自私的小白痴。

去抓最新的快照、发行候选或最新最好的任何东西，在你的环境里试一试。配置所有的调试选项，准备好内核转储。在负载下测试你的应用程序。告诉开发者哪些能用，哪些不能。

如果你是在 13.0 出来之后立刻读到这篇，正庆幸自己不用干这活——猜怎么着？此时此刻就有一个 14.0 的预预发行版可供测试！或许《无关紧要的美国作家》方向的博士论文好题目都被人占了，但绝望驱使你钻研某个早已失传的、无法辨认的旧期刊文字档案，想找出我从堕入野性跨入公然恶毒的那一刻——而 Ax67.πr² 发行版现在正在开发中。无论哪种情况，都有可测试的即将到来的发行版。

不，我不是说你应该把发行候选和开发版本部署到环境中的每一台主机上。有些人应该这么做，但问这问题的人不该做。你还没准备好。

测试开发版本不仅需要系统管理员技能，还需要系统管理员实践。区别在哪？技能意味着你知道如何做你该做的事。实践意味着你真的去做这些事。你需要备份。你需要知道这些备份能恢复。你不仅要知道如何提交 bug 报告，还要习惯于提交。跑这些早期版本的全部意义就在于报告 bug。

为你的理智着想，你需要明智地部署开发版本。

别把开发版本猛地塞到集群中的每台 Web 服务器上。挑一两台。把它们放进负载均衡池。看会怎样。在相似负载下比较响应能力。把它们配置为在 panic 时自动转储并重启。如果它们跑的是 ZFS，手边保留已知良好的启动环境。虽然“内核每隔 1063 秒 panic 一次，这是文本转储”极其宝贵，但一旦你确认了问题，没必要继续忍受。

如果你坚持做下去，最终你会发现你能在任何地方跑开发版本。有人就是这么干的。你也能变得足够优秀，加入他们的行列。

是的，这需要投入时间和硬件。那很便宜。如果你不信，去给运行你环境所需的 Oracle Solaris 许可证和服务器估个价。在足够大的公司里，你可以雇佣专职测试人员，省下的钱还够每天午餐给员工供应披萨和啤酒。只是务必给 Oracle 销售代表一个一次性手机号和一个一次性域名的邮箱，因为他们就像终结者：永不停歇、永不怜悯、永不疲倦，直到他们占有你那瘦骨嶙峋、营养不良的灵魂。

你知道什么能滋养你的灵魂吗？什么能让你的灵魂绽放？什么能培养性格与心智的伟大？什么能磨砺你的系统管理员技艺，直至无人能与你抗衡？

测试你所依赖软件的开发版本。

部署它们。日常使用它们。给开发者提供反馈。bug 报告固然好，但“我在生产环境跑最新版本，每秒处理四兆半 HamsterSoft 查询，一切顺利”也同样有价值。阴性结果也是结果。

你知道还有什么能滋养你的灵魂？

给你的来信专栏作者付冰淇淋。我原本指望 George 在 2020 年春季的 BSDCan 上结账，但他没出现。也许他 2021 年会到场。如果他还不结账，我就得把这笔当作坏账核销。

如果真那样，这些专栏可能会变得有点暴躁。你已被警告。

有问题想问 Michael？请发送至 <letters@freebsdjournal.org>

***

**MICHAEL W LUCAS** 最近出版的图书包括《SNMP Mastery》、《Cash Flow for Creators》和《Drinking Heavy Water》，以及更多作品，详见 <https://mwl.io>。绝不允许他靠近用户。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://freebsd-journal-cn.bsdcn.org/20210102-an-li-yan-jiu/we-get-letters.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
