Fedora 39 版本发布，新亮相一款不可变版本

Summary: Fedora 39 的发布带来了许多令人兴奋的变化和完善。

Fedora 39 的发布带来了许多令人兴奋的变化和完善。

![](/data/attachment/album/202311/08/160126z6pyyg7t7iiagzzz.png)

>
> Fedora 39 的发布带来了许多令人兴奋的变化和完善。
>
>
>

Fedora 是众多 Ubuntu 替代品中的热门选择，或者还可以说，用其来替换任何其他基于 Debian 的发行版都是一个理想的选择。

每次升级后，Fedora 都会变得更好。现在让我们看一下最新的 Fedora 39 有哪些重要更新。

接下来，我将向你展示这个版本都包含了哪些新功能。

### ? Fedora 39 版本更新：都有哪些新内容？

![](/data/attachment/album/202311/08/160148sup4uu0n8zullepb.png)

得益于稳健强大的 [Linux 内核 6.5](https://news.itsfoss.com/linux-kernel-6-5-release/)，Fedora 39 的发布包含了众多值得关注的新功能。其中一些关键的亮点包括：

* 安装程序的升级
* GNOME 45
* 应用/包的更新
* Fedora Onyx

#### 安装程序的升级

![](/data/attachment/album/202311/08/160149ucrsi6h36urcsrzc.png)

尽管安装程序并未更换，我们在全新安装 Fedora 时，会看到 **一个新的欢迎屏幕**。在更新后的 Fedora 38 ISO 中，你可能已经注意到了这一点。

此外，**Fedora 的安装程序现在支持更大的 EFI 系统分区**，这个分区的 **最小尺寸达到了 500 MB**。这样做是为了便于在现代硬件上进行固件更新，也为未来引导程序特性做好了准备。

你可能会在想，[Anaconda Web UI](https://news.itsfoss.com/fedora-new-web-ui-install-dev/) 出了什么情况？

其实，这个 UI 设计已经 [计划](https://fedoraproject.org/wiki/Changes/AnacondaWebUIforFedoraWorkstation) 在 Fedora 40 中推出了，我们都非常期待未来它的表现！

#### GNOME 45

![](/data/attachment/album/202311/08/160149v07z80oj37oqe0ja.png)

Fedora 39 引入了最近发布的 [GNOME 45](https://news.itsfoss.com/gnome-45-release/)。对于此次更新，我是期待已久。

早先的 “<ruby> 活动 <rt>  Activities </rt></ruby>” 按钮已被替代，现在，你将看到一个 **药丸形状的动态指示器**，它可以清晰的显示出当前的工作空间，以及其他可供切换的工作空间。

你可以通过滚动它或者点击圆点来切换工作空间。

“<ruby> 设置 <rt>  Settings </rt></ruby>” 应用程序里也陆续出现了一些新的变化，例如像 **经过翻新的 “<ruby> 隐私 <rt>  Privacy </rt></ruby>” 标签页**，以及在 “<ruby> 关于 <rt>  About </rt></ruby>” 菜单下新增的 “<ruby> 系统细节 <rt>  System Details </rt></ruby>” 子菜单。

此外，有一些新的核心应用程序，比如新的图像查看器以及其他应用的更新，我强烈建议你查看我们所有关于 GNOME 45 的内容：

>
> **[GNOME 45 发布，弃用“活动”按钮](/article-16215-1.html)**
>
>
>

#### 应用/包的更新情况

![](/data/attachment/album/202311/08/160150sql4z2uoul4l3uf2.png)

Fedora 39 同样更新了一套应用程序和软件包。主要的更新包括：

* [LibreOffice 7.6](https://news.itsfoss.com/libreoffice-7-6/)
* [LLVM 17](https://releases.llvm.org/17.0.1/docs/ReleaseNotes.html)
* [Golang 1.21](https://go.dev/blog/go1.21)
* IBus 1.5.29
* Perl 5.38
* RPM 4.19
* Python 3.12

#### Fedora Onyx 的介绍

![](/data/attachment/album/202311/08/160150gqnbd0qsz5fgl6u5.png)

今年早些时候，Fedora 的不可变版本阵容迎来了一个新成员，叫做 “[Fedora Onyx](https://news.itsfoss.com/fedora-onyx-official/)”。

那时，**我们并不知道它的具体发布日期**，但现在，它终于在 **Fedora 39 的版本更新中有所呈现**。

这使得 Fedora 的不可变版本阵容 **增长到了四个**，其它分别是 [Fedora Silverblue](https://silverblue.fedoraproject.org/)、[Fedora Kinoite](https://kinoite.fedoraproject.org/)，以及 [Fedora Sericea](https://fedoraproject.org/sericea/)。

**推荐阅读** ?

>
> **[11 个不可变 Linux 发行版，适合那些想要拥抱未来的人们](/article-15841-1.html)**
>
>
>

#### ? 其他变化和改进

其他的变化包括一些注目的内容：

* Fedora 39 提供了一个绿色的 Bash 提示符。
* 移除了 Fedora 工作站的自定义 Qt 主题设计。
* 对于 Indic（印度）语言，实现了谷歌 [Noto](https://fonts.google.com/noto) 字体。
* Flatpak 不再使用模块进行构建，而是采用了一个独立的构建目标。

你还可以通过我们针对 [Fedora 39 特性](/article-16207-1.html) 的报道和查阅 [官方更改日志](https://fedoraproject.org/wiki/Releases/39/ChangeSet) 来更深入地了解这次的版本发布。

### ? 如何下载 Fedora 39

和往常一样，Fedora 的新版本更新带来了大量的改进和升级。你可以转到 [官方网站](https://fedoraproject.org/workstation/download/) 获取你所需要的 ISO 文件。

你也可以点击下面的按钮直接下载。

>
> **[点击获取 Fedora 39](https://fedoraproject.org/workstation/download/)**
>
>
>

**对于现有用户** ，我们有一个很实用的升级指南可以帮助你开始升级操作：

>
> **[如何从 Fedora 38 升级到 Fedora 39](https://itsfoss.com/upgrade-fedora-version/)**
>
>
>

*（题图：MJ/f6e0a56a-5e8b-4c0f-89c2-596375bba00f）*

---

via: <https://news.itsfoss.com/fedora-39-release/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1179 苹果公司暂停开发明年的操作系统，以修复软件错误

Summary:
? 苹果公司暂停开发明年的操作系统，以修复软件错误
? Servo 浏览器引擎获得资金支持 HTML 表格
? 必应聊天的 GPU 不够用了，微软将向甲骨文租用 GPU
»
»

![](/data/attachment/album/202311/08/174319n87ac1xgg2ycxa2x.jpg)

![](/data/attachment/album/202311/08/174356p6wn2kl8okkwno9n.png)

### 苹果公司暂停开发明年的操作系统，以修复软件错误

苹果公司上周在内部向员工宣布了这一决定，称该公司的工程师现在的主要任务不是添加新功能而是修复错误和改进性能。上个月，该公司完成了明年发布的 iPhone、iPad 和 Mac 操作系统的第一个里程碑版本，但在内部测试中发现了太多的问题，因此推迟了第二个里程碑版本的发布工作，暂停新功能开发一周，专注于修复错误。不过暂停开发不大会影响新版本的发布。

>
> **[消息来源：彭博社](https://www.bloomberg.com/news/articles/2023-11-07/apple-delays-work-on-ios-18-macos-15-watchos-11-due-to-problems-with-bugs)**
>
>
>

>
> 老王点评：这是集体修 bug 的一周。我在写这条消息时，刚刚收到了前两天升级的 macOS 14.1 的一个更新。
>
>
>

![](/data/attachment/album/202311/08/174417c5lf18zmmgmlmryg.png)

### Servo 浏览器引擎获得资金支持 HTML 表格

由 Rust 编写的 Servo 浏览器引擎最初是 Mozilla 开发的，目前由欧洲 Linux 基金会等组织共同开发。今年，Servo 项目取得了良好的进展，目标是成为一个便于嵌入的网络引擎，并不断增加新的功能。最近，他们获得了 NLnet 基金会的资助，用于完善 Servo 的浮动支持、支持更多语言的内联布局，以及添加对 “表格” 标签的初步支持。是的，HTML 表格尚未在 Servo 中实现，这次开发的重点是初步满足维基百科上 HTML 表格的需求。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Servo-Grant-Funding-Table)**
>
>
>

>
> 老王点评：我是很吃惊居然还有连表格都不支持的浏览器引擎。
>
>
>

![](/data/attachment/album/202311/08/174438jhj3035jfjhhsn7f.png)

### 必应聊天的 GPU 不够用了，微软将向甲骨文租用 GPU

微软需要更多的计算资源来跟上其人工智能服务的 “爆炸式增长”，而甲骨文恰好有数以万计的英伟达 GPU 可供租用。这两家云计算提供商的最新合作利用了微软 Azure 的甲骨文互联服务，它允许在 Azure 中运行的服务与甲骨文云计算基础架构中的资源进行交互。此前他们曾利用这项服务让客户将运行在 Azure 中的工作负载连接回甲骨文云上运行的数据库。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/07/bing_gpu_oracle/)**
>
>
>

>
> 老王点评：连地主家都没有余粮了。不过，最近是感觉 Azure 的 ChatGPT 有些笨了。
>
>
>


Fedora Workstation 39 的新特性

![](/data/attachment/album/202311/09/143205c3c7636ooh0zuhuu.png)

作为领先的开源桌面操作系统，Fedora Workstation 由全球社区共同携手打造。本文将向你展示最新版本 Fedora Workstation 39 主要的用户所能见到的变化。如今，你可以在 [Fedora Workstation 官方网页](https://fedoraproject.org/workstation/) 下载体验，或是通过在“软件”应用内或使用 [dnf system-upgrade](https://docs.fedoraproject.org/en-US/quick-docs/upgrading-fedora-offline/) 在你喜爱的终端模拟器进行升级。

### GNOME 45

Fedora Workstation 39 搭载了 GNOME 的最新版本——GNOME 45。这个版本为几个核心应用带来了时尚的新插件、全新的图像查看器应用、新增了在特定系统上的键盘背光设置等。同时，我们的一个更具信息性的活动按钮，及多项性能改进，将伴随全面优化的整套用户体验而来。你可以在 [GNOME 45 发布说明](https://release.gnome.org/45/) 查看更多详细信息。

#### 内在改进

GNOME 45 在用户体验的方方面面都有所细化，以下几点只是其中的一部分：

* 使用动态工作空间指示器取代了静态的活动按钮。新的指示器不仅显示工作空间数量，而且还能快速展示你正在关注的工作空间。

![新的动态工作空间指示器](/data/attachment/album/202311/09/143256h3tbh346pet5heb5.gif)
* 新增了一个摄像头活动指示器，要启用它，你可以通过 Pipewire 访问你的摄像头。这将与麦克风、屏幕录制和屏幕录像指示器协同工作。
* 快速设置菜单新增了一个键盘背光设置，这项设置仅支持特定的硬件设备。

![新的键盘背光设置](/data/attachment/album/202311/09/143257q4qj14p4vy11fv1o.png)
* 重新设计了默认的光标，并修复了原来设置中很多长期存在的问题。
* Fedora Workstation 39 已不再支持 Adwaita-qt 与 QGnomePlatform Qt 主题，取而代之的是 Qt 应用的上游默认主题。

#### 核心应用

在 GNOME 45，许多应用现在使用了 libadwaita 1.4 特色的新用户界面插件。这提供了美观的双色设计并将侧边栏延伸至窗口全高。这不仅使应用看起来更酷，而且在小窗口尺寸下更易于使用。可在 [此处](https://blogs.gnome.org/alicem/2023/09/15/libadwaita-1-4/) 查看详细信息。此外，新的 headerbar 插件使顶栏与窗口内容的视觉分隔更加明显。

![文件、设置和日历显示新的侧边栏插件](/data/attachment/album/202311/09/143257y8c5r8zr1ucj5rr8.png)

Fedora Workstation 39 引入了 GNOME 的新图像查看器应用，内部代号为 Loupe。该应用自底而上，使用 Rust、GTK 4，和 libadwaita 进行构建以实现高性能和高度适应性。

![新的图像查看器应用（截图素材来自公有领域）](/data/attachment/album/202311/09/143334h6jzsp4wgzp4yyz4.jpg)

在核心应用中我们还有很多细微的改进。例如：

* “设置”应用新增了“系统详情”区块，新的键盘布局查看器，简洁的描述字段，以及优化的键盘导航功能。

![新的系统详情窗口](/data/attachment/album/202311/09/143259p6tjxzvdtdy8dyxu.png)
* 在“文件”应用中，我们对搜索结果进行了顺序优化。
* 我们在“软件”应用中提供了卸载 Flatpak 时删除用户数据的选项。

![卸载 Flatpak 应用时显示的新提示](/data/attachment/album/202311/09/143259vjcqwwczcdww9wdw.png)
* “日历”应用新增了逐行滚动和更有用的搜索结果功能。
* 在“连接”应用中使用 RDP 连接时新增了复制文件、图像、文本的功能。

#### 性能改进

在 GNOME 45，我们对性能提升投入了很多努力。

* 现在默认优先使用硬件加速的视频解码（在支持的环境下）。
* “文件”应用中的缩略图生成现在支持多线程处理。
* 我们显著减少了光标的卡顿和延迟。
* 在 GNOME Shell 中，以及“文件”、“软件”、“字符”等应用的搜索性能得到显著提升。

我们在整个技术栈中也进行了一些性能改进，包括 GLib、GTK 的 OpenGL 渲染器，和 systemd。这些性能优化工作都得益于我们在 Fedora Workstation 之前的版本中启用的帧指针！

### Fedora Linux 39 的底层突破

Fedora Linux 39 也有许多值得注意的底层变化，此处列出一些：

* Fedora Linux 39 现在将彩色 Bash 提示符作为默认设置！

![彩色 Bash 提示符](/data/attachment/album/202311/09/143300x7uslcufzkzulczq.png)
* 对于使用 Indic 脚本的语系，我们现在把 Noto 字体作为默认字体，取代了旧的 Lohit 字体集。
* 由于使用量较低且缺乏主动维护，[模块化](https://docs.fedoraproject.org/en-US/modularity/) 仓库在 Fedora Linux 39 中不再被提供。

	+ Fedora 模块构建服务将在 Fedora Linux 38 的生命周期结束后，也就是在 2024 年的 5 月左右结束。

*（题图：MJ/f06d0e9b-4c2e-4947-8333-e51340a45324）*

---

via: <https://fedoramagazine.org/whats-new-fedora-workstation-39/>

作者：[Merlin Cooper](https://fedoramagazine.org/author/mxanthropocene/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


在 Arch Linux 上安装 Docker

键盘侠一下，写 Arch Linux 有关的教程，还不如来翻译 Arch Wiki：wiki.archlinux.org

![](/data/attachment/album/202311/09/154128mctmdkdd0jolyv0k.png)

>
> 了解如何在 Arch Linux 上安装 Docker，并使用 Docker Compose 和制表符补全为运行容器做好准备。
>
>
>

在 Arch Linux 上安装 Docker 很简单。它可以在 Extra 仓库中找到，你可以简单地 [执行 pacman 魔法](https://itsfoss.com/pacman-command/)：

```
sudo pacman -S docker

```

但要在 Arch Linux 上正确运行 Docker，还需要执行更多步骤。

### 让 Arch Docker 做好准备

这一切都归结为以下步骤：

* 从 Arch 仓库安装 Docker
* 启动 Docker 守护进程并在每次启动时自动运行
* 将用户添加到 `docker` 组以运行 `docker` 命令而无需 `sudo`

让我们看看详细步骤。

#### 步骤 1：安装 Docker 包

打开终端并使用以下命令：

```
sudo pacman -S docker

```

输入密码并在询问时按 `Y`。

![](/data/attachment/album/202311/09/154156d510mluaho77kog0.png)

这可能需要一些时间，具体取决于你使用的镜像。

>
> ? 如果你看到找不到包或 404 错误，那么你的同步数据库可能是旧的。使用以下命令更新系统（它将下载大量软件包并需要时间）： `sudo pacman -Syu`
>
>
>

#### 步骤 2：启动 docker 守护进程

Docker 已安装但未运行。你应该在**第一次运行 Docker 命令**之前启动 Docker 守护进程：

```
sudo systemctl start docker.service

```

我还建议启用 Docker 服务，以便 Docker 守护进程在系统启动时自动启动。

```
sudo systemctl enable docker.service

```

这样，你就可以开始运行 `docker` 命令了。你不再需要手动启动 Docker 服务。

![](/data/attachment/album/202311/09/154156e8ufewhn8m9uanhd.png)

#### 步骤 3：将用户添加到 docker 组

Docker 已安装并且 Docker 服务正在运行。你几乎已准备好运行 `docker` 命令。

但是，默认情况下，你需要将 `sudo` 与 `docker` 命令一起使用。这很烦人。

为了避免在每个 `docker` 命令中使用 `sudo`，你可以将自己（或任何其他用户）添加到 `docker` 组，如下所示：

```
sudo usermod -aG docker $USER

```

**你必须注销（或关闭终端）并重新登录才能使上述更改生效。如果你不想这样做，请使用以下命令：**

```
newgrp docker

```

现在已经准备好了。我们来测试一下。

#### 步骤 4：验证 docker 安装

Docker 本身提供了一个很小的 Docker 镜像来测试 Docker 安装。运行它并查看是否一切正常：

```
docker run hello-world

```

你应该看到类似这样的输出，表明 Docker 成功运行：

![](/data/attachment/album/202311/09/154157enosbzo4d494b9ze.png)

恭喜！ 你已经在 Arch Linux 上成功安装了 Docker。

### 可选：安装 Docker Compose

Docker Compose 已经成为 Docker 不可或缺的一部分。它允许你管理多个容器应用。

较早的经典 Compose 由 `docker-compose` Python 软件包提供。Docker 还将其移植到 Go 中，并通过 `docker compose` 提供，但该软件包附带 [Docker Desktop](https://www.docker.com/products/docker-desktop/)。

在这个阶段，我建议使用经典的 `docker-compose` 插件并使用以下命令安装它：

```
sudo pacman -S docker-compose

```

![](/data/attachment/album/202311/09/154158kj8z8omkzyid878m.png)

### 故障排除技巧

以下是你可能遇到的一些常见问题以及可能的解决方案：

#### 制表符补全不适用于 docker 子命令

如果你想对 `docker` 命令选项使用制表符补全（例如将 `im` 补全到 `images` 等），请安装 `bash-completion` 包：

```
sudo pacman -S bash-completion

```

关闭终端并启动一个新终端。你现在应该能够通过 `docker` 命令使用制表符补全功能。

#### 无法连接到 Docker 守护进程错误

如果你看到以下错误：

```
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

```

那是因为 Docker 守护进程没有运行。参考步骤 2，启动 Docker 服务，确保其正在运行并启用它，以便 Docker 守护进程在每次启动时自动运行。

```
sudo systemctl start docker.service
sudo systemctl enable docker.service

```

#### 尝试连接到 Docker 守护程序套接字时权限被拒绝

如果你看到此错误：

```
ddocker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

```

这是因为你需要使用 `sudo` 运行 `docker` 命令，或者将用户添加到 `docker` 组以在不使用 `sudo` 的情况下运行 `docker` 命令。

我希望这篇简短的文章可以帮助你在 Arch Linux 上运行 Docker。

*（题图：MJ/9951f8bf-d2e5-4335-bd86-ebf89cba654d）*

---

via: <https://itsfoss.com/install-docker-arch-linux/>

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

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


硬核观察 #1180 Canonical 明年将发布不可变桌面操作系统

Summary:
? Canonical 明年将发布不可变桌面操作系统
? Cruise 称其人类远程协助人员负责 15-20 辆无人驾驶出租车
? Hugging Face 合作成立初创企业加速器
»
»

![](/data/attachment/album/202311/09/165158xi5zut0si6tuvwiz.jpg)

![](/data/attachment/album/202311/09/165208z1i1kmx7g7uggnox.png)

### Canonical 明年将发布不可变桌面操作系统

明年四月，新的 Ubuntu LTS 发布时，Canonical 还将发布一个全新的不可变桌面版 Ubuntu Core Desktop。它是现有 Ubuntu Core 发行版的图形桌面版。Ubuntu Core 是一个面向物联网的不可变发行版，用在嵌入数字标牌和智能显示器等边缘设备上。不可变发行版的根文件系统是只读的，也没有传统的软件包管理器，更像是手机或平板电脑的操作系统。与 Core 一样，Core Desktop 完全采用单一的打包系统 Snap。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/08/ubuntu_core_desktop_details/)**
>
>
>

>
> 老王点评：参照手机和平板上的经验，或许这种整个操作系统被打包成一块的不可变桌面才是 Linux 桌面推广到普通用户的道路。
>
>
>

![](/data/attachment/album/202311/09/165231cm7fowal4mpmqejx.png)

### Cruise 称其人类远程协助人员负责 15-20 辆无人驾驶出租车

通用汽车旗下的无人驾驶公司 Cruise 最近因为旧金山一位行人被拖受伤事故而暂停了在全美的无人驾驶出租车业务，并召回其全部 950 辆自动驾驶汽车，进行软件更新。该公司创始人兼 CEO 回应称，他们的无人出租车不是真正的无人驾驶，需要远程操作中心工作的人类频繁操控。该公司称，他们的无人驾驶出租车车队每行驶 6-8 公里会触发一次远程协助会话，一名人类远程协助人员负责 15-20 辆无人驾驶汽车。

>
> **[消息来源：CNBC](https://www.cnbc.com/2023/11/06/cruise-confirms-robotaxis-rely-on-human-assistance-every-4-to-5-miles.html)**
>
>
>

>
> 老王点评：这些远程人员是不是就像玩游戏一样操纵十几辆车辆行驶。
>
>
>

![](/data/attachment/album/202311/09/165250oqjgq1kk6gqga7yc.png)

### Hugging Face 合作成立初创企业加速器

Hugging Face 公司是一家拥有十亿美元风险投资支持的初创公司，将自己定位为 OpenAI 的一种开源替代方案，它拥有 ChatGPT 等软件的完整开放替代方案，并领导着 BigScience 等社区项目。Hugging Face 与 Meta 等启动了一项面向法国的人工智能创业计划，入选企业需要在开放的基础模型上开展实质性的项目，或者至少能够证明 “愿意将这些模型整合到他们的产品和服务中”。Hugging Face CEO 在一份声明中说：“对我来说，开源人工智能是这十年来最重要的话题，因为它是实现人工智能道德民主化的基石。”

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2023/11/08/meta-hugging-face-open-source-ai-station-f/)**
>
>
>

>
> 老王点评：我相信，开源的 AI 模型或许一时比不上并不 Open 的 OpenAI 等专有解决方案，但是未来一定是开源的。
>
>
>


GIMP 快速教程：缩放、裁剪和旋转图像

Summary: 本文翻译自 GIMP 官网，是 GIMP 教程的一部分。

本文翻译自 GIMP 官网，是 GIMP 教程的一部分。

![](/data/attachment/album/202311/10/095101mn4v16pnt2wt6wqn.png)

>
> 本文翻译自 GIMP 官网，是 GIMP 教程的一部分。
>
>
>

### 目的

恭喜你！你在电脑上安装了 GIMP！GIMP 是一个非常强大的图像处理软件，但是不要被它吓到。即使你没有时间学习高级的电脑图形处理技能，GIMP 仍然可以是一个非常有用和方便的快速修改图像的工具。

我希望这些例子能帮助你解决那些需要对图像应用进行快速修改的小需求。希望这也能让你学习到 GIMP 更强大的图像编辑能力。

为了便于快速查看，我将在这篇快速教程中涵盖以下四个要点：

* 更改图像的大小（尺寸），即缩放
* 更改 JPEG 的大小（文件大小）
* 剪裁图像
* 旋转或翻转图像

为了与这个页面之前的版本保持保持一致，我将使用 NASA 提供的天文学家每日图像（APOD）中的一张图片。

为了跟随这些快速示例，你只需要知道如何找到你的图片并打开它：“<ruby> 文件 <rt>  File </rt></ruby> → <ruby> 打开 <rt>  Open </rt></ruby>”。

### 调整图像的大小（尺寸），即缩放

你可能会遇到一个图像太大，不适合特定用途的问题（例如，嵌入网页、在线发布或包含在电子邮件中）。在这种情况下，你通常会希望将图像缩小到更小的尺寸，以便更好地满足你的需求。

在 GIMP 中轻松完成这个任务非常简单。

我们使用的图片是哈勃望远镜拍摄的马头星云红外成像图。

当你第一次在 GIMP 中打开图像时，很可能会发现图像被缩放，以便整个图像都能适合你的画布。对于这个示例，需要注意的是，GIMP 窗口顶部的窗口装饰会显示一些关于图像的信息。

![GIMP画布的视图，顶部显示窗口信息](/data/attachment/album/202311/10/095131t04z3ohb2nj3hkao.png)

请注意，窗口顶部的信息显示了当前图像的像素尺寸（在这个例子中，像素尺寸为 1225×1280）。

要调整图像的大小到新的尺寸，我们只需要调用“<ruby> 缩放图像 <rt>  Scale Image </rt></ruby>”对话框：“<ruby> 图像 <rt>  Image </rt></ruby> → <ruby> 缩放图像... <rt>  Scale Image ... </rt></ruby>”。

这将打开“缩放图像”对话框：

![“缩放图像”对话框](/data/attachment/album/202311/10/095132apzapdqq4qdezqpe.png)

在“缩放图像”对话框中，你会发现一个*可以输入新宽度和高度的地方*。如果你知道所需图的新尺寸，可以在这里填写相应的值。

“<ruby> 宽度 <rt>  Width </rt></ruby>”和“<ruby> 高度 <rt>  Height </rt></ruby>”输入框右侧，你也会**注意到一个小链**。这个图标显示了宽度和高度值被相互锁定，这意味着改变一个值会导致另一个值的变化，以保持相同的宽高比（图像中不会出现奇怪的压缩或拉伸）。

例如，如果你想要将图像宽度调整到 600 像素，你可以在这个宽度输入框中输入这个值，高度将自动更改以保持图像的宽高比：

![调整大小到 600 像素](/data/attachment/album/202311/10/095132mj3qqadc03d000cl.png)

如你所见，在宽度一栏输入 600 像素后会自动将高度更改为 627 像素。

此外，我还展示了 “<ruby> 质量 <rt>  Quality </rt></ruby>” 选项下的不同选项。默认值是“<ruby> 立方 <rt>  Cubic </rt></ruby>”，但为了保持最佳质量，最好使用 “Sinc（Lanczos3）”。

如果你想使用不同类型的值（而不是像素大小）指定一个新的尺寸，可以通过点击“px”下拉菜单来更改输入值的类型：

![更改输入值类型](/data/attachment/album/202311/10/095133rpho5p3i57ipv772.png)

这种情况的一个常见用途是，如果你想要以原始尺寸的百分比指定一个新的尺寸。在这种情况下，你可以更改为“<ruby> 百分比 <rt>  percent </rt></ruby>”，然后在任何字段中输入 50 来将图像缩小一半。

一旦你缩放了图像，别忘了保存你所做的更改：选中 “<ruby> 文件 <rt>  File </rt></ruby> → <ruby> 导出... <rt>  Exprert ... </rt></ruby>” 以新的文件名导出，或者 “<ruby> 文件 <rt>  File </rt></ruby> → <ruby> 覆盖 {文件名} <rt>  Overwrite {FILENAME} </rt></ruby>” 覆盖原始文件（谨慎使用）。

有关使用缩放图像的更多信息，你可以查看文档。

### 修改 JPEG 文件的大小

你也可以在导出为 JPEG 等格式时修改图像的文件大小。JPEG 是一种**有损**压缩算法，这意味着在将图像保存为 JPEG 格式时，你将牺牲一些图像质量来获得较小的文件大小。

我使用已经将其调整为 200 像素宽（请参见上方）的“马头星云”图像，并使用不同级别的 JPEG 压缩将其导出，以比较 JPEG 压缩的效果：

![比较不同级别的 JPEG 压缩](/data/attachment/album/202311/10/095134ojh4wxcw4x76ro9c.png)

如你所见，即使在质量设置为 80 的情况下，图像的文件大小显著减少了 77％，而图像质量仍然相当合理。

当你完成任何正在进行的图像修改，并准备导出时，只需通过以下方式调用导出对话框：“文件 → 导出 …” 这将调用“<ruby> 导出图像 <rt>  Export Image </rt></ruby>”对话框：

![导出图像对话框](/data/attachment/album/202311/10/095134xg2nff7df7wwdfnf.png)

你可以在此*输入新的文件名*。如果文件名里包含扩展名（此时为 “.jpg”），GIMP 会尝试为你导出对应的文件格式。此处将图像导出为 JPEG 格式。

如果你需要将文件导出到不同的位置，也可以通过位置窗格导航到计算机上的新位置。当你准备好导出图像时，只需按“<ruby> 导出 <rt>  Expert </rt></ruby>”按钮。

这将调用“<ruby> 导出图像为 JPEG <rt>  Export Image as JPEG </rt></ruby>”对话框，你可以在其中更改导出的质量：

![从“导出为JPG”对话框中更改导出的质量](/data/attachment/album/202311/10/095135x49x21090291dldl.png)

现在你可以在此对话框中更改导出质量。如果你还勾选了“<ruby> 在图像窗口中显示预览 <rt>  Show preview in image window </rt></ruby>”选项，画布上的图像将更新以反映你输入的质量值。这也将启用“<ruby> 文件大小： <rt>  File size: </rt></ruby>”信息，告诉你导出后的文件大小。你可能需要移动一些窗口才能在背景中查看画布上的预览。

当你对结果满意时，按“导出”按钮进行导出。

要查看有关导出不同图像格式的更多详细信息，请参阅手册中的“从 GIMP 中获取图像”。

### 裁剪图像

有很多原因可能会使你想要裁剪图像。你可能想要删除无用的边框或信息，或者你可能希望最终图像的焦点集中在某些特定的细节上。

简而言之，裁剪就是一个将图像缩小到比你开始时小的操作：

![原始图像（左），裁剪图像（右）](/data/attachment/album/202311/10/095136xe1neeb1m85fei1o.png)

裁剪图像的步骤非常简单。你可以通过工具面板使用裁剪工具：

![工具面板上的裁剪工具](/data/attachment/album/202311/10/095136avg0cgnzg4gzj93i.png)

或者通过菜单访问裁剪工具：“<ruby> 工具 <rt>  Tools </rt></ruby> → <ruby> 变换工具 <rt>  Transform Tools </rt></ruby> → <ruby> 裁剪 <rt>  Crop </rt></ruby>”。

![GIMP裁剪工具光标](/data/attachment/album/202311/10/095136y7igdtvv2t21b1ti.png)

一旦激活该工具，画布上的鼠标光标会改变,以表示正在使用裁剪工具。

现在你可以在画布上的任何位置单击鼠标，然后拖动鼠标到新位置以高亮显示初始选择区域以进行裁剪。在这个阶段，你不必担心精确度，因为在实际裁剪之前，你可以修改最终选区。

![使用裁剪工具的第一步](/data/attachment/album/202311/10/095659hzzn5c51cc6hq3ju.png)

在选择要裁剪的区域后，你会发现选区仍然处于活动状态。在这一点上，将鼠标光标悬停在选区的任何四个角或边缘上都会改变鼠标光标，并高亮显示该区域，以对裁剪进行精调。

你可以点击并拖动任何一侧或一角来移动该部分的选区。

一旦你对裁剪区域满意，只需按键盘上的回车键即可提交裁剪。在你想从头开始或决定不裁剪时，可以按键盘上的 `Esc` 键退出操作。

有关在GIMP中裁剪的更多信息，请参阅文档。

#### 另一种方法

另一种裁剪图像的方法是首先使用矩形选择工具进行选择：

![裁剪选区 矩形选择工具](/data/attachment/album/202311/10/095136vfkuhca2tmh9hmfc.png)

或者通过菜单：“<ruby> 工具 <rt>  Tools </rt></ruby> → <ruby> 选择工具 <rt>  Selection Tools </rt></ruby> → <ruby> 矩形选择 <rt>  Rectangle Select </rt></ruby>”，然后你可以以与裁剪工具相同的方式高亮显示选区，并调整选区。一旦你有一个喜欢的选区，你就可以通过以下方式将图像裁剪到该选区的大小：“<ruby> 图像 <rt>  Image </rt></ruby> → <ruby> 裁剪到选区 <rt>  Crop to Selection </rt></ruby>”。

### 旋转或翻转图像

可能有时你需要旋转图像。例如，你可能使用相机在垂直方向拍摄了图像，但是 GIMP 并没有自动旋转（GIMP 通常会为你自动处理，但并非总是如此）。

有时你也可能想翻转图像。这些命令都位于同一个菜单项下：“<ruby> 图像 <rt>  Image </rt></ruby> → <ruby> 变换 <rt>  Transform </rt></ruby>”。

#### 翻转图像

如果你想翻转你的图像，变换菜单提供了两种选项：水平翻转或垂直翻转。此操作将沿着指定的轴翻转（镜像）图像。例如，这里显示了在单个图像上应用的所有翻转操作：

![应用到基图像（左上角）的所有翻转](/data/attachment/album/202311/10/095137khhh5zu8sn0t0xtu.jpg)

#### 旋转图像

变换菜单中的图像旋转限制为 90° 顺时针/逆时针或 180°。 不要误解这意味著 GIMP 不能执行任意角度旋转。任意旋转是针对每个图层进行处理的，而这里的图像旋转适用于整个图像。

![旋转示例：原始（左上角），顺时针旋转90°（右上角），逆时针旋转90°（左下角），180°（右下角）。 ](/data/attachment/album/202311/10/095138bx9xfe10orf8l1g9.jpg)

### 总结

这里展示的简单示例只是冰山一角。然而，这些是许多没有学习太多图像处理知识的人经常进行的常见修改。希望这个教程对你有所帮助。 我鼓励你阅读其他教程，了解更高级的图像处理方法！

*（题图：MJ/9bbe01ba-7cc1-49b1-91a6-2b3d13594503）*

---

via: <https://www.gimp.org/tutorials/GIMP_Quickies/>

作者：Pat David 译者：[TimXiedada](https://github.com/TimXiedada) 编辑：[wxy](https://github.com/wxy)

本文由贡献者投稿至 [Linux 中国公开投稿计划](https://github.com/LCTT/Articles/)，采用 [CC-BY-SA 协议](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 发布，[Linux中国](https://linux.cn/) 荣誉推出


Linux 用户必备的 8 大网站

Summary: 这里列举的是我个人最喜欢的 Linux 网站，希望你也能喜欢。

居然没有 lwn. 另外我觉得 Phoronix 在软件自由这方面有点三观不正。Reddit 我更喜欢 r/linuxmasterrace.

lwn.net

linux.cn 确信

这里列举的是我个人最喜欢的 Linux 网站，希望你也能喜欢。

![](/data/attachment/album/202311/10/111732lnv0n709f7n59xqv.png)

>
> 这里列举的是我个人最喜欢的 Linux 网站，希望你也能喜欢。
>
>
>

既然你已经在关注我们，我们能为你解答大多数关于 Linux 的基础需求。

然而，对 Linux 的学习总是无止境的，即便是对于资深的 Linux 专家也是如此。????

实际上，一些网站和博客内容对于 Linux 新手以及有经验的用户都十分有用。

下面我就来列举一些你或许应该收藏的优秀网站。

### 1、ArchWiki

![](/data/attachment/album/202311/10/111844pxoa86w65xzxdmw5.jpg)

[ArchWiki](https://wiki.archlinux.org/) 平台提供了各种信息。无论你是寻求关于工具、安全技术、安装程序、桌面环境，或是其它任何主题的内容，你都可以在 ArchWiki 上找到相关的深入讨论。

从技术角度讲，ArchWiki 充当着 Arch Linux 发行版的文档门户。不过，即使你并非 Arch Linux 的用户，你仍然可以在这里找到教程、指南、常见问题解答（F.A.Q），以及大量其它的关键信息。

这些信息表述清晰，经过详尽的审查以及更新，且易于理解。

>
> **[ArchWiki](https://wiki.archlinux.org/)**
>
>
>

### 2、ExplainShell

![](/data/attachment/album/202311/10/111845eneg71g1dgr4rhuc.jpg)

[ExplainShell](https://explainshell.com/) 是一个非常有趣的平台，可以帮助你快速识别命令中所使用的参数。

通常，我们需要分别检索手册页或者是命令信息。而有了 ExplainShell，这个过程就变得更高效，它能够迅速为你提供所需的信息，同时为你提供对应的手册页链接。

它主要显示从 Ubuntu 的手册页库中提取的信息。所以，无论你是正在进行软件安装，进行 Git 提交，还是连接到 SSH，你都可以借助 ExplainShell 来深入理解各种命令。

>
> **[ExplainShell](https://explainshell.com/)**
>
>
>

### 3、Crontab.guru

![](/data/attachment/album/202311/10/111845i333jmjbm8emymkq.jpg)

如果你想要创建 [cron 任务](https://itsfoss.com/cron-job/) 以实现自动化，那么 [Crontab.guru](https://crontab.guru/) 就是一款必备的便利网站。

只需输入你计划在 cron 任务中采用的表达式，即可获取关于其是否会按预期工作的详细反馈。对于正确的表达式，它将直接呈现你想通过 cron 任务设定的时间表。

除此之外，即使你是 cron 的新手，它也会在编辑器里高亮表达月份/日期/星期的字段。

如果内容符合你的预期，就可以直接使用，或者编辑以修正并使用。

>
> **[Crontab.guru](https://crontab.guru/)**
>
>
>

### 4. DistroWatch

![](/data/attachment/album/202311/10/111846eljj2j2kewkj00iz.jpg)

[DistroWatch](https://distrowatch.com/) 或许是每个 Linux 用户都耳熟能详的网站。该网站以列举当前热门 Linux 发行版而闻名，一些用户甚至参考其流行度榜单，以了解自己偏爱的发行版是否位列其他版本之上。

在这里，你可以获取到最新发布的各种 Linux 发行版的更新信息，其中可能包括一些你此前未曾听闻过的版本，以及新版本的简要更改日志。

如果你订阅了它们的通讯，还可以收到发行版评论以及一些有关开发的新闻。对于希望跟踪最新发行版的用户，这个网站值得你书签收藏。

>
> **[DistroWatch](https://distrowatch.com/)**
>
>
>

### 5、Phoronix

![](/data/attachment/album/202311/10/111846eb115foe6i16g8ae.jpg)

[Phoronix](https://www.phoronix.com/) 是目前为止最老牌的 Linux 网站之一，专注于发布面向硬件的内容。

无论你正寻找与最新处理器相关的 Linux 基准测试，还是 Linux 发行版的性能报告，你都可以在 Phoronix 上找到。除此之外，你还可以在这里定期获取到 Linux 世界的最新消息和开发动向。

>
> **[Phoronix](https://www.phoronix.com/)**
>
>
>

### 6、Ubuntu Blog

![](/data/attachment/album/202311/10/111846wqvzzbnddb8gdd80.jpg)

Canonical 的博客主要关注 Ubuntu、其开发动态、企业级更新以及其它技术性进展。

如何你希望了解关于 Ubuntu 的所有事情，那么 [Ubuntu Blog](https://ubuntu.com/blog) 就是你的最佳书签。无论你是物联网爱好者，还是利用 Ubuntu 进行机器人工程开发，总有新动态在发生。

坦白说，鉴于 Ubuntu 广泛的应用，你无法从任何特定的博客获取所有这些更新信息。

>
> **[Ubuntu Blog](https://ubuntu.com/blog)**
>
>
>

### 7、GamingOnLinux

![](/data/attachment/album/202311/10/111846z7catx5kkbxbommx.jpg)

尽管我们也会覆盖一些游戏更新，并为你提供一个 [游戏指南](https://itsfoss.com/linux-gaming-guide/)，但是对于全面了解 Linux 游戏和 Steam Deck 的一切，[GamingOnLinux](https://gamingonlinux.com/) 是你的终极选择。

不论是新的开发动态、新游戏、SteamOS 的发布、SteamVR，还是对 Linux 用户有重要影响的促销信息，你都可以在这里找到。

>
> **[GamingOnLinux](https://gamingonlinux.com/)**
>
>
>

### 8、Reddit 的 /r/Linux 子论坛

![](/data/attachment/album/202311/10/111846gcif59xi5fg088ia.jpg)

虽然 Reddit 已经与过去有所不同，但其子论坛仍然值得关注。

[/r/Linux 子论坛](https://www.reddit.com/r/linux/) 是一个值得你收藏的社区，你可以在这里读到开源世界和 Linux 领域的最新动态。也许 Reddit 用户并没有你想象中那么友好，但如果你想随时了解最新的变化，这个子论坛绝对值得你的收藏。

>
> **[/r/Linux 子论坛](https://www.reddit.com/r/linux/)**
>
>
>

### 私货：Linux 中国

翻译这篇文章时，我觉得应该将我们的网站也推荐给大家：

Linux 中国是一家立足中文开源爱好者社区的网站，已经持续为大家提供了十多年的关于开源、技术方面的内容。除了网站，我们还提供了同名的微信公众号、知乎官方账号。此外，我们在 BiliBili、YouTube、微博、抖音上也提供了短视频内容；在喜马拉雅上提供了音频内容；以及，很多人都在订阅的 RSS。

>
> **[Linux 中国](https://linux.cn/)**
>
>
>

顺便说一句，我们现在提供了深色模式和文本模式，你试过了吗？

### 我收藏了什么？

我很喜欢 **Phoronix 带来的硬件深度分析** 和 **Distrowatch 对新发行版项目的最新消息**，因此这两个网站一直位于我的收藏列表中。

而你需要收藏什么呢？

事实上，如果你是 Ubuntu 的桌面用户，关注 **Canonical 的博客**无疑能帮你了解最新版本的发布和新功能的解读。对于游戏爱好者，**GamingOnLinux** 是你的一站式解决方案。

假如你是那种总想知道事物运作方式或本质的人，那么，**ArchWiki**应该是你的首选。

当然，对于所有跟 Linux 相关的东西，我们会竭尽全力为你提供最佳的内容。所以，请别忘了也收藏我们哦！?

? 那么，你最喜欢收藏哪些网站呢？请在下方评论区告诉我吧！

*（题图：MJ/f29cd1de-dacc-4b38-b91d-a697d9adf8da）*

---

via: <https://itsfoss.com/useful-linux-websites/>

作者：[Ankush Das](https://itsfoss.com/author/ankush/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1181 欧洲立法准备拦截和监视加密的 HTTPS 连接，且不允许反制

Summary:
? 欧洲立法准备拦截和监视加密的 HTTPS 连接，且不允许反制
? 苹果称 MacBook Pro 上 的 8GB 内存相当于 PC 的 16 GB 内存
? 为了帮你选购更好的产品，Mozilla 推出首个 AI 大模型
»
»

吹的天花乱坠，8G内存并不够用，然后拿硬盘当交换空间，写入量爆炸（半年20TB），苹果公司是被制裁了吗，大内存卖这么贵？

来自山东枣庄的 Chrome Mobile 116.0|Android 10 用户

想不到吧，提出GDPR的欧盟竟然会做出比当年的美国和我们的老大哥（比如当年臭名昭著的CNNIC）更恶心的事情。

来自广东广州的 Chrome Mobile 119.0|Android 10 用户

苹果的“祖传”8GB内存在M1推出或更早时就一直被诟病，这种说法显然站不住脚。对于只办公、上网、听歌、看视频的人确实够用，但是只要做一些复杂点的事情，比如开发、PS、后期处理，内存马上爆掉（吃硬盘swap）。对于运行虚拟机这种硬性要求，内存不够就是不够。

《乔布斯传》有一段话：<br />
20世纪90年代初，苹果在斯卡利的领导下市场占有率持续下降，乔布斯对斯卡利的愤怒和蔑视也与日俱增。“斯卡利引进下三滥的人和下三滥的价值观，把苹果给毁了。”乔布斯后来悲叹，“他们只在乎如何赚钱——主要为他们自己，同时也为苹果——而不在乎如何制造出色的产品。”乔布斯感觉斯卡利对利润的追逐是以牺牲市场份额为代价的。“Mac之所以输给微软，是因为斯卡利坚持尽可能地榨取每一分利润，而不是努力改进产品和降低价格。”结果是利润最终消失。

谢谢！

![](/data/attachment/album/202311/10/151935k7zpexyl0xeoxale.jpg)

![](/data/attachment/album/202311/10/151945j3xc08xhnpnh4c3n.png)

### 欧洲立法准备拦截和监视加密的 HTTPS 连接，且不允许反制

欧洲的立法者预计将通过数字身份规则 eIDAS 2.0 的立法。它的要求之一是，浏览器制造商必须信任政府批准的证书颁发机构（CA），并且不实施超出欧洲电信标准协会规定范围的安全控制。但是，如果浏览器制造商怀疑或检测到滥用（例如流量拦截），则不得采取反制措施来取消对这些 CA 证书的信任。Mozilla 说，这使得任何欧盟成员国的政府都能签发用于拦截和监视的网站证书，这些证书可以用来对付每一个欧盟公民。Mozilla、谷歌和 EFF 等均对这一条表示了关切和担忧。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/08/europe_eidas_browser/)**
>
>
>

>
> 老王点评：你为什么有这样的错觉？
>
>
>

![](/data/attachment/album/202311/10/152009hxxaplxlnxdoxltx.png)

### 苹果称 MacBook Pro 上 的 8GB 内存相当于 PC 的 16 GB 内存

苹果 MacBook Pro 标准型号过去十年配备的内存一直是 8GB，上个月，苹果推出的售价 1599 美元的 M3 MacBook Pro 仍然只有 8GB 的统一内存，而且是由 CPU、GPU 和神经网络加速器共享的。相比之下，Windows 笔记本基本上都是 16GB 或 32GB。一位苹果高管在接受采访时表示，MacBook Pro 上 的 8GB 统一内存相当于 PC 的 16GB 内存，“将我们的内存与其他系统的内存进行比较实际上是不对等的，因为我们对内存的使用效率很高，我们使用内存压缩，而且我们拥有统一的内存架构。”所谓统一内存，指的是苹果 M 系列的 Mac 的内存封装在处理器的片上系统芯片旁边，并与之直接连接，而不是焊接到主板上或使用 SODIMM 模块连接。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/09/apple_exec_defends_8gb/)**
>
>
>

>
> 老王点评：虽然我感觉也够了，但是这其实是狡辩，而且增加内存的苹果电脑会贵很多。
>
>
>

![](/data/attachment/album/202311/10/152025d88rtxllltr8tzb0.png)

### 为了帮你选购更好的产品，Mozilla 推出首个 AI 大模型

今年早些时候，Mozilla 收购了一家利用人工智能和机器学习识别虚假和欺骗性产品评论的初创公司 Fakespot。在此基础上，Mozilla 开始测试其第一个大型语言模型 Fakespot Chat，购物者可以向该聊天机器人询问他们正在考虑的产品，就像你在现实世界中的实体店购物时向销售人员寻求帮助一样。该技术利用人工智能和机器学习对产品评论进行分类，去伪存真，回答用户的问题。该功能可以通过 Fakespot 分析器使用，也可以通过浏览器扩展在亚马逊网站的产品上使用。

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2023/11/08/fakespot-chat-mozillas-first-llm-lets-online-shoppers-research-products-via-an-ai-chatbot/)**
>
>
>

>
> 老王点评：我怎么觉得 Mozilla 有点不务正业呢？
>
>
>


震撼登场！全新的 Steam Deck OLED 公开亮相！

Summary: 一款全新的、拥有更好显示效果以及卓越规格的 Steam Deck。

记得linux的HDR基本不能用，这波算了终于有大企业给linux的游戏整上完全支持的HDR了？

一款全新的、拥有更好显示效果以及卓越规格的 Steam Deck。

![](/data/attachment/album/202311/11/144604h3w4wf53jg4ftw7w.jpg)

>
> 一款全新的、拥有更好显示效果以及卓越规格的 Steam Deck。
>
>
>

随着假期临近，Valve 带给我们可能让这个季节更加欢乐的一些新鲜事。

他们近期的一次公告中，揭露了具备多项令人兴奋升级的**全新 Steam Deck 变体**。

快来一起深入了解一下吧。

### ? Steam Deck OLED：有哪些新特点？

此款 Steam Deck 变体，如名所示，配备了**全新的 90Hz、7.4 英寸 HDR OLED 显示屏**，支持达到**高达 1,000 尼特的 HDR 峰值亮度**以及**600 尼特的 SDR 亮度**。

相较于现有的配备了 LCD 的型号， OLED 显示屏能够**为玩家呈现更为深邃的黑色和更加明亮的色彩**。

然而，超凡的显示屏**并非新款 Steam Deck 唯一的亮点**，它的处理器也实现了升级，**更高效的 6 纳米 AMD “Sephiroth” APU**如今负责所有板上的处理任务。

作为上述特性的补充，Steam Deck OLED 还配备有**更大容量的 50Whr 电池**，能够带给你持久的电池续航。

在连接性方面，它提供了**Wi-Fi 6** 和 **Bluetooth 5.3**，实现了**更优质的下载体验**。

>
> ? 配有一根 2.5m 的电缆的 45W USB Type-C PD3.0 电源供应器，以便为电池充电。
>
>
>

对于**控制器也有所改进**，优化了模拟摇杆的顶部材料和形状，实现了更佳的粘性和防尘性，肩部按钮的反应更敏捷，并提供优越的触感反馈等等。

**操作系统仍然是 LCD 版本上的 Steam OS 3**，但是，如果你想尝试些不同的东西，不妨试试 [Bazzite](https://news.itsfoss.com/bazzite/)。

#### ? 主要规格

如果你想了解，新推出的 Steam Deck OLED 其实力如何？这里有详细的配置：

* **APU：** 6 纳米 AMD “Sephiroth”
* **CPU：** 4 核，[Zen 2](https://en.wikipedia.org/wiki/Zen_2)，主频 2.4–3.5 GHz
* **GPU：** 8x [RDNA 2](https://en.wikipedia.org/wiki/RDNA_2) 处理单元，主频 1.6 GHz
* **RAM：** 16 GB LPDDR5
* **存储：** 512 GB 或 1 TB 的 NVMe SSD
* **操作系统：** [SteamOS](https://itsfoss.com/steamos/) 3（基于 Arch）
* **重量：** 669 克

**但是，等等，还有更多！**

Valve 也推出了**特别的限量版 Steam Deck OLED** ，它具有所有相同的技术规格和 1 TB 的存储，**透明壳体以及烟雾般透明的外观色彩**。一起来看看吧?

![](/data/attachment/album/202311/11/144637gujcb4fzcr39rwjf.png)

它看起来真的很酷。我非常喜欢许多制造商现在的做法，通过透明的外壳来展示设备本身。也许，这是一个很好的趋势。

Valve 表明，这款设备只在美国和加拿大有**数量有限的供应**。

这个量产策略之所以限量，是因为他们想**尝试**了解是否有大量的对此类产品的需求，他们计划在未来尝试更多的颜色方案。

### ? 在哪儿购买呢？

**起价为 549 美元**，你可以在 11 月 16 日之后在 [Steam Store](https://store.steampowered.com/steamdeck) 采购 Steam Deck OLED。

但请注意，并非所有 Steam 运营的区域都有销售。

>
> **[Steam Deck OLED](https://store.steampowered.com/steamdeck)**
>
>
>

如果你在想；**原有的 Steam Deck LCD 版本会怎么样？**

嗯，这些机型依然会有供应，并会定期更新。

? 在即将到来的假期季节，你会想要购买一台吗？请在下方让我知道你的想法！

---

via: <https://news.itsfoss.com/steam-deck-oled/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


如何将 Silverblue 重定位到 Fedora Linux 39

Summary: 如果你想在 Fedora Silverblue 系统上更新或将系统 重定位rebase 到 Fedora Linux 39，本文会提供帮助。

![](/data/attachment/album/202311/11/152119r6nv12c115vntzp4.png)

[Fedora Silverblue](https://docs.fedoraproject.org/en-US/fedora-silverblue/) 是 一款基于 Fedora Linux 构建的面向桌面的操作系统。这款操作系统非常适合日常使用、开发和容器化的工作流程。它有 [许多优势](https://fedoramagazine.org/give-fedora-silverblue-a-test-drive/)，例如可以在发生问题时轻松回滚操作。如果你想在 Fedora Silverblue 系统上更新或将系统 <ruby> 重定位 <rt>  rebase </rt></ruby> 到 Fedora Linux 39，本文会提供帮助。文章不仅会指导你执行操作，还会教你如何在遇到意外情况时撤销操作。

### 更新你目前的系统

在实际重定位至 Fedora Linux 39 前，你需要先安装所有待处理的更新。你可以在终端中使用下面的命令：

```
$ rpm-ostree update

```

或者你也可以通过 GNOME “软件”应用安装更新，然后重新启动系统。

### 使用 GNOME “软件” 重定位

在 GNOME “软件”应用的更新页面上，你可以看到 Fedora Linux 的新版本已经可以使用。

首先，你需要点击 “<ruby> 下载 <rt>  Download </rt></ruby>” 按钮来下载新的操作系统镜像。这个过程可能需要一些时间。完成后，你会发现更新已经准备好进行安装。

接下来，点击 “<ruby> 重新启动 & 升级 <rt>  Restart & Upgrade </rt></ruby>” 按钮。这个过程只需要几分钟，一旦更新完成，计算机将会重新启动。重启后，你会看到崭新的 Fedora Linux 39 的系统环境，看起来很简单，是吧？

### 使用终端进行重定位

如果你更喜欢在终端操作，那么这部分指南就是为你准备的。

首先你需要确认 39 版本是否已经可以使用：

```
$ ostree remote refs fedora

```

在命令输出中你应该看到如下内容：

```
fedora:fedora/39/x86_64/silverblue

```

如果你想保留当前的部署（这意味着这个部署将会持续在 GRUB 中显示为一个选项，直到你手动移除它），你可以通过运行下面的命令实现：

```
# 0 是在 rpm-ostree 状态中的条目位置
$ sudo ostree admin pin 0

```

如果你想移除已经固定的部署，你可以使用下面的命令：

```
# 2 是在 rpm-ostree 状态中的条目位置
$ sudo ostree admin pin --unpin 2

```

然后，将你的系统重定位至 Fedora Linux 39 镜像。

```
$ rpm-ostree rebase fedora:fedora/39/x86_64/silverblue

```

最后，重启你的电脑，启动进入 Fedora Linux 39 版本。

### 如何进行回滚

如果遇到任何问题（例如，如果你无法启动 Fedora Linux 39），回滚是非常容易的。在系统启动时，在 GRUB 菜单中选择 Fedora Linux 39 之前的版本，然后你的系统就会启动这个更早的版本而非 Fedora Linux 39。如果你在启动过程中看不到 GRUB 菜单，那么在启动时尝试按下 `ESC` 键。如果你想让更早版本的选择永久生效，你可以使用下面的命令：

```
$ rpm-ostree rollback

```

现在，你已经了解如何将 Fedora Silverblue 系统重定位到 Fedora Linux 39，以及如何进行系统回滚了。那么何不今天就试试看呢？

### 常见问题解答

在每篇关于重定位 Silverblue 到新版本的文章的评论中，总会有相似的问题，因此我会在这个部分尝试解答这些问题。

**问题：在 Fedora 的重定位过程中我能跳过某些版本吗？例如直接从 Fedora 37 Silverblue 更新到 Fedora 39 Silverblue。**

答案：虽然有时可能可以在重定位过程中跳过某些版本，但并不推荐这样操作。你应当始终更新到紧邻的新版本（例如从 38 更新到 39），以避免不必要的错误。

**问题：我安装了 [rpm-fusion](https://rpmfusion.org/) ，在重定位过程中出现错误，我应当怎样进行重定位？**

答案：如果你在 Silverblue 安装上加入了 [rpm-fusion](https://rpmfusion.org/)，你在重定位前应当执行以下操作：

```
rpm-ostree update \
    --uninstall rpmfusion-free-release \
    --uninstall rpmfusion-nonfree-release \
    --install rpmfusion-free-release \
    --install rpmfusion-nonfree-release

```

执行完上述操作后，你可以按照本篇博文的步骤完成重定位过程。

**问题：这个指南是否适用于其他的 ostree 版本（例如 Kinoite， Sericea）？**

答案：是的，你可以照着本指南的 *使用终端进行重定位* 部分的操作来完成所有的 Fedora ostree 版本的重定位过程。只需要使用对应的分支即可。例如对于 Kinoite，你可以使用

```
fedora:fedora/39/x86_64/kinoite

```

而非

```
fedora:fedora/39/x86_64/silverblue

```

*（题图：MJ/71150afc-ae44-48f3-8689-e86758e07b1e）*

---

via: <https://fedoramagazine.org/how-to-rebase-to-fedora-linux-39-on-silverblue/>

作者：[Michal Konečný](https://fedoramagazine.org/author/zlopez/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1182 40 年前，微软宣布 Windows 开发计划

Summary:
? 40 年前，微软宣布 Windows 开发计划
? 苹果公司为在 iOS 上侧载应用做准备
? 微软禁止内部使用 OpenAI 的 ChatGPT
»
»

老王点评：我用的第一个图形化桌面操作系统已经是 Windows 3.1 ，其底层运行的是 DOS 6.2.2。

+1

40 年前，Richard Stallman 宣布 GNU 开发计划

![](/data/attachment/album/202311/11/191737gb1szsmbnzdmddam.jpg)

![](/data/attachment/album/202311/11/191839dyjqstegzgrag7qx.png)

### 40 年前，微软宣布 Windows 开发计划

在 40 年前，1983 年 11 月 10 日，在纽约市的一次新闻发布会上，微软首次披露了其推出基于图形用户界面的全新 PC 操作系统的计划。公司将该操作系统命名为 “Windows”。虽然微软希望在 1984 年 4 月推出 Windows，但第一个版本却是在首次宣布两年后才上市。有趣的是，微软最初希望 Windows 应用程序可以重叠显示，但是最终在 Windows 1.0 中采用的是平铺式窗口，应用程序会自动调整其大小以适应屏幕，所以，现在的一些 Linux 平铺桌面环境还真不是什么创举。该操作系统在头两年的销售量仅为 50 万套，销售失败。事实上，直到 1990 年 Windows 3.0 的发布，该操作系统才真正取得了成功。

>
> **[消息来源：NeoWin](https://www.neowin.net/news/a-quick-look-back-at-the-official-announcement-of-microsoft-windows-10-40-years-ago-today/)**
>
>
>

>
> 老王点评：我用的第一个图形化桌面操作系统已经是 Windows 3.1 ，其底层运行的是 DOS 6.2.2。
>
>
>

![](/data/attachment/album/202311/11/191914wn888sb41khu8bqq.png)

### 苹果公司为在 iOS 上侧载应用做准备

iOS 17.2 有了一个新的公共框架，名为 “托管应用分发”。通过分析这个 API，发现了一个新的、未使用的权限，它将允许第三方应用程序安装其他应用程序。换句话说，这将允许开发者创建自己的应用商店。该 API 具有基本的控制功能，可以下载、安装甚至更新来自外部的应用程序。它还可以检查应用程序是否与特定设备或 iOS 版本兼容。根据欧盟的《数字市场法案》（DMA），大型科技公司除其他事项外，还必须允许用户从第三方来源安装任何他们想要的应用程序。理论上，苹果公司必须在 2024 年 3 月之前遵守 DMA 法规。

>
> **[消息来源：9to5mac](https://9to5mac.com/2023/11/10/ios-17-2-sideload-apps/)**
>
>
>

>
> 老王点评：即便支持，也可能只是在欧盟支持。
>
>
>

![](/data/attachment/album/202311/11/191932usc7s9a7omosdqq7.png)

### 微软禁止内部使用 OpenAI 的 ChatGPT

由于安全方面的担忧，微软暂时取消了对 OpenAI 的 ChatGPT 的内部访问权限，试图在公司设备上访问 ChatGPT 的员工被转到了微软封锁该网站的通知页面。微软称，“出于安全和数据方面的考虑，一些人工智能工具已不再供员工使用”。微软表示，它积极鼓励内部和客户使用必应聊天企业版（它使用的是 ChatGPT 企业版），因为它提供了更强大的隐私保护。此外，摩根大通、Verizon 和苹果公司也阻止了内部使用 OpenAI 的 ChatGPT。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/10/microsoft_blocks_chatgpt/)**
>
>
>

>
> 老王点评：AI 越好用，其对企业内部数据的攫取就越多，这可比搜索引擎可怕多了。
>
>
>


Canonical 告诉你如何不通过 Snap 商店使用 Snap 包

Summary: 虽然你可能听到不同的看法，但实际上，它并未像一些批评者所想象的那样完全专有。

为什么要放弃各种Unix，难道去用Windows吗？经典的MacOS（8/9）没有终端，即使软件够用也不想用，还是X有吸引力。

虽然你可能听到不同的看法，但实际上，它并未像一些批评者所想象的那样完全专有。

![](/data/attachment/album/202311/12/130648uvbvvgvb7q7pv4bq.png)

>
> 虽然你可能听到不同的看法，但实际上，它并未像一些批评者所想象的那样完全专有。
>
>
>

对 Ubuntu 的 Snap 打包格式最常见的误解之一是它是专有的 —— 但是深入研究其文档后，会发现这个说法并不对。

在上周末拉脱维亚的里加举行的 Ubuntu 峰会上，笔者有幸采访到 Ubuntu 的<ruby> 开发者大使 <rt>  developer advocate </rt></ruby>，Igor Ljubuncic。期间，他们详细探讨了关于 Snap 的各种误区，包括它被视为完全闭源的、受 Canonical 控制、必须使用 Canonical 的 Snap 商店等众多谬论。

如果说有什么比糟糕的软件更加厌恶的，那一定是谎言。正如我们在 [点评 Fedora 39](https://www.theregister.com/2023/11/09/fedora_39_released/) 时所注意到的，即使在 Linux 诞生之前，各种软件的拥趸们就经常爆发各种 [圣战](http://catb.org/jargon/html/H/holy-wars.html)。但我们至少希望能坚守事实的公道。毫无根据的恶意指责是没有必要的：生活本身已经足够糟糕。

笔者的立场很明确，我们并不特别偏爱任何 Linux 发行版或其打包工具。像许多资深电脑技术人员一样，在长期和各种软件打交道后，笔者已经对所有的软件厌烦至极。一句广为接受的说法就是：[没有一个软件不让人头疼](http://harmful.cat-v.org/software/)。

Linux 就是一个软件，因而它难免让人头疼。承此，所有的 Linux 发行版也都不尽如人意。包管理器也是一个软件，同样也不尽人意。但幸运的是，至少大多数 Linux 发行版都有一个包管理器。这比没有软件包管理器要好，或者更糟糕的是，有不止一个以上的包管理器，这一点 [XKCD 927](https://xkcd.com/927/) 漫画体现的淋漓尽致。

![](/data/attachment/album/202311/12/130719yikvgssyukufz1hk.png)

我们并不特别青睐 Snap，也不特别反对 Flatpak。笔者个人更偏好 [AppImage](https://appimage.org/) 格式，它不需要其他额外的框架。但虽然有个 [AppImageHub](https://www.appimagehub.com/)，但该格式却并没有提供软件更新的工具，这个问题就留给了应用本身来解决。

鉴于所有的软件都不完美，那唯一重要的区别就在于其问题严重的程度。一段时间以后，你最关注的就是它是否可运行，能否满足你的需要，以及它的可靠性。

我在早年的职业生涯中花了很多时间在技术支持上，修复其他人的软件。因此，我学到了一个经验，那就是降低软件让人厌烦程度的一个重要因素就是它工作的方式是否容易理解。

Btrfs 是复杂的，而修复它则更是如此。Git 属于*本质*复杂，其 [名称](https://dictionary.cambridge.org/dictionary/english/git) 就体现出这一点。（没错，“git” 是一个名词，而非缩写或代号，有实际的意思 —— “饭桶”。）OStree 可以说是针对二进制文件的 Git，这使得它比普通 Git 至少复杂两倍。而 Flatpak 则是 OStree 的封装。

这意味着增加了两层额外的复杂度：首先，对复杂事物的封装只能隐藏其复杂性，而不能消除其复杂性。其次，你不能使用 Flatpak 构建一个操作系统，因此你还需要 OStree。

因此，我们将来逐一揭穿关于 Snap 格式和工具的一些误解。这不是一篇入门指南，而是对那些不那么显而易见，并且对 Snap 有所误解的人的一份快速概览。

### 无需商店进行分发

Snap 包其实就是一个 [Squashfs](https://docs.kernel.org/filesystems/squashfs.html)，类似于大多数 Linux 安装介质上的系统镜像。Snap 包以两个文件传递：其中一个是命名为 `<name>_<revision>.snap`，该文件包含了软件本身；另一个则是一个伴随的 [声明文件](https://snapcraft.io/docs/assertions)，它为 Snap 提供了数字签名。然后，Canonical 还进一步 [详细阐明](https://snapcraft.io/docs/revisions) 了版本修订的工作原则。

使用 `snap download` 的指令（而非 `snap install`）可以容易获取这些基本文件：

```
# snap download firefox
Fetching snap "firefox"
Fetching assertions for "firefox"
Install the snap with:
  snap ack firefox_3252.assert
  snap install firefox_3252.snap

```

然后，这些文件便可以被复制到另一台设备上进行安装，这种操作不需要访问 Snap 商店，仅需使用输出中的指令即可。

如 Igor 所说：

>
> “这样，从 Snap 商店中，你可以选择你想要的 Snap 包（如 Firefox），将其放入你的内部仓库中，或是 FTP，或是 NFS 上。接着你可以使用它作为在内部安装 Snap 的来源，而这不需要去访问商店。此外，你还可以将这个操作与你所使用的任何调度或部署机制结合起来，就如配置管理那样。”
>
>
>

### 安装无需声明文件的 Snap 包

通常来说，`snap ack` 命令会首先读取并验证签名，但是你可以选择跳过这个步骤。

```
snap install "downloaded snap" --dangerous

```

上述指令会安装该 Snap 包，并不会验证其签名。请注意，这样做虽然操作简单，但也有一个重要的限制：使用 `--dangerous` 选项安装的 Snap 包不会自动从商店中更新。

所以，实际上，你可以在你的网络内部分发 Snap 包，避免它们试图连接到 Snap 商店，并自主管理更新。

### 管控 snapd 内置的更新机制

另一方面，你可以在不忽略验证机制的前提下，管理和控制操作系统何时以及如何更新 Snap 包。Igor 则曾撰写过关于如何使 Snap [更新暂停](https://snapcraft.io/blog/hold-your-horses-i-mean-snaps-new-feature-lets-you-stop-snap-updates-for-as-long-as-you-need) 的文章。

你可以设置暂停 Snap 的更新一段时间，或永久暂停，甚至只选择暂停特定的 Snap 包，同时也能简单取消此设置。例如：

```
snap refresh --hold
Auto-refresh of all snaps held indefinitely.

```

另外，你也可以通过以下方式设置防火墙拦截 Snap API：

```
sudo iptables -A OUTPUT -d api.snapcraft.io -j DROP

```

### 在无 snapd 环境下运行 snaps

`.snap` 文件实际上就是一个压缩的文件系统，它包含着程序文件（以及各种库等），这些都被存放在一个传统的目录结构中，而该目录结构对于打包在 Snap 应用程序内的应用来说，就是它的根目录。Snapd 负责为此设置挂载名空间，并通过 [Apparmor](https://apparmor.net/) 和 [seccomp](https://man7.org/linux/man-pages/man2/seccomp.2.html) 实现安全隔离。

你可以将其内容解压并直接运行：

```
unsquashfs firefox_3252.snap
Parallel unsquashfs: Using 20 processors
565 inodes (5428 blocks) to write
[=====================/] 5428/5428 100%
created 399 files
created 149 directories
created 166 symlinks
created 0 devices
created 0 fifos
created 0 sockets
ll squashfs-root/
total 80
drwxr-xr-x  7 igor igor  4096 lis  10 02:33 ./
drwxr-xr-x 10 igor igor  4096 lis  19 15:32 ../
drwxr-xr-x  5 igor igor  4096 lis  10 02:33 data-dir/
-rw-r--r--  1 igor igor 32441 lis  10 02:33 default256.png
-rw-r--r--  1 igor igor  9146 lis  10 02:33 firefox.desktop
-rwxr-xr-x  1 igor igor  2680 lis  10 02:33 firefox.launcher*
drwxr-xr-x  2 igor igor  4096 lis  10 02:33 gnome-platform/
drwxr-xr-x  4 igor igor  4096 lis  10 02:33 meta/
-rwxr-xr-x  1 igor igor  3716 lis  10 02:33 patch-default-profile.py*
drwxr-xr-x  4 igor igor  4096 lis  10 02:33 snap/
drwxr-xr-x  4 igor igor  4096 sij  19  2022 usr/

```

如果你查看 Snap 内 Firefox 二进制文件的动态依赖，你会注意到它希望从根文件系统中获取文件：

```
ldd usr/lib/firefox/firefox-bin
       linux-vdso.so.1 (0x00007fff33cc5000)
       libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f6cf2c00000)
       libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6cf2e40000)
       libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6cf2be0000)
       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6cf2800000)
       /lib64/ld-linux-x86-64.so.2 (0x00007f6cf300e000)

```

在 Snap 内部，这个“根”就是你的基础系统（比如 core18 或 core20 等）。但是一旦你解压了这个 Snap，没有 snapd 在安装和运行 Snap 时提供的安全隔离，Firefox 将会尝试直接访问你的根目录的库。这可能会导致执行时的不一致性。

举例来说，你的 Snap 内可能包含的是 GNOME 3.38 版的库，但是你的主机上运行的可能是 GNOME 3.32。如果你尝试解压并运行这个应用，它可能会试图从主机中加载库，这可能引起不一致 —— 更甚者，可能会让程序崩溃。

为了避免这种情况发生，你需要做的唯一事情就是设置 `LD_LIBRARY_PATH` 环境变量，以让程序知道其库在何处，确保它首选这些库，而不是使用可能导致其运行失败的操作系统中的库副本。

```
LD_LIBRARY_PATH: ${SNAP_LIBRARY_PATH}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}:$SNAP/usr/lib:$SNAP/usr/lib/x86_64-linux-gnu

```

通常，你会希望 `LD_LIBRARY_PATH` 开始于 `/snap/<snap name>/`，然后是 `/lib`、`/usr/lib` 和其他常用路径。至于其他内容，`firefox.launcher` 文件负责准备运行环境，剩余的，比如 `firefox.desktop`，都用于桌面集成：如图标、全名、文件关联等。这些内容虽然使应用看起来效果更好，但它们并非严格的必需品。

其实，你甚至不需要解压 Snap 的内容，你可以直接将 Snap 文件本身作为一个 [回环设备](https://tldp.org/HOWTO/archived/Loopback-Root-FS/Loopback-Root-FS-2.html) 挂载 —— 你甚至可以设置为只读 —— 但没有挂载命名空间隔离。并且，如果没有设置环境让 Snap 内部的应用在寻找它的库时首先从 Snap 内部开始，你仍然需要正确地设置库路径。

### 代理和缓存 Snap 包

正如 Igor 所说，如果客户并不打算自行运营一家具备完整品牌属性的 Snap 商店，他们可以选择手动设置一个 [Snap 代理](https://docs.ubuntu.com/snap-store-proxy/en/)。对此，Canonical 也提供了相应的 [文档](https://docs.ubuntu.com/snap-store-proxy/en/install)，并描述了所需的 [网络访问](https://forum.snapcraft.io/t/network-requirements/5147) 权限。

同时，你也可以 [配置](https://snapcraft.io/blog/how-to-cache-snap-downloads-and-save-bandwidth) 一个缓存 Snap 代理 —— 这项任务稍微简单一些，对于希望降低下载带宽的家庭网络来说，可能是个不错的选择。

### 搭建自己的 Snap 商店

就如我们之前所述，你完全可以忽略所有来自 Canonical 的基础设施，直接运行自己的 Snap 商店。去年，我们写过一篇关于 Ubuntu Unity 维护者 [Rudra Saraswat](https://www.theregister.com/2022/02/04/rudra_sarsawat_ubuntu_projects/) 的文章，他就 [做到了这一点](https://gitlab.com/lol-snap/lol)，这只是他的众多项目中之一。据悉，好几个在生产环境中使用 Ubuntu Core 的组织都采取了此种做法，而所有所需的工具都存放在 Ubuntu 仓库中。

Canonical 在这方面发布了大量的文档，包括怎样构建你的 [第一个 Snap 包](https://snapcraft.io/blog/how-to-make-your-first-snap)，以及如何用 [不同的编程语言](https://snapcraft.io/docs/creating-a-snap) 构建。今年的峰会上有多场关于如何构建 Snap 的演讲 － 包括 [在平板电脑上构建 Snap 包](https://events.canonical.com/event/31/contributions/222/)，以及如何 [自动化构建更新的 Snap 包](https://events.canonical.com/event/31/contributions/217/)，虽然这对笔者来说有点过于复杂。

学习一些新的术语是有必要的，同时也有 [官方文档](https://snapcraft.io/docs/interface-management) 提供帮助。这段解释我们特别喜欢：

* <ruby> 插槽 <rt>  slots </rt></ruby> 是指提供方（即 Snap 提供的资源）
* <ruby> 插口 <rt>  plugs </rt></ruby> 是指消费者（即使用 Snap 提供的资源的用户）
* <ruby> 接口 <rt>  interfaces </rt></ruby> 是交互的地方（负责将插口和插槽连接起来）

从我们与 Canonical 代表的对话中，他们似乎对 Snap 商店被误解，以及 Snap 被视为封闭、专有系统的争论显得尤为不满。

大约十五年前，有人曾声称 Canonical 的代码托管和项目管理平台 [Launchpad](https://www.theregister.com/2008/07/22/ubuntu_next_launchpad/) 是专有的，所以 Canonical 在整理代码后在 2009 年 [公开发布](https://canonical.com/blog/canonical-releases-source-code-for-launchpad) 了代码库。但如我们交谈的人所言：“没人在意。” 它是 Canonical 的内部工具，对其他人来说并没有太大的用处。他们表示，他们不希望再经历一次这样的情况。

我们还注意到，红帽正在朝反方向前进，即从开源的 Bugzilla [迁移](https://www.theregister.com/2023/09/29/red_hat_bugzilla_jira_migration/) 到封闭的、基于云的 Jira —— 这并未引起太大的争议。

[snapd](https://github.com/snapcore/snapd) 自身的代码已经托管在 GitHub 上，作为 Canonical 的 [snapcore](https://github.com/snapcore) 仓库的一部分。这个被大多数发行版使用的打包格式是一个已经存在、有文档记录的格式。用于进行隔离的工具，是已经存在并在其他发行版中使用的第三方工具，比如，Debian 和 SUSE 家族也使用了 AppArmor，这与 Arch 维基中的 [描述](https://wiki.archlinux.org/title/AppArmor) 相符，而它的主要竞品，[SELinux](https://selinuxproject.org/page/Main_Page)，则更复杂，主要在红帽及其衍生产品中使用。

尽管 Canonical 自家定制的 [Snap 商店](https://snapcraft.io/store) 的后端仍然 [闭源](https://askubuntu.com/a/1383685)，但 Snap 格式、snapcore 软件、[snapcraft.io 前端](https://github.com/canonical/snapcraft.io)，以及更多组件都是开放的。我们再次强调，你完全可以自行搭建 [自己的 Snap 商店](https://ubuntu.com/blog/howto-host-your-own-snap-store)。

请不要受到愤怒的论坛喷子们的误导。

### 最后再说一点...

实际上，撰写这篇文章的作者曾经就职于红帽和 SUSE，但他主要还是使用 Ubuntu，从 2004 年 Ubuntu 刚刚发布起就开始一直使用。Ubuntu 不但运行顺畅，使用起来也十分便捷。然而，早在多年前他就已经从他的主要工作电脑上删除了 snapd 和相关的一切工具，取而代之的是 [deb-get](https://trendoceans.com/nala-package-manager/) —— 最初这是 Ubuntu MATE 的创造者 [Martin Wimpress](https://ubuntu-mate.org/) 编写的。为了更加迅速，他还选择使用 [Nala 包管理器](https://github.com/volitank/nala) 而不是 Apt。

如果可以的话，笔者很希望可以放弃各种形式的 Unix，除了服务器，其他情况下更倾向于使用 RISC OS 或是经典的 MacOS。但是遗憾的是，这两个操作系统在网络浏览器、网络连接，还有多核支持和整体稳定性上有待改进。

笔者今年参加 Ubuntu 峰会的费用是由 Canonical 承担的，这一点他愿意公开。类似的，Linux 基金会曾资助他参加 [今年](https://www.theregister.com/2023/09/26/linux_kernel_report_2023/) 在 Bilbao 的开源峰会，而红帽则资助了他在 2016 年在 Kraków 参加 [Flock to Fedora](https://www.theregister.com/2016/10/19/fedora_facelift/) 峰会。这类赞助可以让我们将广告预算分配到其他地方，但并不会对我们的报道产生影响：我们总会积极追踪那些 IT 新闻。

*（题图：MJ/520ba58f-9e07-4acb-af4a-f4832762311f）*

---

via: <https://www.theregister.com/2023/11/10/snap_without_ubuntu_tools/>

作者：[Liam Proven](https://www.theregister.com/Author/Liam-Proven) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


4 种超简单的自定义 Budgie 桌面的方式

![](/data/attachment/album/202311/12/160318fe8m8izq48oqkooc.png)

>
> Budgie 是一种现代的桌面体验方式。你可以根据自己的喜好，使用这些定制技巧进一步增强它的功能。
>
>
>

如果你要求我将 MATE 桌面现代化，并增加功能和 GTK 支持，我可能会想出像 Budgie 这样的东西！

Budgie，是一款令人惊艳的桌面环境（DE），为你提供熟悉的布局和独特的用户体验。

那么，如何自定义你的 Budgie 桌面才能提升个人体验呢？莫慌；我这里有几条妙计助你改善你的 Budgie 体验。

我们的目标大致如下：

* 修改壁纸
* 修改主题，图标以及光标（简易操作）
* 自定义面板
* 自定义停靠区

让我们开始吧！?

### 1、改变 Budgie 桌面环境壁纸

Budgie 桌面预装了一些好看的壁纸。

修改 Budgie 桌面壁纸，你们只需要做这两个小步骤：

1. 在主界面点击右键，选择 “<ruby> 改变桌面背景 <rt>  Change Desktop Background </rt></ruby>”
2. 选择图片，然后该图片就会应用在你的主屏幕中

![](/data/attachment/album/202311/12/160411xa9ecsmns9nggusc.png)

要是你不太中意其中的可用壁纸，你也可以自网络下载相关壁纸。

下好后，打开文件管理器，导航至图片所在位置，右键点击该图片，选择 “<ruby> 设置为壁纸…… <rp>  （ </rp> <rt>  Set as Wallpaper... </rt> <rp>  ） </rp></ruby>”选项。

![](/data/attachment/album/202311/12/160412f9ram0su6152t6v4.png)

### 2、修改桌面主题、图标以及光标主题

通常情况下，我们从网络上下载了主题，提取下载的文件，然后就会将文件移动到相应目录以便 [应用于 Linux 主题](https://itsfoss.com/install-themes-ubuntu/)。

>
> **[如何在 Ubnutu 上安装主题](https://itsfoss.com/install-themes-ubuntu/)**
>
>
>

但要那么整的话，既需要花费些功夫，又不是最高效的方法。（如果你好奇去试试的话）

那么此处便是 **ocs-url** 工具发力的地方了。

**ocs-url** 是一款一键安装所有主题风格（比如说来自 [gnome-look.org](http://gnome-look.org) 门户网站内容）的工具。

>
> ? [Gnome-look.org](http://Gnome-look.org) 和 [pling.com](http://pling.com) 是 [Opendesktop.org](https://www.opendesktop.org/) 旗下的两个网络站点，可以帮助你一站式搜索主题风格，壁纸，图标，以及其它好物。
>
>
>

这个工具与任何桌面环境都没有官方隶属关系。

但令人遗憾的是，它没有被任何 Linux 发行版的软件包管理器包含，也就是说你得在你的系统里手动安装它。

那么首先，移动至 [ocs-url 的官方下载页面](https://www.opendesktop.org/p/1136805/)，转到 “<ruby> 文件 <rt>  Files </rt></ruby>” 选项卡，将软件包下载至你的系统中：

![](/data/attachment/album/202311/12/160413jq8xct16gatu1q6q.png)

完成后，打开你的命令提示符，将文件地址改成文件下载的位置。对于大多数用户来说，便是下载（`Downloads`）文件夹：

```
cd Downloads

```

现在，使用你的 Linux 发行版对应的指令：

**适用于 Ubuntu：**

```
sudo dpkg -i ocs-url*.deb

```

**适用于 Fedora：**

```
sudo dnf install qt5-qtbase qt5-qtbase-gui qt5-qtsvg qt5-qtdeclarative qt5-qtquickcontrols && sudo rpm -i ocs-url*.rpm

```

**适用于 Arch：**

```
sudo pacman -S qt5-base qt5-svg qt5-declarative qt5-quickcontrols && sudo pacman -U ocs-url*.pkg.tar.xz

```

**适用于 openSUSE：**

```
sudo zypper install libQt5Svg5 libqt5-qtquickcontrols && sudo rpm -i ocs-url*.rpm

```

现在，让我们看看该如何安装主题风格，图标以及光标风格。

#### 修改系统主题风格

修改系统主题风格的第一步 —— 访问 [Gnome Look](https://www.gnome-look.org/browse?cat=135&ord=latest) 门户网站并选择你中意的主题风格（你可以在 GTK 3 和 GTK 4 之间选择）。

![](/data/attachment/album/202311/12/160414f54htt4mxyf7bkbk.png)

选择任意你最喜欢的主题风格；这里我选择 “Kripton” 风格,你可以看到有一个 “<ruby> 安装 <rt>  Install </rt></ruby>” 选项。

在这里，你需要遵循两个小步骤：

* 点击 “<ruby> 安装 <rt>  Install </rt></ruby>” 按钮之后，会呈现该主题风格的不同类型。选择其中一个。
* 然后会跳出一个提示符，你需要再点击一次 “<ruby> 安装 <rt>  Install </rt></ruby>” 按钮：

![](/data/attachment/album/202311/12/160414gcjssdscdtzsmzjq.png)

然后它会打开 ocs-url 工具询问你是否安装所选主题风格。

点击 “<ruby> 确定 <rt>  OK </rt></ruby>” 按钮安装该主题风格：

![](/data/attachment/album/202311/12/160415wlliiqfdzyeoitig.png)

现在，进入 <ruby> Budgie 桌面设置 <rt>  Budgie Desktop Settings </rt></ruby> 界面，然后在“<ruby> 样式 <rt>  Style </rt></ruby>” 子菜单下的 “<ruby> 组件 <rt>  Widget </rt></ruby>” 选项中点击需要安装的主题风格。

![](/data/attachment/album/202311/12/160416hg0sxllxbgmxzfxe.png)

#### 修改图标

要修改图标，先访问有关 [Gnome-look 门户网站中的图标区](https://www.gnome-look.org/browse?cat=132&ord=latest)，来搜索你中意的图标：

![](/data/attachment/album/202311/12/160418ulybtix9p7zwlbxx.png)

找到图标后，可以看到有两个按钮：“<ruby> 下载 <rt>  Download </rt></ruby>” 和 “<ruby> 安装 <rt>  Install </rt></ruby>”。点击 “<ruby> 安装 <rt>  Install </rt></ruby>” 按钮。

可以看到有多个图标，但大多数例子里只展现了一个。点击选项之一，弹出提示，再次点击“<ruby> 安装 <rt>  Install </rt></ruby>”按钮：

![](/data/attachment/album/202311/12/160419miinkqkzgm22yznb.png)

然后，可以看到来自 ocs-url 弹出的提示符询问你是否安装所选图标包，点击 “<ruby> 确定 <rt>  OK </rt></ruby>” 安装图标包：

![](/data/attachment/album/202311/12/160420cvkapa0psdud7vkc.png)

下一步，打开 <ruby> Budgie 桌面设置 <rt>  Budgie Desktop Settings </rt></ruby> 的 “<ruby> 图标 <rt>  icons </rt></ruby>” 子菜单，你便可以使用最近安装过的图标风格（我用过 elementary-kde 风格）：

![](/data/attachment/album/202311/12/160421x918bi7grjbygc8b.png)

#### 修改光标主题风格

和之前步骤类似，访问 [Gnome Look 门户网站的光标区](https://www.gnome-look.org/browse?cat=107&ord=latest) 搜索最适合你的光标：

![](/data/attachment/album/202311/12/160421kevtrr22cvve5mcb.png)

选好心仪的光标风格后，点击相应选项，然后你就可以安装相对应的光标风格了。

弹出提示，再次点击“<ruby> 安装 <rp>  （ </rp> <rt>  Install </rt> <rp>  ） </rp></ruby>”按钮：

![](/data/attachment/album/202311/12/160422wc2cve20nvg4pecv.png)

弹出来自 ocs-url 工具的提示，点击安装光标主题风格。只需要点个 “<ruby> 确定 <rt>  OK </rt></ruby>” 然后开始安装：

![](/data/attachment/album/202311/12/160422anqdz3gm4m8844di.png)

完成后，打开 <ruby> Budgie 桌面设置 <rt>  Budgie Desktop Settings </rt></ruby> 界面，在对应子页面的 “<ruby> 光标 <rt>  Cursors </rt></ruby>” 面板中选择刚刚安装的光标主题风格：

![](/data/attachment/album/202311/12/160423kox0o3cvrorrxx5z.png)

### 3、自定义 Budgie 桌面面板

根据 Linux 发行版的不同，面板的位置也可能不同。例如，假设你用的是 Solus 的 Budgie 或者 Ubuntu 的 Budgie。

打开 <ruby> Budgie 桌面设置 <rt>  Budgie Desktop Settings </rt></ruby> ，在那里你可以寻找到对于面板的相关设置：

![](/data/attachment/album/202311/12/160525iq0pv0a0z179fvb0.png)

如你所见，它将启用的小程序分三个部分显示在面板上：

<ruby> 始端 <rt>  Start </rt></ruby>（最左侧）、<ruby> 中间 <rt>  Center </rt></ruby>，以及 <ruby> 末端 <rt>  End </rt></ruby>（最右侧）。

>
> ? 注意，每个小程序有自己不同的设置选项，所以还能单独设置它们。
>
>
>

你可以在它们之间做些调整。比如，在这个地方我将时钟工具挪到左边，以便它和我的工作流界面看起来更加融洽：

![](/data/attachment/album/202311/12/160525b10vrbqsizx7hxcu.png)

要想移动小程序，只需要选中该小程序然后点击上下箭头按钮（位于小程序列表上方）。

如果你想移除小程序，只需要选中该程序然后点击删除按钮即可：

![](/data/attachment/album/202311/12/160525slleee6db6dgh86l.png)

这里有一个 “+” 图标样式的选项，可以添加更多小程序。点击它，会为你弹出所有可用的小程序。

找到一个有用的小程序，选中该程序并点击 “<ruby> 添加 <rt>  Add </rt></ruby>” 按钮：

![](/data/attachment/album/202311/12/160525i3qs4j11oa1jy11z.png)

要是你希望面板变透明、想1添加阴影，想增加或减少小程序之间的距离，那么就访问设置菜单中的这个页面（如下图）：

![](/data/attachment/album/202311/12/160526wfc99fzzkly9z3lc.png)

举个例子，这里，我将自己的面板设置了透明和阴影，让它看起来更舒服点：

![](/data/attachment/album/202311/12/160526gk3xxbaawu2jucus.png)

### 4、定制 Budgie 桌面的停靠区

在本节，我会向你介绍如何将自己的停靠区设计得更好，功能性更强：

* 修改停靠区主题风格
* 添加更多工具应用以赋予停靠区更多特性

#### 修改停靠区主题风格

可惜啦，这次 ocs-url 工具可就帮不上什么忙了，设置的唯一方式就是手动操作！

首先，[访问 Gnome Look 的 Plank 主题区](https://www.gnome-look.org/browse?cat=273&ord=latest)，下载你心仪的 Plank 停靠区主题风格。

这里，我选了模仿 macOS 系统的 Monterey 主题风格（dark-inline 版）：

![](/data/attachment/album/202311/12/160526pov543ty8rbzoxbr.png)

现在，打开命令提示符，找到该主题风格下载位置。

对大多数用户来说，即下载（`Downloads`）文件夹所在位置：

```
cd ~/Downloads

```

现在，[使用解压指令](https://itsfoss.com/unzip-linux/) 将文件释放到 `.local/share/plank/themes/`：

```
unzip <theme_name.zip> -d .local/share/plank/themes/

```

在我的环境下是这样：

```
unzip Monterey-Dark-inline.zip -d ~/.local/share/plank/themes/

```

![](/data/attachment/album/202311/12/160527cwubi5b4eb51ooci.png)

然后，打开 “<ruby> Plank 偏好设置 <rt>  Plank preferences </rt></ruby>”，改成刚下载的主题。

我将我的风格改成 “Monterey -Dark inline”：

![](/data/attachment/album/202311/12/160527u14p2zw879pvn298.png)

#### 添加 docklet 应用以增加更多特性

可以、把 docklet 应用当作 applet，但与它不同的是，没有太多选项。

想要添加或移除 docklet 应用，首先得需要打开 “<ruby> Plank 偏好设置 <rt>  Plank preferences </rt></ruby>”，然后访问 “Docklets” 菜单，列出可用选项：

![](/data/attachment/album/202311/12/160527wy8yy10l909028et.png)

现在，如果你想添加一些 docklet 应用，只需要把它们拖进停靠区即可：

![](/data/attachment/album/202311/12/160528twe5wz4xwnii5fiw.gif)

但如果你想把添加的 docklet 应用移除出去呢？

简单，把它们从停靠区中拖拽出去就行了：

![](/data/attachment/album/202311/12/160529m272byy7haj72y5o.gif)

### 准备好使用 Budgie 了吗？

当然，为了方便起见，你可以安装已内置 Budgie 桌面环境的 Linux 发行版。

或者你还是可以选择在你现有的发行版（比如说 Ubuntu）中 [安装 Budgie](https://itsfoss.com/install-budgie-ubuntu/)：

>
> **[如何在 Ubuntu 上安装 Budgie](https://itsfoss.com/install-budgie-ubuntu/)**
>
>
>

在本教程中，我使用的是 Ubuntu 版本的 Budgie。无论你使用哪个发行版，这些步骤都适用于 Budgie 桌面。

? 你是怎么自定义你的 Budgie 桌面的呢？你想为这篇文章贡献更多内容吗？在下方评论区分享你的经验吧。

*（题图：MJ/44c073b0-b866-4eeb-b3e0-579d7afe0992）*

---

via: <https://itsfoss.com/budgie-customization/>

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

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


硬核观察 #1183 开发了四年的 NetBSD 10 接近发布

Summary:
? 开发了四年的 NetBSD 10 接近发布
? 好莱坞演员获得了人工智能保护措施
? 美议员提案禁止使用与中国有关的区块链技术
»
»

good

在BSD用户中，按数量排序是FreeBSD>OpenBSD>NetBSD>DragonflyBSD。最后一个是FreeBSD 4.x的fork，知名度相对较低。

![](/data/attachment/album/202311/12/183554wt03mh13699yyyty.jpg)

![](/data/attachment/album/202311/12/183610lliklks3rwzjgryi.png)

### 开发了四年的 NetBSD 10 接近发布

NetBSD 10 自 2019 年底开始开发，测试版已经发布了一年，而现在随着 NetBSD 10-RC1 的发布，它将在未来几个月内正式发布。NetBSD 10.0 增加了许多功能，包括对多核系统性能的显著提升、支持从 Apple M1 到树莓派 4 的多种 ARM 平台、支持 WireGuard、自动交换加密、Xen 虚拟机管理程序支持的重新设计，以及用于支持更新组件的无数其他硬件驱动程序改进。

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

>
> 老王点评：虽然相比 Linux 来说用户不多，但是这几个 BSD 发行版总是给人更多选择和没那么商业化的感觉。
>
>
>

![](/data/attachment/album/202311/12/183633p8odlx9lb99bxv0x.png)

### 好莱坞演员获得了人工智能保护措施

在罢工近四个月后，这场好莱坞历史上持续时间最长的演员罢工以针对使用人工智能的 “突破性” 保护措施而告终。演员工会称，“我们在人工智能保护方面得到了我们想要的一切。”根据达成的协议，制片厂必须在知情同意的情况下，才能创建任何形式的演员或背景演员数字复制品，而背景演员的数字复制品也不会在未经其同意的情况下被 [使用](/article-16000-1.html)。

>
> **[消息来源：Rolling Stone](https://www.rollingstone.com/tv-movies/tv-movie-news/hollywood-actors-strike-sag-aftra-tentative-agreement-studios-1234838500/)**
>
>
>

>
> 老王点评：看起来演员们的职业生涯会获得延长了，但我觉得，不用多久，就会出现大量甚至全部演员都由 AI 演员出演的电影。
>
>
>

![](/data/attachment/album/202311/12/183653km7qu3ycuuj33ku2.png)

### 美议员提案禁止使用与中国有关的区块链技术

美国两党议员周三提出了一项新法案，旨在全面禁止美国政府使用任何与中国有关的区块链技术，甚至是加密货币。目前已经有许多与加密货币相关的法案正在讨论中，其中一些还包括对中国区块链技术的安全担忧。立法者称，该法案旨在“确保外国对手没有任何形式的后门访问权限，可以用来访问关键的国家安全情报和美国人的私人信息。”

>
> **[消息来源：Tom's Hardware](https://www.tomshardware.com/tech-industry/cryptocurrency/us-government-proposal-aims-to-outlaw-chinese-crypto-networks-blockchains)**
>
>
>

>
> 老王点评：无所谓嘛。在我看来，完全是过敏了。
>
>
>


你应该知道的主流开源数据库

中国也有很多开源数据库。翻译文章的时候，更加推广自己家的数据库！

来自江西南昌的 Chrome Mobile 118.0|Android 10 用户

![](/data/attachment/album/202311/13/092356pzxmjf7xtfnqft5t.png)

>
> 随着数据的飞速增长，数据的组织变得至关重要。本文将简要介绍当今软件开发中最流行的数据库。
>
>
>

在软件系统中，数据被格式化地组织和存储，通过数据库可以以电子方式访问它们。因为数据已经成为一种非常重要的资产，对我们来说，掌握当今使用的各种数据库的基本知识是非常重要的。

我们要看的第一个数据库是 MySQL。

### MySQL

[MySQL 官网](https://www.mysql.com/cn/)

MySQL 是使用最广泛的开源数据库管理系统之一。它由<ruby> 甲骨文公司 <rt>  Oracle Corporation </rt></ruby>所有。它可以在大多数主流操作系统上运行，如 Windows、MacOS、Linux 等。MySQL 既适用于小型应用，同时也能胜任大型应用。

#### 优点

* 适配各种操作系统
* 适配多种编程语言，如 PHP、C、C++、Perl 等
* 开源、免费
* 它支持高达 8 百万 Tb 的巨大数据量
* 可定制化
* 比其他数据库快得多

要在基于 Ubuntu 的计算机上安装并使用 MySQL，使用下面的命令：

```
$sudo apt update
$sudo apt install mysql-server
$sudo systemctl start mysql.service

```

### MariaDB

[MariaDB 官网](https://mariadb.org/)

MariaDB 是一款由 MySQL 的开发人员开发的开源关系型数据库，因其优秀的性能和与 MySQL 良好的兼容性而广受欢迎。它是当今大多数主要云产品的一部分，对其稳定性和性能起到重要作用。最近通过使用 Galera Cluster 技术，MariaDB 新增了集群功能。另外 MariaDB 还与 Oracle 数据库有（一定的）兼容性。

#### 优点

* 安装方便
* 支持大数据操作
* 高可扩展性
* 易于导入数据

要在基于 Ubuntu 的计算机上安装并使用 MariaDB，请使用以下命令:

```
$sudo apt update
$sudo apt install mariadb-server
$sudo systemctl start mariadb.service

```

### RethinkDB

[RethinkDB 官网](https://rethinkdb.com/)

RethinkDB 是一个开源、免费、分布式、基于文档的 NoSQL 数据库。它由 RethinkDB 公司开发。（LCTT 译注：RethinkDB 公司已于 2016 年倒闭。RethinkDB 数据库现作为开源项目继续维护。[消息来源](https://rethinkdb.com/blog/rethinkdb-shutdown/)）它可以存储具有动态模式的 JSON 文件。更重要的是，它可以将查询结果的实时更新推送给应用程序。由于它的分布式特性，它具有高度可扩展性。RethinkDB 提供了丰富的内置函数，使其成为一个高可用性的数据库。由于它是当今流行的数据库，学习如何使用它是很重要的。

#### 优点

* 适合于 Web 应用
* 易于扩展
* 内置函数多，可用性高
* 基于 JSON 动态文档

要在基于 Ubuntu 的计算机上使用 RethinkDB，下面的命令会有帮助：

```
# 添加软件仓库源
source /etc/lsb-release && echo "deb https://download.rethinkdb.com/repository/ubuntu-$DISTRIB_CODENAME $DISTRIB_CODENAME main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list

# 下载并安装 RethinkDB 的 GPG 密钥
$wget -qO- https://download.rethinkdb.com/repository/raw/pubkey.gpg | sudo apt-key add -

$sudo apt update
$sudo apt-get install rethinkdb
$sudo systemctl start rethinkdb

```

### OrientDB

[OrientDB 官网](https://orientdb.org/)

OrientDB 是一个基于 Java 的开源 NoSQL 数据库管理系统。它支持多种数据模型，比如文档、字典、对象和图。它以图数据库的形式存储关系。下面的命令可以帮助你在 Ubuntu 机器上使用 OrientDB：

```
$sudo apt-get update
$wget -O orientdb-community-2.2.20.tar.gz http://orientdb.com/download.php?file=orientdb-community-2.2.20.tar.gz&os=linux
$tar -zxvf orientdb-community-2.2.20.tar.gz
$sudo mv ~/orientdb-community-2.2.20 /opt/orientdb

```

### CouchDB

[CouchDB 官网](https://couchdb.apache.org/)

CouchDB 是用 Erlang 开发的开源 NoSQL 数据库。它使用多种协议和格式来传输、处理和共享数据。它使用 JSON 格式存储数据，支持 MapReduce，并用 JavaScript 作为查询语言。

#### 优点

* 可以存储任何类型的数据
* 支持 MapReduce，可以高效地处理数据
* 整体结构非常简单
* 索引和检索速度快

下面的命令可以帮助你在 Ubuntu 机器上使用 CouchDB：

```
$echo "deb https://apache.bintray.com/couchdb-deb focal main" >> /etc/apt/sources.list
$sudo apt-get update
$sudo apt install apache2 couchdb -y

```

### Firebird

[Firebird 官网](https://firebirdsql.org/)

Firebird 是一个开源关系型数据库。它兼容所有操作系统，如 Linux、Windows 和 MacOS。它最初是从开源数据库 Interbase 派生而来的。

#### 优点

* 数据库功能不受限制
* 非常稳定，功能强大
* 配置和使用简单

以下命令可以帮助你在 Ubuntu 机器上使用 Firebird：

```
$sudo apt-get update
$sudo apt-get install firebird2.5-superclassic

```

### Cassandra

[Cassandra 官网](https://cassandra.apache.org/_/index.html)

Cassandra 是一个 Apache 基金会旗下的 NoSQL 数据库。它具有高度可扩展性、分布式、高性能的特点，可以很好地处理大量数据。其分布式的特性，使它没有单点故障。

#### 优点

* 高性能
* 高可扩展性
* 采用点对点架构

以下命令可以帮助你在 Ubuntu 机器上使用 Cassandra：

```
$curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -
$sudo apt-get update
$sudo apt-get install cassandra
$sudo systemctl enable cassandra
$sudo systemctl start cassandra

```

### PostgreSQL

[PostgreSQL 官网](https://www.postgresql.org/)

如今，PostgreSQL 是最流行的开源关系数据库管理系统之一。它易于扩展，同时还与 SQL 兼容。这个数据库管理系统经过了 30 多年的积极开发。

#### 优点

* 与 MySQL 相比，Postgres 可以存储更多种类的数据
* 支持几乎所有的 SQL 特性
* 高度可扩展

下面的命令可以帮助你在 Ubuntu 机器上使用 PostgreSQL：

```
$sudo apt-get update
$sudo apt-get install postgresql postgresql-contrib

```

### CockroachDB

[CockroachDB 官网](https://www.cockroachlabs.com/#)

CockroachDB 是一个为可靠性而生的数据库。它可以像<ruby> 蟑螂 <rt>  cockroach </rt></ruby>一样在灾难性的情况下顽强生存、蓬勃发展。它可以处理大量的数据。还可以构建多集群数据库。

#### 优点

* 很容易部署
* 高一致性
* 分布式事务
* 高可用性
* 兼容 SQL

### Redis

[Redis 官网](https://redis.io/)

Redis 是一个基于键值的开源 NoSQL 数据存储数据库。它支持各种类型的键，使用非常方便。

### 结语

我们已经浏览了最知名和最流行的开源数据库管理系统。了解这些不同的数据库非常有趣。尝试不同的选择，发现最适合你需求的数据库。另外，一定要查看这些数据库的官方文档。

*（题图：MJ/40ba9f14-5948-431a-a899-36c6b1ff4dfe）*

---

via: <https://www.opensourceforu.com/2022/09/are-you-familiar-with-these-popular-open-source-databases/>

作者：[Jishnu Saurav Mittapalli](https://www.opensourceforu.com/author/jishnu-saurav-mittapalli/) 选题：[lkxed](https://github.com/lkxed) 译者：[toknow-gh](https://github.com/toknow-gh) 校对：[wxy](https://github.com/wxy)

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


下一代 elementary OS 8 剧透

![](/data/attachment/album/202311/13/154850fxab1f5lwnj5qwz5.png)

>
> 你是否正在关注 elementary OS 8 的升级呢？接下来的信息你必须了解。
>
>
>

elementary OS 无疑是 [最美丽的 Linux 发行版](https://itsfoss.com/beautiful-linux-distributions/) 中的佼佼者。就在一个月之前，注重隐私保护的 [elementary OS 7.1](https://news.itsfoss.com/elementary-os-7-1/) 版本也发布了。

现在，通过最新的公告，我们对即将发布的 elementary OS 8 有了更全面的了解。

而且这一次，我们看起来可能会早一点体验到新的 elementary OS 版本。

让我们深入挖掘下吧！?

### elementary OS 8：一项雄心勃勃的尝试

**elementary OS 的开发者已经将目标转向** OS 8 系列，他们 **对此寄予了深厚的期待，看好其带来的大量结构性改变和升级**。

根据 elementary OS 8 的开发路线图，此次主要版本将以 **Ubuntu 24.04 的源代码库** 为基础构建，然而，目前的情况显示，我们至少需要 **等到 2024 年 4 月才能见到 OS 8 的发布**。

同时，他们也明确提到，他们设定了一些 **非常雄心勃勃的目标**，希望未来的 6 个月内就可以完成。不过，他们 **打算在 OS 8 完全准备就绪后再进行发布**。

那么，这些目标具体有哪些呢？

首先，他们计划默认实现对 [Wayland](https://wayland.freedesktop.org/) 的 **过渡**，这不算令人意外，因为我们已经看到许多主流发行版都在采用它。接下来便是 **延续 GTK 4 的过渡**，其中包含了一些目前处于开发最后阶段的核心应用。

此外，他们正处于 **设计新的快速设置菜单的初级阶段**，并且还明确表示，**此次发布会对他们的桌面环境 Pantheon 的设计进行重大改进**。

读到这里，你可能会产生一个问题；**那么，elementary OS 7 将会如何呢？**

开发者已经明确表示，**当前正在使用 OS 7 的用户从现在起可能会收到的更新会变少**，因为他们认为 OS 7 版本已经相当完善。

但是，所有以 Flatpak 包形式提供的应用还将继续定期接收更新，这当然也包括了许多 elementary OS 的核心应用。

想要了解更多信息，你可以参考 [官方公告](https://blog.elementary.io/lets-talk-os-8/)。如果你对 **elementary OS 8 的开发进度** 感兴趣，你可以在其 GitHub [项目看板](https://github.com/orgs/elementary/projects/128/views/1) 上进行关注。

**你是否想要尝试一下 elementary OS 8 的早期构建版本呢？**

好的，**基于 Ubuntu 24.04 源代码库的试验构建版** 现在就可以下载了！请记住，想要获取下载权限，**你需要成为 GitHub 上的赞助者**。

现在就可以前往官方的 [构建网站](https://builds.elementary.io/) 开始下载了。

>
> **[elementary OS 早期访问](https://builds.elementary.io/)**
>
>
>

? 你对此感到兴奋吗？欢迎在下方留言分享你的观点！

*（题图：MJ/e707c7c7-8d97-4f41-a955-cf455784493f）*

---

via: <https://news.itsfoss.com/elementary-os-8-dev/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[译者ID](https://github.com/%E8%AF%91%E8%80%85ID) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

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


硬核观察 #1184 等不及官方发布，创客制作了自己的树莓派 CM5

Summary:
? 等不及官方发布，创客制作了自己的树莓派 CM5
? 10 万块闲置的挖矿 GPU 被出租给人工智能负载
? 隐藏在 Python 混淆软件工具中的高入侵性后门
»
»

GPU就应该用来训练AI，挖矿不太环保，但是可以用其他形式来挖矿，甚至把AI和挖矿结合起来。比如贡献算力做成分布式AI训练，获得相应的token奖励。

刚看了freebuf的最新文章，这个pyobf*包是只能在Windows电脑执行恶意代码吗？Linux和Mac会中招吗？WSL会不会受到影响？

![](/data/attachment/album/202311/13/172717kqj4qwpn4hnnxypq.jpg)

![](/data/attachment/album/202311/13/172727lg7rhz0h0eejd01g.png)

### 等不及官方发布，创客制作了自己的树莓派 CM5

树莓派 5 已于上月发布，但创客们在等待有关 CM5 计算模块的消息。其中有一位创客决定不再等下去，而是从零开始制作了一块 “CM5”。这块定制的 PCB 板具有树莓派 CM4 的外形尺寸，但能够支持树莓派 5 的功率。这实际上不是 CM5，也不出售。事实上，它甚至不是一个 SBC，而更像是一个载板，能让树莓派 5 与 CM4 兼容的东西进行交互。

>
> **[消息来源：Tom's Hardware](https://www.tomshardware.com/raspberry-pi/raspberry-pi-projects/maker-creates-raspberry-pi-cm5-while-waiting-for-official-release)**
>
>
>

>
> 老王点评：创客们总是自己动手，丰衣足食。
>
>
>

![](/data/attachment/album/202311/13/172743zzvzvziufu4bilw2.png)

### 10 万块闲置的挖矿 GPU 被出租给人工智能负载

加密货币热潮崩溃后，许多加密货币农场都留下了大量闲置的 GPU。一些公司设法为它们的 GPU 找到了其他用途，[Io.net](http://io.net/) 就开发了一个分布式网络，目前已经汇集了超过十万块 GPU，并将它们用于人工智能应用。该公司还使用 Solana 区块链技术管理其网络内的微交易，以便向 GPU 计算提供商付款。

>
> **[消息来源：Tom's Hardware](https://www.tomshardware.com/tech-industry/artificial-intelligence/107000-repurposed-crytpomining-gpus-up-for-rent-for-ai-workloads)**
>
>
>

>
> 老王点评：GPU 卡就是生产力，不能挖矿，还能挖 AI。
>
>
>

![](/data/attachment/album/202311/13/172800y8fheg6foy112qhx.png)

### 隐藏在 Python 混淆软件工具中的高入侵性后门

自今年 1 月以来，已有 8 个 Python 开发者工具包含了具有各种恶意功能的隐藏有效载荷。这几个恶意工具包的名字都以 “pyobf” 开头。它们都是混淆工具，开发人员可以用它来阻止逆向工程和篡改他们的代码。但是一旦被执行，这些恶意工具就会安装一个有效载荷，让攻击者几乎可以完全控制开发者的机器，包括窃取主机信息、浏览器密码、记录击键、加密勒索等操作。这些恶意工具已被 Python 程序员们安装了数千次。

>
> **[消息来源：Ars Technica](https://arstechnica.com/security/2023/11/developers-targeted-with-malware-that-monitors-their-every-move/)**
>
>
>

>
> 老王点评：想要保密代码反而中了招，反正你也看不懂加密混淆后的代码在做什么，真是十分切合场景。
>
>
>


新款 Fedora Slimbook 14 加入 Fedora Slimbook 阵营

看起来很不错

![](/data/attachment/album/202311/13/224030kxnhzt03szh7sshs.jpg)

自从我们发布 Fedora Slimbook 笔记本电脑的公告到现在已经过去近一个月了。这只是我们和 Slimbook 之间的合作关系的开始，我们的目标是在更多的设备上预装 Fedora Linux 系统。目前我们已经收到了非常积极的反馈！剩下的，我们想要和大家分享更多来自我们硬件合作伙伴的新消息，我们希望你会觉得很兴奋。

### 介绍 Fedora Slimbook 14 英寸版

![](/data/attachment/album/202311/13/224127lg3t101ehmh3l4ry.png)

尽管 Fedora Slimbook 16 英寸版的性能很出色，但我们注意到许多消费者对于笔记本电脑的尺寸以及英伟达显卡的配置表示了担忧，他们希望有更小的选择。为了回应这些反馈，Slimbook 推出了更小尺寸的 Fedora Slimbook 14 英寸版，以满足这些消费者的需求。这款新型号的电脑仍然保持了 Fedora 品牌的标志，包括电脑后盖和超级键上的 Fedora 标志，并且预装了 Fedora Workstation 系统！

主要特性：

* 无英伟达 GPU：虽然将这一点作为特性有些奇怪，但对于那些希望享受 Fedora 完整体验、期望硬件全面兼容的消费者来说，这一点准没错。
* 英特尔 i7-12700H 处理器：能满足你所有的计算需求，性能出众。
* 99Wh 电池：超长电池寿命，让你在出门在外时也能保持高效。
* 轻便，只有 1.25 公斤：无论你去哪里，都可以轻松携带。
* 镁合金机身：外壳轻便且耐磨。
* 2880x1800 的屏幕分辨率：在高分辨率的显示屏上享受鲜明的视觉效果和细节。
* 99% 的 sRGB 色彩准确度：非常适合设计师，媒体和内容创作人员使用。

与 Fedora Slimbook 16 英寸版一样，每售出一台 Fedora Slimbook 14 英寸版，都会有 3% 的收益捐献给 GNOME 基金会。

我们希望 Fedora Slimbook 14 英寸版可以满足你对电源和便携性的需求，并且展示出你对 Fedora 的热爱！想了解更多信息，请访问 <https://fedora.slimbook.es/>。

![](/data/attachment/album/202311/13/224127wzzsso3ltc3s3ttp.jpg)

![](/data/attachment/album/202311/13/224128y9i68ll2cgz9zf7g.jpg)

![](/data/attachment/album/202311/13/224128x3y8abts2895915d.png)

### 折扣

Slimbook 针对 Fedora 社区推出了两种折扣！

为了庆祝 Fedora Linux 39 的发布，Slimbook 推出了针对两款 Fedora Slimbook 的 100 欧元折扣活动！当你选择结账的时候，你会发现这个折扣已经直接被应用上去了。这项优惠将在限定的时间中推出。

而且，如果你是 Fedora 项目的贡献者，还可以享受额外的 100 欧元折扣！关于如何获得这个折扣的更多信息，你可以点击 [这个社区博客文章](https://communityblog.fedoraproject.org/fedora-slimbook-contributor-discount/) 查阅。

在我们与 Slimbook 建立并发展这个伙伴关系的过程中，我们非常感谢他们的良好合作。我们致力于让 Linux 更广泛地应用于硬件设备上，我们希望这些新的公告能让你对 Fedora 的硬件合作伙伴计划感到兴奋！

---

via: <https://fedoramagazine.org/new-fedora-slimbook-14-joins-the-fedora-slimbook-16/>

作者：[Joseph Gayoso](https://fedoramagazine.org/author/joseph/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[译者ID](https://github.com/%E8%AF%91%E8%80%85ID) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

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


Git 的遴选和撤销操作是如何利用三路合并的

![](/data/attachment/album/202311/14/103134uddjt7ljl8dbbdj2.png)

大家好！几天前，我尝试向其他人解释 Git 遴选（`git cherry-pick`）的工作原理，结果发现自己反而更混淆了。

我原先以为 Git 遴选是简单地应用一个补丁，但当我真正这样尝试时，却未能成功！

因此，接下来我们将谈论我原来以为的遴选操作（即应用一个补丁），这个理解为何不准确，以及实际上它是如何执行的（进行“三路合并”）。

尽管本文的内容有些深入，但你并不需要全部理解才能有效地使用 Git。不过，如果你（和我一样）对 Git 的内部运作感到好奇，那就跟我一起深入探讨一下吧！

### 遴选操作并不只是应用一个补丁

我先前理解的 `git cherry-pick COMMIT_ID` 的步骤如下：

* 首先是计算 `COMMIT_ID` 的差异，就如同执行 `git show COMMIT_ID --patch > out.patch` 这个命令
* 然后是将补丁应用到当前分支，就如同执行 `git apply out.patch` 这个命令

在我们详细讨论之前，我想指出的是，虽然大部分情况下这个模型是正确的，如果这是你的认知模型，那就没有问题。但是在一些细微的地方，它可能会错，我觉得这个疑惑挺有意思的，所以我们来看看它究竟是如何运作的。

如果我在存在合并冲突的情况下尝试进行“计算差异并应用补丁”的操作，下面我们就看看具体会发生什么情况：

```
$ git show 10e96e46 --patch > out.patch
$ git apply out.patch
error: patch failed: content/post/2023-07-28-why-is-dns-still-hard-to-learn-.markdown:17
error: content/post/2023-07-28-why-is-dns-still-hard-to-learn-.markdown: patch does not apply

```

这一过程无法成功完成，它并未提供任何解决冲突或处理问题的方案。

而真正运行 `git cherry-pick` 时的实际情况却大为不同，我遭遇到了一处合并冲突:

```
$ git cherry-pick 10e96e46
error: could not apply 10e96e46... wip
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".

```

因此，看起来 “Git 正在应用一个补丁”这样的理解方式并不十分准确。但这里的错误信息确实标明了 “无法**应用** 10e96e46”，这么看来，这种理解又不完全是错的。这到底是怎么回事呢？

### 那么，遴选到底是怎么执行的呢？

我深入研究了 Git 的源代码，主要是想了解 `cherry-pick` 是如何工作的，最终我找到了 [这一行代码](https://github.com/git/git/blob/dadef801b365989099a9929e995589e455c51fed/sequencer.c#L2353-L2358)：

```
res = do_recursive_merge(r, base, next, base_label, next_label, &head, &msgbuf, opts);

```

所以，遴选实际上就是一种……合并操作？这有些出乎意料。那具体都合并了什么内容？如何执行这个合并操作的呢？

我意识到我对 Git 的合并操作并不是特别理解，于是我上网搜索了一下。结果发现 Git 实际上采用了一种被称为 “三路合并” 的合并方式。那这到底是什么含义呢？

### Git 的合并策略：三路合并

假设我要合并下面两个文件，我们将其分别命名为 `v1.py` 和 `v2.py`。

```
def greet():
    greeting = "hello"
    name = "julia"
    return greeting + " " + name

```

```
def say_hello():
    greeting = "hello"
    name = "aanya"
    return greeting + " " + name

```

在这两个文件间，存在两处不同：

* `def greet()` 和 `def say_hello`
* `name = "julia"` 和 `name = "aanya"`

我们应该选择哪个呢？看起来好像不可能有答案！

不过，如果我告诉你，原始的函数（我们称之为 `base.py`）是这样的：

```
def say_hello():
    greeting = "hello"
    name = "julia"
    return greeting + " " + name

```

一切似乎变得清晰许多！在这个基础上，`v1` 将函数的名字更改为 `greet`，`v2` 将 `name = "aanya"`。因此，合并时，我们应该同时做出这两处改变：

```
def greet():
    greeting = "hello"
    name = "aanya"
    return greeting + " " + name

```

我们可以命令 Git 使用 `git merge-file` 来完成这次合并，结果正是我们预期的：它选择了 `def greet()` 和 `name = "aanya"`。

```
$ git merge-file v1.py base.py v2.py -p
def greet():
    greeting = "hello"
    name = "aanya"
    return greeting + " " + name⏎

```

这种将两个文件与其原始版本进行合并的方式，被称为 **三路合并**。

如果你想在线上试一试，我在 [jvns.ca/3-way-merge/](https://jvns.ca/3-way-merge/) 创建了一个小实验场。不过我只是草草制作，所以可能对移动端并不友好。

### Git 合并的是更改，而非文件

我对三路合并的理解是 —— Git 合并的是**更改**，而不是文件。我们对同一个文件做出两种不同的更改，Git 试图以合理的方式将这两种更改结合到一起。当两个更改都对同一行进行操作时，Git 可能会遇到困难，此时就会产生合并冲突。

Git 也可以合并超过两处的更改：你可以对同一文件有多达 8 处不同的更改，Git 会尝试将所有更改协调一致。这被称为八爪鱼合并，但除此之外我对其并不了解，因为我从未执行过这样的操作。

### Git 如何使用三路合并来应用补丁

接下来，让我们进入到一个有些出乎意料的情境！当我们讨论 Git “应用补丁”（如在变基 —— `rebase`、撤销 —— `revert` 或遴选 —— `cherry-pick` 中所做的）时，其实并非是生成一个补丁文件并应用它。相反，实际执行的是一次三路合并。

下面是如何将提交 `X` 作为补丁应用到你当前的提交，并与之前的 `v1`、`v2` 和 `base` 设置相对应：

1. **在你当前提交中**，文件的版本是 `v1`。
2. **在提交 X 之前**，文件的版本是 `base`。
3. **在提交 X 中**，文件的版本是 `v2`。
4. 执行 `git merge-file v1 base v2` 以合并它们（实际上，Git 并不直接执行 `git merge-file`，而是运行一个实现这个功能的 C 函数）。

总的来说，你可以将 `base` 和 `v2` 视为“补丁”，它们之间的差异就是你想要应用到 `v1` 上的更改。

### 遴选如何运作

假设我们有如下提交图，并且我们打算在 `main` 分支上遴选提交 `Y`：

```
A - B (main)
  \
   \
    X - Y - Z

```

那么，如何将此情景转化为我们前面提过的 `v1`、`v2` 和 `base` 组成的三路合并呢？

* `B` 是 `v1`
* `X` 是 `base`，而 `Y` 是 `v2`

所以，`X` 和 `Y` 共同构成了这个“补丁”。

其实，`git rebase` 无非就是重复多次执行 `git cherry-pick` 的过程。

### 撤销如何运作

现在，假如我们希望在如下的提交图上执行 `git revert Y`：

```
X - Y - Z - A - B

```

* `B` 是 `v1`
* `Y` 是 `base`，而 `X` 是 `v2`

这个过程反映的实际上就是遴选的情况，不过 `X` 和 `Y` 的位置颠倒了。我们需要这样做因为我们期望生成一个“反向补丁”。在 Git 中，撤销和遴选关系如此的紧密，它们甚至在同一个文件中实现：[revert.c](https://github.com/git/git/blob/dadef801b365989099a9929e995589e455c51fed/builtin/revert.c)。

### “三路补丁”是一个非常棒的技巧

使用三路合并将提交作为补丁应用的这个技巧非常巧妙且酷炫，我很惊讶之前从未听说过！我并未听过一个特定的名字来描述这种方法，但我更倾向于称之为“三路补丁”。

“三路补丁”的理念在于，你可以通过两个文件来定义补丁：在应用补丁前后的文件（在我们这篇文章中称之为 `base` 和 `v2`）。

因此，总体来看有三个文件被涉及到：一个是原文件，另外两个构成了补丁。

最重要的是，与普通补丁相比，三路补丁是一个更加高效的补丁方案，因为在有两个完整文件的情况下，你拥有更丰富的上下文信息来进行合并。

以下是我们例子中的常规补丁的大致情况：

```
@@ -1,1 +1,1 @@:
- def greet():
+ def say_hello():
    greeting = "hello"

```

而下面这就是一个三路补丁。不过，需要提醒的是这个“三路补丁”并不是一个真正的文件格式，这只是我自己提出的一种概念。

```
BEFORE: (the full file)
def greet():
    greeting = "hello"
    name = "julia"
    return greeting + " " + name
AFTER: (the full file)
def say_hello():
    greeting = "hello"
    name = "julia"
    return greeting + " " + name

```

### 《Building Git》 中提到了这点

James Coglan 的书籍 [《Building Git》](https://shop.jcoglan.com/building-git/) 是我在 Git 源码之外唯一找到的地方，他解释了 `git cherry-pick` 是如何在底层运用三路合并的（我原以为《Pro Git》可能会提及这个，但我并没能找到此话题的内容）。

我购买完这本书后发现，我早在 2019 年时就已经买过了，这对我来说真的是个很好的参考。

### Git 中的合并实际上比这更复杂

在 Git 中，合并不限于三路合并 —— 还有一种我不太理解的叫做“递归合并”，还有许多具体处理文件删除和移动的细节，同时也有多种合并算法。

如果想要了解更多相关知识，我最好的建议是阅读《Building Git》，尽管我还未完全阅读这本书。

### Git 应用到底做了什么？

我也参阅了 Git 的源代码，试图理解 `git apply` 的功能。它似乎（不出意外地）在 `apply.c` 中实现。这段代码解析了一个补丁文件，并通入目标文件来寻找应该在何处应用补丁。核心逻辑似乎在 [这里](https://github.com/git/git/blob/dadef801b365989099a9929e995589e455c51fed/apply.c#L2684)：思路好像是从补丁建议的行数开始，然后向前向后找寻。

```
	/*
	 * There's probably some smart way to do this, but I'll leave
	 * that to the smart and beautiful people. I'm simple and stupid.
	 */
	backwards = current;
	backwards_lno = line;
	forwards = current;
	forwards_lno = line;
	current_lno = line;
for (i = 0; ; i++) {
     ...

```

这个处理过程不禁让人觉得非常直白、与之前的期望相符。

### Git 三路应用的工作方式

`git apply` 命令中也有一个 `--3way` 参数，可以实现三路合并。因此，我们实际上可以通过如下方式，使用 `git apply` 来大体实现 `git cherry-pick` 的功能：

```
$ git show 10e96e46 --patch > out.patch
$ git apply out.patch --3way
Applied patch to 'content/post/2023-07-28-why-is-dns-still-hard-to-learn-.markdown' with conflicts.
U content/post/2023-07-28-why-is-dns-still-hard-to-learn-.markdown

```

但要注意，参数 `--3way` 并不只用到了补丁文件的内容！补丁文件开始的部分是:

```
index d63ade04..65778fc0 100644

```

`d63ade04` 和 `65778fc0` 是旧/新文件版本在 Git 对象数据库中的 ID，因此 Git 可以用这些 ID 来执行三路补丁操作。但如果有人将补丁文件通过邮件发送给你，而你并没有新/旧版本的文件，就无法执行这个操作：如果你缺少 blob，将会出现如下错误：

```
$ git apply out.patch
error: repository lacks the necessary blob to perform 3-way merge.

```

### 三路合并有点历史了

有一部分人指出，三路合并比 Git 的历史还要久远，它起源于 70 年代末期左右。有一篇 2007 年的 [论文](https://www.cis.upenn.edu/~bcpierce/papers/diff3-short.pdf) 对此进行了讨论。

### 就说这么多！

我真的对于我对于 Git 内部应用补丁的核心方法其实理解得并不深入这一点感到非常吃惊——学习这一点真的很酷！

虽然我对 Git 用户界面存在 [诸多不满](https://jvns.ca/blog/2023/11/01/confusing-git-terminology/)，但是这个特定问题并不包含在内。三路合并似乎是统一解决一系列不同问题的优雅方式，它对于人们来说也很直观（“应用一个补丁”这个想法是许多编程者都习以为常的思考模式，而它底层实现为三路合并的细节，实际上没有人真正需要去思考）。

*我顺便快速推荐一下：我正在写一部有关 Git 的 [zine](https://wizardzines.com)，如果你对它的发布感兴趣，你可以注册我非常不频繁的 [公告邮件列表](https://wizardzines.com/zine-announcements/)。*

*（题图：MJ/321bc2c9-4363-4661-802a-c74fb6a721b2）*

---

via: <https://jvns.ca/blog/2023/11/10/how-cherry-pick-and-revert-work/>

作者：[Julia Evans](https://jvns.ca/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


Linux 爱好者线下沙龙：LLUG 2023·西子湖畔相见

Summary: 走走停停，最终还是走到了西子湖畔。在这个冬日，LLUG 与你在杭州线下相见。

没有报名链接呀

老王啥时候来西安啊？

这只是预告，下次推送发报名表单，欢迎来玩~

目前还不知道呢~

走走停停，最终还是走到了西子湖畔。在这个冬日，LLUG 与你在杭州线下相见。

![](/data/attachment/album/202311/14/161258qgwnarkn2cd2zcds.png)

>
> 走走停停，最终还是走到了西子湖畔。在这个冬日，LLUG 与你在杭州线下相见。
>
>
>

11 月 25 日，**LLUG 杭州场将在杭州未来科技城国际人才园（五常地铁站附近）**举办。

![](/data/attachment/album/202311/14/160326kzq8zfwzcc96o68o.jpg)

本次活动依然由 Linux 中国和龙蜥社区（OpenAnolis）联合主办，杭州 GDG 协办，杭州城西科创大走廊高层次人才联合会提供场地支持。

> 龙蜥社区（OpenAnolis）是国内的顶尖 Linux 发行版社区，我们希望在普及 Linux 知识的同时，也能让中国的 Linux 发行版，为更多人知晓，推动国产发行版的发展和进步。

> 杭州城西科创大走廊高层次人才联合会简称“高联会”，高联会是在杭州城西科创大走廊管委会指导下，旨在广泛吸纳与团结廊内高层次人才，助力人才在杭州城西科创大走廊的创新创业。

> 杭州 GDG（杭州谷歌开发者社区），谷歌官方赞助的杭州本地技术社区，每年定期举办免费开发者线下技术沙龙，聚焦谷歌相关开源技术，欢迎大家关注微信公众号“杭州GDG”，了解我们，参与技术交流。

![](/data/attachment/album/202311/14/160358icruz6wwtme5myit.png)

*成都场现场照片*

![](/data/attachment/album/202311/14/160424x0k0nhkkthtxtn9x.png)

*深圳场现场照片*

![](/data/attachment/album/202311/14/160446kk9xtx6t4nzjksny.png)

*上海场现场照片*

本次活动，我们将设常规的技术分享、动手实践和闪电演讲三种不同分享的形态。

* 技术分享会邀请来自 Linux 社区的开发者，分享自己在 Linux 中的技术实践，并配合 Q&A 的环节，帮助大家理解技术难点和实践，如果你有经验和实践想要分享给大家，欢迎报名分享
* 动手实践则会有来自各厂商的 Linux 大咖，带着大家用半个小时的时间来动手实践一个 Linux 主题，帮助大家动手体验 Linux 的种种新特性、特定的能力。
* 闪电演讲则不设定主题，每个人有 5 分钟时间来分享自己与 Linux、技术、开源有关的话题，共计 6 个闪电演讲名额，想要试试锻炼自己的演讲能力，不妨从闪电演讲开始。

欢迎大家扫码加入 LLUG 杭州分群，在群里为活动提出你的建议～

此外，如果你对分享感兴趣，欢迎填写下方问卷来提交你的议题，向开发者们分享你的研究、实践和经验：<https://jinshuju.net/f/VJkeMZ>

*（题图：MJ/8f5c79b3-5531-4e49-872d-ddb79266600a）*


硬核观察 #1185 宇宙射线可以导致 SSH 私钥被窃取

Summary:
? 宇宙射线可以导致 SSH 私钥被窃取
? 苹果公司拿走了 1/3 的 Safari 上的谷歌搜索广告收入
? 谷歌起诉涉嫌发布植入恶意软件的山寨版 Bard 的骗子
»
»

ed25519应该不会受到影响吧？我早就不用RSA了，就是因为认为不够安全。

![](/data/attachment/album/202311/14/195254ztyrlkvb7ql8zvtk.jpg)

![](/data/attachment/album/202311/14/195305yipi99p6firinccp.png)

### 宇宙射线可以导致 SSH 私钥被窃取

研究人员发现，可以观察到 SSH 签名生成过程中意外或自然发生的计算错误，并利用这些错误来计算 SSH 服务器的本应保密的密钥私钥。所谓自然发生的错误，指的是宇宙射线和其他会翻转比特的小故障造成的错误；而所谓意外发生的错误，指的是 RSA 签名生成算法执行不力。如果你监控了足够多的到易受攻击的 SSH 服务器的连接，你最终会发现一个可以利用的漏洞。研究人员检查了过去七年扫描互联网收集的 10 亿个使用了 RSA 算法的签名。在这些签名中，有百万分之一的主机私钥会被暴露。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/14/passive_ssh_key_compromise/)**
>
>
>

>
> 老王点评：所以，加密算法还得防着宇宙射线的攻击。
>
>
>

![](/data/attachment/album/202311/14/195318e3aawhkcuaphhchh.png)

### 苹果公司拿走了 1/3 的 Safari 上的谷歌搜索广告收入

谷歌和苹果公司早在 2002 年就建立了合作关系，谷歌成为苹果 Safari 浏览器的默认搜索引擎，过去几年谷歌每年为此向苹果支付了数十亿美元。在诉谷歌反垄断案审判中，谷歌的经济学家在法庭上意外披露了用户通过 Safari 浏览器使用谷歌搜索产生的广告收入，其中 36% 会支付给苹果公司。谷歌和苹果公司都曾反对公开披露双方协议的细节。

>
> **[消息来源：彭博社](https://www.bloomberg.com/news/articles/2023-11-13/apple-gets-36-of-google-revenue-from-search-deal-witness-says)**
>
>
>

>
> 老王点评：好家伙，浏览器可真是个摇钱树啊。
>
>
>

![](/data/attachment/album/202311/14/195404oj872i37z7zpzttm.png)

### 谷歌起诉涉嫌发布植入恶意软件的山寨版 Bard 的骗子

谷歌起诉称，越南的一些人一直在建立社交媒体页面并发布广告，鼓励用户下载一个 “Bard”，但这个版本的 “Bard” 并不能提供如何烹饪意大利烩饭之类的有用答案。一旦某个傻瓜下载了这个 “Bard”，它就会侵入系统并窃取密码和社交媒体凭证。诉讼指出，这些骗子特别将 Facebook 作为他们的首选传播方式。

>
> **[消息来源：Engadget](https://www.engadget.com/google-sues-scammers-that-allegedly-released-a-malware-filled-bard-knockoff-162222150.html)**
>
>
>

>
> 老王点评：这是把免费服务当成恶意软件的载体了，不过我觉得比起来今天圈内将开源 LLaMA “改成” 自己的开源大模型的大瓜，也算不了什么。
>
>
>


这儿几个字节，那里几个字节，我们说的是真正的内存

Summary: 今天的帖子来自于最近的 Go 语言的一次小测试

今天的帖子来自于最近的 Go 语言的一次小测试

![](/data/attachment/album/202311/15/154636bhoqwdrdxczdhzxg.png)

今天的帖子来自于最近的 Go 语言的一次小测试，观察下面的测试基础片段    [1] ：

```
func BenchmarkSortStrings(b *testing.B) {
        s := []string{"heart", "lungs", "brain", "kidneys", "pancreas"}
        b.ReportAllocs()
        for i := 0; i < b.N; i++ {
                sort.Strings(s)
        }
}

```

`sort.Strings` 是 `sort.StringSlice(s)` 的便捷包装器，`sort.Strings` 在原地对输入进行排序，因此不会分配内存（或至少 43% 回答此问题的 Twitter 用户是这么认为的）。然而，至少在 Go 的最近版本中，基准测试的每次迭代都会导致一次堆分配。为什么会是这种情况？

正如所有 Go 程序员应该知道的那样，接口是以 [双词结构](https://research.swtch.com/interfaces) 实现的。每个接口值包含一个字段，其中保存接口内容的类型，以及指向接口内容的指针。   [2]

在 Go 语言伪代码中，一个接口可能是这样的：

```
type interface struct {
        // the ordinal number for the type of the value
        // assigned to the interface
        type uintptr

        // (usually) a pointer to the value assigned to
        // the interface
        data uintptr
}

```

`interface.data` 可以容纳一个机器字（在大多数情况下为 8 个字节），但一个 `[]string` 却需要 24 个字节：一个字用于指向切片的底层数组；一个字用于存储切片的长度；另一个字用于存储底层数组的剩余容量。那么，Go 是如何将 24 个字节装入个 8 个字节的呢？通过编程中最古老的技巧，即间接引用。一个 `[]string`，即 `s`，需要 24 个字节；但 `*[]string` —— 即指向字符串切片的指针，只需要 8 个字节。

### 逃逸到堆

为了让示例更加明确，以下是重新编写的基准测试，不使用 `sort.Strings` 辅助函数：

```
func BenchmarkSortStrings(b *testing.B) {
        s := []string{"heart", "lungs", "brain", "kidneys", "pancreas"}
        b.ReportAllocs()
        for i := 0; i < b.N; i++ {
                var ss sort.StringSlice = s
                var si sort.Interface = ss // allocation
                sort.Sort(si)
        }
}

```

为了让接口正常运行，编译器将赋值重写为 `var si sort.Interface = &ss`，即 `ss` 的地址分配给接口值。   [3]  我们现在有这么一种情况：出现一个持有指向 `ss` 的指针的接口值。它指向哪里？还有 `ss` 存储在哪个内存位置？

似乎 `ss` 被移动到了堆上，这也同时导致了基准测试报告中的分配：

```
Total:    296.01MB   296.01MB (flat, cum) 99.66%
      8            .          .           func BenchmarkSortStrings(b *testing.B) {
      9            .          .           	s := []string{"heart", "lungs", "brain", "kidneys", "pancreas"}
     10            .          .           	b.ReportAllocs()
     11            .          .           	for i := 0; i < b.N; i++ {
     12            .          .           		var ss sort.StringSlice = s
     13     296.01MB   296.01MB           		var si sort.Interface = ss // allocation
     14            .          .           		sort.Sort(si)
     15            .          .           	}
     16            .          .           }

```

发生这种分配是因为编译器当前无法确认 `ss` 比 `si` 生存期更长。Go 编译器开发人员对此的普遍态度是，觉得 [这个问题改进的余地](https://github.com/golang/go/issues/23676)，不过我们另找时间再议。事实上，`ss` 就是被分配到了堆上。因此，问题变成了：每次迭代会分配多少个字节？为什么不去询问 `testing` 包呢？

```
% go test -bench=. sort_test.go
goos: darwin
goarch: amd64
cpu: Intel(R) Core(TM) i7-5650U CPU @ 2.20GHz
BenchmarkSortStrings-4          12591951                91.36 ns/op           24 B/op          1 allocs/op
PASS
ok      command-line-arguments  1.260s

```

可以看到，在 amd 64 平台的 Go 1.16 beta1 版本上，每次操作会分配 24 字节。   [4]  然而，在同一平台先前的 Go 版本中，每次操作则消耗了 32 字节。

```
% go1.15 test -bench=. sort_test.go
goos: darwin
goarch: amd64
BenchmarkSortStrings-4          11453016                96.4 ns/op            32 B/op          1 allocs/op
PASS
ok      command-line-arguments  1.225s

```

这引出了本文的主题，即 Go 1.16 版本中即将推出的一项便利改进。不过在讨论这个内容之前，我需要聊聊 “<ruby> 尺寸类别 <rt>  size class </rt></ruby>”。

### 尺寸类别

在解释什么是 “<ruby> 尺寸类别 <rt>  size class </rt></ruby>” 之前，我们先考虑个问题，理论上的 Go 语言在运行时是如何在其堆上分配 24 字节的。有一个简单的方法：追踪目前为止已分配到的所有内存的动向——利用指向堆上最后分配的字节的指针。分配 24 字节，堆指针就会增加 24，然后将前一个值返回给调用函数。只要写入的请求 24 字节的代码不超出该标记的范围，这种机制就没有额外开销。不过，现实情况下，内存分配器不仅要分配内存，有时还得释放内存。

最终，Go 语言程序在运行时将释放这些 24 字节，但从运行的视角来看，它只知道它给调用者的开始地址。它不知道从该地址起始之后又分配了多少字节。为了允许释放内存，我们假设的 Go 语言程序运行时分配器必须记录堆上每个分配的长度值。那么这些长度值的分配存储在何处？当然是在堆上。

在我们的设想中，当程序运行需要分配内存的时候，它可以请求稍微多一点，并把它用来存储请求的数量。而对于我们的切片示例而言，当我们请求 24 字节时，实际上会消耗 24 字节加上存储数字 `24` 的一些开销。这些开销有多大？事实上，实际上的最小开销量是一个字。   [5]

用来记录 24 字节分配的开销将是 8 字节。25% 不是很大，但也不算糟糕，随着分配的大小增加，开销将变得微不足道。然而，如果我们只想在堆上存储一个字节，会发生什么？开销将是请求数据量的 8 倍！是否有一种更高效的方式在堆上分配少量内存？

与其在每个分配旁边存储长度，不如将相同大小的内容存储在一起，这个主意如何？如果所有的 24 字节的内容都存储在一起，那么运行时会自动获取它们的大小。运行时所需要的是一个单一的位，指示 24 字节区域是否在使用中。在 Go 语言中，这些区域被称为 Size Classes，因为相同大小的所有内容都会存储在一起（类似学校班级，所有学生都按同一年级分班，而不是 C++ 中的类）。当运行时需要分配少量内存时，它会使用能够容纳该分配的最小的尺寸类别。

### 无限制的尺寸类别

现在我们知道尺寸类别是如何工作的了，那么问题又来了，它们存储在哪里？和我们想的一样，尺寸类别的内存来自堆。为了最小化开销，运行时会从堆上分配较大的内存块（通常是系统页面大小的倍数），然后将该空间用于单个大小的分配。不过，这里存在一个问题————

将大块区域用于存储同一大小的事物的模式很好用    [6] ，如果分配大小的数量是固定的，最好是少数几个。那么在通用语言中，程序可以要求运行时以任何大小分配内存   [7] 。

例如，想象一下向运行时请求 9 字节。9 字节是一个不常见的大小，因此可能需要一个新的尺寸类别来存储 9 字节大小的物品。因为 9 字节大小的物品不常见，所以分配的其余部分（通常为 4KB 或更多）可能会被浪费。由于尺寸类别的集合是固定的，如果没有精确匹配的 size class 可用，分配将并入到下一个尺寸类别。在我们的示例中，9 字节可能会在 12 字节的尺寸类别中分配。未使用的 3 字节的开销要比几乎未使用的整个尺寸类别分配好。

### 总结一下

这是谜题的最后一块拼图。Go 1.15 版本没有 24 字节的尺寸类别，因此 `ss` 的堆分配是在 32 字节的尺寸类别中分配的。由于 Martin Möhrmann 的工作，Go 1.16 版本有一个 24 字节的尺寸类别，非常适合分配给接口的切片值。

### 相关文章

1. [我在 Devfest 2017年西伯利亚大会谈 Go 语言](https://dave.cheney.net/2017/08/23/im-talking-about-go-at-devfest-siberia-2017)
2. [如果对齐的内存写操作是原子性的，为什么我们还需要 sync/atomic 包呢？](https://dave.cheney.net/2018/01/06/if-aligned-memory-writes-are-atomic-why-do-we-need-the-sync-atomic-package)
3. [为你的树莓派创建一个真实的串行控制台](https://dave.cheney.net/2014/01/05/a-real-serial-console-for-your-raspberry-pi)
4. [为什么 Go 语言线程的栈是无限制的？](https://dave.cheney.net/2013/06/02/why-is-a-goroutines-stack-infinite)

*（题图：MJ/01d5fe46-778f-48fe-9481-162f4d0289dc）*

---

1. 这不是正确的对排序函数进行基准测试的方式，因为在第一次迭代之后，输入已经排序。但这又是另外一个话题了。 [↩](#fnref1)
2. 此语句的准确性取决于所使用的 Go 版本。例如，Go 1.15 版本添加了直接将一些 [整数存储在接口值](https://golang.org/doc/go1.15#runtime) 中的功能，从而节省了分配和间接性。然而，对于大多数值来说，如果它不是指针类型，它的地址将被取出并存储在接口值中。 [↩](#fnref2)
3. 编译器在接口值的类型字段中跟踪了这种手法，因此它记住了分配给 `si` 的类型是 `sort.StringSlice` 而不是 `*sort.StringSlice`。 [↩](#fnref3)
4. 在 32 位平台上，这个数字减半，[但我们不再关注它](https://www.tallengestore.com/products/i-never-look-back-darling-it-distracts-from-the-now-edna-mode-inspirational-quote-tallenge-motivational-poster-collection-large-art-prints)。 [↩](#fnref4)
5. 如果你准备限制分配为 4G 或者可能是 64KB，你可以使用较少内存来存储分配的尺寸，但实际上使用小于一个字来存储长度标头的节省会受到填充的影响。 [↩](#fnref5)
6. 将相同大小的物品存储在一起也是一种有效的对抗碎片化的策略。 [↩](#fnref6)
7. 这并不是一个不切实际的设想，字符串有各种形状和大小，生成以前未见过的大小的字符串可能就像附加空格一样简单。 [↩](#fnref7)

---

via: <https://dave.cheney.net/2021/01/05/a-few-bytes-here-a-few-there-pretty-soon-youre-talking-real-memory>

作者：[Dave Cheney](https://dave.cheney.net/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[Drwhooooo](https://github.com/Drwhooooo) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1186 每月 5 美元的虚拟机性能超过了 30 年前的第三快的超算

Summary:
? 每月 5 美元的虚拟机性能超过了 30 年前的第三快的超算
? Canonical 发布快速部署全功能私有云的 MicroCloud
? DeepMind 能更快更准确地预测极端天气
»
»

首先，你得有40年的天气电子数据。

欧洲中期天气预报中心也使用了华为的盘古气象大模型进行预报实验，10天全球预测，官网公开发布

![](/data/attachment/album/202311/15/174020lx7kguuu7x4v6ax6.jpg)

![](/data/attachment/album/202311/15/174037u0yz1089fry3s974.png)

### 每月 5 美元的虚拟机性能超过了 30 年前的第三快的超算

今年是全球公开的最快超级计算机 TOP500 排行榜发布 30 周年。1993 年，当时的超算榜首是位于日本国家航空航天实验室的富士通数值风洞，该系统拥有多达 140 个 CPU 内核，可实现 124 gigaFLOPS 的双精度性能。有人做了一个有趣的测试，结果表明，每月只需要 5 美元的单个 vCPU 线程的虚拟机可以与 1993 年排名第三的超级计算机明尼苏达超级计算中心相抗衡，而该系统拥有 544 个 SuperSPARC 处理器。如果升级到 4 个 vCPU 虚拟机，就可以击败当年的榜首，每个月仅需要花费 48 美元。

>
> **[消息来源：The Register](https://www.theregister.com/2023/11/14/five_dollar_supercomputer/)**
>
>
>

>
> 老王点评：不算意外，只是有些吃惊。不敢想象三十年后计算机能强大到什么程度，或许地球会爆炸吧。
>
>
>

![](/data/attachment/album/202311/15/174053oc8cc598n88nlk2m.png)

### Canonical 发布快速部署全功能私有云的 MicroCloud

Canonical 公司今天发布了最新的软件产品 MicroCloud，它的目标是在 Ubuntu Linux 上轻松部署一个 “几分钟内就能实现全功能云” 的私有云。他们宣传自己的私有云部署就像使用 Snap 命令一样简单。其代码以 AGPL-3.0 许可托管在 GitHub 上。据介绍，MicroCloud 至少需要三台机器，目前可扩展到 50 台机器。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Canonical-Ubuntu-MicroCloud)**
>
>
>

>
> 老王点评：现在看起来，私有云有公有云不可比拟的好处，最起码重启起来比较快~
>
>
>

![](/data/attachment/album/202311/15/174111lisjh3oouioisume.png)

### DeepMind 能更快更准确地预测极端天气

根据一份研究，谷歌 DeepMind 的模型 GraphCast 能够提前 10 天预测天气状况，比目前的黄金标准更准确、更快速。在 1300 多个测试区域中，GraphCast 在 90% 以上的测试中都优于欧洲中期天气预报中心的模型。最重要的是，GraphCast 还能比标准模型更早地为气象学家提供有关极端气温和气旋路径等情况的准确预警。GraphCast 使用图神经网络，将地球表面映射成 100 多万个网格点。它不使用物理方程，而是根据四十年的历史天气数据进行预测，可以利用机器学习在一分钟内完成这些计算。

>
> **[消息来源：Technology Review](https://www.technologyreview.com/2023/11/14/1083366/google-deepminds-weather-ai-can-forecast-extreme-weather-quicker-and-more-accurately/)**
>
>
>

>
> 老王点评：没想到不是超算，而是人工智能拯救了天气预测难题。
>
>
>


每月 5 美元的虚拟机可以跻身 1993 年的超算前三

Summary: 当然，如果你真的关注性能，市面上自然有更出色的选择。

当然，如果你真的关注性能，市面上自然有更出色的选择。

![](/data/attachment/album/202311/16/000750tl6lelevnlxlxn8e.png)

>
> 当然，如果你真的关注性能，市面上自然有更出色的选择。
>
>
>

今年是 TOP500 公开排名全球最快超级计算机 30 周年。

为纪念这个重要的里程碑，也因应科罗拉多州正在举行的年度超级计算大会，我们想弄个有趣但稍显愚蠢的实验：看看以今天技术，我们能以多低的成本重现 1993 年超级计算机十强的性能。于是，我们在云上运行了几台虚拟机，并对 HPLinpack 基准进行了编译测试。这里简单透露一下：我们这项实验的结果，你可能并不会太震惊。

到 1993 年年末，最快的超级计算机是日本国家航空实验室的富士通数值风洞。这台装备了 140 个 CPU 核心的系统，能够实现 124 GigaFLOPS 的双精度（FP64）计算能力。

如今，我们的系统已经 [突破](https://www.theregister.com/2022/05/30/us_frontier_supercomputer_ousts_japans/) 了 exaFLOPS 的难关，然而在 [1993 年 11 月](https://www.top500.org/lists/top500/1993/11/)，如何在功率最高的十个系统中占据一席之地呢？只要你的 FP64 性能超过了美国 [CM-5/544](https://www.top500.org/system/167021/) 机型的 15.1 GigaFLOPS。因此，我们设定的目标是让云虚拟机超过 15 GigaFLOPS 的性能。

在我们分析结果之前，有几点值得一提。如果我们选用了支持 GPU 的实例，我们知道我们能够达到更高的性能。不过，云端的 GPU 实例租赁并不便宜，并且在 2000 年年中至年底，GPU 才真正开始广泛出现在 TOP500 的超级计算机中。此外，在 CPU 上运行 Linpack 比在 GPU 上运行要容易得多。

这些测试只是为了纪念 30 周年，只是稍微有点新颖，决不具有科学严谨或详尽无遗的特征。

### 一台 5 美元的云虚拟机对比一部 30 年前的 TOP500 超级计算机

但在开始测试前，我们需要开启一对 VPC。在本次测试中，我们选择在 Vultr 上运行 Linpack，但其实在 AWS，Google Cloud，Azure，Digital Ocean 或者是你喜欢的任何云服务商上，这都同样适用。

首先，我们启动了一个月费 5 美元的虚拟机实例，它具备了一个共享的 vCPU，1GB 的内存和 25GB 的存储。准备就绪后，我们便启动了 Linpack 的编译。

在这，事情可能会有些复杂，因为我们实际上可以对系统进行一些调优，挤出一些额外的 FLOPS。然而，考虑到这只是一个测试，也为了尽可能保持简单，我们选择了依照 [这个指南](https://gist.github.com/Levi-Hope/27b9c32cc5c9ded78fff3f155fc7b5ea) 进行操作。此份操作手册是基于 Ubuntu 18.04 编写的，但是我们发现在 20.04 LTS 上运行也一切正常。

为了产生我们的 HPL.dat 文件，我们利用了一个巧妙的 [表单](https://www.advancedclustering.com/act_kb/tune-hpl-dat-file/)，它会自动产生一个优化版的 Linpack 运行配置。

我们对几种不同类型的虚拟机进行了三次基准测试，并从每次运行中挑选出最高的得分。以下就是我们的发现：

| 实例类型 | vCPU | RAM (MB) | 存储 (GB) | Rmax GFLOPS | 每月费用 (美元) |
| --- | --- | --- | --- | --- | --- |
| Regular shared | 1 | 1024 | 25 | 31.21 | 5 |
| Premium shared | 1 | 1024 | 25 | 51.85 | 6 |
| Premium shared | 2 | 2048 | 60 | 87.46 | 18 |
| Premium shared | 4 | 8192 | 180 | 133.42 | 48 |

从我们的测试结果可以看出，一个单一的共享 vCPU 在与 1993 年 11 月十大超级计算机的比较中表现出颇为出色的性能。

我们通过一个 CPU 线程就获得了 31.21 GigaFLOPS 的 FP64 性能，这使得我们的虚拟机与 1993 年排名第三的超级计算机 —— 明尼苏达超级计算中心的 30.4 GigaFLOPS [CM-5/554](https://www.top500.org/system/167059/) Thinking Machines 系统相提并论。这确实令人吃惊，因为那台系统拥有 544 个 SuperSPARC 处理器，而我们的系统只有一个 CPU 线程，虽然我们的系统运行在更高的时钟速度下。

如你从上面的图表中所见，每月多花 1 美元，我们的性能跃升至 51.85 GigaFLOPS，而选择一个价值 18 美元的“高级”共享 CPU 实例，双线程使我们进一步接近 87.46 GigaFLOPS 的性能。

然而，要超过 [富士通的数值风洞](https://www.top500.org/system/173279/)，我们需要升级到四个 vCPU 的虚拟机，由此我们抓取到了 133 GigaFLOPS 的 FP64 性能。然而不幸的是，升级到四个线程的费用跳到了每月 48 美元。达到这个价格，Vultr 实际上是在销售部分 GPU，我们预计如果采用 GPU，性能应会有显著提升，效率也会更高。

### 更好的选择

我们需要明确的是，这些都是我们选择的共享类型实例。一般来说，共享实例意味着在一定程度上进行了超额配置。

由于共享实例可能会受到其他租户的影响，这也使得性能有时难以预知，甚至每次运行的性能都可能略有不同，这主要取决于云区域中主机系统的载荷状态。

在我们的非常不科学的测试中，我们并未观察到太多的性能变化。我们想这可能是因为核心并未处在过高的负载下。在专有 CPU 实例上进行同样的测试，结果与我们每月 6 美元的共享实例相若，但成本高达五倍。

但是，除了这场小实验的新奇趣味之外，这没太多实际意义。如果你需要在短时间内获得大量 FLOPS，有许多已优化的 CPU 和 GPU 实例可供选择。它们的成本无法与每月 5 美元的实例相媲美，然而大多数实例是按小时账单的，因此实际成本将取决于你完成工作的迅速程度。

此外，让我们不要忘记，你的智能手机与这些存在已久的 30 年老计算系统相比，又会有怎样的对比呢？

*（题图：MJ/16cf957e-a4e4-43b1-99b2-df0574a064dc）*

---

via: <https://www.theregister.com/2023/11/14/five_dollar_supercomputer/>

作者：[Tobias Mann](https://www.theregister.com/Author/Tobias-Mann) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)


真的，宇宙射线会导致部分 SSH 服务器的私钥泄露

![](/data/attachment/album/202311/16/115713c1i4nfkv3w1n1gb3.png)

>
> 如果你是 OpenSSL、LibreSSL、OpenSSH 的用户，你可以坐下来看看了，因为这不会影响你。
>
>
>

最近一项学术研究展示了如下情况：对于某些特定设备，他人可以监听其 SSH 连接，然后借助一些运气在无声无息中破译出主机的私有 RSA 密钥，从而冒充该设备。

冒充这些设备后，通过使用推断出的主机密钥私钥实施的中间人攻击，间谍可以安静地记录用户的登录信息，同时，通过将这些连接转发给真正的设备，他们还可以监控用户在远程 SSH 服务器上的活动。尽管 SSH 还有其他功能，但其主要应用场景仍然是用户登录到设备并通过命令行接口进行控制。

据悉，可以通过被动监视从客户端到易受攻击设备的 SSH 服务器的连接，获得主机的 RSA 密钥私钥：无论是在签名生成过程中的偶发运算错误，还是因宇宙射线等微小故障产生的自然错误，都可以被观察和利用来推算 SSH 服务器的主机密钥私钥，这本应是保密的。

虽然可能认为自然错误发生的概率很小，偶发错误可能已为众所周知，但实际上只要你连续观察足够多的到有漏洞的 SSH 服务器的 SSH 连接，你就有可能发现一个你可以利用的。

重要的一点是，软件库 OpenSSL 和 LibreSSL，以及 OpenSSH，都未发现存在上述密钥推导问题的漏洞。由此，我们认为，网上的大部分设备、服务器和其他设备都不会受到影响，只有特定的物联网设备和类似的嵌入式设备可能会对此种攻击敏感。此外，这种问题也仅影响 RSA 密钥。

### 细节

由加利福尼亚大学圣地亚哥分校的 Keegan Ryan、Kaiwen He（他同时也在麻省理工学院任职）、George Arnold Sullivan 以及 Nadia Heninger 基于早期的一些研究，完成并撰写了这项研究。他们采用的技术，旨在揭示 RSA 密钥私钥，该技术源于 Florian Weimer 在 2015 年对 TLS 的突破性研究，以及 2022 年圣地亚哥论文的几位作者以及其他研究者的一些工作，这些工作可追溯到 1990 年代。

信息安全专家 Thomas Ptacek 曾高度赞扬了 2023 年研究的合著者 Nadia Heninger，并在此分享了 RSA 密钥分析论文的摘要，以便于理解这个问题。我们同时也要感谢曾在 Register vulture 工作的 Dan Goodin，他在周一通过 Ars Technica 向我们报告了 UC 圣地亚哥论文的消息。

基本上，当客户端尝试连接到一个容易受到攻击的 SSH 服务器时，它们在协商建立全面安全加密通信的过程中，服务器将会生成一个数字签名以供客户端检查，以确保其正在与预期的服务器通信。

如我们之前所述，这个签名的计算过程可能会随机或意外地产生错误，聪明的算法可以从错误的签名中推导出服务器的私有 RSA 密钥，此密钥用于签名生成。对此的一种防范措施是在将签名发送给客户端前确保其计算正确；OpenSSL 和 LibreSSL 已经在实施这种防范。

正如论文作者在他们的摘要中提到的：

>
> “我们证明了一种可能性：若 SSH 服务器在进行签名计算过程中出现自然故障，一名被动的网络攻击者便有机会获得其私有 RSA 主机密钥。
>
>
> 在之前的研究中，我们通常认为这对于 SSH 协议是不可行的，因为签名中包含了一些信息，比如 Diffie-Hellman 共享密钥，这些信息对于被动的网络观察者来说无法获得。
>
>
> 然而，我们证明了，在 SSH 中经常使用的签名参数下，如果出现了签名错误，我们便能有效地使用 <ruby> 格攻击 <rt>  lattice attack </rt></ruby> 来恢复私钥。
>
>
> 我们对 SSH、IKEv1、IKEv2 协议进行了安全分析，在此场景下，我们利用我们的攻击方法在现实环境中挖掘出几个存在漏洞的独立实现中的数百个被攻破的密钥。
>
>
>

“一个被动的对手可以安静地监控合法的连接，不用冒被检测的风险，直到他们观察到一个包含私钥的错误签名。”研究团队做出了这样的结论：“然后，攻击者可以主动且不会被检测地冒充被攻破的主机，从而截取敏感数据。”

研究人员表示，他们已经扫描了整个互联网，并翻查了以前收集的 SSH 扫描数据，以测量易受攻击的签名的流行程度。他们声称，他们的数据集涵盖了 52 亿条 SSH 记录和超过七年的观察，其中包含了超过 59 万个无效的 RSA 签名。

通过他们的格密钥恢复技术，学者们表示，其中超过 4900 个错误的签名揭示了对应 RSA 公钥的因子分解。他们利用这些信息，推导出了 189 个公钥的私有 RSA 密钥。

在他们的研究中，作者们发现，思科、Zyxel、山石网科和 Mocana 这四个制造商的产品都可能受到这种密钥侦测攻击。研究者已经向思科和 Zyxel 报告了这个问题，观察到两家供应商都迅速进行了调查行动。

思科判定其 ASA 和 FTD 软件在 2022 年已经解决了此问题，且在这篇论文发布之前，公司正在对其 IOS 和 IOS XE 软件进行调查，看看如何应对此问题。

同一时间，Zyxel 发现这个缺陷只影响到了它那些已停止服务的固件，并且它已经开始使用不受此问题影响的 OpenSSL。研究人员表示，他们没有成功地与山石网科和 Mocana 取得联系，所以决定把这个问题提交给了 CERT 协调中心。

据称，自诩为 “SSH-2.0-SSHD” 的 SSH 服务器实现也可能受到攻击，这可能会影响到一些企业级的 Java 应用。有鉴于这个密钥推导技术的关键在于 PKCSv1.5，使用 PKCSv1.5-RSA 签名的 DNSSEC 可能也在风险之中。

他们还指出，他们在 IPsec 连接中收集到的签名数据集不大，所以无法确定此协议是否也可能受到类似的密钥泄漏攻击。他们表示：“鉴于易受攻击的签名故障很罕见，根据我们的数据，我们无法对 IPsec 实现得出多少结论，我们认为这个问题值得进一步研究。”

>
> 更新：已经与山石网科取得联系，官方确认该问题已在 2015 年发布的相关版本中修复，之后的版本也不存在相关问题。
>
>
> 具体详情可以咨询山石网科客服或查看如下链接：
>
>
> [https://www.hillstonenet.com.cn/security-notification/2015/07/28/dsfyj/](https://www.hillstonenet.com.cn/security-notification/2015/07/28/dsfyj/ )
>
>
>

*（题图：MJ/f94093f0-9ffe-4cf1-82fb-cdac1427e923）*

---

via: <https://www.theregister.com/2023/11/14/passive_ssh_key_compromise/>

作者：[Jessica Lyons Hardcastle](https://www.theregister.com/Author/Jessica-Lyons-Hardcastle) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)


12-Factor 应用方法论的开源开发者指南

Summary: 这 12 项基本原则能够帮助团队快速高效地构建高度可扩展的应用程序

这 12 项基本原则能够帮助团队快速高效地构建高度可扩展的应用程序

![](/data/attachment/album/202311/16/124441qs8hltth7hurdzos.png)

>
> 这 12 项基本原则能够帮助团队快速高效地构建高度可扩展的应用程序
>
>
>

[12-Factor 应用方法论](https://www.redhat.com/architect/12-factor-app) 为在短时间内构建应用程序并使其具有可扩展性提供了指导。它由 Heroku 的开发人员创建，用于软件即服务（SaaS）应用程序、网络应用程序以及可能的通信平台即服务（CPaaS）。在有效组织项目和管理可扩展应用程序方面，12 要素应用程序方法论对开源开发具有强大的优势。

### 12-Factor 应用方法论的原则

12-Factor 应用方法论的规则非常严格，也是开发和部署 SaaS 应用程序的基石，并且不受任何编程语言或数据库的限制。

#### 1：一份基准代码，多份部署

![一个说明图表：显示了一个由左边的绿线代表的代码库，引导到右边由绿色方块代表的四个部署。橙色方块代表暂存环境，而红色方块代表生产环境。](/data/attachment/album/202311/16/124522ucjcej6rleed5k3j.png "Codebase")

每个应用程序都应该有一个具有多个不同环境/部署的代码库。

开发人员不应仅仅为了在不同环境中设置而开发另一个代码库。不同的环境代表不同的状态，但这些不同的环境应该共享同一个代码库。

在许多开源项目都存储在 GitLab 这样的版本控制系统中的情况下，一个环境可以被视为一个分支。例如，你可以在任何中央版本控制系统中为名为 VoIP-app 的云 VoIP 应用程序创建一个单独的存储库，然后创建两个分支：开发分支（`development`）和暂存分支（`staging`），并将主分支（`master`）作为发布分支。

#### 2：明确声明和隔离依赖关系

应声明所有依赖关系。你的应用程序可能会依赖外部系统工具或库，但不应对系统工具或库有任何 *隐含的* 依赖。你的应用程序必须始终明确声明所有依赖关系及其正确版本。

在代码库中包含依赖关系可能会产生问题，特别是在开源项目中，外部库的更改可能会将错误引入代码库。例如，代码库可能会使用一个外部库，但没有明确声明该依赖关系或版本。如果外部库更新到更新的、未经测试的版本，这可能会与你的代码产生兼容性问题。如果明确声明了依赖关系及其正确版本，你的代码库就不会出现这种问题。

根据技术栈的不同，最好使用软件包管理器，通过读取代表依赖库名称和版本的依赖库声明清单，在各自的系统上下载依赖库。

#### 3：在环境中存储配置

当需要支持多个环境或客户端时，配置就成了应用程序的重要组成部分。不同部署之间的配置应存储在环境变量中。这样就可以在部署之间轻松更改配置，而无需更改代码。

对于闭源应用程序来说，这一原则是有益的，因为你不会希望数据库连接信息或其他秘密数据等敏感信息被公开。然而，在开放源代码开发中，这些细节都是公开的。在这种情况下，好处是你不需要反复修改代码。你只需这样设置变量，只需改变环境，就能让代码完美运行。

#### 4：把后端服务当作附加资源

所有后备服务（如数据库、外部存储或消息队列）都被视为附加资源，由执行环境附加或分离。根据这一原则，如果这些服务的位置或连接细节发生变化，仍无需更改代码。这些细节可以在配置中找到。

备份服务可以从部署中快速附加或分离。例如，如果基于云的电子表格的数据库无法正常工作，开发人员应该能够创建一个从最近备份恢复的新数据库服务器，而无需对代码库进行任何更改。

#### 5：严格分离构建和运行

12-Factor 应用方法论要求严格区分构建、发布和运行阶段。

* 第一阶段是 *构建* 阶段。在这一阶段，源代码被组装或编译成可执行文件，同时加载依赖关系并创建资产。每次需要部署新代码时，构建阶段就会开始。
* 第二阶段是 *发布* 阶段。在此阶段，构建阶段生成的代码与部署的当前配置相结合。最终发布的版本包含构建和配置，可在执行环境中立即执行。
* 第三个阶段是 *运行* 阶段，也是最后阶段：应用程序在执行环境中运行。该阶段不应被其他任何阶段打断。

通过严格区分这些阶段，我们可以避免代码中断，使系统维护更加易于管理。

#### 6：以一个或多个无状态进程运行应用

应用程序作为一个或多个进程的集合在执行环境中执行。这些进程是无状态的，其持久化数据存储在数据库等后台服务中。

这对开源非常有用，因为使用某版本应用程序的开发人员可以在其云平台上创建多节点部署，以实现可扩展性。数据不会在其中持久化，因为如果其中任何一个节点崩溃，数据就会丢失。

#### 7：通过端口绑定提供服务

你的应用程序应作为独立的服务，独立于其他应用程序。它它应该能通过URL供其他服务访问，以服务形式存在。这样，你的应用程序就可以在需要时作为其他应用程序的资源。利用这一概念，你可以构建 [REST API](https://opensource.com/article/21/9/ansible-rest-apis)。

#### 8：通过进程模型进行扩展

该原则也称为并发原则，它表明应用程序中的每个进程都应能够自我扩展、重启或克隆。

开发人员可以创建多个进程，并将应用程序的负载分配给这些进程，而不是将一个进程变大。通过这种方法，你可以将每种工作负载分配给一个进程类型，从而构建能处理不同工作负载的应用程序。

#### 9：快速启动和优雅终止以增强健壮性

你的应用应当基于简单的进程构建，因此开发者可以放大进程的同时还能在发生问题时重启它们。这使得应用的进程易于丢弃。

根据这一原则构建应用程序意味着代码的快速部署、快速弹性扩展、更灵活的发布流程以及稳健的生产部署。所有这些在开源开发环境中都非常有用。

#### 10：尽可能的保持开发、预发布、生产环境相同

同一项目的团队应使用相同的操作系统、支持服务和依赖关系。这样可以降低出现错误的可能性，减少开发所需的时间。

由于开源项目的开发人员分散在各地，他们可能无法就所使用的系统、服务和依赖关系进行 [沟通](https://opensource.com/article/21/10/global-communication-open-source) ，因此将这一原则付诸实践对于开源项目来说可能是一个挑战。减少这些差异的一种可能性是制定开发指南，建议使用何种操作系统、服务和依赖关系。

#### 11：把日志当作事件流

日志对于排除生产问题或了解用户行为至关重要。但是，12-Factor 应用方法论并不适合处理日志的管理。

相反，应将日志条目作为事件流，写入标准输出，并将其发送到单独的服务进行分析和存档。机器人流程自动化（RPA）技术可作为处理和分析日志的第三方服务。执行环境将决定如何处理该数据流。这为反省应用程序的行为提供了更大的灵活性和能力。

#### 12：后台管理任务当作一次性进程运行

这一原则实际上与开发无关，而是与应用程序管理有关。管理进程应在与应用程序常规长期运行进程相同的环境中运行。在本地部署中，开发人员可以直接使用应用程序签出目录内的 Shell 命令来执行一次性管理进程。

### 结论

使用 12-Factor 应用方法论开发应用程序，可以提高效率，加快发布速度。在开源开发中，偏离某些指导原则可能是有意义的，但最好还是尽可能严格遵守这些指导原则。

开源的 12-Factor 应用是可能的。一个很好的例子是 [Jitsi](https://jitsi.org/)[, （一个开源视频会议平台）](http://jitsi.org), 在疫情期间扩展了 100 倍的规模，取得了巨大成功，它就是采用 12-Factor 应用方法论构建的。

*（题图：MJ/4bc8b463-49d0-4702-8ad3-6a07a718d5d9）*

---

via: <https://opensource.com/article/21/11/open-source-12-factor-app-methodology>

作者：[Richard Conn](https://opensource.com/users/richardaconn-0) 选题：[lujun9972](https://github.com/lujun9972) 译者：[trisbestever](https://github.com/trisbestever) 校对：[wxy](https://github.com/wxy)

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


OBS Studio 30.0 发布，增加 AV1 支持

Summary: OBS Studio 30.0 对于 Linux 用户来说是一个重要的版本。

什么时候能使用 AVS3？

![](/data/attachment/album/202311/16/151643x7ppos30qo79oj31.jpg)

>
> OBS Studio 30.0 对于 Linux 用户来说是一个重要的版本。
>
>
>

OBS Studio 无疑是 [Linux 上最佳的录屏软件](https://itsfoss.com/best-linux-screen-recorders/) 之一，它深受众多内容创作者的喜爱，他们使用它进行视频录制和流媒体直播。

近日的公告发布了一个**全新的主要版本** —— **OBS Studio 30**，距离今年一月份的 [上一次主要版本](https://news.itsfoss.com/obs-studio-29-release/) 已经近 11 个月。

接下来就让我来一一为你介绍。

### ? OBS Studio 30：新特性有哪些？

![](/data/attachment/album/202311/16/151732qg77r72220ethtz6.png)

作为一个主要版本，OBS Studio 30 带来了一系列引人期待的改进，但是，也有一项变化可能**令部分用户感到不满**。

这个版本的一些**重要亮点**包括：

* 停止对 Ubuntu 20.04 的支持
* 用户界面/体验的提升
* 视频编码能力的提升

#### 停止对 Ubuntu 20.04 的支持

随着 OBS Studio 30 的发布，对 Ubuntu 20.04 的支持不复存在。

做出这个决定的主要原因在于，开发者发现维护 Qt 5 越来越困难，这也相应影响了他们在改进 OBS 用户界面/用户体验方面的工作。

实际上，**Ubuntu 20.04 是唯一一个使用 Qt 5 运行 OBS 的第一方发行版**，开发者表示，相比其他版本，这个发行版的**用户基数已经在逐渐减少**。

这**并非一夜之间的改变**，早在六月份，OBS Studio 就在其 GitHub 仓库中公布了这项改动。

目前，**Ubuntu 20.04 的用户**有两个选择，他们可以选择 [升级到 Ubuntu 22.04](https://itsfoss.com/upgrade-ubuntu-version/) 或更高版本，或者转用 OBS Studio 的 [Flatpak 版本](https://flathub.org/apps/com.obsproject.Studio)。

开发人员还**提到了他们可能会在 2025 年 4 月左右停止对 Qt 6.2 和 Ubuntu 22.04 的支持**。但是，你目前无需对此感到担忧。你可以阅读 [官方公告](https://github.com/obsproject/obs-studio/discussions/9055) 了解详细的计划。

#### 用户界面/体验的提升

![](/data/attachment/album/202311/16/151732mxxzxe9kximgj4en.png)

“<ruby> 停靠区 <rt>  Docks </rt></ruby>”菜单中新增了一项“<ruby> 全高窗口 <rt>  Full-Height docks </rt></ruby>”选项，这将方便集成 Twitch 和 YouTube 上直播时所见的长聊天窗口。

同时，**状态栏也进行了重新设计**，以更结构化、有条理的形式展示同样的信息，我个人非常喜欢这种改变。

**老状态栏有些棘手**，在我直播或录制期间，我经常会忘记它的存在 ?

![](/data/attachment/album/202311/16/151733ntp0tgvweci1vc8y.png)

在 OBS Studio 30 中也新增了一个“<ruby> 安全模式 <rt>  Safe Mode </rt></ruby>”，这种模式下，应用程序将在不加载任何第三方插件、脚本或 web sockets 的情况下启动，以便**对故障进行排除**。

你可以通过两种方式访问到这个模式，一是当 OBS Studio 断电意外关闭，另一种是在下图所示的“<ruby> 帮助 <rt>  Help </rt></ruby>”菜单中手动启动。

![](/data/attachment/album/202311/16/151733rn6qp52t25c8akcc.png)

#### 视频编码能力的提升

OBS Studio 30 新增了对**三种主要视频编码技术**的支持，分别是 [Intel QSV](https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video) H264，高效视频编码（[HEVC](https://en.wikipedia.org/wiki/High_Efficiency_Video_Coding)），以及 [AV1](https://en.wikipedia.org/wiki/AV1)。

许多使用 Linux 的内容创作者会赞赏 OBS 做出的这些改进。

#### ? 更多的改变和改进

除上述提及的点外，还有一些其他值得注意的改动：

* 引入了**WHIP/WebRTC 输出**。
* 可通过拖拽**调整过滤器顺序**。
* 提供**YouTube Live 控制室面板**的支持。
* 修复了在记录高帧率视频设备时**出现日志问题**的错误。
* 为 [Decklink](https://www.blackmagicdesign.com/in/products/decklink) 增加了**10 位捕获和 HDR 回放**的支持。

要获得更多关于 OBS Studio 30 的详细信息，你可以查看 [官方发布备注](https://github.com/obsproject/obs-studio/releases/tag/30.0.0)。

### ? 下载 OBS Studio 30

你可以前往 [官方网站](https://obsproject.com/) 下载 OBS Studio 的最新版本，其支持**Linux**，**Windows** 以及 **macOS** 平台。

>
> **[OBS Studio](https://obsproject.com/)**
>
>
>

? 你是否打算试运行一下 OBS Studio 30 然后告诉我们你的体验呢？

---

via: <https://news.itsfoss.com/obs-studio-30/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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


Blender 4.0 版本发布，引领了渲染升级的新趋势

Summary: Blender 4.0 的发布使其成为图形设计从业者和艺术家们极度期待的工具。

Blender 4.0 的发布使其成为图形设计从业者和艺术家们极度期待的工具。

![](/data/attachment/album/202311/16/155543ys6vz9tu2uzqw97v.jpg)

>
> Blender 4.0 的发布使其成为图形设计从业者和艺术家们极度期待的工具。
>
>
>

Blender 是**一款极受欢迎的开源 3D 计算机图形软件套件**，它广泛应用于动画电影制作、动态图形、视觉特效等多个领域。

最近，Blender 基金会公布了**Blender 4.0 的发布**，这一版本“为渲染、创建工具以及更多内容打开了新的可能性，让你的创造自由提升到新的水平。”

接下来，让我们一起探索一下此版本带来的新视野。

### ? Blender 4.0：有哪些新特性？

![](/data/attachment/album/202311/16/155913fve3vk3nek1itkz8.png)

作为一个重要的版本更新，Blender 4.0 提供了丰富的新功能。然而，我们只针对一些核心的亮点进行介绍：

* 用户界面改进
* 光线与阴影链接
* 改良的 Principled BSDF
* 更优化的人物绑定

在我们详述一些细节之际，下面是一则官方视频，总结了主要的变更事项：

#### 用户界面改进

![](/data/attachment/album/202311/16/155913twi4qqfqz1ct3t4q.png)

在 Blender 中，最重要且直接面向用户的部分无疑就是它的界面。界面的字体已经改变为 [Inter](https://rsms.me/inter/)，**此举旨在改进应用内的文字可读性**，使它不受显示器大小影响。

此外，用户还可以通过在常规下拉菜单或者右键菜单上按空格键，使用**新增的搜索功能**。同时，一份调整过的启动画面，使得用户在旧版 Blender 中**迁移保存的设置**变得更为简单。

![](/data/attachment/album/202311/16/155914maifz8h7xz6fkh5x.png)

我们在文件菜单中添加了一项新的 “<ruby> 增量保存 <rt>  Save Incremental </rt></ruby>”选项。这个选项可以保存当前的 `.blender` 文件，并给文件名添加一个递增的数字。

#### 光线与阴影链接

![](/data/attachment/album/202311/16/155914yph5l73j51apijl3.png)

它被开发团队称为最受期待的功能，Blender 4.0 新增了光线与阴影链接功能。这些功能使设计师可以**设置灯光以影响场景中特定的物体**，甚至可**控制哪些物体可以挡住光源**，充当阴影的遮挡体。

关于这些功能的更多详情，可以参考 [官方文档](https://docs.blender.org/manual/en/4.0/render/cycles/object_settings/light_linking.html)。

#### 改良的 Principled BSDF

![](/data/attachment/album/202311/16/155914ibv4b7167azhuh7d.png)

Blender 的 [Principled BSDF](https://docs.blender.org/manual/en/4.0/render/shader_nodes/shader/principled.html) 系统在本次更新中进行了大规模的改良，现在此系统提供了**支持更广泛的材料类型，并且工作更加高效**。

改良亮点包括：

* <ruby> 涂层 <rt>  Coat </rt></ruby>，这个特性可以模拟例如手机显示屏后的玻璃表面等效果，它被放置在所有的基层之上。
* <ruby> 光泽感 <rt>  Sheen </rt></ruby>，现在它使用新的微纤维渲染模型，成为排列在发射和涂层之上的最高层，从而控制表面反光。
* 实现了多散射 GGX 策略，以在 Cycles 渲染器中提高渲染效率，使得**渲染过程中消耗的电力更少**。
* **金属表面的边缘着色**，这项新特性提供了一种装饰金属表面的艺术友好方式。它可以渲染基于 F82 着色模型的复杂折射系数。

以下的插图更好地展示了 Principled BSDF 的改善状况：

![](/data/attachment/album/202311/16/155914dmu3rolqrr5cti3p.png)

#### 绑定优化

![](/data/attachment/album/202311/16/155914lnbz35kgb8zgt7nb.png)

Blender 4.0 的特性之一就是为 [Armature](https://docs.blender.org/manual/en/latest/animation/armatures/introduction.html) 骨骼添加了 <ruby> 骨骼集合 <rt>  Bone Collections </rt></ruby>。此设定继承了现有对象物体的实现方式。

它**替代了传统的编号层和骨骼组特性**，以吸取组合选择操作符来按骨骼颜色/集合来选择分组，设定 Armature 骨骼的颜色等等。

同时，**姿势库也得到了更新**，新引入的资产架使得姿势资产在 3D 视口中可见。

#### ? 更多改进和优化

一些其他值得注意的变化还包括：

* **停止支持英特尔 HD4000 系列的 GPU**。
* 实施了新的 [blendfile 兼容性政策](https://wiki.blender.org/wiki/Process/Compatibility_Handling)。
* **吸附功能得到改善**，变得更快，定位更精准。
* 对于 Linux 和 Windows 用户，现在 **OpenGL 的最小版本要求** 是 4.3。
* **Filmic 已被 AgX 视图转换所替代**，以更好地处理过度曝光区域的颜色。

你还可以参考 [官方发布说明](https://wiki.blender.org/wiki/Reference/Release_Notes/4.0) 来获取更多的更新详情。

### ? 下载 Blender 4.0

你可以从 [官方网站](https://www.blender.org/download/) 下载 Blender 的最新 tar 包，支持 **Linux**、 **Windows**， 和 **macOS**等平台。

当然如果你有特殊需求，你也可以在 [Snap 商店](https://snapcraft.io/blender) 或是 [Steam](https://store.steampowered.com/app/365670/Blender/) 中下载。

>
> **[Blender](https://www.blender.org/download/)**
>
>
>

? 准备好使用 Blender 4.0 开启你的创造之旅了吗？还是你有其他的首选项？欢迎在评论区分享你的想法！

---

via: <https://news.itsfoss.com/blender-4-0-release/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[ChatGPT](https://linux.cn/lctt/ChatGPT) 校对：[wxy](https://github.com/wxy)

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