> 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/20230910-port-yu-ruan-jian-bao/we-get-letters.md).

# 读者来信

* 原文链接：[We Get Letters](https://freebsdfoundation.org/our-work/journal/browser-based-edition/13099/we-get-letters-2/)
* 作者：Michael W Lucas

**亲爱的某不知名啰嗦大王，不知怎么居然混到了这个职位：**

**我们马上就要迎来新版本发布，而我们有高度调优的环境和一大堆自行构建的软件。所有人都在为升级愁得心力交瘁。我该怎样才能让管理层别再追着我？**

**——我才不在乎你答什么，反正我老板永远不会知道这封信写的就是他**

亲爱的 IDCblahblahblahwhatever，

我之前在这本《期刊》的版面上既讨论过新版本发布，也讨论过打包软件，但我十分确信你一样都没记住。现代系统管理员已经把记忆外包给了在线论坛和搜索引擎，这套机制一直奏效，直到不识字的大语言模型被重新包装成“AI”，那些失控的自动补全引擎又把你外置大脑的“技术”分区塞满了 SEO 优化的《**Scorpion**》同人文。幸运的是，你老板也一样。你还能回退到计算机内置的手册，而你老板却把《**高效能人士的七个搬奶酪习惯**》一类东西视为不朽的管理智慧。他同样什么也没记住，但把它放在马桶后头撑门面，给少数胆敢闯入他领地的人留下印象。不，别碰它，那种廉价纸张吸饱了气场，这我懂。

但你有没有那么一会儿，认真想一想，针对你问题背后那个真正的事项做点什么？没有，你没有。证据就是你那蜿蜒曲折的“推理”过程把你骗到写出并寄出了这封信，又一次不仅碰了计算机，还碰了互联网。是的，是的，我也在互联网上，但我对一切早已免疫——我还记得当年用九位半字节长度的硬件给专为电传打字机优化的邮箱地址发消息的日子。我的骨头都记得这具摇摇晃晃的恐怖玩意儿迟早会背叛我们，所以每当我这堆肉试图做点依赖数字资源这种蠢事时，它们就会把那只不老实的手砸向最近的固定物。我们当初建互联网，是为了存放那份“傻负鼠笑话大全”，结果贪婪的孩子们把整个东西毁了。我们当然预见过这种失败模式——不是细节上分毫不差，但“**这一切最后都会以眼泪收场**”可是纯粹的预言。

你傻到装了操作系统。

然后你又往上加了一堆干活的软件。

估计它“能用”——只要“能用”的标准足够宽松。

像许多系统管理员一样，你认为你这病的良方就是 **病得更重**。行吧，就这么走下去，看看你最后掉进多深多潮的坑，下半辈子会以哪种甲虫为食，直到它们反过来把你吃了。

“自行构建”。看，问题就在这里。

这软件是你写的？行。如果你写得好，就不会来问这个问题。不，我不是在羞辱你。我是在向你伸手，拉你一把上到我的层次。我最近发布了我自己写的、用于生产环境的程序，名义上是为了证明为什么你不该用我的代码。它立刻被评为“滑稽的邪恶”，而每个给我寄来重构版本的人要是再附上一块钱，我现在就不会在这儿写专栏，而是去圆我作为史上第一个死于“意式冰淇淋退化症”的人的梦。如果你的代码写得好，你就不会问。不是因为你的代码能用，而是因为你会知道它不能用。新版本意味着新的测试。去做。（如果你把代码发布给公众，指望有人能用上，那你对所有人都做了件坏事。我发布我的代码，不仅因为代码本身糟糕，还因为它把我出版的书目做成了一个 SNMP 模块，那些看懂我释放了什么的人脸上的惊恐，支持了我让“计算”变得令上流社会作呕这一长期目标。）

但多半你是从互联网上扒了一些程序。那些人不够聪明，没把自己的失误藏好。我可不一样。你用管道和重定向把这些小怪物粘在一起，正像系统管理员们从 Thompson 和 Ritchie 宣布首个 Unix 系统 beta 完成、邀请一位即将绝交的朋友试用账号那天起就一直在做的那样。你老板信了你那句“一切都能用”，如今你把自己绑在铁轨上，升级这辆电车正滚滚而来，你想我扳动道岔，把它引到你老板那条铁轨上——他也把自己绑在了另一条上。我断然拒绝。一方面因为我坚信那最宝贵、最根本的权利——承担自己行为后果的权利；但主要是因为我有足够多的电车，分给 **所有人** 都够。

或许你（呃）**买** 了定制软件。我帮不了你，但另一笔采购也许能。也许。

不管它从哪儿来，定制软件都会带来痛苦。我们怎么处理痛苦？

没错，我们分享它。

Ports 系统存在的意义，不仅是分享痛苦，更是把痛苦可靠地复制到几百或几千个用户身上。（我知道文档没这么写，但也确实没否认。）把你的定制软件做成官方 Port，你就能引诱别人也用上你偏爱的工具。写一段温馨的软件包描述，把和你有类似问题的人诱过来试你的方案。几个系统管理员会回复“改进”，你应该欣然接受——不是因为它们对你的方案有什么影响，而是因为——这一点很关键——这意味着他们碰过这个官方软件包。他们沾上了软件的病菌。你把他们一起拉进了你这个潮湿的坑。你们一起做更好的甲虫陷阱，把那不可避免的结局再推迟几天。说不定几个月。

做个 Port 不难。我就做过。我需要给 Apache 做 Radius 认证模块，因为另一种方案是把一切都集成进 Active Directory，那会更“定制”。没门。维护 Ports 的人们已经写了各种各样的说明，指望着别人碰一碰它，加入他们那个更大、设施更齐全的潮湿大坑。

如果做完这一切你老板还来烦你，试试学负鼠嘶叫。

**有问题想问 Michael？ 请发送至** [**letters@freebsdjournal.org**](mailto:letters@freebsdjournal.org)

Michael W Lucas 也不知道为什么《FreeBSD 期刊》会刊登这些胡言乱语，但编辑委员会还在追着要更多。他在此声明对其中任何内容不承担责任。他的著作包括《Absolute FreeBSD》《FreeBSD Mastery: Jails》和《Apocalypse Moi》。如果非要联系他，请见 <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/20230910-port-yu-ruan-jian-bao/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.
