如何在 Ubuntu 和其他 Linux 发行版中查看 AVIF 图像

# 如何在 Ubuntu 和其他 Linux 发行版中查看 AVIF 图像

>
> 在 Linux 中无法打开 AVIF 图片？AVIF 是一种新的网络图像文件格式，下面是在 Linux 桌面上查看 AVIF 图像的方法。
>
>
>

就质量而言，PNG 是最好的，但它们体积庞大，因此不适合用于网站。

JPEG 会减小文件大小，但会显着降低图像质量。

WebP 是一种相对较新的格式，可以生成尺寸更小、质量更好的图像。

现在，[AVIF](https://aomediacodec.github.io/av1-avif/) 是一种新的文件格式，可以在不牺牲质量的情况下压缩图像。对于相同的图像质量，它们比 WebP 更小。

最近 [Linux 已开始提供 WebP 支持](https://itsfoss.com/webp-ubuntu-linux/)。但是，许多发行版默认不支持 AVIF 图像格式。

如果你从网络上下载 AVIF 格式的图像，它不会显示缩略图。

如果你尝试使用默认图像查看器打开它，它很可能会显示“无法识别的图像文件格式”错误。

那么，解决方案是什么？ 在 Linux 上根本看不了 AVIF 图像吗？

不，事实并非如此。对于 Linux，总有一种解决方法。

### 在 Linux 中查看 AVIF 图像文件

有一个名为 gThumb 的便捷 [图像查看器](https://itsfoss.com/image-viewers-linux/)，可用于在 Linux 上打开 AVIF 图像。

如果不是全部的话，它应该在大多数 Linux 发行版的仓库中可用。

在 Ubuntu 和基于 Debian 的发行版上，使用以下命令安装 gThumb。

```
sudo apt install gthumb

```

安装后，选择一张 AVIF 图像，右键单击它并选择“<ruby> 打开方式 <rt>  Open With </rt></ruby>”选项。在这里，选择 gThumb，将其设为 AVIF 图像的默认值并打开它。

gThumb 在打开的图像下以缩略图格式显示同一文件夹中的所有图像。

使用 gThumb 打开 AVIF 图像后，它们也应该以缩略图显示。

就是这样。你现在可以在 Linux 桌面上欣赏 AVIF 图像。

### 总结

gThumb 是一个用途极为广泛且功能强大的应用。这让我想知道为什么它不被用作 GNOME 或其他桌面环境和发行版中的默认图像查看器。

关于 Linux 中默认的 AVIF 支持，迟早会添加。目前，gThumb 完成了这项工作。

*（题图：MJ/a54d1f0d-ea92-42dd-bb31-de8097153cad）*

---

via: <https://itsfoss.com/view-avif-images-linux/>

作者：[Abhishek Prakash](https://itsfoss.com/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1034 Reddit 威胁换掉继续抗议的子区管理员

Summary:
? Reddit 威胁换掉继续抗议的子区管理员
? YouTube 通知其开源替代品 Invidious 关闭
? Alphabet 出售了谷歌域名产品
»
»

违反API政策的同时形成了第三方客户端的利益链条，那么这利益链条就是“非法”的，开发者注册的时候同意的协议可以解释商业公司的初衷。就像违法所得的既得利益链条，总有被清理的一天。养肥了再杀，也是一种惩戒管理智慧。<br />
开发者是否承诺并践行开发者协议，与商业公司是否、何时执行协议条款，没有必然关系。

来自117.136.89.175的 Chrome Mobile 114.0|Android 12 用户

# 硬核观察 #1034 Reddit 威胁换掉继续抗议的子区管理员

### Reddit 威胁换掉继续抗议的子区管理员

本周初，数千 Reddit 子区 [闭版](/article-15900-1.html) 以抗议 Reddit API 的天价收费，因为这事实上扼杀了管理员们赖以执行管理操作的第三方客户端。Reddit CEO 对员工 [表示](https://arstechnica.com/gadgets/2023/06/reddit-ceo-assures-employees-that-api-protests-havent-hurt-revenue/) 不要担心，因为抗议不会影响公司收入。他称，“大部分子区会按计划在周三回归，我们干好自己的工作就行了”。周三，部分子区陆续恢复，但也有很多子区将继续保持关闭 —— 直到 Reddit 改变其政策。目前还有超过一半的子区保持关闭或限制，这包括订阅数超过四千万的 r/funny、超过三千万的 r/aww、r/Music 等。此外，Reddit 还威胁将移除继续抗议的管理员。Reddit 宣称，如果一个子区的管理团队一致同意停止管理社区，它将邀请愿意管理社区的新管理员来管理社区；而如果至少有一名管理员愿意维持社区运作，Reddit 将移除不想管理社区的管理员。

>
> **[消息来源：Hacker News](https://news.ycombinator.com/item?id=36347711)**
>
>
>

>
> 老王点评：真是要硬扛到底啊，这不是移除几个“刺头”管理员就能解决问题的，相信这样的抗议也代表了大部分社区中坚的意见。无论如何，这都是一幕罕见的大规模社区对抗事件，让我们拭目以待。
>
>
>

### YouTube 通知其开源替代品 Invidious 关闭

Invidious 是 YouTube 的一个开源 “替代前端”，允许用户在没有数据跟踪的情况下观看 YouTube 视频，也可以让用户在观看视频时不被 “恼人的广告” 打断。YouTube 声称该软件违反了其 API 政策，称它没有显示 YouTube 服务条款的链接，也没有 “明确” 解释其对用户信息的处理。YouTube 要求它在 7 天内关闭。

>
> **[消息来源：VICE](https://www.vice.com/en/article/88xxex/youtube-tells-open-source-privacy-software-invidious-to-shut-down)**
>
>
>

>
> 老王点评：看来开放 API 将全面进入关闭时代，各个网站都开始扼杀这些妨碍其广告业务的客户端了。或许在官方看来，这些利用其 API 的第三方客户端就是在对它们吸血。
>
>
>

### Alphabet 出售了谷歌域名产品

Alphabet 正在结束其谷歌域名业务，并将其资产以约 1.8 亿美元的价格出售给 SquareSpace。这些资产包括“在谷歌域名业务上托管的 1000 万个域名，分布在数百万个客户中”。谷歌域名业务于 2014 年推出，在 2022 年退出了测试阶段。它拥有诸多新的顶级域名，是 HTTPS 的主要支持者之一。

>
> **[消息来源：9to5google](https://9to5google.com/2023/06/15/google-domains-squarespace/)**
>
>
>

>
> 老王点评：谷歌连域名这么重要的基础设施服务都开始砍掉，以后还能信任谷歌在基础设施方面的持续性么？
>
>
>


在 Linux 中安装和使用 pipx

Summary: pipx 解决了流行的 pip 工具的不足之处。学习在 Linux 中安装和使用 pipx。

# 在 Linux 中安装和使用 pipx

>
> `pipx` 解决了流行的 `pip` 工具的不足之处。学习在 Linux 中安装和使用 `pipx`。
>
>
>

`pip` 是一种流行的工具，用于从 [Python 包索引](https://pypi.org:443/) 中安装 Python 包和模块。

然而，在最近的发行版本中，`pip` 用户遇到了 [外部管理环境错误](https://itsfoss.com/externally-managed-environment/)。

这是为避免通过 [pip](https://itsfoss.com/install-pip-ubuntu/) 安装的 Python 包与本机包管理器之间发生冲突而添加的“功能”。Python 希望你使用单独的虚拟环境，而不是通过 `pip` 在全局安装包。

**这就是 `pipx` 发挥作用的地方**。它为你安装的每个应用创建一个新的虚拟环境，然后在全局级别的 `/bin` 中创建到本地二进制文件的链接。这一切都是自动的。它为你节省时间和精力。

让我们看看如何在 Ubuntu 和其他 Linux 发行版上安装和使用 `pipx`。

### 在 Ubuntu 和其他 Linux 上安装 pipx

安装很简单，可以在 Ubuntu 和 Debian 上使用以下命令安装：

```
sudo apt update && sudo apt install pipx

```

对于其他发行版，请使用你的包管理器并安装它。

完成安装后，[将其添加到 $PATH](https://itsfoss.com/add-directory-to-path-linux/) 以便可以从任何地方访问它：

```
pipx ensurepath

```

**关闭终端并重新启动它**。这就完成了！ 现在，让我们看看如何使用它。

### 使用 pipx

包管理器的主要用途是什么？ 软件包安装、更新和删除。

让我向你展示如何使用 `pipx` 执行以下操作：

* 搜索包
* 包安装
* 升级
* 包移除

让我们从安装开始。

#### 如何使用 pipx 安装包

要使用 `pipx` 安装包，你必须遵循一个简单的命令语法：

```
pipx install <package_name>

```

例如，在这里，我安装了一个非常有用的程序 Cowsay：

```
pipx install cowsay

```

同样，如果你想安装特定版本的包，你必须在 `==` 后跟上版本号，如下所示：

```
pipx install package==version

```

例如，在这里，我安装了 1.24.1 版本的 numpy：

```
pipx install numpy==1.24.1

```

#### 如何搜索包

`pipx` 程序没有搜索功能（因为 PyPI 的 API 使用限制）但这并不意味着你不能搜索 Python 包。

要搜索包，你需要安装 `pypisearch`：

```
pipx install pypisearch

```

完成后，你可以使用 `pypisearch` 命令搜索包：

```
pypisearch python_package_name

```

在这里，我搜索了 neofetch：

#### 如何使用 pipx 升级包

与任何其他现代包管理器一样，你可以一次升级所有包，也可以一次升级一个包。

要一次升级所有软件包，你只需执行以下命令：

```
pipx upgrade-all

```

如你所见，它将 numpy 升级到最新版本。

但是如果你想升级一个特定的包，你可以这样做：

```
pipx upgrade package-name

```

假设我想将 `cowsay` 包升级到最新版本，那么，我将使用以下命令：

```
pipx upgrade cowsay

```

#### 如何使用 pipx 卸载包

要删除包，你必须使用 `uninstall` 标志，如下所示：

```
pipx uninstall package_name

```

为了供你参考，在这里，我从我的系统中删除了 `numpy`：

```
pipx uninstall numpy

```

### pip 还是 pipx？

对 `pip` 的限制影响了最终用户对它的使用。值得庆幸的是，`pipx` 提供了急需的替代方案。它符合使用虚拟环境的 Python 准则，同时允许已安装的应用在全局范围内可用。

对于不是 Python 应用开发的最终用户，这提供了使用发行版仓库中不可用的 Python 应用的选项。

希望本教程对你有所帮助。如果你有任何问题或建议，请告诉我。

*（题图：MJ/fc6190e2-a412-443e-a83c-91fce1dcf695）*

---

via: <https://itsfoss.com/install-pipx-ubuntu/>

作者：[Sagar Sharma](https://itsfoss.com/author/sagar/) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


GitHub Copilot 之所以强大，是因为它盗窃了开源代码

Summary: 开源代码不是捐款箱，不是想拿多少就拿多少，想怎么用就怎么用的。

GitHub完全开放Copilot 源代码，无条件放弃其知识产权，让所有人决定它工作中应对许可的模式；开源世界就能一定程度接受这个“整合工具”吧。

开源代码不是捐款箱，不是想拿多少就拿多少，想怎么用就怎么用的。

# GitHub Copilot 之所以强大，是因为它盗窃了开源代码

<img src="content_image/album_202306_17_153753q7q4gc00zmhuemve.jpg" alt="" title="">

<ruby> 软件自由保护协会 <rt>  Software Freedom Conservancy </rt></ruby>（SFC）是一家由开源倡导者组成的非营利性社区。今天（本文原文发表于 2022 年 7 月 5 日），它发布了一篇抨击性的博文，宣布退出 GitHub，并请求其成员及支持者公开谴责该平台。SFC 与 GitHub 的如此纷争，源于这一颇受指责的举动：微软和 OpenAI 训练了一个名为 Copilot 的 AI 系统，而其训练数据的来源，是那些使用了开源许可证公开的代码。开源代码不是捐款箱，不是想拿多少就拿多少，想怎么用就怎么用的。

它更像是摄影作品。即便摄影师没有向你收取照片的使用费，你仍需要在该署名的地方进行署上来源。据 SFC 的一篇 [博文](https://sfconservancy.org/blog/2022/jun/30/give-up-github-launch/) 所述，Copilot 在使用他人的代码片段时，并没有保留来源信息：

“这反映了 GitHub 长期以来的问题，也是我们必须一齐放弃 GitHub 的关键原因。从 Copilot 中，从 GitHub 的代码托管服务中，从我们所见的基本每个领域，我们都发现 GitHub 的行为比其同行要差得多。我们也不相信 Amazon、Atlassian、GitLab 等其他盈利性的代码托管平台，能有杰出的表现。然而，将 GitHub 的行为与其同行相对比较一下，就能发现 GitHub 的行为要差得多了。”

GitHub 是全世界事实上的开源代码仓库。它是 YouTube、Twitter 和 Reddit 的混合体，但专为程序员及其代码服务。自然，替代品是有的。但是，从一个代码仓库生态切换到另一个，并不等同于用 Instagram 来替代 TikTok。微软在 2018 年花了 70 多亿美元来收购 GitHub。从那时起，微软就利用其 OpenAI 的主要受益者的地位，来共同开发 Copilot。并且，要访问 Copilot 服务，只能通过微软的特别邀请，或者支付订阅费。该举激怒了 SFC 及其他开源倡导者，因为微软和 OpenAI 实际上在将他人的代码货币化，同时让使用这些代码的人们不能正确地表明归属信息。

Copilot 必须毁灭。或者，微软和 OpenAI 可以造一台时光机，然后穿越到过去，将 Copilot 数据库中的每一点数据做标记，从而能够为所有输出提供正确的署名。但是，与其去关心你产品或者服务中的伦理问题，不如去鼓动人们，去开拓那荒野西部似的监管环境，后者总是更加简单的。

*（题图：MJ/1a101872-c0d6-475e-b3e2-3646c9a2d66b）*

---

via: <https://www.opensourceforu.com/2022/07/github-copilot-is-only-effective-because-it-steals-open-source-code/>

作者：[Laveesh Kocher](https://www.opensourceforu.com/author/laveesh-kocher/) 选题：[lkxed](https://github.com/lkxed) 译者：[Peaksol](https://github.com/TravinDreek) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1035 英特尔开始出货量子处理器

Summary:
? 英特尔开始出货量子处理器
? 谷歌利用 YouTube 开发其下一代人工智能
? Meta 公司希望人们能利用其开源人工智能赚钱
»
»

技术上半斤半两，但美国人有抢先制造和应用的意图，但太快了，明显世界人民跟不上啊。<br />
AI时代的虚拟社会热点和舆论的鉴别、形成事实链条的全过程去AI化信息安全保障，毫无头绪；虽然一直在警示，可每个国家政府还是都没能及时做好迎接AI浪潮的准备。

# 硬核观察 #1035 英特尔开始出货量子处理器

### 英特尔开始出货量子处理器

这个名为 Tunnel Falls 的处理器是一款 12 量子比特的芯片，虽然远远落后于英特尔的许多竞争对手的量子比特数量，但英特尔正试图建立基于硅的量子比特，而其它的量子处理器厂商都在通过云服务提供量子处理器。这些量子比特基于“量子点”，这些结构比材料中的电子波长还要小。量子点可以用来捕获单个电子，然后可以处理电子的特性来存储量子信息。英特尔利用其制造专长来制作量子点，并创造出设置和读取其状态以及执行操作所需的所有邻近功能。

>
> **[消息来源：Ars Technica](https://arstechnica.com/science/2023/06/intel-to-start-shipping-a-quantum-processor/)**
>
>
>

>
> 老王点评：居然可以像民用芯片一样销售了？我感觉量子时代或许来的比我想象的要早。
>
>
>

### 谷歌利用 YouTube 开发其下一代人工智能

据透露，谷歌的研究人员一直在利用 YouTube 开发其下一个大型语言模型 “<ruby> 双子座 <rt>  Gemini </rt></ruby>”，该模型展示了在其他任何模型中都看不到的多模态能力。而 OpenAI 也已经秘密地使用了 YouTube 的数据来训练其一些人工智能模型，但谷歌能够拥有 YouTube 更全面的视频数据。人工智能开发者在寻找用于训练和改进模型的高质量数据方面面临着新的障碍。从 Reddit 到 Stack Exchange 再到 DeviantArt 的主要网站出版商正越来越多地阻止开发者为该目的下载数据。

>
> **[消息来源：The Information](https://www.theinformation.com/articles/why-youtube-could-give-google-an-edge-in-ai)**
>
>
>

>
> 老王点评：人工智能下面一个竞争优势就是，看谁拥有大量的数据。所以，我有点明白 Reddit、Twitter 为什么要对其 API 收高价了，可能广告的流失可能并不是主要的原因，因为这种情况并不是第一天存在了。
>
>
>

### Meta 公司希望人们能利用其开源人工智能赚钱

Meta 公司正在研究如何将其开源的大语言模型的下一个版本用于商业用途，他们希望其他公司自由使用 Meta 正在开发的新人工智能软件并从中获利，这一决定可能会对其他人工智能开发者和越来越多地采用它的企业产生重大影响。随着开发者采用和改进这些 Meta 开源的模型或修补其安全漏洞，Meta 也将能够把这些改进纳入其自己的消费者和广告产品的人工智能模型中。

>
> **[消息来源：The Information](https://www.theinformation.com/articles/meta-wants-companies-to-make-money-off-its-open-source-ai-in-challenge-to-google)**
>
>
>

>
> 老王点评：Meta 公司显然是走一条弯道超车的方法，走开源的路，让其它人无路可走。
>
>
>


Tube Downloader：下载 YouTube 视频的开源工具

# Tube Downloader：下载 YouTube 视频的开源工具

>
> 出于研究目的需要下载 YouTube 视频吗？ Tube Downloader 可以提供帮助。
>
>
>

找到了你想要保存以供离线使用的 YouTube 视频，同时又想不选择他们的付费计划？

好吧，那么你可以使用 Tube Downloader。它是 “[yt-dlp](https://github.com:443/yt-dlp/yt-dlp)” 的前端，提供了一些简洁的功能。

>
> ? 未经许可下载 YouTube 视频是违反平台政策的。因此，这些工具在官方商店中不可用。我们不鼓励你将该工具用于非法目的，仅提及该工具用于研究和实验目的。
>
>
>

### Tube Downloader：概述 ⭐

**Tube Downloader 主要使用 C# 编写，是一个跨平台的开源工具**，可让你轻松直接从 YouTube 下载视频。

请允许我向你展示此应用的功能。

当你启动应用时，“<ruby> 添加下载 <rt>  Add Download </rt></ruby>”按钮会显示一个友好的问候语。单击它以添加 YouTube 视频 URL，然后单击“<ruby> 验证 <rt>  Validate </rt></ruby>”。

当你这样做时，你将看到用于选择文件格式、质量、字幕、保存位置等的选项。

>
> ? 你可以选择 MP3 作为仅下载音频的文件格式。
>
>
>

单击“<ruby> 下载 <rt>  Download </rt></ruby>”开始下载视频。

你会在主页面上看到下载进度，你可以在其中看到视频的标题以及 URL 和下载速度。

此外，Tube Downloader 在下载完成时显示通知； 但是当我测试它时，它有点不稳定。

那不是全部。Tube Downloader 也有一些不错的自定义选项，例如：

* 适配系统主题。
* 在后台运行。
* 能够限制最大并发下载量。
* 设置下载速度限制。
* 选择使用 “Aria2” 作为替代下载器。
* 启用/禁用在下载的视频中包含元数据。
* 停止/重试所有下载并清除所有排队的下载。

这些可以从功能区菜单下的“<ruby> 首选项 <rt>  Preferences </rt></ruby>”访问。

看到 Linux 客户端工作得相当好，Tube Downloader 对于下载那些令人上瘾的快乐的猫咪模因和其他东西是很有用的 ? （我们不做评价）。

### ? 获取 Tube Downloader

Tube Downloader 可在 **Linux** 和 **Windows** 中的 [Flathub](https://flathub.org:443/apps/org.nickvision.tubeconverter)、[Snap 商店](https://snapcraft.io:443/tube-converter) 和 [微软商店](https://apps.microsoft.com:443/store/detail/nickvision-tube-converter/9PD80NNX004P) 中获取 。

>
> **[Tube Downloader（Flathub）](https://flathub.org:443/apps/org.nickvision.tubeconverter)**
>
>
>

你还可以在 [GitHub](https://github.com:443/NickvisionApps/TubeConverter) 上查看其源代码。

你想知道我从 YouTube 下载了哪些视频吗？ ?好吧，你可以在我们的 [YouTube 频道](https://www.youtube.com:443/@Itsfoss) 上查看这些内容。

---

via: <https://news.itsfoss.com/tube-downloader/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


你的笔记本电脑上有哪些贴纸？

看来只有国内的程序员才会捆绑二次元

还得是 Seth Kenlon

就像华硕的天选系列

在国外就是

tuf gaming

模具都一样

就是换了颜色

# 你的笔记本电脑上有哪些贴纸？

>
> 你的笔记本电脑就像一块空白的画布，可以用来展示个性化的装饰。你最喜欢的贴纸是什么？参与我们的调查，然后看看其他开源爱好者都说了些什么。
>
>
>

去年 12 月刚刚换了工作用的笔记本电脑后，我意识到我有多么喜欢给我的工作设备贴贴纸。这些贴纸有些是过去活动的纪念品，有些是我热衷的项目的标志，还有一些则只是为了好玩！

因为好奇别人的笔记本上贴了什么，我对周围的同事朋友问了一圈。

### 无障碍倡导者

这是我的工作笔记本电脑（你能看出我对 Drupal 的热爱吗）。我最喜欢的贴纸是有轮椅的 Druplicon... 当 [Drupal 8 发布时，我们把这个标志](https://www.drupal.org/files/cta/graphic/drupal%208%20logo%20isolated%20CMYK%2072_1.png) 和轮椅结合在一起，因为我所在的机构专注于无障碍性。

— [AmyJune Hineline](https://opensource.com/users/amyjune)

### 充满活力的 Java

自从我还是个孩子的时候，我的电脑和其他东西上就一直有贴纸。我认为我最喜欢的要么是 “Tux”，要么是 “Linux Inside”。它们大多与领域相关，只有一些不相关的。在右下角，我有一个运行在“汤姆猫”上的 Java 贴纸（哈哈）- 这是我职业生涯中花费大部分时间的领域。

— [Alan Formy-Duval](https://opensource.com/users/alanfdoss)

### 实用目的

嗯，我没有贴任何贴纸。然而，我在我的两台笔记本电脑上粘了绒面条，用来固定我的移动硬盘，这样我在公交车上玩游戏时就不会掉落了。我还粘了一个锁槽。

— [Rikard Grossman-Nielsen](https://opensource.com/users/rikardgn)

### 保持外观

虽然这不是最装饰得最多的笔记本电脑，但我喜欢这套集合（你知道的，很难在没有旅行的情况下获得更多！）

我最喜欢的是“最后一个提交的人是维护者”。这是对维护状态的讽刺性评论，也承诺代码将因此而继续存在。

主要是关于我使用或贡献的事物，我认为有意义，或者只是觉得这个贴纸很棒。

— [John 'Warthog9' Hawley](https://opensource.com/users/warthog9)

### 盖掉 Windows

我从不在笔记本电脑上贴贴纸，因为对我来说，真正酷的贴纸似乎都是我没有的那些（一个脾气暴躁的老人说的）。

但是我孩子们在高中时用过的那台旧的组装计算机，一台拥有 3GHz Core Duo 处理器和 8GB 内存的机器上贴着一个我几年前在温哥华的 Linux 基金会开源峰会上拿到的 Open Mainframe 贴纸。我相当喜欢那个贴纸。

还有，因为在我的生活中，`Control` 键位于 `A` 键旁边，而不是在底部行，所以我周围有一些键盘上有一个 `CTRL` 贴纸在 `CapsLock` 键上，还有一个 `CAPS` 贴纸在 `Control` 键上，它们与 GNOME 调整工具中的 [交换 Ctrl 和 CapsLock 选项](https://opensource.com/article/18/11/how-swap-ctrl-and-caps-lock-your-keyboard) 一起使用。

最后，过去我会剥掉那些带有 Windows 标志的贴纸，因为当时我唯一的选择是购买带有 Windows 税的计算机，并用 Linux 贴纸覆盖上面的胶片。同样，对于带有 Windows 标志的 `Super` 键的键盘，我也会这样做。

### 纪念品

迄今为止，Kanopi 贴纸是我最喜欢的贴纸。它不仅闪闪发光，而且呈现出七彩光泽，它时刻提醒我这家公司是多么令人惊奇。他们真的把员工放在首位，并在选择与 Kanopi 的整体公司使命和愿景相符的客户项目时非常周到。

Curt V8 贴纸是对一位亲密朋友的纪念。他热爱福特，而我丈夫喜欢雪佛兰。这种有趣的竞争导致我们在车库里乱放着福特和雪佛兰的物品，这取决于我们在哪家住。每次我看到这个仿制的福特贴纸时，我都会微笑，因为我生活在一个雪佛兰家族。

各种贴纸代表了我们多年来的家庭冒险。约会之夜，朋友，家庭公路旅行，惊险的徒步探险（天使阁），以及我年幼孩子争取从每个城市和州获得一张警察贴纸的动力。

—[Kristine Strange](https://opensource.com/users/strangemama)

### 会议福利品

龙是 [我所就读大学的吉祥物](https://www.uab.edu)。我还贴了一些 Gilmore Girls 和咖啡贴纸。

这是我女儿房门的照片，上面贴满了我多年来从各种会议上带回来的贴纸。

— [Cindy Williams](https://opensource.com/users/cindytwilliams)

### 贴上鸡

这是我非工作用的笔记本电脑。我的工作笔记本电脑基本上被覆盖在一层蜂窝状的六边形贴纸中，上面印有我们的产品、我使用和支持的开源项目，以及至少一个 [Opensource.com](http://Opensource.com) 的六边形贴纸。 : )

我无法挑出最喜欢的，因为它们都是我喜欢的，否则我就不会把它们贴在我随身携带的笔记本电脑上。我特别喜欢鸡、渡鸦和手持刀具的 Sergi the Cat。

—[Kevin Sonney](https://opensource.com/users/ksonney)

### 美食趣味

我过去经常在笔记本电脑上贴满贴纸。去年买的这台电脑很快就贴满了：

我最喜欢的是杯子蛋糕和甜甜圈标志，因为是我自己画的。我刚刚购买了一台 [System76](https://opensource.com/article/19/5/system76-secret-sauce) 的 Darter Pro 笔记本电脑，我非常喜欢它。我得到了一堆很酷的贴纸，但我一直不确定是否要把它们贴在笔记本上。我不知道为什么。

— [DJ Billings](https://opensource.com/users/itsjustdj)

### 保持简洁

我在我的笔记本电脑上不贴很多贴纸，但目前正在使用的这台笔记本上贴着我最喜欢的两个贴纸，它是 System76 的 Darter Pro。

—[Don Watkins](https://opensource.com/users/don-watkins)

### 生活的必需品

我还包括了我的水瓶。我想我更喜欢那些贴纸。

啤酒，狗，音乐，牛角面包。我还需要什么？

— [Katie Sanders](https://enterprisersproject.com/user/katie-sanders)

### 我的座右铭

我最喜欢的贴纸是 “yeet or be yeeted”。

— [Faye Polson](https://twitter.com/faye_polson)

### 大蒜

大部分贴纸都是专业的，但 “Greetings from Hamunaptra”、“City of the Dead” 贴纸隐晦地参考了我最喜欢的电影之一《<ruby> 木乃伊 <rt>  The Mummy </rt></ruby>》（1999），是由 Brendan Fraser 和 Rachel Weisz 主演的。

旗帜和 “Blackbeard's Bar & Grill” 贴纸指的是对我完全痴迷的 “Our Flag Means Death”。

而大蒜则是我朋友商店的 Cosmic Garlic 贴纸。大蒜在民间被用作各种疾病的草药疗法，所以在疫情期间把它放在笔记本电脑上似乎是一件好事。

— [Tiffany Bridge](https://tiff.is/)

### 开源项目

我通常会贴上我使用、贡献或钦佩的项目的贴纸。统计数据显示，我的笔记本电脑现在应该被覆盖了更多的贴纸。我已经三年没参加科技会议了，所以进展比以往慢一点。

— [Seth Kenlon](https://opensource.com/users/seth)

### Drupal 装点一新

我会添加一些代表我在技术领域的贴纸。所以我会包括我所参与的组织、我参加过的活动和我支持的项目。

见到人们笔记本电脑上的 Drupal 熊总是很有趣，因为我设计了它。

请注意，我所有的贴纸都贴在笔记本电脑外壳上以便保存。

— [April Sides](https://opensource.com/users/weekbeforenext)

### 对 WordPress 狂热

我很难选出最喜欢的，但可能是 “Michelle wapuu”！她就是我！

贴纸 “I press all the words” 和 “WordPress is my super power” 是来自 WordCamp Rochester，所以它们对我来说很重要。

基本上，如果我和某个贴纸有渊源（比如我在营地演讲过），或者我只是喜欢它，我就会贴上它！

— [Michelle Frechette](https://meetmichelle.online)

### 对艺术的热衷

我非常偏爱艺术贴纸。在电脑上看到艺术作品让我想起认识的人和使用这台电脑时的经历。

我最喜欢的是我的伴侣给我的悲伤表情 Midsommar 贴纸。第一次看完电影后，我们在剧院外花了几个小时讨论它，一直讨论到深夜。直到今天我们还在提到它。

— [Jonathan Daggerhart](https://opensource.com/users/daggerhart)

### 自定义外观

我在 2019 年买了一台新的旅行笔记本电脑，自那以后一直保持着原样，因为我没有参加任何活动。我的工作笔记本电脑上有一个女神 Ereshkigal 的定制外观贴纸，我以她的名字来命名这台电脑。

— Sallie Goetsch

### GNU Emacs

一个 GNU Emacs 的贴纸。

— [Sachin Patil](https://opensource.com/users/psachin)

### [Opensource.com](http://Opensource.com)

在看到大家的回复后，也许收到了非常聪明的社区经理寄来的一些很酷的贴纸...

好吧，好吧，我投降了！AmyJune、Don 和 Sachin 说服我在笔记本电脑上贴一个贴纸。

这是一张显示我笔记本电脑上独特贴纸的照片：

— Chris Hermansen

### 贴纸和开源

你不必为你的计算机贴满贴纸。这不是必须的，当然这也不能说明你比其他人更或更少热爱开源。但如果你喜欢一个开源项目，很有可能它有一款贴纸可以用来装饰你的计算机（或者你的门、水瓶或 USB 麦克风）。请放心，如果你热爱开源，同时你也喜欢贴纸，那两者之间有很强的交集！

*（题图：MJ/3f69639a-1aab-46d8-97ee-ab095de96e5f）*

---

via: <https://opensource.com/article/22/11/laptop-stickers>

作者：[AmyJune Hineline](https://opensource.com/users/amyjune) 选题：[lkxed](https://github.com/lkxed) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1036 众包工人用 AI 为 AI 做数据标注工作

Summary:
? 众包工人用 AI 为 AI 做数据标注工作
? FreeBSD 本月庆祝其三十岁生日
? GPT-4 生成的商业计划书更受投资者青睐
»
»

# 硬核观察 #1036 众包工人用 AI 为 AI 做数据标注工作

### 众包工人用 AI 为 AI 做数据标注工作

AI 模型是建立在人类劳动的基础之上的，高质量的数据标注对 AI 模型至关重要，AI 公司通常会雇佣廉价的众包工人做一些数据标注工作。但研究显示，随着 AI 聊天机器人，如 ChatGPT 的流行，众包工人开始利用 AI 做这些数据标注的工作。瑞士洛桑联邦理工学院的研究人员招募了 44 名众包工人来对 16 篇医学研究论文总结摘要，根据记录的击键情况，比如按下复制快捷键等，他们估计有 33-46% 的摘要文本是用 AI 生成的。

>
> **[消息来源：The Register](https://www.theregister.com/2023/06/16/crowd_workers_bots_ai_training/)**
>
>
>

>
> 老王点评：还记得前两天我们的[#1032 期报道](/article-15906-1.html)吗，显然这种 AI 吃 AI 的狗粮的事情已经在发生，并且会越来越多。而且，AI 真的能分清楚哪些是 AI 生成的么？可能会越来越难。
>
>
>

### FreeBSD 本月庆祝其三十岁生日

1993 年 6 月 19 日，从 386BSD 项目中分裂出来的 FreeBSD 正式有了这个名字。但第一个正式版本直到 1993 年 11 月才发布。FreeBSD 14 将于未来几个月后发布，晚于预期计划。

>
> **[消息来源：FreeBSD](https://freebsdfoundation.org/news-and-events/newsletter/12518/)**
>
>
>

>
> 老王点评：虽然不如 Linux 那么流行，但是 FreeBSD 仍然是一个独特而重要的操作系统。当然，这里面故事很多，感兴趣的朋友可以了解一下。
>
>
>

### GPT-4 生成的商业计划书更受投资者青睐

虽然用 AI 撰写商业计划书能节约很多时间，但更重要的是，AI 撰写的比人类撰写的更好，更吸引投资。有公司邀请了数百名投资者和企业主对一组由人类创造和 GPT-4 生成的商业计划书进行评分，他们并不知道有 AI 参与撰写。而且，其中人类撰写的计划书来自于已经获得融资的成功案例。结果显示 GPT-4 生成的商业计划书比人类更有效，被认为在质量、关键要素描述和问题描述上胜过人类。调查显示，在投资者和企业主阅读了 GPT-4 的计划书之后，投资可能性为人类的三倍，他们认为 AI 生成计划书的说服力是人类的两倍。

>
> **[消息来源：ZDNet](https://www.zdnet.com/article/gpt-4-generated-pitches-are-3x-more-likely-to-secure-funding-than-human-ones/)**
>
>
>

>
> 老王点评：投资人可能会想，那我为什么不直接投资 AI 创建的企业呢？这一天或许不远了。
>
>
>


Bash 基础知识系列 #1：创建并运行你的第一个 Bash Shell 脚本

Summary: 这是一个新教程系列的开始。在这一篇中，你将熟悉 Bash 脚本。

准确来说，文章中介绍的是 Linux shell 命令而非 Linux 脚本。

这是一个新教程系列的开始。在这一篇中，你将熟悉 Bash 脚本。

# Bash 基础知识系列 #1：创建并运行你的第一个 Bash Shell 脚本

>
> 这是一个新教程系列的开始。在这一篇中，你将熟悉 bash 脚本。
>
>
>

本系列假定你对 Linux 终端比较熟悉。你不必精通，但了解基础知识会很好。我建议阅读终端基础知识系列。

### 这个系列适合谁？

任何想开始学习 Bash Shell 脚本的人。

如果你是一名将 Shell 脚本作为课程的一部分的学生，那么本系列适合你。

如果你是普通的桌面 Linux 用户，本系列将帮助你了解在探索各种软件和修复程序时遇到的大多数 Shell 脚本。你还可以使用它来自动执行一些常见的重复性任务。

到本 Bash 基础系列结束时，你应该能够编写简单到中等水平的 Bash 脚本。

该系列的所有章节都有示例练习，你可以边做边学。

>
> ? 你将在这里学习 Bash Shell 脚本。虽然还有语法基本相同的其他 Shell，但它们的行为在某些方面仍然存在差异。Bash 是最常见和通用的 Shell，因此学习 Shell 脚本从 Bash 开始吧。
>
>
>

### 你的第一个 Shell 脚本：Hello World！

打开一个终端。现在 [创建一个新目录](https://itsfoss.com/make-directories/) 来保存你将在本系列中创建的所有脚本：

```
mkdir bash_scripts

```

现在 [切换到这个新创建的目录](https://itsfoss.com/change-directories/)：

```
cd bash_scripts

```

让我们在这里 [创建一个新文件](https://itsfoss.com/create-files/)：

```
touch hello_world.sh

```

现在，[编辑该文件](https://itsfoss.com/edit-files-linux/) 并向其中添加一行 `echo Hello World`。你可以使用 `cat` 命令的追加模式（使用 `>`）执行此操作：

```
[abhishek@itsfoss]:~/bash_scripts$ cat > hello_world.sh
echo Hello World
^C

```

我更喜欢在使用 `cat` 命令添加文本时添加新行。

按 `Ctrl+C` 或 `Ctrl+D` 键退出 `cat` 命令的追加模式。现在，如果你查看脚本 `hellow_world.sh` 的内容，你应该只看到一行。

关键时刻来了。你已经创建了第一个 Shell 脚本。是时候 [运行 Shell 脚本](https://itsfoss.com/run-shell-script-linux/) 了。

这样做：

```
bash hello_world.sh

```

`echo` 命令只是显示提供给它的任何内容。在这种情况下，Shell 脚本应该在屏幕上输出 “Hello World”。

恭喜！ 你刚刚成功运行了第一个 Shell 脚本。多么酷啊！

以下是上述所有命令的重放，供你参考。

#### 另一种运行 Shell 脚本的方法

大多数时候，你将以这种方式运行 Shell 脚本：

```
./hello_world.sh

```

这将产生错误，因为作为脚本的文件还没有执行权限。

```
bash: ./hello_world.sh: Permission denied

```

给脚本添加执行权限：

```
chmod u+x hello-world.sh

```

现在，你可以像这样运行它：

```
./hello_world.sh

```

因此，你学习了两种运行 Shell 脚本的方法。是时候让我们将注意力转回 Bash 了。

### 把你的 Shell 脚本变成 Bash 脚本

感到困惑？ 实际上，Linux 中有几种可用的 Shell。Bash、Ksh、Csh、Zsh 等等。其中，Bash 是最受欢迎的，几乎所有发行版都默认安装了它。

Shell 是一个解释器。它接受并运行 Linux 命令。虽然大多数 Shell 的语法保持不变，但它们的行为在某些点上可能有所不同。例如，条件逻辑中括号的处理。

这就是为什么告诉系统使用哪个 Shell 来解释脚本很重要。

当你使用 `bash hello_world.sh` 时，你明确地使用了 Bash 解释器。

但是当你以这种方式运行 Shell 脚本时：

```
./hello_world.sh

```

系统将使用你当前使用的任何 Shell 来运行脚本。

为避免由于不同的语法处理而导致不必要的意外，你应该明确告诉系统它是哪个 shell 脚本。

怎么做？ 使用释伴（`#!`）。通常，`#` 用于 Shell 脚本中的注释。但是，如果 `#!` 用作程序的第一行，它的特殊用途是告诉系统使用哪个 Shell。

因此，更改 `hello_world.sh` 的内容，使其看起来像这样：

```
#!/bin/bash

echo Hello World

```

现在，你可以像往常一样运行 Shell 脚本，因为你知道系统将使用 Bash Shell 来运行脚本。

>
> ? 如果你觉得在终端中编辑脚本文件不方便，作为桌面 Linux 用户，你可以使用 Gedit 或其他 GUI 文本编辑器编写脚本并在终端中运行。
>
>
>

### ? 练习时间

是时候练习你学到的东西了。以下是该级别的一些基本练习：

* 编写一个打印 “Hello Everyone” 的 Bash 脚本
* 编写一个显示当前工作目录的 Bash 脚本（提示：使用 `pwd` 命令）
* 编写一个 Shell 脚本，使用以下列方式打印你的用户名：“My name is XYZ”（提示：使用 `$USER`）

答案可以在社区论坛的 [这个专门的帖子](https://itsfoss.community:443/t/practice-exercise-in-bash-basics-series-1-create-and-run-your-first-bash-shell-script/10682) 中讨论。

最后一个练习使用 `$USER`。这是一个打印用户名的特殊变量。

这就引出了 Bash 基础系列下一章的主题：变量。

请继续关注下面的内容。

*（题图：MJ/c8f6458a-84fe-4f77-9a9c-f82fef611935）*

---

via: <https://itsfoss.com/create-bash-script/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


没有Snap的Ubuntu衍生版就是好的Linux发行版

来自广东广州的 Chrome Mobile 108.0|Android 12 用户

# 比 Ubuntu 更好？Ubuntu 爱好者的 11 款最佳 Linux 发行版

如果你正在找寻适合你的系统的完美发行版，那么选择基于 Ubuntu 的发行版的可能性非常高。

你可能会问为什么。

嗯，毫不奇怪，Ubuntu 是 [最适合初学者的 Linux 发行版之一](https://itsfoss.com/best-linux-beginners/)。它也非常流行，这就是为什么你会发现它拥有庞大的用户社区。不仅如此，它还广泛用于 [云服务器](https://linuxhandbook.com/free-linux-cloud-servers/) 上。

因此，将 Ubuntu 作为 Linux 发行版的基础应该带来一些有用的优势，对吧？

这就是为什么我列出了基于 Ubuntu 的最佳发行版清单，希望你能找到一款足够出色，让你停止频繁更换发行版的选择。

### 1、Ubuntu 官方衍生版

如果你不喜欢 Ubuntu 官方提供的 GNOME 桌面环境，你可以尝试官方衍生版，它们在 Ubuntu 的基础上提供了不同的桌面环境。

简单来说，你将得到同样的 Ubuntu 使用体验，但拥有不同的用户界面。

为了让你的用户体验更加愉快，这些桌面环境已经进行了预调整和主题设置，这使它们成为了那些希望拿来即用的完美选择。

以下是可用的选项：

* Kubuntu（KDE Plasma）
* Lubuntu（最节约资源的选择，使用 LXDE/LXQT）
* Ubuntu Studio（面向创作者的发行版）
* Ubuntu Budgie（Budgie 桌面环境）
* Ubuntu Kylin（专为中国用户定制）
* Ubuntu MATE（使用 MATE 桌面和工具）
* Xubuntu（Xfce 桌面）

此外，你还可以在 Ubuntu 22.10 中发现一个带有经典 Unity 桌面环境的新的官方衍生版，因为 [Ubuntu Unity Remix 现已成为官方 Ubuntu 衍生版](https://news.itsfoss.com/unity-remix-official-flavor/)。

>
> **[解析：我应该使用哪个 Ubuntu 版本？](https://itsfoss.com/which-ubuntu-install/)**
>
>
>

>
> **[Ubuntu 衍生版](https://ubuntu.com/desktop/flavours)**
>
>
>

### 2、Linux Mint

Linux Mint 的主要特点：

* 默认不使用 Snap。
* 使用 Cinnamon 桌面环境，提供直观、易用的体验。
* 精美的用户界面。
* 对于 Windows 用户而言，具有熟悉的操作体验。
* 管理编解码器和硬件驱动程序非常方便。

如果我要用一句话来描述 Linux Mint，那就是 “简洁优雅的用户体验，足够满足高级用户的需求”。

通过 Linux Mint 的 Cinnamon 桌面环境，你可以期待到一个精心打磨和定制的体验。现在由 Linux Mint 团队开发的 Timeshift 之类的工具，可以让你享受无缝的使用体验。

Linux Mint 包括了基本必备的应用软件，包括办公套件和满足多媒体消费需求的应用程序，非常适合初学者使用。

>
> **[Linux Mint](https://linuxmint.com/)**
>
>
>

### 3、Pop!\_OS

Pop!\_OS 的主要特点：

* 开箱即用的英伟达显卡支持。
* COSMIC 桌面（定制的 GNOME 使用体验）。
* 提供窗口管理器的基本功能。
* 一个用于从灾难中恢复系统的恢复分区。

由受欢迎的开源硬件制造商 System76 开发，Pop!\_OS 22.04 LTS 是我目前的主力操作系统，而背后有着充分的理由。

Pop!\_OS 定期更新 Linux 内核包，在本文撰写时运行 Linux 内核 5.19。是的，我知道你可以 [轻松升级到最新的内核](https://itsfoss.com/upgrade-linux-kernel-ubuntu/)，但官方支持更为便捷，这正是 Pop!\_OS 作为基于 Ubuntu 的发行版的优势所在。

除了最新的内核外，你还将得到一个美观的 COSMIC 桌面，以及一些预安装的应用程序，如用于方便地安装 deb 包的 Eddy，还默认应用磁盘加密以及许多其他功能，让你获得愉快的体验！

>
> **[Pop!\_OS](https://pop.system76.com/)**
>
>
>

### 4、KDE Neon

KDE Neon 的主要特点：

* 基于 Ubuntu 平台，提供最原生的 KDE 使用体验。
* 提供最新版本的 KDE Plasma。

除非你追求最新的 KDE 体验，否则 KDE Neon 可能不适合你。换句话说，它并非旨在作为日常使用的操作系统，而是旨在提供最前沿的 KDE 体验。

如果你想体验 KDE 的最新功能，KDE Neon 仍然是最佳的基于 Ubuntu 的发行版之一。

还有很多其他基于 KDE Plasma 的发行版；如果你不是非要追求最新的体验，那么 Kubuntu 是你最好的选择。

此外，KDE Neon 仅预装了最基本的工具，以让用户有足够的空间可以自行决定在特定任务中使用什么工具。

>
> **[KDE Neon](https://neon.kde.org/download)**
>
>
>

### 5、elementaryOS

elementaryOS 的主要特点：

* 使用 Pantheon，最优雅的桌面环境之一。
* 支持画中画模式。
* 专门定制的应用中心。

所以，如果你是 macOS 的粉丝，又想体验 Linux，elementaryOS 绝对不会让你失望。

开发者专门为 elementaryOS 开发了 Pantheon 桌面环境，你会注意到它在每个方面都非常注重细节，无论是暗色模式还是强调色彩。你将会在 elementary OS 中获得出色的用户体验。

与其他 Ubuntu 发行版相比，elementaryOS 的发布周期可能不太频繁。但他们在每个版本中都致力于提供稳定的使用体验。

>
> **[elementaryOS](https://elementary.io/)**
>
>
>

### 6、Zorin OS

Zorin OS 的主要特点：

* 提供类似于 Windows 和 macOS 的不同布局。
* 能够在不需要任何调整的情况下安装 Windows 软件。
* Zorin OS 的精简版可以让十多年前的计算机重焕生机。

Zorin OS 是另一个基于 Ubuntu 的发行版，为用户提供了精心打磨的体验。其壁纸、用户界面调整和其他改进使 Linux 看起来令人惊艳。

你可以使用其工具 Zorin Connect 无缝集成你的移动设备和计算机，这样你就可以传输文件、控制音频播放，甚至使用移动设备作为触控板！

>
> **[Zorin OS](https://zorin.com/os/download/)**
>
>
>

### 7、Linux Lite

Linux Lite 的主要特点：

* 极为轻量级。
* 使用 Xfce 和 LTS 版本的 Ubuntu，提供稳定的使用体验。
* 易于使用。

所以，如果你正在寻找一个开箱即用的轻量级发行版，那么 Linux Lite 就是为像你这样的用户而设计的。它是最好的（也是最简单的）[类似于 Windows 的 Linux 发行版](https://itsfoss.com/windows-like-linux-distributions/) 之一。

稳定性是 Linux Lite 的另一个核心特点，这也解释了为什么它使用 Xfce 作为其桌面环境。

>
> **[Linux Lite](https://www.linuxliteos.com/download.php)**
>
>
>

### 8、Voyager

Voyager 的主要特点：

* 用户可以在其二合一版本中在 GNOME 和 Xfce 会话之间切换。
* 预先配置了图形用户界面元素和插件，以提供愉快的使用体验。

Voyager 是一个基于 Xubuntu 的 Linux 发行版，在其最新的 22.04 LTS explorer 版本中提供了 GNOME 和 Xfce。

这个发行版从一开始就提供了用户选择。如果你喜欢人体工程学，可以启动 GNOME 会话；或者选择 Xfce 以获得更简单和更快的体验。

Voyager 提供了一个定制外观，带给用户古老而有格调的 Linux 使用体验。

我会向喜欢在不同环境之间切换、寻找定制化体验和稳定性的人推荐使用。

>
> **[Voyager](https://voyagerlive.org/)**
>
>
>

### 9、Feren OS

Feren OS 的主要特点：

* 提供一个开箱即用的最小化配置且经过精调的 KDE 使用体验。
* 定制化，但对系统资源占用较低。
* 带有预调优的网络浏览器管理器，以获取更好的体验。

我已经提到了 Zorin OS 如何提供预配置的布局以适应你自己，但它是基于 GNOME 的。那么如果你是 KDE 的粉丝呢？那么 Feren OS 就是为你而设计的！

除了提供预配置的 KDE 使用体验外，Feren OS 的内存占用也令人信服，我给任何想要开始使用基于 KDE Plasma 桌面的 Ubuntu 发行版的人强烈推荐 Feren OS。

>
> **[Feren OS](https://ferenos.weebly.com/)**
>
>
>

### 10、LXLE

LXLE 的主要特点：

* 极其轻量级。
* 几乎整个系统都保持了主题的一致性。

LXLE 是基于 Lubuntu 的，因此你可以想象到它的内存占用会很轻。它是最好的 [轻量级 Linux 发行版之一](https://itsfoss.com/lightweight-linux-beginners/)。

因此，如果要用一个词来概括整个发行版，那就是“高效”。但这还不止。你还可以获得大量的自定义选项和预安装的壁纸集以适配外观。

当我在虚拟机中使用它时，我对系统的轻盈程度感到惊讶（**空闲时使用 360Mb 的内存**）。对于新的 Linux 用户来说，可能不是一个舒适的体验，但如果你不介意经典的用户界面和各种新东西，那么值得一试。

>
> **[LXLE](https://lxle.net/)**
>
>
>

### 11、UbuntuDDE Remix

UbuntuDDE Remix 的主要特点：

* 深度桌面环境
* 美观的用户界面

你喜欢基于 Debian 的深度 Linux 发行版吗？但是，你对尝试它没有兴趣吗？

嗯，在这种情况下，你可以尝试一下 UbuntuDDE Remix。它虽然不是官方的版本，但是它与基于 Ubuntu 的系统配合得非常好。

与深度 Linux 不同，它并非主要为中国用户定制的。因此，你会发现语言设置和软件源设置比深度 Linux 更好。

>
> **[UbuntuDDE Remix](https://ubuntudde.com/)**
>
>
>

### 你理想的基于 Ubuntu 的发行版

Ubuntu 仍然是为新手和高级用户提供易于使用的体验的首选。

有时候我们只想完成任务，而不需要定制或控制发行版的任何方面。在这种情况下，基于 Ubuntu 的发行版可以节省你的时间，并根据你的偏好提供很多选项。

**如果你必须使用上述提到的发行版中的一个，你会选择哪个？请在评论中分享 ?**

*（题图：MJ/541cb931-34af-4926-b713-6193bdd63095）*

---

via: <https://itsfoss.com/best-ubuntu-based-linux-distros/>

作者：[Sagar Sharma](https://itsfoss.com/author/sagar/) 选题：[lkxed](https://github.com/lkxed) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Summary:
? PostgreSQL 超过 MySQL 成为开发者首选数据库
? 红帽准备开发 CentOS Stream 10
? 英特尔简化其 CPU 品牌组合
»
»

代号和宣传方式的改变，可能因为一段时期芯片供应断裂导致的长尾效应失衡亟需重建。

kfdshfjkdahf jksa jkfhsda jfhasd jhfajks hfajks

为什么应该选择 PostgreSQL ?     https://www.rockdata.net/zh-cn/blog/2022/10/03/why-postgres/

PostgreSQL 文档资料汇总     https://www.rockdata.net/zh-cn/docs/

# 硬核观察 #1037 PostgreSQL 超过 MySQL 成为开发者首选数据库

### PostgreSQL 超过 MySQL 成为开发者首选数据库

Stack Overflow 2023 年 5 月的调查显示，45.55% 的受访者使用 PostgreSQL，而 MySQL 为 41.09%，SQLite 为 30.9%。三年前，同样的调查中，MySQL 占 55.6%，PostgreSQL 占 36.1%。需要注意的是，这是一个开发者调查，它并不反映生产中的使用情况。此外，微软的 SQL Server 是排名最高的全商业数据库引擎，使用比例为 25.45%，比 2020 年的 33% 有所下降。

>
> **[消息来源：Dev Class](https://devclass.com/2023/06/13/postgresql-now-top-developer-choice-ahead-of-mysql-according-to-massive-new-survey/)**
>
>
>

>
> 老王点评：其实 PostgreSQL 在特性方面一直比 MySQL 好，但是这十多年来就一直被 MySQL 压着打。我接触的第一个开源数据库是 PostgreSQL 而不是 MySQL。现在似乎 MySQL 有点颓势了，而 PostgreSQL 多年的坚持得到了开发者们的认可。如果你是开发者，你会考虑选择哪个呢？
>
>
>

### 红帽准备开发 CentOS Stream 10

根据红帽工程师分享的 Fedora Enterprise Linux Next（ELN） 计划，推出 CentOS Stream 10 的进程正在进行中，这将最终形成 Red Hat Enterprise Linux（RHEL）10 的基础。预计将在 7 月把所有 Fedora ELN 内容大量导入 CentOS Stream 10。CentOS Stream 的目标是在明年 2 月的 Fedora 40 之前，不与 Fedora 分叉。预计 RHEL 10 将在 2025 年发布。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/CentOS-Stream-10-Start)**
>
>
>

>
> 老王点评：无论如何，我都觉得红帽放弃 CentOS 的战略是一大败笔，至少这件事可以做的更好。当然，任何决定背后都有其根本利益的驱动，红帽这样做无可厚非，只是如今这个局面可能是他们最初也没预料的吧。
>
>
>

### 英特尔简化其 CPU 品牌组合

英特尔已经宣布从下一代 Meteor Lake CPU 开始对其处理器品牌进行一些改变。最小的变化是，英特尔的主流 CPU 将失去其 “i”，从 Core i3/i5/i7/i9 转变为简单的 Core 3/5/7/9。英特尔还将停止在其处理器品牌中使用 “代” 的信息 —— 不会有被宣传为 “第 14 代” 的新 CPU，但会在 CPU 编号中包含世代编号。这是英特尔处理器品牌战略更广泛调整的一部分。去年，该公司放弃了低端笔记本电脑 CPU 的奔腾和赛扬品牌名称，它现在将这些英特尔处理器称为英特尔处理器。

>
> **[消息来源：Ars Technica](https://arstechnica.com/gadgets/2023/06/next-gen-core-and-core-ultra-cpus-lose-an-i-as-intel-shuffles-its-branding/)**
>
>
>

>
> 老王点评：这些 CPU 厂商的命名真是有点随意，编号和实际的技术有时候有点脱节。
>
>
>


Zathura: 使用键盘操作的极简文档查看器

# Zathura: 使用键盘操作的极简文档查看器

文档查看器是每个 Linux 发行版的必备软件，可以用来阅读 PDF 等格式的文件。

Ubuntu 等发行版上的文档查看器一般是 [GNOME 中的 Evince](https://wiki.gnome.org/Apps/Evince)（LCTT 译注：读作 [/ɪˈvɪns/](https://en.wiktionary.org/wiki/evince)）。Evince 支持多种文件格式，非常方便。

但是除了 Evince，还有很多其他的文档阅读应用。比如 Linux 上优秀的电子书阅读应用 [Foliate](https://itsfoss.com/foliate-ebook-viewer/)（LCTT 译注：读作 [/ˈfəʊlɪɪt/](https://en.wiktionary.org/wiki/foliate)）。

最近我又发现了另一个文档查看器：Zathura。

### 用 Zathura 获得摆脱鼠标的阅读体验

[Zathura](https://pwmt.org/projects/zathura/) 是一个高度可定制的文档查看器，基于 [girara 用户界面](https://git.pwmt.org/pwmt/girara) 和几个文档库。girara 实现了一个简单、最小的用户界面。

Zathura 的加载速度极快。它极其简约，没有侧边栏、菜单栏等元素。（LCTT 译注：其实 Zathura 的界面没有那么单一，按 `Tab` 键可以显示索引页；Zathura 有一个 `guioptions` 选项来设置是否显示命令行、状态栏、水平滚动条、垂直滚动条等 GUI 元素。）

按 `:` 键可以打开 Zathura 的命令行提示符，按 `Esc` 键可以退出命令行。

如果要新建书签，可以输入 `:bmark` 后面跟想要对这个书签设置的索引号。

按 `F` 键可以高亮所有链接，每条链接附带一个序号，并且界面底部会显示命令行提示符。在命令行中输入链接对应的序号，按下回车可以用系统默认的浏览器打开该链接。

Zathura 还支持自动重新载入。如果文件被其他应用修改（LCTT 译注：比如在修改 LaTeX 源文件并重新编译得到新的 PDF 之后）， Zathura 会自动重载修改后的文件。

你还可以安装 [插件](https://pwmt.org/projects/zathura/plugins/) 来扩展 Zathura 的功能，比如阅读 <ruby> 漫画 <rt>  comics </rt></ruby> 或 PostScript 文件。

但 Zathura 有一个问题，它的界面上没有任何文档或帮助选项，初次使用会有点困难。

你可以从其 Zathura 的 [手册页](https://itsfoss.com/linux-man-page-guide/) 获取默认键盘快捷键信息。以下是其中的一部分：

* `R`：旋转
* `D`：在单页和双页查看模式之间切换
* `F`：高亮当前屏幕内的链接
* `H` `J` `K` `L`：使用 Vim 类型键移动（LCTT 译注：HJKL 分别为左、下、上、右）
* `↑` `↓` `←` `→` 键或 `PgUp`/`PgDown` 或鼠标/触摸板：上下移动
* `/`：搜索文本，按 `n` 或 `N` 移动到下一个或上一个搜索（类似于 `less` 命令）
* `Q`：关闭

Zathura 的项目网站提供了 [如何配置该软件的文档](https://pwmt.org/projects/zathura/documentation/)，不过我觉得写得不太清晰。（LCTT 译注：安装 Zathura 之后，可以使用 `man zathurarc` 查看本地的 Zathura 配置手册。）

### 在 Linux 上安装 Zathura

大多数 Linux 发行版的软件仓库都包含了 Zathura，比如 Ubuntu、Fedora、Arch 和 Debian（查找自 [pkgs.org 网站](https://pkgs.org/)）。你可以使用你的发行版上的包管理器或软件中心来安装它。

在 Debian 和 Ubuntu 系发行版上可以使用下面的命令安装 Zathura：

```
sudo apt install zathura

```

在 Fedora 上可以使用:

```
sudo dnf install zathura

```

[在 Arch Linux 上使用 pacman 安装 Zathura](https://itsfoss.com/pacman-command/):

```
sudo pacman -Sy zathura

```

如果你想查看 Zathura 的源代码，可以访问它在 GitLab 上的软件仓库：

>
> **[Zathura 源代码](https://git.pwmt.org/pwmt/zathura)**
>
>
>

### 总结

坦诚地说，我并不喜欢不使用鼠标的工具，所以我更喜欢 Nano 而不是 Vim，因为我记不住 Vim 上数不清的快捷键。（LCTT 译注：其实 Zathura 对鼠标是有一定支持的，单击鼠标左键可以打开链接，按住鼠标左键可以选中并复制文本，按住鼠标中键可以拖动视图，`Ctrl` + 滚动滑轮可以缩放视图。）

我知道有很多人坚信键盘比鼠标更高效。但我并不愿意专门学习如何配置文档查看器，主要是因为我在桌面上很少阅读大量文档，当我偶尔需要查看 PDF 时，默认的应用已经够用了。

当然，我不是说 Zathura 没有用处。如果你需要处理大量 PDF 或 LaTeX 等的文档，而且偏爱于键盘操作，Zathura 可能会成为你下一个最喜爱的工具。

*（题图：MJ/80da04de-1312-43c1-86d7-3be340b12bd7）*

---

via: <https://itsfoss.com/zathura-document-viewer/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[tanloong](https://github.com/tanloong) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


十大采用 KDE Plasma 的 Linux 发行版

# 十大采用 KDE Plasma 的 Linux 发行版

>
> 你是否计划在 Linux 上采用以 KDE Plasma 为基础的稳定桌面环境，并打算将其作为日常工作环境？在这里，我们为你介绍与 KDE Plasma 更好集成的前十个 Linux 发行版。
>
>
>

KDE Plasma 桌面环境如今已经成为数百万用户的选择。借助活跃的开发者和社区的支持，它不断改进并推出与技术潮流相符的新功能。经过多年的发展，KDE 技术现在已经能够运行在桌面、笔记本电脑、平板电脑、手机和手持游戏设备上。这对于一个桌面环境来说是非常令人惊叹的，不是吗？

我经常听到或读到 KDE 桌面的各种问题，或者与 GNOME 相比被认为它的“选项太多”。我同意这些观点。但是我们不能忽视一个事实，尽管有这些争议和不同看法，KDE Plasma 桌面环境仍然是任何个人或企业使用场景的首选解决方案之一。它有一个成熟的路线图，采用独特的 Qt 技术构建，甚至能够在汽车和其他平台上运行。此外，它还有一个专门的基金会，拥有大量开发者，每天在努力改进这个桌面环境。

这就是为什么我撰写这篇文章的目的。有数百种 Linux 发行版支持 KDE Plasma 桌面环境。但是应该选择哪一个呢？它们各自有什么优势和劣势？哪一个对我来说最好？我们将在本文中尝试回答所有这些问题，并帮助你自行做出决策。

### KDE Plasma 桌面的十大 Linux 发行版

我基于使用情况而非技术术语（如安装、终端使用等）编制了以下列表。

#### 1、Kubuntu

[Kubuntu](https://kubuntu.org/) 是 Ubuntu Linux 操作系统的官方 KDE Plasma 桌面版本。它使用与 Ubuntu 相同的基础软件包，并遵循 Ubuntu 的发布计划。这意味着它在 Ubuntu 发布新版本时也会发布新版本。由于基于 Ubuntu，你可以享受到伴随 Kubuntu 版本的庞大的帮助和支持社区。Kubuntu 是目前最广泛使用的 KDE Plasma 桌面。

优点：

* 在质量方面非常稳定 - 包括 LTS 和非 LTS 版本
* LTS 版本提供 5 年支持
* 庞大的社区帮助系统
* 易于使用

缺点：

* 需要大约 6 个月的延迟才能获得 KDE Plasma 桌面的最新版本。这是因为 Ubuntu 要求的稳定性。

>
> **[下载 Kubuntu](https://kubuntu.org/getkubuntu/)**
>
>
>

#### 2、KDE Neon

[KDE Neon](https://neon.kde.org/) 是 KDE 官方的 Linux 发行版，它提供了来自 KDE 社区的最新 KDE Plasma 桌面、KDE 框架和 KDE 应用程序。这个基于 Ubuntu 的 Linux 发行版直接来自 KDE 开发团队。KDE Neon 有两个版本：用户版和开发者版。用户版适用于所有希望体验经过测试且可用的最新 KDE Plasma 桌面的人。它可能会有一些小问题，但对我来说并不是致命问题。开发者版则专为开发人员提供，其中包含最新的软件包。这适合那些在 Linux 平台上有一些经验，并且有时间解决偶尔问题的人，但它也相当稳定。

优点：

* 最新的 KDE 应用程序、软件包和框架
* 基于 Ubuntu 基础
* 第一时间获得新的 KDE Plasma 版本

缺点：

* 可能会有偶尔的问题

>
> **[下载 KDE Neon](https://neon.kde.org/download)**
>
>
>

#### 3、Fedora KDE 定制版

[Fedora Linux](https://spins.fedoraproject.org/en/kde/) 是一个由红帽拥有并得到社区支持的基于 RPM 包管理器的 Linux 发行版。这个自由开源的 Linux 发行版提供领先的软件包和技术，并支持 KDE Plasma 版本。尽管其官方版本采用 GNOME 桌面，但也提供了一个 KDE Plasma 的“定制版”。每年会有两次 Fedora 发布，你可以在每个发布版本中获得最新的 KDE 软件包。理论上，它与 Kubuntu 类似，唯一的区别在于其底层的软件包管理和一个不同的赞助公司。

优点：

* 设计良好且稳定的 Linux 发行版
* 每年提供两次新的 KDE Plasma 发布
* 适合新手和高级用户
* 提供多功能的社区支持

缺点：

* Fedora Linux 使用 KDE 可能对完全新手用户来说稍微复杂

>
> **[下载 Fedora KDE 定制版](https://spins.fedoraproject.org/kde/download/index.html)**
>
>
>

#### 4、OpenSUSE KDE 版

[openSUSE](https://get.opensuse.org/leap/) 是一个为新手和有经验的用户定制的完备的 Linux 发行版。它由 SUSE Linux 和其他公司赞助。它支持 KDE Plasma 桌面作为其中一个桌面环境选择。使用 OpenSUSE KDE 版，你可以选择最新的 KDE 技术的滚动发布版本（称为 Tumbleweed），或者选择稳定且经过充分测试的 KDE Plasma 的长期支持版本（称为 Leap）。如果你想尝试非 Ubuntu、非 Fedora 的 KDE Plasma 发行版，那么这是一个不错的选择。

优点：

* 具有良好商业声誉的 Linux 发行版，因此提供了与 KDE 配套的高质量 Linux 系统
* 提供滚动发布和长期支持版本
* 支持多种硬件平台（单板设备、瘦客户端终端、台式机、笔记本电脑、PowerPC 等）

缺点：

* 可能不太出名的 Linux 发行版，因此通过论坛获得的免费支持可能较少

>
> **[下载 OpenSUSE KDE 版本（Leap）](https://get.opensuse.org/leap/)**
>
>
>

#### 5、Manjaro KDE 版

[Manjaro Linux](https://manjaro.org/) 是基于 Arch Linux 的 Linux 发行版，采用滚动发布模型。它是一个非常快速、用户友好的桌面操作系统，具有自动硬件检测、多个 Linux 内核支持和良好设计的配置设置等许多优点。Manjaro 带有的 KDE Plasma 桌面非常适合那些略懂 Linux 而又想体验带有 KDE 的 Arch Linux 的人。

优点：

* 滚动发布模型，在官方 Plasma 发布后一两周内提供最新的 KDE Plasma 桌面软件包
* 提供了用于 Arch 的图形化安装程序选项
* 通过论坛提供良好的社区支持

缺点：

* 由于持续的软件包更新，基于 Arch Linux 的发行版有时可能会出现错误和不稳定情况
* 可能不适合完全新手用户，或者那些希望在多年内无需重新安装的稳定系统

>
> **[下载 Manjaro KDE](https://manjaro.org/download/)**
>
>
>

#### 6、EndeavourOS KDE 版

[EndeavourOS](https://endeavouros.com/) 是一个相对较新的基于 Arch Linux 的 Linux 发行版，作为其支持的选择之一，它支持 KDE Plasma。它提供了易于使用的安装程序和预配置的桌面环境。这个 Linux 发行版的最大卖点之一是你可以选择安装哪些软件，并且预装了基于图形界面的桌面调整脚本。这是一个令人期待的发展中的 Linux 发行版。

优点：

* 基于 Arch Linux 的 KDE Plasma 桌面易于安装
* 一键操作的预制脚本，用于执行各种桌面操作（如更新）
* 支持多个 Arch Linux 内核版本
* 适合希望体验和学习带有 KDE Plasma 的 Arch Linux 的新用户

缺点：

* 相对较新的 Linux 发行版，由社区支持
* 如果你的组织计划为多个安装单位采用这个 KDE Plasma 版本，不大会选择这个发行版

>
> **[下载 EndeavourOS](https://endeavouros.com/latest-release/)**
>
>
>

#### 7、MX Linux KDE 版

[MX Linux](https://mxlinux.org/) 是一个基于 Debian 稳定分支的 Linux 发行版。Debian 是一个通用的 Linux 操作系统，是 Ubuntu 和所有衍生版的上游，它是所有这些 Linux 发行版的核心。它很少会出现问题，不会给你一个不稳定的系统。拥有了 Debian 的强大功能，MX Linux 又通过提供自家的实用工具和软件包来提供自己的特色。它的 KDE 版本非常适合所有用户，可以使用多年，特别是如果你想要一个稳定的 KDE 桌面系统。但是，由于 Debian 的发布周期较慢，你可能无法立即获得最新的技术。这意味着要获取最新的 KDE Plasma 技术，你可能需要等待 1.5 到 2 年。

优点：

* 稳定的 Linux 系统，带有经过充分测试的 KDE Plasma 软件包
* 适用于稳定性优于最新功能的系统
* 适合新用户和有经验的用户
* 为低配和老旧硬件提供良好的支持
* MX Linux 提供了一些最好的专有实用工具，可用于完成各种桌面任务

缺点：

* 它遵循 Debian 的稳定版本发布方式。因此，升级的 KDE Plasma 桌面版本需要花费数年的时间才能到达你这里。

>
> **[下载 MX Linux KDE 版本](https://mxlinux.org/download-links/)**
>
>
>

#### 8、Garuda Linux

[Garuda Linux](https://garudalinux.org/) 也是一个基于 Arch 的滚动发布发行版，其中一个版本提供了 KDE Plasma 桌面。它提供了一个易于使用的 Calamares 安装程序和其他图形工具来管理你的桌面系统。

Garuda 与其他基于 Arch 的发行版的显著区别在于它提供了一些开箱即用的工具来管理系统性能。其中一些工具包括 Zram、CPU 管理器以及用于内存管理的定制工具。

优点：

* 基于 Arch 的 Linux，具有用于内存管理的定制工具
* 官方支持的 KDE Plasma 版本

缺点：

* 相对较新的 Linux 发行版，于 2020 年 3 月首次发布
* 需要相对较高的硬件配置才能正常运行（最低 8GB 内存，40GB 存储空间）

>
> **[下载 Garuda Linux](https://garudalinux.org/downloads.html)**
>
>
>

#### 9、Nitrux

Nitrux 是一个针对 KDE Plasma 的独特 Linux 发行版。我想将它加入到这个列表中，是因为它提供了独特的开箱即用的外观。Nitrux 是一个基于 Debian SID 不稳定分支的 Linux 发行版。它提供了一个自定义的 KDE Plasma 桌面，使用了 “修改版 Plasma” Kvantum 主题进行增强。从技术上讲，这个桌面被称为 NX-Desktop，它是 KDE Plasma 的变种，提供了各种外观和感觉上的变化。这个 Linux 发行版基于 Debian 不稳定分支，使用 AppImage 进行应用程序部署，提供了最新的 KDE Plasma 技术。

优点：

* 提供了最佳的自定义 KDE Plasma 桌面版本
* 美观的 Nitrix 图标和主题，搭配 Kvuntum 强大的功能
* 支持 AppImage

缺点：

* 由于基于 Debian 的 SID 分支，有时会不稳定
* 完全依赖 AppImage，有时会产生问题
* 不适合 KDE Plasma 的初学者用户

>
> **[下载 Nitrux](https://nxos.org/)**
>
>
>

#### 10、KaOS

我想在这里提到的最后一个发行版是 [KaOS](https://kaosx.us/)，这是因为它的独特性。KaOS 是一个专为提供全新 KDE Plasma 桌面而特殊设计的 Linux 发行版，重点关注 Qt 和 KDE。它是一个滚动发布的 Linux 发行版，并且不基于 Ubuntu/Fedora，它是一个独立的 Linux 发行版。此外，它通过自家仓库提供软件包，相比于直接从 Arch Linux 获取的软件包，具有额外的质量保证。它仅适用于64位系统。

优点：

* 精心设计的 KDE Plasma 适用于新用户
* 滚动发布的自家仓库为稳定性提供了最新的 KDE Plasma 软件包，并提供了额外的质量保证

缺点：

* 不太流行，因此在论坛和谷歌搜索方面可能会得到较少的支持
* 对于完全的新用户来说，可能还不够成熟，因为找到错误可能需要更多的 Linux 知识。

>
> **[下载 KaOS](https://kaosx.us/pages/download/)**
>
>
>

### 其它基于 KDE Plasma 的 Linux 发行版

除了以上列表，你可能还想考虑从头开始安装带有 KDE 桌面的纯净 Debian 稳定版。这样可以既获得 Debian 的稳定性，又可以自定义所需的 KDE 软件包。你可以按照我们的 [Debian 安装指南](https://www.debugpoint.com/2021/01/install-debian-buster/) 来安装。

另外，我认为还有一个需要在这里提及的 Linux 发行版是 [Q4OS](https://q4os.org/)。原因是它提供了 Trinity 桌面环境，那是一个 KDE 3 的分支，而不是最新的 KDE Plasma 5+ 系列。早期的 KDE 3 版本非常可爱，拥有自己独特的美学特征。喜欢早期 KDE 桌面和小部件的用户可能会喜欢 Q4OS。

### 如何找出最适合你的 KDE Plasma Linux 发行版呢？

当你选择 Linux 发行版和桌面环境时，会考虑多个因素。例如，你可能始终需要最新的 KDE 技术，即使它有点不稳定也可以接受。另一方面，你可能需要非常稳定的系统，不需要最新的 KDE 技术。因此，基于这个思路，我们为你准备了一个快速对比表格，以帮助你做出决策。

### 结论

我们列出了一些提供了 KDE Plasma 桌面的最佳 Linux 发行版。我们还列出了一些优缺点和比较。现在，哪个是你或你的团队/学校/组织的最佳选择，完全取决于你的决策。但是说实话，这取决于你的用例、你所处的情况或者你通过采用 KDE Plasma 桌面来解决的问题。

选择很主观，每个人口味不同。考虑到这一点，我希望这些信息能为你在选择完美的 Linux 发行版中采用 KDE Plasma 桌面提供一些指导。请在下方评论框中告诉我你对上述列表和比较的看法。

*（题图：MJ/6954a449-0ab8-42d0-9d3b-d6660732a382）*

---

via: <https://www.debugpoint.com/top-linux-distributions-kde-plasma/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1038 谷歌警告员工不要使用 Bard 生成的代码

Summary:
? 谷歌警告员工不要使用 Bard 生成的代码
? Reddit 抗议活动仍在继续中
? Meta 宣布危险到不能公布代码的语音生成 AI 模型
»
»

# 硬核观察 #1038 谷歌警告员工不要使用 Bard 生成的代码

### 谷歌警告员工不要使用 Bard 生成的代码

谷歌对外宣传 Bard 有助于开发者提高工作效率，但它对内警告员工不要使用 Bard 生成的代码。谷歌解释称，它的内部使用禁令是因为 Bard 会产生不需要的代码建议，潜在会导致程序出现错误或过于复杂，软件过于臃肿，相比不使用 AI 辅助编程需要更多时间修复。该公司表示，它的目标是对其技术的局限性保持透明 —— Bard 会提出不想要的代码建议，但它还是有助于程序员。

>
> **[消息来源：路透社](https://www.reuters.com/technology/google-one-ais-biggest-backers-warns-own-staff-about-chatbots-2023-06-15/)**
>
>
>

>
> 老王点评：合着还是拿用户做小白鼠啊，所以你放心使用 AI 生成的代码用在生产环境吗？
>
>
>

### Reddit 抗议活动仍在继续中

上周一二，Reddit 版主们为了抗议 Reddit 的 API 定价政策而宣布关闭他们管理的子区，最高时期超过 90% 的子区变成了私有或限制发帖状态。直到一周后，仍有三千多个子区继续抗议，但最大的一些已经重新开放，不过这些子区将他们的抗议改为到张贴喜剧演员约翰·奥利弗的照片，“所有帖子都必须是约翰·奥利弗看起来很性感的图片”。Reddit 声称，它做出 API 价格改变是为了从 AI 需求中获利，AI 可以利用其托管的内容进行大型语言模型训练。

>
> **[消息来源：The Register](https://www.theregister.com/2023/06/19/reddit_ceo_musk_twitter/)**
>
>
>

>
> 老王点评：即便是迫于 IPO 压力，但我说，Reddit 这件事办的很糟糕，最后很可能是两败俱伤的结果。
>
>
>

### Meta 宣布危险到不能公布代码的语音生成 AI 模型

Meta 公司昨天宣布了一个名为 Voicebox 的新人工智能模型，它说这是迄今为止功能最全面的语音生成器，“但由于滥用的潜在风险”，目前没有公开提供 Voicebox 模型或代码。该模型仍然只是一个研究项目，Meta 公司说它可以从短至两秒的样本中生成六种语言的语音，未来可用于 “自然、真实” 的翻译等方面。

>
> **[消息来源：The Verge](https://www.theverge.com/2023/6/17/23764565/meta-says-its-new-speech-generating-ai-model-is-too-dangerous-for-public-release)**
>
>
>

>
> 老王点评：当一个 AI 已经不能被人类或 AI 识别时，很可能带来的风险超过收益。
>
>
>


使用 Bash 制作 Web 安全颜色

Summary: 使用 Bash 中的 for 循环，为网页创建一个方便的调色板。

使用 Bash 中的 for 循环，为网页创建一个方便的调色板。

# 使用 Bash 制作 Web 安全颜色

>
> 使用 Bash 中的 for 循环，为网页创建一个方便的调色板。
>
>
>

当计算机显示器的调色板有限时，网页设计师通常使用一组 [Web 安全颜色](https://en.wikipedia.org/wiki/Web_colors#Web-safe_colors) 来创建网站。虽然在较新设备上显示的现代网站可以显示比最初的 Web 安全调色板更多的颜色，但我有时喜欢在创建网页时参考 Web 安全颜色。这样我就知道我的网页在任何地方都看起来不错。

你可以在网上找到 Web 安全调色板，但我想拥有自己的副本以方便参考。你也可以使用 Bash 中的 `for` 循环创建一个。

### Bash for 循环

[Bash 中的 for 循环](https://opensource.com/article/19/6/how-write-loop-bash) 的语法如下所示：

```
for 变量 in 集合 ; do 语句 ; done

```

例如，假设你想打印从 1 到 3 的所有数字。你可以快速在 Bash 命令行上编写一个 `for` 循环来为你完成这项工作：

```
$ for n in 1 2 3 ; do echo $n ; done
1
2
3

```

分号是标准的 Bash 语句分隔符。它们允许你在一行中编写多个命令。如果你要在 Bash 脚本文件中包含这个 `for` 循环，你可以用换行符替换分号并像这样写出 `for` 循环：

```
for n in 1 2 3
  do
    echo $n
  done

```

我喜欢将 `do` 和 `for` 放在同一行，这样我更容易阅读：

```
for n in 1 2 3 ; do
  echo $n
done

```

### 一次多个 for 循环

你可以将一个循环放在另一个循环中。这可以帮助你迭代多个变量，一次做不止一件事。假设你想打印出字母 A、B 和 C 与数字 1、2 和 3 的所有组合。你可以在 Bash 中使用两个 `for` 循环来实现，如下所示：

```
#!/bin/bash
for number in 1 2 3 ; do
  for letter in A B C ; do
    echo $letter$number
  done
done

```

如果将这些行放在名为 `for.bash` 的 Bash 脚本文件中并运行它，你会看到九行显示了所有字母与每个数字配对的组合：

```
$ bash for.bash
A1
B1
C1
A2
B2
C2
A3
B3
C3

```

### 遍历 Web 安全颜色

Web 安全颜色是从十六进制颜色 `#000`（黑色，即红色、绿色和蓝色值均为零）到 `#fff`（白色，即红色、绿色和蓝色均为最高），每个十六进制值的步进为 0、3、6、9、c 和 f。

你可以在 Bash 中使用三个 `for` 循环生成 Web 安全颜色的所有组合的列表，其中循环遍历红色、绿色和蓝色值。

```
#!/bin/bash
for r in 0 3 6 9 c f ; do
  for g in 0 3 6 9 c f ; do
    for b in 0 3 6 9 c f ; do
      echo "#$r$g$b"
    done
  done
done

```

如果将其保存在名为 `websafe.bash` 的新 Bash 脚本中并运行它，你就会看到所有 Web 安全颜色的十六进制值的迭代：

```
$ bash websafe.bash | head
#000
#003
#006
#009
#00c
#00f
#030
#033
#036
#039

```

要制作可用作 Web 安全颜色参考的 HTML 页面，你需要使每个条目成为一个单独的 HTML 元素。将每种颜色放在一个 `<div>` 元素中，并将背景设置为 Web 安全颜色。为了使十六进制值更易于阅读，将其放在单独的 `<code>` 元素中。将 Bash 脚本更新为如下：

```
#!/bin/bash
for r in 0 3 6 9 c f ; do
  for g in 0 3 6 9 c f ; do
    for b in 0 3 6 9 c f ; do
      echo "<div style='background-color:#$r$g$b'><code>#$r$g$b</code></div>"
    done
  done
done

```

当你运行新的 Bash 脚本并将结果保存到 HTML 文件时，你可以在浏览器中查看所有 Web 安全颜色的输出：

```
$ bash websafe.bash > websafe.html

```

这个网页不是很好看。深色背景上的黑色文字无法阅读。我喜欢应用一些 HTML 样式来确保十六进制值在颜色矩形内以黑色背景上的白色文本显示。为了使页面看起来非常漂亮，我还使用 HTML 网格样式来排列每行六个框，每个框之间留出一些空间。

要添加这种额外的样式，你需要在 for 循环前后包含其他 HTML 元素。顶部的 HTML 代码定义样式，底部的 HTML 代码关闭所有打开的 HTML 标签：

```
#!/bin/bash

cat<<EOF
<!DOCTYPE html>
  <html lang="en">
  <head>
    <title>Web-safe colors</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">

<style>
div {
  padding-bottom: 1em;
}

code {
  background-color: black;
  color: white;
}

@media only screen and (min-width:600px) {

body {
  display: grid;
  grid-template-columns: repeat(6,1fr);
  column-gap: 1em;
  row-gap: 1em;
}

div {
  padding-bottom: 3em;
}

}
  </style>
</head>
</body>
EOF

for r in 0 3 6 9 c f ; do
for g in 0 3 6 9 c f ; do
for b in 0 3 6 9 c f ; do

echo "<div
style='background-color:#$r$g$b'><code>#$r$g$b</code></div>"

done
done
done

cat<<EOF

</body>
</html>
EOF

```

这个完成的 Bash 脚本以 HTML 格式生成 Web 安全颜色指南。每当你需要引用网络安全颜色时，运行脚本并将结果保存到 HTML 页面。现在你可以在浏览器中看到 Web 安全颜色的演示，作为你下一个 Web 项目的简单参考：

```
$ bash websafe.bash > websafe.html

```

*（题图：MJ/abf9daf2-b72f-4929-8dd8-b77fb5b9d39b）*

---

via: <https://opensource.com/article/23/4/web-safe-color-guide-bash>

作者：[Jim Hall](https://opensource.com/users/jim-hall) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


活动资料下载｜LLUG 2023 北京场成功举办

# 活动资料下载｜LLUG 2023 北京场成功举办

>
> 在 6 月 11 日、6 月 12 日，由 Linux 中国主办，龙蜥社区联合主办，人民邮电出版社支持的 LLUG 2023 第一场活动在北京市北人亦创国际会展中心成功举办。
>
>
>

本次活动分为三个不同的部分：Linux 中国社区技术实践、Linux 社区发展经验分享、技术实践，来自 Linux 中国社区和龙蜥社区的技术专家们分享了自己在工作过程中的经验和积累，帮助现场的同学们了解业界最新实践。两天活动中，线下参与者近百人，线上参与者则突破了万人，帮助更多的开发者了解到 Linux 社区中最新的实践和分享。

### 现场照片

*白宦成，Linux 中国技术组组长*

*张佳，龙蜥社区机密计算 SIG Owner*

*张永超，龙蜥社区基础设施 SIG Owner*

### PPT 及视频下载

LLUG 的创办希望帮助 Linux 社区当中的每一个人都可以充分的交流经验和心得，所以我们也将本次活动的视频以及演示文稿开放出来，供大家查看。视频托管在 Bilibili，PPT 文稿则托管在 Github 的 Linux-CN/LLUG-Shares 仓库中，供大家下载。

本次活动的 PPT 及视频的汇总在这里，方便大家下载和在线查看。

| 主题 | 演讲 | 主讲人 | PPT | 在线视频 |
| --- | --- | --- | --- | --- |
| 技术实践 | 使用人工智能驱动开源翻译组 | 白宦成 | [PPT 下载](https://github.com/Linux-CN/LLUG-Shares/blob/main/Beijing/2023.06-YiZhuang/6.11%20%E7%99%BD%E5%AE%A6%E6%88%90-%E4%BD%BF%E7%94%A8%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E9%A9%B1%E5%8A%A8%E5%BC%80%E6%BA%90%E7%BF%BB%E8%AF%91%E7%BB%84.pdf) | [Bilibili](https://www.bilibili.com/video/BV1cz4y1v71P/) |
| 社区发展 | 龙蜥社区介绍 | 张金利 | [PPT 下载](https://github.com/Linux-CN/LLUG-Shares/blob/main/Beijing/2023.06-YiZhuang/6.11%20%E5%BC%A0%E9%87%91%E5%88%A9-%E9%BE%99%E8%9C%A5%E7%A4%BE%E5%8C%BA%E4%BB%8B%E7%BB%8D.pdf) | [Bilibili](https://www.bilibili.com/video/BV1qo4y177DX) |
| 社区发展 | 机密计算与龙蜥社区云原生机密计算SIG | 张佳 | [PPT 下载](https://github.com/Linux-CN/LLUG-Shares/blob/main/Beijing/2023.06-YiZhuang/6.11%20%E5%BC%A0%E4%BD%B3-%E6%9C%BA%E5%AF%86%E8%AE%A1%E7%AE%97%E4%B8%8E%E9%BE%99%E8%9C%A5%E7%A4%BE%E5%8C%BA%E4%BA%91%E5%8E%9F%E7%94%9F%E6%9C%BA%E5%AF%86%E8%AE%A1%E7%AE%97SIG.pdf) | [Bilibili](https://www.bilibili.com/video/BV1pj411D7s1/) |
| 社区发展 | 开发者服务平台devFree | 张永超 | [PPT 下载](https://github.com/Linux-CN/LLUG-Shares/blob/main/Beijing/2023.06-YiZhuang/6.11%20%E5%BC%A0%E6%B0%B8%E8%B6%85-%E5%BC%80%E5%8F%91%E8%80%85%E6%9C%8D%E5%8A%A1%E5%B9%B3%E5%8F%B0devFree.pdf) | [Bilibili](https://www.bilibili.com/video/BV1Wk4y1M7sL/) |
| 数据加密与安全合规 | Compliance As Code 理念与龙蜥社区安全加固最佳实践介绍 | 李艺林 | [PPT 下载](https://github.com/Linux-CN/LLUG-Shares/blob/main/Beijing/2023.06-YiZhuang/6.12%20%E6%9D%8E%E8%89%BA%E6%9E%97-Compliance%20As%20Code%E7%90%86%E5%BF%B5%E4%B8%8E%E9%BE%99%E8%9C%A5%E7%A4%BE%E5%8C%BA%E5%AE%89%E5%85%A8%E5%8A%A0%E5%9B%BA%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5%E4%BB%8B%E7%BB%8D.pdf) | [Bilibili](https://www.bilibili.com/video/BV1Nh4y197fJ/?spm_id_from=333.999.0.0&vd_source=874d316c9af33a124189653f35649c3e) |
| 数据加密与安全合规 | 龙蜥社区国密生态体系 | 张天佳 | [PPT 下载](https://github.com/Linux-CN/LLUG-Shares/blob/main/Beijing/2023.06-YiZhuang/6.12%20%E5%BC%A0%E5%A4%A9%E4%BD%B3-%E9%BE%99%E8%9C%A5%E7%A4%BE%E5%8C%BA%E5%9B%BD%E5%AF%86%E7%94%9F%E6%80%81%E4%BD%93%E7%B3%BB.pdf) | [Bilibili](https://www.bilibili.com/video/BV1vM4y1n7GC/?spm_id_from=333.999.0.0) |
| 性能调优 | KeenTune ：Linux 全栈性能调优利器 | 胡玉溪、王庆龙 | [PPT 下载](https://github.com/Linux-CN/LLUG-Shares/blob/main/Beijing/2023.06-YiZhuang/6.12%20%E8%83%A1%E7%8E%89%E6%BA%AA%E3%80%81%E7%8E%8B%E5%BA%86%E9%BE%99-KeenTune%20%EF%BC%9A%20Linux%E5%85%A8%E6%A0%88%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%E5%88%A9%E5%99%A8.pdf) | [Bilibili](https://www.bilibili.com/video/BV1UM4y1n7B4/?spm_id_from=333.999.0.0&vd_source=874d316c9af33a124189653f35649c3e) |
| 性能调优 | KeenTune 性能优化动手实践 | 王润哲 | [PPT 下载](https://github.com/Linux-CN/LLUG-Shares/blob/main/Beijing/2023.06-YiZhuang/6.12%20%E7%8E%8B%E6%B6%A6%E5%93%B2-KeenTune%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E5%8A%A8%E6%89%8B%E5%AE%9E%E8%B7%B5.pdf) |  |

### Open For All，LLUG 经验与你共享

LLUG 举办的初衷是希望让大家可以从线上重归线下，与更多的人可以当面交流，迸发出灵感和创新的火花。而我们自己的力量是薄弱的，不足以支撑足够高频和多次的线下活动，我们希望有更多的人可以参与到线下活动的组织过程中。

所以，我们将我们的活动举办经验开放出来，方便有志于组织线下活动的同好们，可以和我们一起组织线下活动，促进更多的线下交流和沟通。

你可以在 <https://github.com/Linux-CN/LLUG-Guides/tree/main> 找到我们开放出来的 LLUG 活动组织手册，并参考手册，组织你自己的线下活动。

当然，在组织线下活动过程中，如果你认为手册有值得优化的点，也期待你能参与到项目的贡献当中，我们一起共建一个更好的活动组织手册。

（题图：MJ/2207efc1-0287-4d55-9211-5ba9abb7b945）


硬核观察 #1039 DeepMind 联合创始人提出新图灵测试

Summary:
? DeepMind 联合创始人提出新图灵测试
? OpenAI 准备建立 AI 应用商店
? 微软计划淘汰原生的邮件和日历应用引来批评
»
»

将 10 万美元的种子基金变成 100 万美元，我也做不到。所以。。。

来自39.152.175.69的 Firefox 102.0|GNU/Linux 用户

# 硬核观察 #1039 DeepMind 联合创始人提出新图灵测试

### DeepMind 联合创始人提出新图灵测试

阿兰·图灵在 1950 年代提出了最早的对 AI 的测试，人类评估者判断他们是在和人类还是与 AI 说话。如果 AI 能冒充人类，那么它就通过了图灵测试。DeepMind 联合创始人 Mustafa Suleyman 在其新书中否定了传统的图灵测试，因为“它没有告诉我们系统能做什么或理解什么，是否建立了复杂的内心独白，或能在抽象的时间范围内进行规划”。他提出了新的图灵测试，“让 AI 将 10 万美元的种子基金变成 100 万美元，以此衡量 AI 是否具有类人的智能”。AI 需要研究一个电商方案，制定产品计划，找到制造商和销售商品。他预测 AI 将在两年内实现这一目标：“我们不只关心机器能说什么，我们还关心它能做什么。”

>
> **[消息来源：Business Insider](https://www.businessinsider.com/deepmind-co-founder-suggests-new-turing-test-ai-chatbots-report-2023-6)**
>
>
>

>
> 老王点评：之前我们在 [#1036](/article-15920-1.html) 报道过，AI 撰写的商业计划书获得了更多投资人的青睐，我就谈到或许以后可以直接投资 AI 管理运营的企业。现在看起来，这个日子不会太远。不过，要是 AI 都会自己赚钱了，可以自己养自己了，还要人类干啥？
>
>
>

### OpenAI 准备建立 AI 应用商店

据透露，OpenAI 正在考虑推出一个应用市场，客户可以将他们根据自己的需要定制的人工智能模型出售给其他企业。例如，可以发现在线零售交易中的金融欺诈，或回答有关特定市场的最新信息的模型。目前还不清楚 OpenAI 是否会对这些销售收取佣金，或者以其他方式从市场上获得收入。

>
> **[消息来源：The Information](https://www.theinformation.com/articles/openai-considers-creating-an-app-store-for-ai-software)**
>
>
>

>
> 老王点评：有苹果应用商店的成功在前，这真是一个聪明的主意。不过我更倾向于将来会有 AI 自己使用的一种交易机制，AI 们可以在其中交易训练数据、模型权重和特定的模型等，并通过买来或学到的“技能”换取更多的交易机会。
>
>
>

### 微软计划淘汰原生的邮件和日历应用引来批评

微软打算关闭其时常被人诟病的邮件和日历应用程序，将其功能放到新的 Windows 版 Outlook 中。然而，尽管多年来用户对这些应用程序提出了一些批评，但对上述决定有一些强烈的负面反应。有用户评论，“看到微软为 Windows 开发网络应用，却为安卓、iOS 和 MacOS 打造高质量的原生应用，这有点搞笑，但也很悲哀。”用户认为淘汰邮件和日历的决定是对 WinUI 原生工具包的信心丧失，“如果你不能将 UWP 应用程序移植到本地工具包，这基本上就是承认没有人应该建立原生 Windows 应用程序。甚至微软也不使用他们自己的工具包。”

>
> **[消息来源：The Register](https://www.theregister.com/2023/06/20/microsoft_calendar_mail_outlook/)**
>
>
>

>
> 老王点评：虽然邮件和日历应用有点鸡肋，但是连微软都不在自己的 Windows 上开发原生的应用，而用网络应用敷衍——这恐怕不完全是因为网络应用更流行，也是原生应用走衰的趋势吧。
>
>
>


5 个令人惊讶的 Linux 用途

北方广电辽宁 有线的高清机顶盒运行的是Linux

这种嵌入式设备大多都是linux系统，包括路由器

# 5 个令人惊讶的 Linux 用途

>
> Linux 主导着大多数互联网、大部分云计算和几乎所有的超级计算机。我也喜欢在 Linux 上进行游戏、办公工作和发挥创造力。
>
>
>

*开源朗读者 | 徐斯佳*

当你习惯于一个操作系统时，很容易将其他操作系统看作是“应用程序”。如果你在桌面上使用一种操作系统，你可能会认为另一种操作系统是人们用来运行服务器的应用程序，而又一种操作系统是用来玩游戏的应用程序，依此类推。有时我们会忘记操作系统是计算机管理无数任务的部分（从技术上讲，每秒数百万个任务），它们通常设计成能够执行各种任务。当有人问我 Linux *能做什么* 时，我通常会问他们想让它做什么。这没有一个单一的答案，所以这里有五个让我惊讶的 Linux 用途。

### 1、用 Linux 进行激光切割

在离我最近的创客空间里，有一台巨大的工业机器，大约和一张沙发一样大小，可以根据一个简单的线条图设计文件来切割各种材料。这是一台强大的激光切割机，令我惊讶的是，我第一次使用它时发现它只需要通过 USB 线连接到我的 Linux 笔记本电脑上。事实上，在许多方面，与许多台式打印机相比，连接这台激光切割机更容易，因为许多台式打印机需要过于复杂和臃肿的驱动程序。

使用 Inkscape 和 [一个简单的插件](https://github.com/JTechPhotonics/J-Tech-Photonics-Laser-Tool/releases/tag/v1.0-beta_ink0.9)，你可以为这台工业激光切割机设计切割线条。你可以为你的树莓派笔记本设计一个外壳，使用这些知识共享的设计方案来建造 [一个密码锁盒](https://msraynsford.blogspot.com/2016/10/laser-cut-cryptex.html)、切割一个店面标牌，或者你心目中的其他任何想法。而且，你可以完全使用开源软件来完成这些操作。

### 2、在 Linux 上进行游戏

开源游戏一直都有，最近一段时间也有一些备受瞩目的 Linux 游戏。我建造的第一台游戏电脑就是一台 Linux 电脑，我觉得我邀请过来一起玩沙发合作游戏的人们都没有意识到他们是在 Linux 上进行游戏。这是一种流畅顺滑的体验，而且取决于你愿意在硬件上花费多少，可能上无止境吧。

更重要的是，不仅游戏正在进入 Linux，整个平台也在进一步发展。Valve 推出的 Steam Deck 是一款非常受欢迎的掌上游戏机，它运行的是 Linux。更好的是，许多开源软件也在 Steam 上发布，包括 [Blender](http://blender.org) 和 [Krita](http://krita.org)，这鼓励了更广泛的采用。

### 3、在 Linux 上进行办公工作

Linux，就像生活一样，并不总是刺激的。有时，你需要一台计算机来完成一些普通的事情，比如支付账单、制定预算，或者为学校写论文或工作写报告。无论任务是什么，Linux 都可以作为一台日常的桌面电脑。你可以在 Linux 上进行“平常”的工作。

不仅局限于知名的应用程序。我在优秀的 LibreOffice 套件中做了很多工作，但在我最旧的电脑上，我使用更简洁的 Abiword。有时，我喜欢试试 KDE 的官方套件 Calligra，当需要进行精确的 [设计工作](https://opensource.com/article/21/12/desktop-publishing-scribus)（包括 [专门的过程式设计工作](https://opensource.com/article/19/7/rgb-cube-python-scribus)）时，我使用 Scribus。

使用 Linux 进行日常任务最好的地方在于，最终没有人知道你用了什么工具来完成最终产品。你的工具链和工作流程属于你自己，结果和封闭的、非开源软件产生的结果一样好，甚至更好。我发现，使用 Linux 进行日常任务让这些任务对我来说更有趣，因为开源软件本质上允许我开发达到自己预期结果的路径。我可以尝试创建解决方案，帮助我 [高效完成工作](https://opensource.com/article/21/1/raspberry-pi-productivity)，或者帮助我 [自动化重要任务](https://opensource.com/article/22/5/remote-home-assistant)，但我也享受系统的灵活性。我不想去适应我的工具链，而是调整我的工具，使它们为我工作。

### 4、在 Linux 上进行音乐制作

我是一个业余音乐家，在开始将所有制作工作转移到计算机之前，我拥有几台合成器、音序器和多轨录音机。我转向计算机音乐之所以用了比较长的时间，是因为我觉得它对我来说不够模块化。当你习惯于将物理设备互相连接，通过滤波器、效果器、混音器和辅助混音器来路由声音时，全功能应用程序看起来有点令人失望。

并不是说全功能应用程序没有受到欣赏。我喜欢能够打开一个应用程序，如 [LMMS](https://opensource.com/life/16/2/linux-multimedia-studio)，它恰好拥有我想要的一切。然而，在实际使用中，似乎没有一个计算机音乐应用程序真正拥有我所需要的一切。

当我转向 Linux 时，我发现它以模块化为基本原则构建了一个庞大的音乐制作环境。我找到了 [音序器](https://opensource.com/article/21/12/midi-loops-seq24)、合成器、混音器、录音器、补丁台等的应用程序。我可以在计算机上建立自己的工作室，就像我在现实生活中建立自己的工作室一样。在 Linux 上，音频制作得到了飞速发展，今天，开源 [应用程序](https://opensource.com/article/17/6/qtractor-audio) 可以作为统一的控制中心，同时保留了从系统其他位置提取声音的可扩展性。对于像我这样的拼贴式制作人来说，这是一个梦幻般的工作室。

### 5、在 Linux 上进行复古计算

我不喜欢扔掉旧电脑，因为很少有旧电脑是真正报废的。通常，旧电脑只是被世界其他部分“超越”了。操作系统变得过于臃肿，旧电脑无法处理，因此你不再能获得操作系统和安全更新，应用程序开始要求你的旧电脑没有的资源，等等。

我倾向于 [收留旧电脑](https://opensource.com/article/19/7/how-make-old-computer-useful-again)，将它们用作实验室机器或家庭服务器。最近，我发现在旧电脑上添加一块固态硬盘作为根分区，并使用 XFCE 或类似的轻量级桌面环境，使得即使是十年前的电脑，也可以愉快地用于期望的工作。平面设计、网页设计、编程、定格动画等任务在低配置机器上都是小菜一碟，更不用说简单的办公工作了。有了 Linux 驱动的机器，真不知道为什么企业还要升级。

每个人都有自己喜欢的“救援”发行版。我个人喜欢 Slackware 和 Mageia，它们都还发布了 32 位的安装镜像。Mageia 也是基于 RPM 的，所以你可以使用像 `dnf` 和 `rpmbuild` 这样的现代打包工具。

### 多说一句：Linux 服务器

好吧，我承认在服务器上使用 Linux 并不令人惊讶。实际上，对于那些了解 Linux 但自己不使用 Linux 的人来说，当提到 “Linux” 时，数据中心通常是他们首先想到的。然而，这种假设的问题在于它似乎明显地认为 Linux 在服务器上应该表现出色，好像 Linux 根本不需要努力一样。这是一种令人赞赏的情绪，但实际上，Linux 在服务器上表现出色是因为全球开发团队付出了巨大努力，让 Linux 在其所从事的工作上特别有效。

Linux 之所以成为强大的操作系统，主要是因为它驱动着大部分互联网、[主导着大部分云计算](https://opensource.com/article/20/10/keep-cloud-open)、几乎所有现有的超级计算机以及更多应用领域。Linux 并非止步不前，尽管它有着丰富的历史，但它并没有深陷传统而无法进步。新技术正在不断发展，Linux 也是这一进步的一部分。现代 Linux 适应了不断变化的世界对增长需求的要求，使得系统管理员能够为全世界的人们提供网络服务。

这并不是 Linux 的全部能力，但也绝非小小的成就。

### Linux 并不那么令人惊讶

我还记得第一次遇到一个从小就使用 Linux 的人的事情。在我使用 Linux 的大部分时间里，这种情况似乎很少发生，但最近这种情况相对较为普遍。我记得最令人惊讶的一次是遇到一个年轻的女士，带着幼儿，看到我当时穿着的那件极客风格的 T 恤衫，她随意地提到她也使用 Linux，因为她从小就接触它。这实际上让我有点嫉妒，但随后我想起，在我成长的过程中，桌面电脑上根本没有 Unix 的 *存在*。然而，想到 Linux 在过去几十年里的轻松发展，确实令人愉快。成为其中的一员更是乐趣无穷。

*（题图：MJ/e529833a-8ec1-4fff-997b-2ef3f107bc68）*

---

via: <https://opensource.com/article/22/5/surprising-things-i-do-linux>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[lkxed](https://github.com/lkxed) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


R 语言 stats 包中的函数

Summary: 我们将学习如何使用 R 语言 stats 包中提供的统计函数。

我们将学习如何使用 R 语言 stats 包中提供的统计函数。

# R 语言 stats 包中的函数

我们已经学习了 R 语言的基础知识，包括其语法以及语法所对应的语义，现在准备使用 R 向统计学领域进发。本文是 R 系列的第十一篇文章，我们将学习如何使用 R 语言 stats 包中提供的统计函数。

与此系列之前的文章一样，我们将使用安装在 Parabola GNU/Linux-libre（x86-64）上的 R 4.1.2 版本来运行文中的代码。

```
$ R --version
R version 4.1.2 (2021-11-01) -- "Bird Hippie"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see https://www.gnu.org/licenses/

```

### mean 函数

在 R 中 `mean` 函数用来计算算术平均值。该函数接受一个 R 对象 `x` 作为参数，以及一个 `trim` 选项来在计算均值之前剔除任意比例的数据（LCTT 译注：比如对于一个含有 7 个元素的向量 `x`，设置 `trim` 为 0.2 表示分别去掉 `x` 中最大和最小的前 20% —— 即 1.4 个 —— 的元素，所去掉的元素的个数会向下取整，所以最终会去掉 1 个最大值和 1 个最小值；`trim` 取值范围为 `[0, 0.5]`，默认为 0）。<ruby> 逻辑参数 <rt>  logical argument </rt></ruby>（`TRUE` 或 `FALSE`）`na.rm` 可以设置是否忽略空值（`NA`）。该函数的语法如下：

```
mean(x, trim = 0, na.rm = FALSE, ...)

```

该函数支持数值、逻辑值、日期和 <ruby> 时间区间 <rt>  time intervals </rt></ruby>。下面是使用 `mean` 函数的一些例子：

```
> mean(c(1, 2, 3))
2

> mean(c(1:5, 10, 20))
6.428571

> mean(c(FALSE, TRUE, FALSE))
0.3333333

> mean(c(TRUE, TRUE, TRUE))
1

```

我们使用 UCI 机器学习库提供的一个采集自葡萄牙银行机构的“银行营销数据集”作为样本数据。该数据可用于公共研究，包含 4 个 csv 文件，我们使用 `read.csv()` 函数导入其中的 `bank.csv` 文件。

```
> bank <- read.csv(file="bank.csv", sep=";")

> bank[1:3,]
  age        job marital education default balance housing loan  contact day
1  30 unemployed married   primary      no    1787      no   no cellular  19
2  33   services married secondary      no    4789     yes  yes cellular  11
3  35 management  single  tertiary      no    1350     yes   no cellular  16
  month duration campaign pdays previous poutcome  y
1   oct       79        1    -1        0  unknown no
2   may      220        1   339        4  failure no
3   apr      185        1   330        1  failure no

```

下面是计算 `age` 列均值的示例：

```
> mean(bank$age)
41.1701

```

### median 函数

R 语言 `stats` 包中的 `median` 函数用来计算样本的中位数。该函数接受一个数值向量 `x`，以及一个逻辑值 `na.rm` 用来设置在计算中位数之前是否去除 `NA` 值。该函数的语法如下：

```
median(x, na.rm = FALSE, ...)

```

下面是使用该函数的两个例子：

```
> median(3:5)
4
> median(c(3:5, 50, 150))
[1] 5

```

现在我们可以计算银行数据中 `age` 列的中位数：

```
> median(bank$age)
39

```

### pair 函数

`pair` 函数用来合并两个向量，接受向量 `x` 和向量 `y` 两个参数。`x` 和 `y` 的长度必须相等。

```
Pair(x, y)

```

该函数返回一个 `Pair` 类的列数为 2 的矩阵，示例如下：

```
> Pair(c(1,2,3), c(4,5,6))
     x y
[1,] 1 4
[2,] 2 5
[3,] 3 6
attr(,"class")
[1] "Pair"

```

该函数常用于像 T 检验和 Wilcox 检验等的 <ruby> 配对检验 <rt>  paired test </rt></ruby>。

### dist 函数

`dist` 函数用来计算数据矩阵中各行之间的距离矩阵，接受以下参数：

| 参数 | 描述 |
| --- | --- |
| `x` | 数值矩阵 |
| `method` | 距离测量方法 |
| `diag` | 若为 TRUE，则打印距离矩阵的对角线 |
| `upper` | 若为 TRUE，则打印距离矩阵的上三角 |
| `p` | 闵可夫斯基距离的幂次（见下文 LCTT 译注） |

该函数提供的距离测量方法包括：<ruby> 欧式距离 <rt>  euclidean </rt></ruby>、<ruby> 最大距离 <rt>  maximum </rt></ruby>、<ruby> 曼哈顿距离 <rt>  manhattan </rt></ruby>、<ruby> 堪培拉距离 <rt>  canberra </rt></ruby>、<ruby> 二进制距离 <rt>  binary </rt></ruby> 和 <ruby> 闵可夫斯基距离 <rt>  minkowski </rt></ruby>，默认为欧式距离。

>
> LCTT 译注：
>
>
> * **欧式距离**指两点之间线段的长度，比如二维空间中 A 点 和 B 点 的欧式距离是  ；
> * **最大距离**指 n 维向量空间中两点在各维度上的距离的最大值，比如 A 点 (3,6,8,9) 和 B 点 (1,8,9,10) 之间的最大距离是 ，等于 2；
> * **曼哈顿距离**指 n 维向量空间中两点在各维度上的距离之和，比如二维空间中 A 点 和 B 点 之间的曼哈顿距离是 ；
> * **堪培拉距离**的公式是  ；
> * **二进制距离**首先将两个向量中的各元素看作其二进制形式，然后剔除在两个向量中对应值均为 0 的维度，最后计算在剩下的维度上两个向量间的对应值不相同的比例，比如 V1=(1,3,0,5,0) 和 V2=(11,13,0,15,10) 的二进制形式分别是 (1,1,0,1,0) 和 (1,1,0,1,1)，其中第 3 个维度的对应值均为 0，剔除该维度之后为 (1,1,1,0) 和 (1,1,1,1)，在剩余的 4 个维度中只有最后一个维度在两个向量之间的值不同，最终结果为 0.25；
> * **闵可夫斯基距离**是欧式距离和曼哈顿距离的推广，公式是 ，当 p = 1 时相当于曼哈顿距离，当 p = 2 时相当于欧式距离。
>
>
>

下面是使用欧式距离计算 `age` 列距离矩阵的示例：

```
> dist(bank$age, method="euclidean", diag=FALSE, upper=FALSE, p=2)
      1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
2     3
3     5  2
4     0  3  5
5    29 26 24 29
6     5  2  0  5 24
7     6  3  1  6 23  1
8     9  6  4  9 20  4  3
9    11  8  6 11 18  6  5  2
10   13 10  8 13 16  8  7  4  2
11    9  6  4  9 20  4  3  0  2  4
12   13 10  8 13 16  8  7  4  2  0  4
13    6  3  1  6 23  1  0  3  5  7  3  7
14   10 13 15 10 39 15 16 19 21 23 19 23 16
15    1  2  4  1 28  4  5  8 10 12  8 12  5 11
16   10  7  5 10 19  5  4  1  1  3  1  3  4 20  9
17   26 23 21 26  3 21 20 17 15 13 17 13 20 36 25 16
18    7  4  2  7 22  2  1  2  4  6  2  6  1 17  6  3 19
19    5  8 10  5 34 10 11 14 16 18 14 18 11  5  6 15 31 12
20    1  2  4  1 28  4  5  8 10 12  8 12  5 11  0  9 25  6  6
21    8  5  3  8 21  3  2  1  3  5  1  5  2 18  7  2 18  1 13  7
22   12  9  7 12 17  7  6  3  1  1  3  1  6 22 11  2 14  5 17 11  4
23   14 11  9 14 15  9  8  5  3  1  5  1  8 24 13  4 12  7 19 13  6  2
     26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
...

```

改用二进制距离的计算结果如下：

```
> dist(bank$age, method="binary", diag=FALSE, upper=FALSE, p=2)
     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
2    0
3    0 0
4    0 0 0
5    0 0 0 0
6    0 0 0 0 0
7    0 0 0 0 0 0
8    0 0 0 0 0 0 0
9    0 0 0 0 0 0 0 0
10   0 0 0 0 0 0 0 0 0
11   0 0 0 0 0 0 0 0 0  0
12   0 0 0 0 0 0 0 0 0  0  0
13   0 0 0 0 0 0 0 0 0  0  0  0
14   0 0 0 0 0 0 0 0 0  0  0  0  0
15   0 0 0 0 0 0 0 0 0  0  0  0  0  0
16   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0
17   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0
18   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0
19   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0
20   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0
21   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0
22   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0
23   0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  0  0  0  0  0  0
     29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

```

### quantile 函数

`quantile` 函数用于计算数值向量 `x` 的分位数及其对应的概率。当设置 `na.rm` 为 `TRUE` 时，该函数将忽略向量中的 `NA` 和 `NaN` 值。概率 0 对应最小观测值，概率 1 对应最大观测值。该函数的语法如下:

```
quantile(x, ...)

```

`quantile` 函数接受以下参数：

| 参数 | 描述 |
| --- | --- |
| `x` | 数值向量 |
| `probs` | 概率向量，取值为 `[0, 1]`（LCTT 译注：默认为 `(0, 0.25, 0.5, 0.75, 1)`） |
| `na.rm` | 若为 `TRUE`，忽略向量中的 `NA` 和 `NaN` 值 |
| `names` | 若为 `TRUE`，在结果中包含命名属性 |
| `type` | 整数类型，用于选择任意一个九种分位数算法（LCTT 译注：默认为 7） |
| `digits` | 小数精度 |
| … | 传递给其他方法的额外参数 |

`rnorm` 函数可用于生成正态分布的随机数。它可以接受要生成的观测值的数量 `n`，一个均值向量以及一个标准差向量。下面是一个计算 `rnorm` 函数生成的随机数的四分位数的示例：

```
> quantile(x <- rnorm(100))
    0%          25%          50%          75%         100%
-1.978171612 -0.746829079 -0.009440368  0.698271134  1.897942805

```

下面是生成银行年龄数据对应概率下的分位数的示例：

```
> quantile(bank$age, probs = c(0.1, 0.5, 1, 2, 5, 10, 50)/100)
0.1% 0.5%   1%   2%   5%  10%  50%
20.0 22.6 24.0 25.0 27.0 29.0 39.0

```

### IQR 函数

`IQR` 函数用于计算向量中数值的 <ruby> 四分位距 <rt>  interquartile range </rt></ruby>。其语法如下：

```
IQR(x, na.rm = FALSE, type = 7)

```

参数 `type` 指定了一个整数以选择分位数算法，该算法在 [Hyndman and Fan (1996)](https://www.amherst.edu/media/view/129116/.../Sample+Quantiles.pdf) 中进行了讨论。下面是计算银行年龄四分位距的示例：

```
> IQR(bank$age, na.rm = FALSE, type=7)
16

```

### sd 函数

`sd` 函数用来计算一组数值中的标准差。该函数接受一个 <ruby> 数值向量 <rt>  numeric vector </rt></ruby> `x` 和一个逻辑值 `na.rm`。`na.rm` 用来设置在计算时是否忽略缺失值。该函数的语法如下：

```
sd(x, na.rm = FALSE)

```

对于长度为 0 或 1 的向量，该函数返回 `NA`。下面是两个例子：

```
> sd(1:10)
3.02765

> sd(1)
NA

```

下面是计算 `age` 列标准差的示例：

```
> sd(bank$age)
10.57621

```

R 语言 stats 包中还有很多其他函数，鼓励你自行探索。

*（题图：MJ/ee6b533d-69fc-4baa-a985-cc4e499b5029）*

---

via: <https://www.opensourceforu.com/2022/08/the-functions-in-the-r-stats-package/>

作者：[Shakthi Kannan](https://www.opensourceforu.com/author/shakthi-kannan/) 选题：[lkxed](https://github.com/lkxed) 译者：[tanloong](https://github.com/tanloong) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1040 RHEL 源代码将只放在 CentOS Stream 上

Summary:
? RHEL 源代码将只放在 CentOS Stream 上
? Reddit 用户涌入 Lemmy
? C++ 26 标准正在制定中
»
»

开源开放的联邦宇宙将会打破封闭的社交平台的垄断，并逐渐取代它们。下一个可能是youtube

# 硬核观察 #1040 RHEL 源代码将只放在 CentOS Stream 上

### RHEL 源代码将只放在 CentOS Stream 上

在没有宣布废弃 CentOS 之前，RHEL 的源代码会发布在 [git.centos.org](http://git.centos.org/) 上，那时候 CentOS 还是 RHEL 的下游。之后，在 CentOS Stream 成为 RHEL 的上游后，该仓库得以保留。红帽宣布，“CentOS Stream 将成为公开发布 RHEL 相关源代码的唯一仓库。对于红帽的客户和合作伙伴，源代码将继续通过红帽客户门户网站提供。”并进一步澄清，“这一变化并不意味着CentOS 项目、CentOS Stream 或 CentOS SIG 的源代码可用性有任何变化。”但这一举动引来了社区的一些人的担心，“Alma Linux，Rocky Linux，Oracle Linux 等将更难提供与 RHEL 版本 1:1 的二进制兼容的构建。”

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Red-Hat-CentOS-Stream-Sources)**
>
>
>

>
> 老王点评：我认为，从目前的声明上看，这种担心或许是多余的，我们只需要观察之后的 RHEL 和 CentOS Stream 之间差异有多大就好了。但从对这个事情的反应可以看出，社区对红帽的信任在降低。
>
>
>

### Reddit 用户涌入 Lemmy

类似马斯克收购 Twitter 后 Twitter 难民涌入 Mastodon，大量 Reddit 难民涌入了 Lemmy 实例。其中，lemmy.world 实例的总用户数达到了 3.8 万。突然间，Lemmy 已经成为最大的联邦宇宙项目之一。在 Reddit 社区重新开放之后，部分用户可能会离开，但也许有更多用户会留下。

>
> **[消息来源：Lemmy](https://join-lemmy.org/news/2023-06-17_-_Update_from_Lemmy_after_the_Reddit_blackout)**
>
>
>

>
> 老王点评：这些联邦宇宙社区会得到更多用户，但 Twitter、Reddit 失血更多。
>
>
>

### C++ 26 标准正在制定中

C++ 版本以其发布的年份命名，并遵循三年的周期。国际标准化组织 C++ 标准委员会发布了 C++ 26 的进展情况。根据其时间表，新语言功能的截止日期是 2024 年第三季度，功能冻结将在 2025 年第一季度。委员会已经通过了 40 份 “修改文件”，增加了 `_` 字符通配符，基本字符集添加了 `@`、`$` 和 ```。此外，在 C++ 26 中还支持了危险指针。危险指针是指 “只有其所有者可以设置其值，而任何数量的线程都可以读取其值” 的指针，它很难导致非常常见的内存安全问题。

>
> **[消息来源：Dev Class](https://devclass.com/2023/06/19/c-26-is-already-taking-shape-says-herb-sutter/)**
>
>
>

>
> 老王点评：在我看来，C++ 标准的演进有一定的意义，但是这并不能阻止其传统的领域被 Rust、Carbon 等新底层语言的侵蚀。
>
>
>


包含 Openbox 的 7 个极简 Linux 发行版

Summary: 在本文中，我列出了一些能够让你轻松体验 Openbox 的发行版。

在本文中，我列出了一些能够让你轻松体验 Openbox 的发行版。

# 包含 Openbox 的 7 个极简 Linux 发行版

[Openbox](http://openbox.org/wiki/Main_Page) 是一款适用于 Linux 的轻量级、可配置的窗口堆叠式管理器。它支持许多标准，适用于任何桌面环境。

可能让你惊讶的是，**LXDE 和 LXQT 桌面环境都是基于 Openbox 构建的**。你甚至可以用它替换桌面环境的窗口管理器。

当然，你几乎可以在任何 Linux 发行版上安装 Openbox。不过，配置它需要时间和精力。

一个更简单的方法是使用提供 Openbox 变种的发行版。在本文中，我列出了一些能够让你轻松体验 Openbox 的发行版。

**注意：** 列表按字母顺序排列，不代表排名。

### 1、Archcraft

如果你想体验 Openbox 窗口管理器，Archcraft 是一个不错的选择。不像其他发行版，Openbox 是这个发行版的默认桌面环境，所以你可以期待它的表现优秀。

它提供了一个精简且轻量的环境，只需不到 500MB 的内存即可运行，而且外观上也没有降级。其界面元素风格统一。

你可以通过简单点击来切换主题，如果你喜欢，它还提供了类似 Windows 的用户界面。

对于资深用户来说，它内置了对 AUR 和 Chaotic-AUR 的支持。与其他发行版不同的是，它提供了最佳的开箱即用体验。

>
> **[Archcraft](https://archcraft.io/)**
>
>
>

### 2、ArcolinuxB Openbox

如果你想学习 Arch（Arcolinux 项目的主要目标），ArcolinuxB Openbox 是一个非常优秀的 Linux 桌面发行版。

它是 ArcolinuxB 项目的众多变种之一。你可能会遇到一些学习曲线和不完善的地方。

与 Archcraft 不同，你在这里不会看到完全统一的界面元素，可能需要进行一些调整来获得良好的体验。

>
> **[ArcolinuxB](https://arcolinuxb.com/)**
>
>
>

### 3、AV Linux MX Edition

AV Linux MX Edition 是基于 MX Linux 的一个版本，使用 Openbox 作为窗口管理器。

它使用高性能的 [Liquorix 内核](https://liquorix.net/#features)，提供了音频方面爱好者所需要的低延迟。它还通过 Wine-staging 支持 Windows 音频。

如果你是一位音频专业人士并且使用 Linux，你可能想尝试一下这个发行版。对于一些用户来说，它可能显得臃肿，因为预装了许多应用程序。

>
> **[AV Linux](http://www.bandshed.net/avlinux/)**
>
>
>

### 4、Bunsenlabs Linux

BunsenLabs Linux 是一个基于 Debian 的发行版，提供了一个轻量且易于定制的 Openbox 桌面环境。该项目是 [CrunchBang Linux](https://en.wikipedia.org/wiki/CrunchBang_Linux) 的分支。

它仍然基于 Debian 10，所以在软件仓库中你将获取到较旧版本的应用程序。然而，由于包含了硬件和多媒体支持，它具有相当好的开箱即用体验，与 Debian 不同。

它的界面与 Archcraft 类似，还提供了丰富的 Conky 配置选项。

>
> **[BunsenLabs Linux](https://www.bunsenlabs.org/)**
>
>
>

### 5、Crunchbang++

正如其名字所示，Crunchbang++ 是 Crunchbang 的一个分支，并尽量保持与原版接近。

对于不了解的人来说，Crunchbang 是一个几乎在十年前停止开发的流行 Openbox 发行版。

Crunchbang++ 是一个极简且轻量级的发行版。它可能会让一些用户怀旧。它基于 Debian 11，相比 Bunsenlabs 可以提供更新的软件包。

>
> **[Crunchbang++](https://crunchbangplusplus.org/)**
>
>
>

### 6、Mabox Linux

Mabox Linux 是一个基于 Manjaro 的现代发行版，专注于定制化或 <ruby> 美化 <rt>  ricing </rt></ruby>。

由于使用了轻量级组件，它是一个极简且快速的系统。由于采用滚动更新机制，你还可以获得更新的软件版本。

该发行版的一些独特功能包括 Colorizer（根据壁纸更改强调颜色）、Quicktiling（用于轻松进行窗口平铺）和可定制的菜单/面板。这么多的定制化功能可能让一些极简主义者感到有些害怕。

>
> **[Mabox Linux](https://maboxlinux.org/)**
>
>
>

### 7、Sparky Linux Openbox

Sparky Linux 是一个基于 Debian 的 Linux 发行版，也提供 Openbox 作为另一种桌面环境选择。

它有一个基于 Debian Testing 的版本，对于需要更新应用程序的用户来说非常有用。它致力于为 Debian 提供开箱即用的体验，并将定制化留给用户。因此，在这里你可能不会看到太多花哨的界面效果。

>
> **[Sparky Linux](https://sparkylinux.org/)**
>
>
>

### 总结

还有其他几个 Linux 发行版可以安装 Openbox。

但在这个列表中，我列出了那些在 <ruby> 立付 <rt>  Live </rt></ruby> 介质中提供 Openbox ，其中一些还将 Openbox 作为默认桌面环境。

你最喜欢的 Openbox 发行版是哪个？你喜欢它预先定制好还是更喜欢自己进行定制？欢迎你提出建议。

*（题图：MJ/19d5a524-8229-4c14-89d1-f8287c34eeae）*

---

via: <https://itsfoss.com/openbox-distros/>

作者：[Anuj Sharma](https://itsfoss.com/author/anuj/) 选题：[lkxed](https://github.com/lkxed) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Rust 基础系列 #8：编写里程碑 Rust 程序

Summary: 在 Rust 基础系列的最后一章里，让我们现在用 Rust 编写一个程序

clear and concise

在 Rust 基础系列的最后一章里，让我们现在用 Rust 编写一个程序

# Rust 基础系列 #8：编写里程碑 Rust 程序

<img src="content_image/album_202306_23_114333ni9fkzpykmz37zpu.jpg" alt="" title="">

到目前为止，我们已经讲解了包括 [变量、可变性、常量](/article-15771-1.html)、[数据类型](/article-15811-1.html)、[函数](/article-15855-1.html)、[if-else 语句](/article-15896-1.html) 和 [循环](/article-15908-1.html) 在内的一些关于 Rust 编程的基础知识。

在 Rust 基础系列的最后一章里，让我们现在用 Rust 编写一个程序，使用这些主题，以便更好地理解它们在现实世界中的用途。让我们来编写一个相对简单的程序，用来从水果市场订购水果。

### 我们程序的基本结构

来让我们首先向用户问好，并告诉他们如何与程序交互。

```
fn main() {
    println!("欢迎来到水果市场！");
    println!("请选择要购买的水果。\n");

    println!("\n可以购买的水果：苹果、香蕉、橘子、芒果、葡萄");
    println!("购买完成后，请输入“quit”或“q”。\n");
}

```

### 获取用户输入

上面的代码非常简单。目前，你不知道接下来该做什么，因为你不知道用户接下来想做什么。

所以让我们添加一些代码，接受用户输入并将其存储在某个地方以便稍后解析，然后根据用户输入采取适当的操作。

```
use std::io;

fn main() {
    println!("欢迎来到水果市场！");
    println!("请选择要购买的水果。\n");

    println!("\n可以购买的水果：苹果、香蕉、橘子、芒果、葡萄");
    println!("购买完成后，请输入“quit”或“q”。\n");

    // 获取用户输入
    let mut user_input = String::new();
    io::stdin()
        .read_line(&mut user_input)
        .expect("无法读取用户输入。");
}

```

有三个新元素需要告诉你。所以让我们对这些新元素进行浅层次的探索。

#### 1. 理解 use 关键字

在这个程序的第一行，你可能已经注意到我们“使用”（哈哈！）了一个叫做 `use` 的新关键字。Rust 中的 `use` 关键字类似于 C/C++ 中的 `#include` 指令和 Python 中的 `import` 关键字。使用 `use` 关键字，我们从 Rust 标准库 `std` 中“导入”了 `io`（输入输出）模块。

>
> LCTT 译注：“使用”在原文中为“use”，与新介绍的关键字一样。
>
>
>

你可能会想知道为什么我们在可以使用 `println` 宏来将某些内容输出到标准输出时，导入 `io` 模块是必要的。Rust 的标准库有一个叫做 `prelude` 的模块，它会自动被包含。该模块包含了 Rust 程序员可能需要使用的所有常用函数，比如 `println` 宏。（你可以在 [这里](https://doc.rust-lang.org/std/prelude/index.html) 阅读更多关于 `std::prelude` 模块的内容。）

Rust 标准库 `std` 中的 `io` 模块是接受用户输入所必需的。因此，我们在程序的第一行添加了一个 `use` 语句。

#### 2. 理解 Rust 中的 String 类型

在第 11 行，我创建了一个新的可变变量 `user_input`，正如它的名字所表示的那样，它将被用来存储用户输入。但是在同一行，你可能已经注意到了一些“新的”东西（哈哈，又来了！）。

>
> LCTT 译注：“新的”在原文中为“new”，在第 11 行的代码中，原作者使用了 `String::new()` 函数，所以此处的梗与“使用”一样，原作者使用了一个在代码中用到的单词。
>
>
>

我没有使用双引号（`""`）声明一个空字符串，而是使用 `String::new()` 函数来创建一个新的空字符串。

`""` 与 `String::new()` 的区别是你将在 Rust 系列的后续文章中学习到的。现在，只需要知道，使用 `String::new()` 函数，你可以创建一个**可变**的，**位于堆上**的字符串。

如果我使用 `""` 创建了一个字符串，我将得到一个叫做“字符串切片”的东西。字符串切片的内容也位于堆上，但是字符串本身是**不可变**的。所以，即使变量本身是可变的，作为字符串存储的实际数据是不可变的，需要被**覆盖**而不是修改。

#### 3. 接受用户输入

在第 12 行，我调用了 `std::io` 的 `stdin()` 函数。如果我在程序的开头没有导入 `std::io` 模块，那么这一行将是 `std::io::stdin()` 而不是 `io::stdin()`。

`sdtin()` 函数返回一个终端的输入句柄。`read_line()` 函数抓住这个输入句柄，然后，正如它的名字所暗示的那样，读取一行输入。这个函数接受一个可变字符串的引用。所以，我传入了 `user_input` 变量，通过在它前面加上 `&mut`，使它成为一个可变引用。

>
> ⚠ `read_line()` 函数有一个 *怪癖*。这个函数在用户按下回车键之后 **停止** 读取输入。因此，这个函数也会记录换行符（`\n`），并将一个换行符存储在你传入的可变字符串变量的结尾处。
>
>
>

所以，请在处理它时要么考虑到这个换行符，要么将它删除。

### Rust 中的错误处理入门

最后，在这个链的末尾有一个 `expect()` 函数。让我们稍微偏题一下，来理解为什么要调用这个函数。

`read_line()` 函数返回一个叫做 `Result` 的枚举。我会在后面的文章中讲解 Rust 中的枚举，但是现在只需要知道，枚举在 Rust 中是非常强大的。这个 `Result` 枚举返回一个值，告诉程序员在读取用户输入时是否发生了错误。

`expect()` 函数接受这个 `Result` 枚举，并检查结果是否正常。如果没有发生错误，什么都不会发生。但是如果发生了错误，我传入的消息（`无法读取用户输入。`）将会被打印到 STDERR，*程序将会退出*。

>
> ? **所有我简要提及的新概念将会在后续的新 Rust 系列文章中讲解。**
>
>
>

现在我希望你应该已经理解了这些新概念，让我们添加更多的代码来增加程序的功能。

### 验证用户输入

我接受了用户的输入，但是我没有对其进行验证。在当前的上下文中，验证意味着用户输入了一些“命令”，我们希望能够处理这些命令。目前，这些命令有两个“类别”。

第一类用户可以输入的命令是用户希望购买的水果的名称。第二个命令表示用户想要退出程序。

我们的任务现在是确保用户输入不会偏离 *可接受的命令*。

```
use std::io;

fn main() {
    println!("欢迎来到水果市场！");
    println!("请选择要购买的水果。\n");

    println!("\n可以购买的水果：苹果、香蕉、橘子、芒果、葡萄");
    println!("购买完成后，请输入“quit”或“q”。\n");

    // 获取用户输入
    let mut user_input = String::new();
    io::stdin()
        .read_line(&mut user_input)
        .expect("无法读取用户输入。");

    // 验证用户输入
    let valid_inputs = ["苹果", "香蕉", "橘子", "芒果", "葡萄", "quit", "q"];
    user_input = user_input.trim().to_lowercase();
    let mut input_error = true;
    for input in valid_inputs {
        if input == user_input {
            input_error = false;
            break;
        }
    }
}

```

要使验证更容易，我创建了一个叫做 `valid_inputs` 的字符串切片数组（第 17 行）。这个数组包含了所有可以购买的水果的名称，以及字符串切片 `q` 和 `quit`，让用户可以传达他们是否希望退出。

用户可能不知道我们希望输入是什么样的。用户可能会输入“Apple”、“apple”或 “APPLE” 来表示他们想要购买苹果。我们的工作是正确处理这些输入。

在第 18 行，我通过调用 `trim()` 函数从 `user_input` 字符串中删除了尾部的换行符。为了处理上面提到的问题，我使用 `to_lowercase()` 函数将所有字符转换为小写，这样 “Apple”、“apple” 和 “APPLE” 都会变成 “apple”。

现在，来看第 19 行，我创建了一个名为 `input_error` 的可变布尔变量，初始值为 `true`。稍后在第 20 行，我创建了一个 `for` 循环，它遍历了 `valid_inputs` 数组的所有元素（字符串切片），并将迭代的模式存储在 `input` 变量中。

在循环内部，我检查用户输入是否等于其中一个有效字符串，如果是，我将 `input_error` 布尔值的值设置为 `false`，并跳出 `for` 循环。

### 处理无效输入

现在是时候处理无效输入了。这可以通过将一些代码移动到无限循环中来完成，如果用户给出无效输入，则 *继续* 该无限循环。

```
use std::io;

fn main() {
    println!("欢迎来到水果市场！");
    println!("请选择要购买的水果。\n");

    let valid_inputs = ["苹果", "香蕉", "橘子", "芒果", "葡萄", "quit", "q"];

    'mart: loop {
        let mut user_input = String::new();

        println!("\n可以购买的水果：苹果、香蕉、橘子、芒果、葡萄");
        println!("购买完成后，请输入“quit”或“q”。\n");

        // 读取用户输入
        io::stdin()
            .read_line(&mut user_input)
            .expect("无法读取用户输入。");
        user_input = user_input.trim().to_lowercase();

        // 验证用户输入
        let mut input_error = true;
        for input in valid_inputs {
            if input == user_input {
                input_error = false;
                break;
            }
        }

        // 处理无效输入
        if input_error {
            println!("错误: 请输入有效的输入");
            continue 'mart;
        }
    }
}

```

这里，我将一些代码移动到了循环内部，并重新组织了一下代码，以便更好地处理循环的引入。在循环内部，第 31 行，如果用户输入了一个无效的字符串，我将 `continue` `mart` 循环。

### 对用户输入做出反应

现在，所有其他的状况都已经处理好了，是时候写一些代码来让用户从水果市场购买水果了，当用户希望退出时，程序也会退出。

因为你也知道用户选择了哪种水果，所以让我们问一下他们打算购买多少，并告诉他们输入数量的格式。

```
use std::io;

fn main() {
    println!("欢迎来到水果市场！");
    println!("请选择要购买的水果。\n");

    let valid_inputs = ["苹果", "香蕉", "橘子", "芒果", "葡萄", "quit", "q"];

    'mart: loop {
        let mut user_input = String::new();
        let mut quantity = String::new();

        println!("\n可以购买的水果：苹果、香蕉、橘子、芒果、葡萄");
        println!("购买完成后，请输入“quit”或“q”。\n");

        // 读取用户输入
        io::stdin()
            .read_line(&mut user_input)
            .expect("无法读取用户输入。");
        user_input = user_input.trim().to_lowercase();

        // 验证用户输入
        let mut input_error = true;
        for input in valid_inputs {
            if input == user_input {
                input_error = false;
                break;
            }
        }

        // 处理无效输入
        if input_error {
            println!("错误: 请输入有效的输入");
            continue 'mart;
        }

        // 如果用户想要退出，就退出
        if user_input == "q" || user_input == "quit" {
            break 'mart;
        }

        // 获取数量
        println!(
            "\n你选择购买的水果是 \"{}\"。请输入以千克为单位的数量。
（1 千克 500 克的数量应该输入为 '1.5'。）",
            user_input
        );
        io::stdin()
            .read_line(&mut quantity)
            .expect("无法读取用户输入。");
    }
}

```

在第 11 行，我声明了另一个可变变量，它的值是一个空字符串，在第 48 行，我接受了用户的输入，但是这次是用户打算购买的水果的数量。

#### 解析数量

我刚刚增加了一些代码，以已知的格式接受数量，但是这些数据被存储为字符串。我需要从中提取出浮点数。幸运的是，这可以通过 `parse()` 方法来完成。

就像 `read_line()` 方法一样，`parse()` 方法返回一个 `Result` 枚举。`parse()` 方法返回 `Result` 枚举的原因可以通过我们试图实现的内容来轻松理解。

我正在接受用户的字符串，并尝试将其转换为浮点数。浮点数有两个可能的值。一个是浮点数本身，另一个是小数。

字符串可以包含字母，但是浮点数不行。所以，如果用户输入的不是浮点数和小数，`parse()` 函数将会返回一个错误。

因此，这个错误也需要处理。我们将使用 `expect()` 函数来处理这个错误。

```
use std::io;

fn main() {
    println!("欢迎来到水果市场！");
    println!("请选择要购买的水果。\n");

    let valid_inputs = ["苹果", "香蕉", "橘子", "芒果", "葡萄", "quit", "q"];

    'mart: loop {
        let mut user_input = String::new();
        let mut quantity = String::new();

        println!("\n可以购买的水果：苹果、香蕉、橘子、芒果、葡萄");
        println!("购买完成后，请输入“quit”或“q”。\n");

        // 读取用户输入
        io::stdin()
            .read_line(&mut user_input)
            .expect("无法读取用户输入。");
        user_input = user_input.trim().to_lowercase();

        // 验证用户输入
        let mut input_error = true;
        for input in valid_inputs {
            if input == user_input {
                input_error = false;
                break;
            }
        }

        // 处理无效输入
        if input_error {
            println!("错误: 请输入有效的输入");
            continue 'mart;
        }

        // 如果用户想要退出，就退出
        if user_input == "q" || user_input == "quit" {
            break 'mart;
        }

        // 获取数量
        println!(
            "\n你选择购买的水果是 \"{}\"。请输入以千克为单位的数量。
（1 千克 500 克的数量应该输入为 '1.5'。）",
            user_input
        );
        io::stdin()
            .read_line(&mut quantity)
            .expect("无法读取用户输入。");

        let quantity: f64 = quantity
            .trim()
            .parse()
            .expect("请输入有效的数量。");

    }
}

```

如你所见，我通过变量遮蔽将解析后的浮点数存储在变量 `quantity` 中。为了告诉 `parse()` 函数，我的意图是将字符串解析为 `f64`，我手动将变量 `quantity` 的类型注释为 `f64`。

现在，`parse()` 函数将会解析字符串并返回一个 `f64` 或者一个错误，`expect()` 函数将会处理这个错误。

### 计算价格 + 最后的修饰

现在我们知道了用户想要购买的水果及其数量，现在是时候进行计算了，并让用户知道结果/总价了。

为了真实起见，我将为每种水果设置两个价格。第一个价格是零售价，我们在购买少量水果时向水果供应商支付的价格。水果的第二个价格是当有人批量购买水果时支付的批发价。

批发价将会在订单数量大于被认为是批发购买的最低订单数量时确定。这个最低订单数量对于每种水果都是不同的。每种水果的价格都是每千克多少卢比。

想好了逻辑，下面是最终的程序。

```
use std::io;

const APPLE_RETAIL_PER_KG: f64 = 60.0;
const APPLE_WHOLESALE_PER_KG: f64 = 45.0;

const BANANA_RETAIL_PER_KG: f64 = 20.0;
const BANANA_WHOLESALE_PER_KG: f64 = 15.0;

const ORANGE_RETAIL_PER_KG: f64 = 100.0;
const ORANGE_WHOLESALE_PER_KG: f64 = 80.0;

const MANGO_RETAIL_PER_KG: f64 = 60.0;
const MANGO_WHOLESALE_PER_KG: f64 = 55.0;

const GRAPES_RETAIL_PER_KG: f64 = 120.0;
const GRAPES_WHOLESALE_PER_KG: f64 = 100.0;

fn main() {
    println!("欢迎来到水果市场！");
    println!("请选择要购买的水果。\n");

    let valid_inputs = ["苹果", "香蕉", "橘子", "芒果", "葡萄", "quit", "q"];

    'mart: loop {
        let mut user_input = String::new();
        let mut quantity = String::new();

        println!("\n可以购买的水果：苹果、香蕉、橘子、芒果、葡萄");
        println!("购买完成后，请输入“quit”或“q”。\n");

        // 读取用户输入
        io::stdin()
            .read_line(&mut user_input)
            .expect("无法读取用户输入。");
        user_input = user_input.trim().to_lowercase();

        // 验证用户输入
        let mut input_error = true;
        for input in valid_inputs {
            if input == user_input {
                input_error = false;
                break;
            }
        }

        // 处理无效输入
        if input_error {
            println!("错误: 请输入有效的输入");
            continue 'mart;
        }

        // 如果用户想要退出，就退出
        if user_input == "q" || user_input == "quit" {
            break 'mart;
        }

        // 获取数量
        println!(
            "\n你选择购买的水果是 \"{}\"。请输入以千克为单位的数量。
（1 千克 500 克的数量应该输入为 '1.5'。）",
            user_input
        );
        io::stdin()
            .read_line(&mut quantity)
            .expect("无法读取用户输入。");

        let quantity: f64 = quantity
            .trim()
            .parse()
            .expect("请输入有效的数量。");

        total += calc_price(quantity, user_input);
    }

    println!("\n\n总价是 {} 卢比。", total);
}

fn calc_price(quantity: f64, fruit: String) -> f64 {
    if fruit == "apple" {
        price_apple(quantity)
    } else if fruit == "banana" {
        price_banana(quantity)
    } else if fruit == "orange" {
        price_orange(quantity)
    } else if fruit == "mango" {
        price_mango(quantity)
    } else {
        price_grapes(quantity)
    }
}

fn price_apple(quantity: f64) -> f64 {
    if quantity > 7.0 {
        quantity * APPLE_WHOLESALE_PER_KG
    } else {
        quantity * APPLE_RETAIL_PER_KG
    }
}

fn price_banana(quantity: f64) -> f64 {
    if quantity > 4.0 {
        quantity * BANANA_WHOLESALE_PER_KG
    } else {
        quantity * BANANA_RETAIL_PER_KG
    }
}

fn price_orange(quantity: f64) -> f64 {
    if quantity > 3.5 {
        quantity * ORANGE_WHOLESALE_PER_KG
    } else {
        quantity * ORANGE_RETAIL_PER_KG
    }
}

fn price_mango(quantity: f64) -> f64 {
    if quantity > 5.0 {
        quantity * MANGO_WHOLESALE_PER_KG
    } else {
        quantity * MANGO_RETAIL_PER_KG
    }
}

fn price_grapes(quantity: f64) -> f64 {
    if quantity > 2.0 {
        quantity * GRAPES_WHOLESALE_PER_KG
    } else {
        quantity * GRAPES_RETAIL_PER_KG
    }
}

```

对比之前的版本，我做了一些改动……

水果的价格可能会波动，但是在我们程序的生命周期内，这些价格不会波动。所以我将每种水果的零售价和批发价存储在常量中。我将这些常量定义在 `main()` 函数之外（即全局常量），因为我不会在 `main()` 函数内计算每种水果的价格。这些常量被声明为 `f64`，因为它们将与 `quantity` 相乘，而 `quantity` 是 `f64`。记住，Rust 没有隐式类型转换 ?

当水果名称和用户想要购买的数量被存下来之后，`calc_price()` 函数被调用来计算用户指定数量的水果的价格。这个函数接受水果名称和数量作为参数，并将价格作为 `f64` 返回。

当你看到 `calc_price()` 函数的内部时，你会发现它是许多人所说的包装函数。它被称为包装函数，因为它调用其他函数来完成它的脏活。

因为每种水果都有不同的最低订单数量，才能被认为是批发购买，为了确保代码在未来可以轻松维护，每种水果都有单独的函数负责计算价格。

所以，`calc_price()` 函数所做的就是确定用户选择了哪种水果，并调用相应的函数来计算所选水果的价格。这些水果特定的函数只接受一个参数：数量。这些水果特定的函数将价格作为 `f64` 返回。

现在，`price_*()` 函数只做一件事。它们检查订单数量是否大于被认为是批发购买的最低订单数量。如果是这样，`quantity` 将会乘以水果的每千克批发价格。否则，`quantity` 将会乘以水果的每千克零售价格。

由于乘法行末尾没有分号，所以函数返回乘积。

如果你仔细看看 `calc_price()` 函数中水果特定函数的函数调用，这些函数调用在末尾没有分号。这意味着，`price_*()` 函数返回的值将会被 `calc_price()` 函数返回给它的调用者。

而且 `calc_price()` 函数只有一个调用者。这个调用者在 `mart` 循环的末尾，这个调用者使用这个函数返回的值来增加 `total` 的值。

最终，当 `mart` 循环结束（当用户输入 `q` 或 `quit` 时），存储在变量 `total` 中的值将会被打印到屏幕上，并且用户将会被告知他/她需要支付的价格。

### 总结

这篇文章中，我使用了之前讲解的 Rust 编程语言的所有主题来创建一个简单的程序，这个程序仍然在某种程度上展示了一个现实世界的问题。

现在，我写的代码肯定可以用一种更符合编程习惯的方式来写，这种方式最好地使用了 Rust 的喜爱特性，但是我还没有讲到它们！

所以，敬请关注后续的 **将 Rust 带入下一个层次** 系列，并学习更多 Rust 编程语言的内容！

Rust 基础系列到此结束。欢迎你的反馈。

*（题图：MJ/6d486f23-e6fe-4bef-a28d-df067ef2ec06）*

---

via: <https://itsfoss.com/milestone-rust-program/>

作者：[Pratham Patel](https://itsfoss.com/author/pratham/) 选题：[lkxed](https://github.com/lkxed/) 译者：[Cubik65536](https://github.com/Cubik65536) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Summary:
? AlmaLinux 确认受到 RHEL 源代码发布变化影响
? 哈佛给计算机学生们配备了一位聊天机器人老师
? E3 或许再也不会举办
»
»

对于哈佛的那条新闻的评价有个句子是不是少一字

“老王点评：我认为哈佛大学走在了正确的道路，拥抱 AI，而不是让 AI 替代人类，让 AI 帮助学习，而是让学生抄袭 AI 的作业。”

是不是应该改成：

“老王点评：我认为哈佛大学走在了正确的道路，拥抱 AI，而不是让 AI 替代人类，让 AI 帮助学习，而不是让学生抄袭 AI 的作业。”

谢谢！

# 硬核观察 #1041 AlmaLinux 确认受到 RHEL 源代码发布变化影响

### AlmaLinux 确认受到 RHEL 源代码发布变化影响

针对 [昨天](/article-15933-1.html) 红帽发布的改变 RHEL 源代码发布方式的公告，AlmaLinux 发布声明称，这将限制他们 1:1 复制 RHEL 构建的能力。因为 CentOS Stream 虽然是 RHEL 的上游，但并不总是包括 RHEL 软件包中的所有补丁和更新。想要做到完全复制，需要有 RHEL 构建版本时的源代码。而要获得该源代码，AlmaLinux 称，“不幸的是，按照我们今天的理解，红帽公司的用户界面协议表明，重新发布通过客户门户获得的资源将违反这些协议。”在短期内，他们将专注于通过跟踪 CentOS Stream 的变化和 Oracle Linux 等来为 AlmaLinux 提供安全更新。但从长远来看，他们将与其他 RHEL 下游产品和合作伙伴合作，寻找一条合适的发展道路。

>
> **[消息来源：AlmaLinux](https://almalinux.org/blog/impact-of-rhel-changes/)**
>
>
>

>
> 老王点评：对于这件事红帽背后的动机我们就不妄自揣测了，毕竟红帽和 AlmaLinux 曾经“建立了令人难以置信的工作关系”。但事实就是，社区构建的 AlmaLinux 想要跟上 RHEL 的构建会越来越麻烦和越来越慢。所以，你怎么看呢？
>
>
>

### 哈佛给计算机学生们配备了一位聊天机器人老师

哈佛大学将为今年秋季的计算机科学导论 CS50 课程的学生配置一位聊天机器人老师。这个聊天机器人将不使用 ChatGPT 或 GitHub Copilot，因为它们“太有帮助了”。相反，哈佛大学已经开发了自己的大型语言模型 “CS50 机器人”，它将 “具有类似的精神”，但将专注于 “引导学生找到答案，而不是将答案交给他们”。

>
> **[消息来源：PCMag](https://www.pcmag.com/news/harvards-new-computer-science-teacher-is-a-chatbot)**
>
>
>

>
> 老王点评：我认为哈佛大学走在了正确的道路，拥抱 AI，而不是让 AI 替代人类，让 AI 帮助学习，而不是让学生抄袭 AI 的作业。
>
>
>

### E3 或许再也不会举办

之前，我们 [报道](/article-15682-1.html) 过，今年的 E3 2023 已经取消，这本应是 2019 年后的第一次 E3 线下盛会。现在，E3 已经取消了 2024 年和 2025 年在洛杉矶的活动。这表明有些事情阻碍了 E3 的回归，或者其组织者正在考虑将其迁出洛杉矶。

>
> **[消息来源：The Verge](https://www.theverge.com/2023/6/22/23770393/e3-2024-2025-canceled-la-tourism)**
>
>
>

>
> 老王点评：一场大流行，改变了很多。很多事情再也回不到过去了。
>
>
>


Linux 中的模糊文件搜索

# Linux 中的模糊文件搜索

>
> 像 fzf 和 fzy 这样的现代工具将 Linux 终端中的文件搜索提升到了一个新的水平。
>
>
>

在 Linux 命令行中，如何 [搜索文件](https://learnubuntu.com:443/find-files/)？你可以使用 [find 命令](https://linuxhandbook.com:443/find-command-examples/)。这是标准答案，没有问题。

通常，你键入带有搜索参数的命令，按回车键，然后它会显示搜索结果。

你可以通过模糊搜索来提升终端中的文件搜索体验。

模糊搜索是一种近似搜索算法或技术。在这种搜索中，通过名称搜索指定位置的文件，并实时显示结果给用户。

模糊搜索在网络搜索引擎中很受欢迎，用户开始输入术语后，它会开始显示与该术语相关的结果。

在本文中，我将讨论两个命令行工具，它们可以让你在 Linux 中执行模糊搜索：

* `fzf`：模糊查找工具
* `fzy`：模糊选择工具

### fzf：Linux 中的模糊查找工具

`fzf` 是一款可用于 Linux 的模糊搜索工具，你可以通过它进行交互式文件搜索。

在 Ubuntu 中安装 `fzf`，打开终端并运行以下命令：

```
sudo apt install fzf

```

虽然 `fzf` 本身可以正常工作，但最好与其他工具配合使用，以充分发挥其功能。

#### 使用 fzf

打开终端并运行：

```
fzf

```

这将打开一个 `fzf` 提示符，在当前工作目录中搜索文件。

##### 为 fzf 应用边框

你可以使用 `--border` 选项为 `fzf` 应用边框，有多种边框可用，如 `rounded`（圆角）、`sharp`（尖角）等。

```
fzf --border=rounded

```

##### 应用背景和前景颜色

使用颜色属性，你可以为 `fzf` 设置 ANSI 颜色，可以作为背景、前景或两者都设置。

```
fzf --color="bg:black,fg:yellow"

```

你可以串联这些选项，使 `fzf` 在视觉上更加美观。

现在，让我展示一些 `fzf` 模糊搜索的实际用法。

#### 使用 fzf 在 Bash 历史中进行搜索

当然，Bash 历史记录中有 `CTRL+R` 的反向搜索功能。但如果你想使用 `fzf` 来获得更好的外观，可以运行以下命令：

```
history | fzf

```

#### 使用 fzf 结合 tree 命令

[tree 命令](https://linuxhandbook.com:443/tree-command/) 会列出文件和目录，并显示它们的层级关系。

使用 `fzf` 结合 `tree` 命令可以帮助你找到特定文件的绝对路径。

```
tree -afR /home/$USER | fzf

```

>
> ? 上述命令会调用 `tree` 并以递归方式列出包括隐藏文件在内的所有文件（`-a`）。同时，`-f` 选项告诉 `tree` 列出完整路径。
>
>
>

#### 在 fzf 中预览文件

有时，如果你可以获得你搜索的文件的小型预览，那会很有帮助。

幸运的是，`fzf` 提供了一个预览选项。你可以使用 `--preview` 来访问它。我在这里使用 `find` 命令使其更加有用。

```
find /home/$USER -type f | fzf --preview 'less {}'

```

在这里，当你滚动浏览结果时，它将使用 `less` 显示文本文件。

>
> ? 如果你使用其他命令如 `ls` 等，请不要使用 `-l` 等选项，因为这将显示额外的详细信息（文件权限）。这些额外的详细信息会破坏 `fzf` 预览所需的格式。在使用预览功能时，输入到 `fzf` 的应该只是文件名。
>
>
>

如果你已安装了 `bat`，也可以使用它来预览文件。

```
find /home/$USER -type f | fzf --preview 'bat --color always {}'

```

对于 Ubuntu 用户，可以使用 `batcat` 来调用 `bat`。因此运行：

```
find /home/$USER -type f | fzf --preview 'batcat --color always {}'

```

>
> ? [为这些命令创建别名](https://linuxhandbook.com:443/linux-alias-command/)，这样你就不需要反复输入它们。
>
>
>

#### 从任何地方使用 fzf 进入任何目录（高级技巧）

这比以前要复杂一些。在这里，你不能直接将 `fzf` 和 `cd` 连接在一起，因为它们是不同的进程。

你可以创建一个别名并使用以下命令：

```
cd $(find /home/$USER -type d | fzf)

```

或者，你可以按照下面解释的方法进行操作。

为此，你可能需要在 `bashrc` 中添加一个函数。让我将这个函数称为 `finder`。现在请添加以下行到你的 `bashrc` 中。

```
finder() {
  local dir
  dir=$(find required/location/to/search/and/enter -type d | fzf)
  if [[ -n "$dir" ]]; then
    cd "$dir" || return
  fi
}

```

现在，你应该 [输入路径](https://itsfoss.com/change-directories/)，其中包含你要搜索并进入的目录。

例如，我已经使用 `/home/$USER` 替换了该部分，表示我要从任何位置进入我的主目录中的任何目录。

保存你的 `bashrc` 文件后，要么重启终端，要么运行以下命令：

```
source ~/.bashrc

```

之后，你可以在终端上运行 `finder` 命令，一旦找到要进入的目录，按回车键即可。

#### 将选择内容复制到剪贴板

到目前为止，你已经了解了如何使用 `fzf`，它提供了搜索结果或预览。

现在，如果你想要复制某个项目的位置，你不必手动执行此操作。也有相应的解决方案。

首先，确保你已经安装了 `xclip`。

```
sudo apt install xclip

```

然后像这样将其传递给 `xclip`：

```
fzf | xclip -selection clipboard

```

这将复制你按下回车键的那些行到剪贴板上。

#### 其他用途

正如我之前所说，你可以使用任何涉及大量文本，并希望交互式搜索特定内容的命令。

* `cat ~/.bashrc | fzf` - 在 Bashrc 文件中搜索
* `lsblk | fzf` - 在锁定设备列表中搜索
* `ps -aux | fzf` - 在进程列表中搜索

### 另一个选择：Fzy，模糊选择器

与 `fzf` 不同，`fzy` 是一个模糊选择器，它会根据输入提供一个菜单供你选择。

例如，如果你将 `fzy` 与 `ls` 命令一起使用，它将给你提供一个类似菜单的界面。

默认情况下，它会显示十个条目。

#### 使用 fzy 进入目录

与 `fzf` 类似，你也可以使用 `fzy` 进入当前工作目录中的目录：

```
cd $(find -type d | fzy)

```

#### 使用任何编辑器打开文件

或者使用你喜欢的编辑器打开文件：

```
nano $(find -type f | fzy)

```

### 附加内容：自定义文件和图像预览

下面的命令将在 **Ubuntu** 中打开一个专门的自定义提示符，用于模糊搜索，你可以通过滚动来预览文本文件。

```
find /home/$USER -type f | fzf --color="bg:black,fg:yellow" --preview 'batcat --color always {}' --preview-window=bottom

```

为了方便访问，可以在你的 `bashrc` 文件中为此创建一个别名。

或者在使用 `timg` 命令行图像查看器时，在 `fzf` 中进行图像预览并滚动。使用以下命令进行安装：

```
sudo apt install timg

```

>
> ? 请注意，图像查看器无法正确显示图像，因为这不是 `fzf` 预览的主要目的。
>
>
>

```
fzf --preview 'timg -g 200x100 {}' --preview-window=right:90

```

对于那些喜欢折腾的人，可以尝试对此部分进行优化。

### 现代化的替代方案

大多数 Linux 命令都是从 UNIX 时代继承下来的。它们虽然老旧，但功能如预期。但这并不意味着它们不能改进。

我的意思是，你不需要重新发明轮子，但你总是可以努力改进轮子。

像 `fzf` 和 `fzy` 这样的现代化工具将 Linux 终端中的文件搜索提升到了一个新的水平。以下是一些其他有趣的命令行工具。

我尝试给出了这些模糊搜索工具的一些实际示例。希望你对它们感到足够有启发性。如果你打算使用它们，请在评论中告诉我。

*（题图：MJ/d25e71fa-f24e-49be-9579-e0520a8f6e18）*

---

via: <https://itsfoss.com/fuzzy-file-search-linux/>

作者：[Sreenath](https://itsfoss.com/author/sreenath/) 选题：[lkxed](https://github.com/lkxed/) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


# 在 Ubuntu、Linux Mint 和 Windows 中升级到最新的 LibreOffice

>
> 这篇初学者指南解释了在 Ubuntu、Linux Mint 和 Windows 中升级到最新 LibreOffice 所需的步骤。
>
>
>

[LibreOffice](https://www.libreoffice.org/) 被全球数百万用户使用，是当今最流行的免费办公套件。它由电子表格程序 （Calc）、文档处理器（Writer）、演示文稿（Impress）、绘图（Draw）和数学模块组成，可帮助你完成大部分办公、商务、学术和日常工作。

由于与 DOCX、PPTX 和 XLSX 等专有文件格式兼容，LibreOffice 可以作为付费的微软 Office 套件的出色替代品。它是 Apache OpenOffice 生产力套件的一个分支，由数以千计的全球贡献者积极开发。

### 升级到最新的 LibreOffice

LibreOffice 改变了它的版本命名方式，不再采用"Fresh"和"Still"的概念。现在，LibreOffice 有一个**社区**版和一个推荐的**企业**版。这是因为许多企业使用带有最新功能的最新 LibreOffice 版本，这对开发工作造成了阻碍。因此，团队建议企业用户从 LibreOffice 官方合作伙伴那里获得付费支持，以获得长期支持。你可以在 [此处](https://blog.documentfoundation.org/blog/2021/02/03/libreoffice-7-1-community/) 阅读博文。

以下是当前的版本：

#### 最新的 LibreOffice 版本

* 当前的 LibreOffice 社区版本系列是 **LibreOffice 7.4.x**。
* LibreOffice 稳定推荐的商业版本是 **LibreOffice 7.3.x**。

### 在 Ubuntu、Linux Mint 和其他基于 Ubuntu 的发行版中升级到最新的 LibreOffice

[Ubuntu 22.04 LTS Jammy Jellyfish](https://www.debugpoint.com/2022/01/ubuntu-22-04-lts/) 具有 LibreOffice 7.3.x。

**Ubuntu 20.04 LTS** 目前有 LibreOffice 6.4.7，很快就会得到下一次迭代的更新。

**Ubuntu 18.04 LTS** 支持到 [2023 年 4 月](https://www.debugpoint.com/ubuntu-release-dates-wiki/)，具有 LibreOffice 6.2 版本。Linux Mint 19.x 也提供了相同的版本。你仍然可以在 Ubuntu 18.04 或 Linux Mint 19.x 中下载并安装 LibreOffice 6.3.x 版本。

坚持使用发行版提供的 LibreOffice 版本是比较明智的。此外，除非你需要最新的功能，否则不应升级。如果你喜欢尝试，你可以继续：

#### 通过 PPA

你可以使用官方 LibreOffice PPA 安装和升级到最新的版本。打开终端并在 Ubuntu 或 Linux Mint 中运行以下命令。

```
sudo add-apt-repository ppa:libreoffice/ppa

```

```
sudo apt update && sudo apt install libreoffice

```

要**降级** LibreOffice 并删除 PPA，请从终端按顺序运行以下命令。

```
sudo add-apt-repository --remove ppa:libreoffice/ppa

```

```
sudo apt install ppa-purge && sudo ppa-purge ppa:libreoffice/ppa

```

#### 通过 Snap

你也可以选择通过下面的选项用 Snap 安装最新的LibreOffice。[Snap 包](https://www.debugpoint.com/2016/07/how-to-install-and-use-snap-packages-in-ubuntu/) 可以作为独立包在受支持的 Linux 发行版中使用。因此，你可以保留现有的 LibreOffice 安装并仍然运行最新的 Snap 版本。

请记住，从技术上讲，你可以使用一个 Snap 版本并行运行两个版本的 LibreOffice。但是，请确保可能存在轻微的文件关联问题和其他问题。这也适用于 Flatpak。

>
> **[用 Snap 下载 LibreOffice](https://snapcraft.io/libreoffice)**
>
>
>

#### 通过 Flatpak

Flatpak 是另一种方式，你可以通过它获得最新的 LibreOffice 以及发行版提供的版本。你可以[安装 Flatpak](https://www.debugpoint.com/2018/07/how-to-install-flatpak-apps-ubuntu-linux/) 并通过以下链接下载 LibreOffice。

>
> **[用 Flatpak 下载 LibreOffice](https://flathub.org/apps/details/org.libreoffice.LibreOffice)**
>
>
>

#### Windows 升级

对于 Windows，你不能直接从现有安装升级。你可以从 [本页](https://www.libreoffice.org/download/download/) 下载最新的 LibreOffice 并进行安装。在安装过程中，你现有的版本将被卸载。

### 升级故障排除

如果升级后遇到任何问题或系统不稳定，最好进行全新安装。因此，你可以从 [此链接](https://www.libreoffice.org/download/download/) 下载最新版本并进行安装。如果你使用的是 Ubuntu 或 Linux Mint，请不要忘记在安装最新版本之前先删除现有版本。

最后，如果你在 Ubuntu Linux 和其他操作系统中升级到最新的 LibreOffice 时遇到问题，请在下方发表评论。

---

via: <https://www.debugpoint.com/libreoffice-upgrade-update-latest/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1042 人工智能工件需要新的开源许可证

Summary:
? 人工智能工件需要新的开源许可证
? 安卓的紧急呼叫打爆英国 999 紧急电话
? 新车质量因使用更多新技术而下降
»
»

还好中国有110 119 120三个号，按五下还得让你选

来自四川泸州的 Chrome Mobile 114.0|Android 13 用户

IOS很早就有这功能了。需要在“设置”-“SOS紧急联络”里设置紧急情况下联络人的号码。可能苹果的质量好点，至今没有误操作。

# 硬核观察 #1042 人工智能工件需要新的开源许可证

### 人工智能工件需要新的开源许可证

上世纪七八十年代，由于自由软件运动的兴起，从版权法中衍生出来了自由及开源软件许可证，护航了自由及开源软件的蓬勃发展。人工智能诞生于开源软件，像 TensorFlow、PyTorch 这样的人工智能程序在其开源许可下运行良好。但新的人工智能工件，如数据集、模型、权重等并不完全适用于传统的版权模式。就像对 GitHub Copilot 输出的代码建议的起诉案，相信对用于训练人工智能违例使用各种训练素材的起诉会越来越多。甚至，会有像专利巨魔一样的许可证巨魔出现。开源倡议（OSI）和许多开源和人工智能领导人正在努力将人工智能和开源许可证以对两者都有意义的方式结合起来。

>
> **[消息来源：The Register](https://www.theregister.com/2023/06/23/open_source_licenses_ai)**
>
>
>

>
> 老王点评：人工智能崛起的太快，一年前还没什么人谈论人工智能，以至于很多事情都来不及做好准备。所以，现在需要一个像当年的自由软件宣言一样的提纲挈领的倡议出现，以及在这个基础上建立的不同的许可证，才能真正为人工智能的发展铺平道路。
>
>
>

### 安卓的紧急呼叫打爆英国 999 紧急电话

安卓 12 系统为紧急服务增加了一个简单的功能：只要连按五次电源键，你的手机就会为你拨打紧急服务。当手机放在你的口袋里，或者你有一个不正常的电源按钮时，这显然很容易意外地做到。英国警方称，“所有紧急服务机构目前都在经历创纪录的 999 电话量”。有趣的是，带有这个功能的安卓 12 是在一年半前推出的，但直到现在才逐步普及到足够多的设备上。从那时起，就有源源不断的帖子提醒人们注意这个问题。在补丁出来之前，谷歌目前的建议是关闭该功能。

>
> **[消息来源：Ars Technica](https://arstechnica.com/gadgets/2023/06/uk-police-blame-android-for-record-number-of-false-emergency-calls/)**
>
>
>

>
> 老王点评：这又是一个产品经理想当然的功能。
>
>
>

### 新车质量因使用更多新技术而下降

据研究，在美国销售的新车的质量正在下降，因为越来越多地使用了新技术和某些零件的制造质量下降等因素使这些车型更有“问题”。报告说，在过去两年中，每 100 辆车的问题数（PP100）上升了 30。特斯拉的 PP100 质量评级，同比增加了 31，到 2023 年达到了 257。新车提供的电子触摸式设计的门把手也成为了一个问题，在 10 个问题最多的车型中，有 7 个是电池电动车。

>
> **[消息来源：路透社](https://www.reuters.com/business/autos-transportation/quality-new-vehicles-us-declining-more-tech-use-study-shows-2023-06-22/)**
>
>
>

>
> 老王点评：电动车是有很多先进的地方，但是堆砌不成熟的新技术往往是造成崩溃的原因。这有点像一个刚刚学会使用新框架的开发者，喜欢利用各种新功能来开发软件，但是往往出现一些问题。
>
>
>


10 个最好的 Xfce 桌面环境的 Linux 发行版

Summary: 一份新鲜的最佳 Linux 发行版清单，提供轻量级的 Xfce 桌面环境。

manjaro的图片搞错了？没有openSUSE？

没有搞错~

那么大的GNOME42.2 确定没有搞错？

Zorin呢？

一份新鲜的最佳 Linux 发行版清单，提供轻量级的 Xfce 桌面环境。

# 10 个最好的 Xfce 桌面环境的 Linux 发行版

>
> 一份新鲜的最佳 Linux 发行版清单，提供轻量级的 Xfce 桌面环境。
>
>
>

Xfce 是一个以速度、性能和资源效率为重点的轻量级桌面环境。它在不牺牲功能的情况下，提供了一个干净直观的用户界面。它采用了经过时间验证的、传统的图标和菜单驱动的用户界面，对提高生产力非常有效。此外，Xfce 还允许用户根据自己的偏好进行个性化设置。

许多 Linux 发行版都将 Xfce 作为其主打桌面环境，并进行了各种调整和定制。如果你喜欢 Xfce 并希望将其用于日常驱动程序，可以查看以下发行版的清单。

排名仅基于我们的推荐和各个发行版的新鲜度。

### 带有 Xfce 桌面环境的最佳 Linux 发行版

#### 默认带有 Xfce 的 Debian

Debian Linux 以其稳定性和可靠性而闻名，提供了 Xfce 作为默认的桌面环境。当你安装 Debian 桌面的 ISO 时，如果没有选择特定环境，它会安装 Xfce。

Debian 和 Xfce 的强大组合提供了稳定性、安全性和广泛的软件仓库，非常适合各类用户。无论你是寻找可靠的桌面操作系统还是稳定的服务器平台，Debian 和 Xfce 都提供了用户友好的体验，可以根据你的具体需求进行定制。

如果你不喜欢 Ubuntu，但想要在 APT 生态系统中使用 Xfce，你可以考虑使用带有 Xfce 的 Debian Linux。这将是一个理想的组合，适用于高效的日常使用发行版。最后，你将能够通过此变体体验原始的 Xfce 桌面环境。

你可以从下面的页面下载 Debian Xfce ISO 文件。

>
> **[下载带有 Xfce 桌面环境的 Debian](https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/)**
>
>
>

#### Linux Mint Xfce 版本

如果你是 Linux Mint 的粉丝，希望使用 Xfce 桌面环境，那么你应该尝试它的 Xfce 版本。尽管 Mint 的主打的是 Cinnamon 桌面，但 Xfce 版也同样出色。

Linux Mint Xfce 版本引入了许多很酷的 Mint 应用程序（Xapps），使 Xfce 桌面对你来说更具生产力。内置的自定义和主题也让它在外观上优于默认的 Xfce 感觉。

此外，你还可以轻松享受顺滑的系统更新、版本升级以及许多系统级操作，只需点击几下。Linux Mint Xfce 版本提供了一个顺滑且愉悦的计算体验，可能是最稳定且易于使用的 Xfce 发行版。

你可以通过以下链接下载 Linux Mint Xfce ISO。

>
> **[下载 Linux Mint Xfce Edition](https://linuxmint.com/download.php)**
>
>
>

#### MX Linux

MX Linux 是一款受欢迎且可能是最受关注的新兴发行版，因其多样性和简单性而受到许多用户的关注。它基于 Debian 的稳定版本，并配备了定制的 Xfce 桌面环境。

在其核心部分，MX Linux 是没有 systemd 的。因此，你可以轻松使用这个超快的发行版在旧硬件上运行。MX Linux 还提供了 “MX 工具”，简化了在桌面上执行各种任务的过程。这些工具涵盖了系统管理、硬件设置和软件包管理等多个功能，使用户能够轻松定制自己的体验。

以下是 MX Linux 成为此列表中值得考虑的一个产品的一些关键原因：

* 基于 Debian 的稳定版本
* Xfce 桌面环境，并提供 Fluxbox 选项
* 无 systemd
* 出色的性能和稳定性
* 可访问广泛的软件仓库
* 方便定制的 MX 工具

>
> **[下载 MX Linux](https://mxlinux.org/download-links/)**
>
>
>

#### Fedora Xfce 版本

如果你想要基于 Fedora 的 Xfce 桌面环境，那么你的选择相对有限。其中一个选择是 Fedora Xfce 版本，它带来了最新的软件包和升级。Fedora Xfce 通常每年两次提供最新版本的 Xfce 桌面环境。此外，Fedora Linux 带来了最新的技术升级和软件包，使其成为基于 Xfce 的发行版的最佳选择。

Fedora Linux 中的 Xfce 桌面环境是其原装版本，没有任何定制。因此，你可以根据自己的喜好和需求 [自定义 Xfce 桌面环境](https://www.debugpoint.com/customize-xfce-modern-look-2020-edition/)。此外，Fedora Linux 提供了一个广泛的软件仓库，提供各种应用程序、库和开发工具。

你可以从以下页面下载 Fedora Xfce 版本。

>
> **[下载 Fedora Xfce 版本（种子文件）](https://torrent.fedoraproject.org/)**
>
>
>

#### Xubuntu

Xubuntu 是将受欢迎的 Xfce 桌面环境与 Ubuntu 操作系统集成在一起的 Linux 发行版。它为用户提供了轻量级、高效的计算体验，并融入了熟悉的 Ubuntu 生态系统。Xubuntu 专注于 Xfce 桌面环境，能够实现快速响应的用户界面，并节省系统资源。

然而，Xubuntu 遵循 Ubuntu 的基础软件包，其中包括 Snap 和其他 Ubuntu 桌面应用程序。如果你能接受这些，那么 Xubuntu 是一个稳定的基于 Xfce 的发行版的绝佳选择。

你可以从以下页面下载 Xubuntu。

>
> **[下载 Xubuntu](https://xubuntu.org/download/)**
>
>
>

#### EndeavourOS

EndeavourOS 是这个列表中第一个基于 Arch Linux 的 Xfce 发行版。三年前，一个小团队的贡献者们开始了 EndeavourOS，以继承已停止的 Antergos 项目。从那时起，EndeavourOS 因其简便的安装、用户体验和功能而变得受欢迎。

尽管还有其他几个桌面环境可用，但 EndeavourOS 默认配备 Xfce 桌面环境。它的 Xfce 桌面环境经过了轻微的定制，这个基于 Arch Linux 的发行版提供了几乎原汁原味的 Xfce 桌面环境。

如果你曾经尝试过 EndeavourOS，你一定会“感受”到作为 Arch Linux 发行版，对于终端用户来说，执行任务有多么地“轻松”。这个发行版的座右铭是成为一款“面向大众”的 Arch Linux 通用目的发行版，摒弃了新用户对 Arch Linux 安装的恐惧和使用 Arch 的优越感。

EndeavourOS 是其他提供 Xfce 和 Arch Linux 的发行版中最好的选择。你可以从以下页面下载 EndeavourOS。

>
> **[下载 EndeavourOS](https://endeavouros.com/latest-release/)**
>
>
>

#### Linux Lite

Linux Lite 6.0，又名 Linux Lite 操作系统，基于 Ubuntu 并遵循其 LTS（长期支持）生命周期。这意味着在 Ubuntu Linux 发布后的五年内，你将获得类似的发布时间表和安全更新。轻量级桌面环境 Xfce 是其主要且唯一的桌面环境。Linux Lite 操作系统主要针对希望开始他们的 Linux 之旅的 Windows 用户。因此，你可以将其视为一个“桥梁” Linux 发行版。

它提供的 Xfce 桌面环境经过轻微的主题、壁纸和字体定制。不过，它是另一个基于 Ubuntu 的带有 Xfce 的发行版。你可以试试看。

你也可以阅读有关 [Linux Lite 评论](https://www.debugpoint.com:443/?s=linux+lite+review) 中有关其性能和其他方面的内容。

>
> **[下载 Linux Lite](https://www.linuxliteos.com/download.php)**
>
>
>

#### Manjaro Xfce

Manjaro Linux 是一款著名且经受时间考验的发行版，将 Arch Linux 带给了广大用户。它经过精心设计，旨在打破“Arch Linux 很难”的迷思。此外，一旦开始使用，你不会感觉到它是一个 Arch Linux 发行版。它可能感觉更像是基于 Debian 或 Fedora 的发行版。

尽管 Manjaro Linux 也提供了其他桌面环境，如 KDE Plasma，但它的 Xfce 变体也是以基于 Arch Linux 核心为基础设计的。如果你需要另一款基于 Arch Linux 的带有 Xfce 的发行版，可以尝试它。

你可以在我发布的 [多篇点评](https://www.debugpoint.com:443/?s=endeavouros) 中了解更多关于这个发行版的信息。

>
> **[下载 Manjaro Linux](https://manjaro.org/download/)**
>
>
>

#### Peppermint OS

接下来是 Peppermint OS，这是一个基于 Debian 稳定版的发行版，非常适合日常使用。它包括预安装的应用程序，帮助你快速上手，并带有定制的 Xfce 桌面环境。之前，Peppermint OS 使用的是 LXDE，但最近切换到了 Xfce。

除了基于 Debian 之外，Peppermint OS 还具有两个关键应用程序：Peppermint Welcome 应用程序为新用户提供有关发行版的基本概述；另一个应用程序，Peppermint Hub，提供了一些快捷方式，用于管理你的系统，比如更改主题和从软件仓库下载软件。如果你是 Peppermint OS 的新用户，Peppermint Hub 可以从一个便捷位置处理大多数系统管理任务。

你可以尝试一下，但是 Xfce 桌面体验与本列表中的第一个发行版相同。

>
> **[下载 Peppermint OS](https://peppermintos.com/)**
>
>
>

#### Kali Linux

Kali Linux 是网络安全行业中广为人知的发行版，它基于 Debian 的测试分支，在这个列表中它是一个必不可少的选项。尽管它是针对某个特定领域的，但默认的 Xfce 桌面环境使它成为这个列表中的另一个候选项。

Kali Linux 配备了各种专门用于渗透测试、漏洞评估和数字取证的工具。这些工具包括密码破解、网络扫描和无线攻击，使其成为评估和保护系统的理想解决方案。

它的 Xfce 桌面环境经过大量定制，使其成为外观出色的发行版之一。但是，它面向的是专门的用例。因此，你应该只将 Kali 用于那些特定功能。

>
> **[下载 Kali Linux](https://www.kali.org/get-kali/)**
>
>
>

### 对于你来说哪个是最好的？

嗯，这要取决于你的个人喜好和使用场景。如果你不确定，我建议你尝试 Linux Mint Xfce 或 MX Linux。它们应适用于各种用途。

如果你需要 Fedora 或 Arch Linux 基础，可以尝试 Fedora Xfce 或 EndeavourOS。

其余的发行版可能适用于需要 Ubuntu 或 Debian 基础的特定用例。

### 结论

总之，我们介绍了几个针对 Xfce 桌面环境进行优化的优秀 Linux 发行版。无论你是初学者还是高级用户，这些发行版都为你的计算需求提供了轻量、高效和可定制的平台。每个发行版都具有独特的功能和优势。

希望你能找到适合你的喜爱的基于 Xfce 的发行版！

*（题图：MJ/a1b83f34-f5c2-43cd-aeb8-9f614c5dd1aa）*

---

via: <https://www.debugpoint.com/best-xfce-distributions/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed/) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出