硬核观察 #467 容器化软件包不是 Linux 应用的未来

Summary: 更多：• Alpine Linux 砍掉 MIPS64 支持 • 英国出台法律禁止智能设备提供容易猜测的默认密码

Linux最可恨就是包依赖，一个包依赖一个包，安装一个软件，要下载60多个包，软件10M，包有40M，有些旧包被移除让软件根本不能安装。容器占体积固然让人讨厌，可Linux的包依赖解决了吗？

来自120.230.61.70的 Chrome Mobile 80.0|Android 10 用户

你愿意启动一个计算器每次需要等待 7 秒钟，那你就用容器呗。

没有依赖这个包照样40+10多M，而且你下另一个照样会再下40M的依赖。

deb系,包依赖比较容易解决,基本上apt就可以

rpm系,包依赖比较麻烦点,

容器包体积大勉强也就算了,关键是启动速度,运行速度都慢,当然不追求速度,那就无所谓,

容器包感觉是适合特定软件,或者某些非开源软件,不适合大面积使用

![](/data/attachment/album/202111/26/190350dqxyvvvi8vg84xgn.jpg)

### 容器化软件包不是 Linux 应用的未来

![](/data/attachment/album/202111/26/190358gexxhzhqxxfh9qxq.jpg)

应用开发者正在 [逐渐转向容器化软件包](https://ludocode.com/blog/flatpak-is-not-the-future)，如 [Flatpak](https://www.flatpak.org/)、[Snap](https://snapcraft.io/)、[AppImage](https://appimage.org/)、[Docker](https://www.docker.com/) 和 [Steam](https://store.steampowered.com/)，这种打包格式运用容器技术将所需要的运行时库直接封装在应用内。但这导致占用非常多的磁盘空间和内存，启动时间也更慢。比如计算器应用 KCalc 的 AppImage 软件包高达 152 MB，Flatpak 软件包则需要下载 900 MB，而事实上 KCalc 应用本身只有 4.4 MB，其余都是系统上已安装了的冗余库。启动一个计算器应用你每次需要等待 7 秒钟。

>
> 老王点评：将所有依赖打包到一起，在特定用例下是必要的，但是如果推而广之，共享库的优良实践就荡然无存了。
>
>
>

### Alpine Linux 砍掉 MIPS64 支持

![](/data/attachment/album/202111/26/190415z7x5c5ulel6z75m7.jpg)

在 Docker 基础镜像中广泛使用的 Alpine Linux 发布了 3.15 版本，支持最新的 5.15 LTS Linux 内核，但在此版本中放弃了对 MIPS64 架构的支持。[发布公告](https://alpinelinux.org/posts/Alpine-3.15.0-released.html) 中说，“这个架构已经失效了，MIPS64 构建器已经消失了。我们没有办法再构建任何软件包，我们也不能再修复任何安全问题，所以让 MIPS64 正式退役是很谨慎的决定。”MIPS64 属于 RISC 架构，它的设计者 MIPS 公司几经周折。随后，它作为同属于 RISC 架构的 RISC-V 的一种开源替代方案来推广，但最终在今年早些时候被放弃，转而支持基于 RISC-V 本身的架构。

>
> 老王点评：随着 MIPS 被放弃，它所构建起来的生态也逐一崩塌。
>
>
>

### 英国出台法律禁止智能设备提供容易猜测的默认密码

![](/data/attachment/album/202111/26/190436b9afyrs91bi2ao15.jpg)

英国政府在《产品安全和电信基础设施法案》中 [增加了新的规定](https://www.bbc.com/news/technology-59400762)，禁止在智能设备上预装容易猜测的默认密码。所有的产品现在都需要独特的密码。对于违反此规定的厂商，它将有权对公司处以最高 1000 万英镑或其全球营业额 4% 的罚款，以及对持续违规行为每天处以最高 2 万英镑的罚款。其范围包括一系列设备，从智能手机、路由器、安全摄像机、游戏机、家庭扬声器和联网的白色家电和玩具。但不包括车辆、智能仪表和医疗设备。台式电脑和笔记本电脑也不在其管辖范围内。

>
> 老王点评：确实，有相当多的设备出于省心都采用的默认密码，这给被僵尸网络和入侵带来很大便利。
>
>
>


没有终点的操作系统 Endless OS 发布 4.0 LTS

网盘告诉我们，没有永久免费的东西。另外说明一下Rythmbox在树莓派下无法正常运行。

>
> Endless OS 4.0 是一个长期支持版本，带有大量必要的改进，默认的应用程序以 Flatpak 包的形式提供。
>
>
>

![](/data/attachment/album/202111/27/092257ly9y9pg2u94pr8g8.jpg)

Endless OS 是一个基于 Debian 的 Linux 发行版，重点捆绑提供几个重要的应用程序和资源，以帮助充分利用你的计算机，而不需要互联网连接。（LCTT 译注：因此，在互联网的“终点”之外也可使用。）

它主要是为教育和不能经常访问互联网的用户定制的。而如果你连接到互联网，也有一些工具可以帮助你浏览网页并与朋友/家人保持联系。

他们最新发布的 Endless OS 4.0 是一个长期支持的版本，带有一些改进。让我们简单了解一下。

### Endless OS 4.0 的新内容

澄清一下，这是一个 LTS 版本，将被维护若干年（具体不清楚），即使是在 Endless OS 5.0 版本发布之后，它也会得到更新。

除了 LTS 的好处之外，其他变化还包括：

#### 改进的应用程序网格导航

![来源：Endlessos.org](/data/attachment/album/202111/27/092259xyyxkqzwy3zcv7yg.png)

在以前的版本中，列出的应用程序散落在多个页面之间。由于这个原因，用户可能不会注意到它们。

因此，在 Endless OS 4.0 中，增加了额外的箭头和图标，以突出多页面和应用程序网格的存在。你应该看到，如果你在桌面上切换页面，可以探索到更多的应用程序。

#### 快速切换用户

在一个用户已经登录时，你现在有两种不同的方式来快速切换到另一个用户。

![来源：Endlessos.org](/data/attachment/album/202111/27/092300s5g55bv2v7n7d7vh.png)

传统上，你可以在用户菜单中找到它（和注销选项一起）。或者，你也可以使用新的多用户图标从锁屏上直接切换。

![来源：Endlessos.org](/data/attachment/album/202111/27/092301xfjjgffjhgxkfhrp.png)

#### 新的默认墙纸

每当有重大的版本升级时，新的墙纸总是让人耳目一新。

如果你想在任何其他系统中尝试它们，你可以在 [Unsplash](https://unsplash.com/photos/WeYamle9fDM) 上找到列出的这些壁纸。

#### 免驱动打印

你不再需要依靠讨厌的打印机驱动程序来检测连接的打印设备。有了 Endless OS 4.0，任何在本地网络中支持 [互联网打印协议](https://en.wikipedia.org/wiki/Internet_Printing_Protocol)（IPP）的设备都可以自动检测并连接。

当你升级时，会删除任何已配置的打印机。然而，如果需要的话，你可以手动将它们添加回来。

### 其他改进措施

除了基本的变化之外，你还会发现更新的图形驱动、升级的 Linux 内核等等。其中一些包括：

* [Linux 内核 5.11](https://news.itsfoss.com/linux-kernel-5-11-release/)
* NVIDIA 驱动程序 460.91.03
* 支持 8GB 版树莓派 4B
* 一些默认的应用程序，如 Rythmbox，以 Flatpak 软件包的方式安装

你还会注意到，作为升级的一部分，移除了一些功能。关于全部细节，你可以参考 [官方发布说明](https://support.endlessos.org/en/endless-os/release-notes/4-0)。

---

via: <https://news.itsfoss.com/endless-os-4-0-lts/>

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

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


如何在 Fedora Linux 上安装 Discord

Summary: Discord 是一个流行的消息收发应用，可用于文字和语音信息传递。

Discord 是一个流行的消息收发应用，可用于文字和语音信息传递。

![](/data/attachment/album/202111/27/115501g3oiuirvzk4nvu3k.jpg)

[Discord](https://discord.com/) 是一个流行的消息收发应用，可用于文字和语音信息传递。

它是一些社区的福音，可以帮助他们扩大项目，接触更多的人，并维持一个粉丝和关注者的社区。而 Discord 最初是为游戏玩家设计的，这很令人惊讶。

Discord 可用于各种平台，包括 Linux。在本教程中，我将引导你完成在 Fedora 中安装 Discord 的步骤。

* 使用 DNF 和 RPM Fusion 仓库安装 Discord
* 通过 Flatpak 安装Discord

Flatpak 软件包是沙盒的，因此需要更多的磁盘空间和时间来启动。然而，他们会相当快地更新到新的版本。

无论你想使用 Flatpak 还是 DNF，选择权在你手上。我将向你展示这两种方法。

>
> 非 FOSS 警报！
>
>
> Discord 并不是开源的。但由于他们提供了一个 Linux 客户端，而且许多 Linux 用户都依赖它，所以我们会在这里介绍它。
>
>
>

### 方法 1：通过 RPM Fusion 仓库安装 Discord

Discord 可以通过添加非自由的 RPM Fusion 仓库来安装，这是大多数 Fedora 用户的首选方法，因为更新很容易，而且应用的启动速度比 Flatpak 版本快。

打开终端，使用下面的命令来添加 RPM-fusion 非自由仓库：

```
sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

```

完成后，更新仓库列表（应该不需要，但只是为了它）：

```
sudo dnf update

```

然后通过 `dnf` 命令安装 Discord，像这样：

```
sudo dnf install discord

```

![Installing Discord using DNF](/data/attachment/album/202111/27/115509j7lklake7bavrlwh.png)

如果被要求导入 GPG 密钥，只要按 `Y` 就可以授权了。

![Authorize GPG key](/data/attachment/album/202111/27/115509jaj23hvw2vwkhnal.png)

这就完成了！现在你可以从应用菜单中启动 Discord。你的登录页面将看起来像这样：

![Launch Discord application](/data/attachment/album/202111/27/115510g5pux8putqvsplww.png)

#### 通过 DNF 删除 Discord

如果你不想再使用 Discord，你可以从你的系统中删除它。要做到这一点，在终端运行以下命令：

```
sudo dnf remove discord

```

这真的很简单，不是吗？还有一种简单的安装 Discord 的方法，那就是使用 Flatpak 软件包。

### 方法 2：通过 Flatpak 安装 Discord

Discord 可以使用 Flatpak 轻松安装，因为它在 Fedora 中是默认可用的。

首先，你需要在 Fedora 中启用 Flatpak 仓库：

```
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

```

接下来，通过这个命令安装 Discord：

```
flatpak install discord

```

![Install Discord via Flatpak](/data/attachment/album/202111/27/115510i00o2c35zcqh2hea.png)

如果你想删除 Discord，那么只需运行：

```
flatpak remove discord

```

这就超级简单了。如果你在 Fedora Linux 上安装 Discord 需要任何帮助，请告诉我。

---

via: <https://itsfoss.com/install-discord-fedora/>

作者：[Pranav Krishna](https://itsfoss.com/author/pranav/) 选题：[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/) 荣誉推出


硬核观察 #468 微软 Edge 最新内置购物功能激怒用户

Summary: 更多：• 86% 被攻击的谷歌云实例用于挖掘加密货币 • 为在 Chrome 中禁止第三方 Cookie，谷歌向监管部门妥协

技术的尽头就是变现

![](/data/attachment/album/202111/27/132138oqenrx49dnb1ezbr.jpg)

### 微软 Edge 最新内置购物功能激怒用户

![](/data/attachment/album/202111/27/132150zhqcial2h5flplhl.jpg)

微软 Edge 的测试版本最近增加了一项功能，在浏览器内内置了购物功能，还允许人们分期支付网上购物的费用。这引起了浏览器的 [粉丝和用户的批评](https://www.windowscentral.com/microsoft-edges-latest-feature-called-shameless-cash-grab-critics)，他们认为微软 Edge 已经成为一个非常好的替代品，但正在变得臃肿，充满了购物功能，而不是提供一个纯粹的浏览体验。

>
> 老王点评：当 Edge 开始成功时，谁都想从其中挣到更多的钱，结果就被搞坏了。
>
>
>

### 86% 被攻击的谷歌云实例用于挖掘加密货币

![](/data/attachment/album/202111/27/132209zz5id7d1wbp77es1.jpg)

谷歌最新发布的 [报告显示](https://services.google.com/fh/files/misc/gcat_threathorizons_full_nov2021.pdf)，这些被攻击利用的实例中，48% 的用户账户密码是薄弱或没有密码，或没有 API 认证，26% 是由于云实例中第三方软件的漏洞而发生的，只有 4% 是由于泄漏的凭证，如发布到 GitHub 的密钥。而且，在 58% 的情况下攻击是由脚本进行的，不需要人工干预，不安全的实例可以在短短 30 分钟内被扫描到成为攻击目标。

>
> 老王点评：如果你没有谨慎处置你的安全，就是为攻击者买单了。
>
>
>

### 为在 Chrome 中禁止第三方 Cookie，谷歌向监管部门妥协

![](/data/attachment/album/202111/27/132233duqzquyobjpph3rk.jpg)

谷歌去年年初宣布，未来两年内将逐步淘汰 Chrome 浏览器对第三方 Cookie 的支持，然后计划推广其“隐私沙箱”技术。但这招致了广告发布商和广告技术公司的激励反对，称谷歌的“隐私沙箱”将限制他们收集网络用户信息的能力，从而影响他们提供更具价值广告的能力，而谷歌则可以利用该优势强化其竞争地位。英国反垄断部门认为谷歌保护用户隐私的努力，不能以减少竞争为代价。谷歌近日再次向英国反垄断部门 [做出承诺](https://www.gov.uk/government/news/cma-secures-improved-commitments-on-google-s-privacy-sandbox)，以解决一些剩余的担忧，并澄清其可以使用的数据的内部限制。谷歌表示，将确保“隐私沙箱”的开发方式适用于整个生态系统。如果这些承诺被接受，也将适用于全球其他地区。

>
> 老王点评：大家都在争抢用户的隐私，然而作为隐私的主人却对此没有发言权。
>
>
>


C++ 控制台格式化打印技巧

Summary: 下次当你为控制台输出的格式而苦恼时，请参考这篇文章及其速查表。

下次当你为控制台输出的格式而苦恼时，请参考这篇文章及其速查表。

>
> 下次当你为控制台输出的格式而苦恼时，请参考这篇文章及其速查表。
>
>
>

![](/data/attachment/album/202111/28/100548utbax4o4ttwcgyjz.jpg)

我写文章主要是为了给自己写文档。我在编程时非常健忘，所以我经常会写下有用的代码片段、特殊的特性，以及我使用的编程语言中的常见错误。这篇文章完全切合我最初的想法，因为它涵盖了从 C++ 控制台格式化打印时的常见用例。

像往常一样，这篇文章带有大量的例子。除非另有说明，代码片段中显示的所有类型和类都是 `std` 命名空间的一部分。所以当你阅读这段代码时，你必须在类型和类的前面加上`using namespace std;`。当然，该示例代码也可以在 [GitHub](https://github.com/hANSIc99/cpp_output_formatting) 上找到。

### 面向对象的流

如果你曾经用过 C++ 编程，你肯定使用过 [cout](https://en.cppreference.com/w/cpp/io/cout)。当你包含 `<iostream>` 时，[ostream](https://en.cppreference.com/w/cpp/io/basic_ostream) 类型的 `cout` 对象就进入了作用域。这篇文章的重点是 `cout`，它可以让你打印到控制台，但这里描述的一般格式化对所有 [ostream](https://en.cppreference.com/w/cpp/io/basic_ostream) 类型的流对象都有效。`ostream` 对象是 `basic_ostream` 的一个实例，其模板参数为 `char` 类型。头文件 `<iosfwd>` 是 `<iostream>` 的包含层次结构的一部分，包含了常见类型的前向声明。

类 `basic_ostream` 继承于 `basic_ios`，该类型又继承于 `ios_base`。在 [cppreference.com](https://en.cppreference.com/w/cpp/io) 上你可以找到一个显示不同类之间关系的类图。

`ios_base` 类是所有 I/O 流类的基类。`basic_ios` 类是一个模板类，它对常见的字符类型进行了<ruby> 模板特化 <rt>  specialization </rt></ruby>，称为 `ios`。因此，当你在标准 I/O 的上下文中读到 `ios` 时，它是 `basic_ios` 的 `char` 类型的模板特化。

### 格式化流

一般来说，基于 `ostream` 的流有三种格式化的方法。

1. 使用 `ios_base` 提供的格式标志。
2. 在头文件 `<iomanip>` 和 `<ios>` 中定义的流修改函数。
3. 通过调用 `<<` 操作符的 [特定重载](https://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt)。

所有这些方法都有其优点和缺点，通常取决于使用哪种方法的情况。下面显示的例子混合使用所有这些方法。

#### 右对齐

默认情况下，`cout` 占用的空间与要打印的数据所需的空间一样大。为了使这种右对齐的输出生效，你必须定义一个行允许占用的最大宽度。我使用格式标志来达到这个目的。

右对齐输出的标志和宽度调整只适用于其后的行。

```
cout.setf(ios::right, ios::adjustfield);
cout.width(50);
cout << "This text is right justified" << endl;
cout << "This text is left justified again" << endl;

```

在上面的代码中，我使用 `setf` 配置了右对齐的输出。我建议你将位掩码 `ios::adjustfield` 应用于 `setf`，这将使位掩码指定的所有标志在实际的 `ios::right` 标志被设置之前被重置，以防止发生组合碰撞。

#### 填充空白

当使用右对齐输出时，默认情况下，空的地方会用空白字符填充。你可以通过使用 `setfill` 指定填充字符来改变它：

```
cout << right << setfill('.') << setw(30) << 500 << " pcs" << endl;
cout << right << setfill('.') << setw(30) << 3000 << " pcs" << endl;
cout << right << setfill('.') << setw(30) << 24500 << " pcs" << endl;

```

代码输出如下：

```
...........................500 pcs
..........................3000 pcs
.........................24500 pcs

```

#### 组合

想象一下，你的 C++ 程序记录了你的储藏室库存。不时地，你想打印一份当前库存的清单。要做到这一点，你可以使用以下格式。

下面的代码是左对齐和右对齐输出的组合，使用点作为填充字符，可以得到一个漂亮的列表：

```
cout << left << setfill('.') << setw(20) << "Flour" << right << setfill('.') << setw(20) << 0.7 << " kg" << endl;
cout << left << setfill('.') << setw(20) << "Honey" << right << setfill('.') << setw(20) << 2 << " Glasses" << endl;
cout << left << setfill('.') << setw(20) << "Noodles" << right << setfill('.') << setw(20) << 800 << " g" << endl;
cout << left << setfill('.') << setw(20) << "Beer" << right << setfill('.') << setw(20) << 20 << " Bottles" << endl;

```

输出：

```
Flour...............................0.70 kg
Honey..................................2 Glasses
Noodles..............................800 g
Beer..................................20 Bottles

```

### 打印数值

当然，基于流的输出也能让你输出各种变量类型。

#### 布尔型

`boolalpha` 开关可以让你把布尔型的二进制解释转换为字符串：

```
cout << "Boolean output without using boolalpha: " << true << " / " << false << endl;
cout << "Boolean output using boolalpha: " << boolalpha << true << " / " << false << endl;
```

以上几行产生的输出结果如下：

```
Boolean output without using boolalpha: 1 / 0
Boolean output using boolalpha: true / false

```

#### 地址

如果一个整数的值应该被看作是一个地址，那么只需要把它投到 `void*` 就可以了，以便调用正确的重载。下面是一个例子：

```
unsigned long someAddress = 0x0000ABCD;
cout << "Treat as unsigned long: " << someAddress << endl;
cout << "Treat as address: " << (void*)someAddress << endl;
```

该代码产生了以下输出：

```
Treat as unsigned long: 43981
Treat as address: 0000ABCD

```

该代码打印出了具有正确长度的地址。一个 32 位的可执行文件产生了上述输出。

#### 整数

打印整数是很简单的。为了演示，我使用 `setf` 和 `setiosflags` 来指定数字的基数。应用流修改器 `hex`/`oct` 也有同样的效果。

```
int myInt = 123;

cout << "Decimal: " << myInt << endl;

cout.setf(ios::hex, ios::basefield);
cout << "Hexadecimal: " << myInt << endl;

cout << "Octal: " << resetiosflags(ios::basefield) <<  setiosflags(ios::oct) << myInt << endl;

```

**注意：** 默认情况下，没有指示所使用的基数，但你可以使用 `showbase` 添加一个。

```
Decimal: 123
Hexadecimal: 7b
Octal: 173

```

#### 用零填充

```
0000003
0000035
0000357
0003579

```

你可以通过指定宽度和填充字符得到类似上述的输出：

```
cout << setfill('0') << setw(7) << 3 << endl;
cout << setfill('0') << setw(7) << 35 << endl;
cout << setfill('0') << setw(7) << 357 << endl;
cout << setfill('0') << setw(7) << 3579 << endl;

```

#### 浮点值

如果我想打印浮点数值，我可以选择“固定”和“科学”格式。此外，我还可以指定精度：

```
double myFloat = 1234.123456789012345;
int defaultPrecision = cout.precision(); // == 2

cout << "Default precision: " << myFloat << endl;
cout.precision(4);
cout << "Modified precision: " << myFloat << endl;
cout.setf(ios::scientific, ios::floatfield);
cout << "Modified precision & scientific format: " << myFloat << endl;
/* back to default */
cout.precision(defaultPrecision);
cout.setf(ios::fixed, ios::floatfield);
cout << "Default precision & fixed format:  " << myFloat << endl;

```

上面的代码产生以下输出：

```
Default precision: 1234.12
Modified precision: 1234.1235
Modified precision & scientific format: 1.2341e+03
Default precision & fixed format:  1234.12

```

#### 时间和金钱

通过 `put_money`，你可以用正确的、与当地有关的格式来打印货币单位。这需要你的控制台能够输出 UTF-8 字符集。请注意，变量 `specialOffering` 以美分为单位存储货币价值。

```
long double specialOffering = 9995;

cout.imbue(locale("en_US.UTF-8"));
cout << showbase << put_money(specialOffering) << endl;
cout.imbue(locale("de_DE.UTF-8"));
cout << showbase << put_money(specialOffering) << endl;
cout.imbue(locale("ru_RU.UTF-8"));
cout  << showbase << put_money(specialOffering) << endl;

```

`ios` 的 `imbue` 方法让你指定一个地区。通过命令 `locale -a`，你可以得到你系统中所有可用的地区标识符的列表。

```
$99.95
99,950€
99,950₽

```

（不知道出于什么原因，在我的系统上，它打印的欧元和卢布有三个小数位，对我来说看起来很奇怪，但这也许是官方的格式。）

同样的原则也适用于时间输出。函数 `put_time` 可以让你以相应的地区格式打印时间。此外，你可以指定时间对象的哪些部分被打印出来。

```
time_t now = time(nullptr);
tm localtm = *localtime(&now);

cout.imbue(locale("en_US.UTF-8"));
cout << "en_US : " << put_time(&localtm, "%c") << endl;
cout.imbue(locale("de_DE.UTF-8"));
cout << "de_DE : " << put_time(&localtm, "%c") << endl;
cout.imbue(locale("ru_RU.UTF-8"));
cout << "ru_RU : " << put_time(&localtm, "%c") << endl;

```

格式指定符 `%c` 会打印一个标准的日期和时间字符串：

```
en_US : Tue 02 Nov 2021 07:36:36 AM CET
de_DE : Di 02 Nov 2021 07:36:36 CET
ru_RU : Вт 02 ноя 2021 07:36:36

```

### 创建自定义的流修改器

你也可以创建你自己的流。下面的代码在应用于 `ostream` 对象时插入了一个预定义的字符串：

```
ostream& myManipulator(ostream& os) {
    string myStr = ">>>Here I am<<<";
    os << myStr;
    return os;
}

```

**另一个例子：** 如果你有重要的事情要说，就像互联网上的大多数人一样，你可以使用下面的代码在你的信息后面根据重要程度插入感叹号。重要程度被作为一个参数传递：

```
struct T_Importance {
     int levelOfSignificance;
};

T_Importance importance(int lvl){
    T_Importance x = {.levelOfSignificance = lvl };
    return x;
}

ostream& operator<<(ostream& __os, T_Importance t){

    for(int i = 0; i < t.levelOfSignificance; ++i){
        __os.put('!');
    }
    return __os;
}

```

这两个修饰符现在都可以简单地传递给 `cout`：

```
cout << "My custom manipulator: " << myManipulator << endl;

cout << "I have something important to say" << importance(5) << endl;

```

产生以下输出：

```
My custom manipulator: >>>Here I am<<<

I have something important to say!!!!!

```

### 结语

下次你再纠结于控制台输出格式时，我希望你记得这篇文章及其 [速查表](https://opensource.com/downloads/cout-cheat-sheet)。

在 C++ 应用程序中，`cout` 是 [printf](https://opensource.com/article/20/8/printf) 的新邻居。虽然使用 `printf` 仍然有效，但我可能总是喜欢使用 `cout`。特别是与定义在 `<ios>` 中的修改函数相结合，会产生漂亮的、可读的代码。

---

via: <https://opensource.com/article/21/11/c-stdcout-cheat-sheet>

作者：[Stephan Avenwedde](https://opensource.com/users/hansic99) 选题：[lujun9972](https://github.com/lujun9972) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

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


如何在 Fedora Linux 上安装 Brave 浏览器

![](/data/attachment/album/202111/28/102349idh316xz3bslr6ps.jpg)

[Brave](https://brave.com/) 是一个越来越 [流行于 Linux](https://itsfoss.com/best-browsers-ubuntu-linux/) 和其他操作系统的网页浏览器。对默认情况下阻止广告和跟踪的关注，以及对 Chrome 扩展的支持，使 Brave 成为 Linux 用户的热门选择。

在本教程中，你将学习如何在 Fedora Linux 上安装 Brave。你还将学习如何更新和删除它。

本教程已经在 Fedora 上进行了测试，但它也应该适用于基于 Red Hat 的其他发行版，如 CentOS、Alma Linux 和 Rocky Linux。

### 在 Fedora Linux 上安装 Brave 浏览器

你需要在这里用命令行的方式来安装 Brave。

作为先决条件，请确保 `dnf-plugin-core` 已经安装。

```
sudo dnf install dnf-plugins-core

```

下一步是将 Brave 仓库添加到你的系统中：

```
sudo dnf config-manager --add-repo https://brave-browser-rpm-release.s3.brave.com/x86_64/

```

你还应该导入并添加仓库密钥，这样你的系统就会信任来自这个新添加的仓库的软件包：

```
sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc

```

![Adding Brave Browser repository in Fedora Linux](/data/attachment/album/202111/28/102429eb6b4c4tv5q3ibqv.png)

现在可以开始了。用这个命令安装 Brave：

```
sudo dnf install brave-browser

```

**当被要求确认你的选择时按 `Y`**。根据你的网速，这应该需要几秒钟或几分钟的时间。如果 DNF 的缓存最近没有更新，甚至可能需要更长时间。

![Installing Brave Browser in Fedora](/data/attachment/album/202111/28/102430jbr4vx74x79j4329.png)

安装完成后，在系统菜单中寻找 Brave 并从那里启动。

![Start Brave browser in Fedora Linux](/data/attachment/album/202111/28/102430bd7wvbqikxpokbb1.png)

### 在 Fedora Linux 上更新 Brave 浏览器

你已经为浏览器添加了一个仓库，并且导入了它的密钥。你的系统信任来自这个仓库的软件包。

因此，当有新的 Brave 浏览器发布并提供给这个仓库时，你会通过常规的系统升级得到它。

换句话说，你不需要做任何特别的事情。只要保持你的 Fedora 系统更新，如果有 Brave 的新版本，它应该会随着系统更新自动安装。

### 从 Fedora Linux 中删除 Brave 浏览器

![Brave Browser in Fedora Linux](/data/attachment/album/202111/28/102430ajdp7a2dgixq20ja.png)

如果你因为某些原因不喜欢 Brave，你可以从你的系统中删除它。只需使用 `dnf remove` 命令：

```
sudo dnf remove brave-browser

```

当询问时按 `Y`：

![Removing Brave browser from Fedora Linux](/data/attachment/album/202111/28/102430n5343h98b6c9gye0.png)

你也可以选择禁用 `brave-browser-rpm-release.s3.brave.com_x86_64_.repo` 或者从 `/etc/yum/repos.d` 中完全删除这个文件，虽然这并不是必须的。

我希望这个快速提示对你有帮助。如果你有任何问题或建议，请让我知道。

---

via: <https://itsfoss.com/install-brave-browser-fedora/>

作者：[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/) 荣誉推出


硬核观察 #469 玩家组织成功让多年前关服的 PS3 游戏复活了

Summary: 更多：• 龙芯为 GCC 增加 LoongArch 支持 • GitHub 出现长达数小时的服务瘫痪

![](/data/attachment/album/202111/28/172935o7sbqdrsqim4zqgb.jpg)

### 玩家组织成功让多年前关服的 PS3 游戏复活了

![](/data/attachment/album/202111/28/172948mwiwctjb777kjbb7.jpg)

玩家组织 PSONE 研究出了一个办法，[复活](https://www.videogameschronicle.com/news/motorstorms-ps3-multiplayer-has-been-resurrected-by-a-fan-group/) 了越野竞速游戏《摩托风暴》的服务器，恢复了多人游戏功能。《摩托风暴》是一款 PS3 游戏，在 2007 年 3 月发售。10 年前，这款游戏的服务器下线，也就是说玩家不能使用这款游戏的多人游戏功能，而想要在游戏里收集奖杯的玩家必须在线才行。PS3 和 Xbox 360 是第一个大规模应用网络元素的世代，而近年来该世代多款游戏的服务器停止服务，也让一些怀旧的玩家扼腕不已。

>
> 老王点评：如果是开源的，那就不会有这种窘境。
>
>
>

### 龙芯为 GCC 增加 LoongArch 支持

![](/data/attachment/album/202111/28/173007r1keinjp17zddkr6.jpg)

几个月来，龙芯一直致力于为 Linux 内核提供 LoongArch 支持，从新的 CPU ISA 功能到 [复制大量](/article-13721-1.html) 现有的 MIPS64 代码并加入新的 ID，程度不一。同时，他们也一直在编译器/工具链方面工作。最近，LoongArch 对 GNU Binutils 的 [支持已经被合并](/article-13920-1.html) 了，而今天又发出一组补丁，用于提供 GCC 编译器支持。不过 GCC 12 目前的重点是修复错误，因此对 LoongArch 的支持可能要到 2023 年的 GCC 13 才会出现在主线上。

>
> 老王点评：虽然国外对 LoongArch 的褒贬不一，但是可喜的是龙芯在一直前进。
>
>
>

### GitHub 出现长达数小时的服务瘫痪

![](/data/attachment/album/202111/28/173020kbd9y2d2zuo3k5dk.jpg)

GitHub 在美东时间下午 3 点 45 分左右开始出现问题，Git 操作、API 请求、拉取请求和 GitHub 的行动、包和页面等功能都受到影响。开发人员报告了 500 错误，GitHub 说大多数服务是“性能下降”[状态](https://www.githubstatus.com/)，而不是不可用的瘫痪状态。GitHub 上有超过 1 亿个存储库，故障影响到了这些存储库的组织。去年，由于错误的设定导致该服务瘫痪并使其短暂下线了两个小时。

>
> 老王点评：当全世界的开源都主要依赖于 GitHub 进行时，这就成了关键故障点。
>
>
>


PHP 终于摆脱了危险的公共汽车系数 2

Summary: 今年早些时候，PHP 贡献者 Joe Watkins 认为，PHP 的公共汽车系数是一个惊人的数字，即 2！

![](/data/attachment/album/202111/29/001252kxgqy38q4h439qxe.jpg)

鉴于最近发生的事件，它也许没有 [维基百科上关于这个想法的文章](https://en.wikipedia.org/wiki/Bus_factor) 中所说的那么“黑色幽默”，但理论仍然是一样的 —— 你目前的团队中要有多少成员突然消失才能使你的组织或项目陷入停顿？这个数字被称为“<ruby> <a href="https://en.wikipedia.org/wiki/Bus_factor">  公共汽车系数 </a> <rp>  （ </rp> <rt>  bus factor </rt> <rp>  ） </rp></ruby>”，也就是说，有多少人被公共汽车撞到才会导致项目停止运作。今年早些时候，[PHP 贡献者 Joe Watkins](https://github.com/krakjoe) 认为，[PHP 的公共汽车系数是一个惊人的数字，即 2！](https://blog.krakjoe.ninja/2021/05/avoiding-busses.html)

Watkins 当时写道：“也许只要有两个人一觉醒来决定干点别的事情，PHP 项目就会缺乏足够的专业技术和资源，从而无法以目前的形式和速度向前发展，”他点名了 [Dmitry Stogov](https://twitter.com/dstogov?lang=en) 和 [Nikita Popov](https://twitter.com/nikita_ppv?lang=en)。

上周，幸好 Nikita Popov 没有被公共汽车撞到，但他确实决定不再担任 PHP 相关的职务，而是将他的活动集中在 [LLVM](https://llvm.org/) 上。

>
> PHP 太大了，不能失败，特别是由于 WordPress 继续依赖它。所以很高兴看到这个新的基金会形成。
>
>
> —— Richard MacManus (@ricmac) [2021 年 11 月 22 日](https://t.co/3wulgfM0eq)
>
>
>

同样值得庆幸的是，Watkins 在今年早些时候的文章让一些人看到了眼前的情况，正如他在本周的 [后续文章](https://blog.krakjoe.ninja/2021/11/2-1.html) 中写到的，JetBrains（Popov 的雇主）当时就启动 PHP 基金会的问题联系了他。

本周，随着 Popov 的离职，[PHP 基金会](https://opencollective.com/phpfoundation) [正式启动](https://blog.jetbrains.com/phpstorm/2021/11/the-php-foundation/)，目标是资助兼职/全职开发人员在 2022 年从事 [PHP 核心](https://github.com/php/php-src) 的开发工作。

在启动时，将会有 10 家公司（[Automattic](https://automattic.com/)、[Laravel](https://laravel.com/)、[Acquia](https://www.acquia.com/)、[Zend](https://www.zend.com/)、[Private Packagist](https://packagist.com/)、[Symfony](https://symfony.com/)、[Craft CMS](https://craftcms.com/)、[Tideways](https://tideways.com/)、[PrestaShop](https://www.prestashop.com/) 和 [JetBrains](https://www.jetbrains.com/)）作为其支持者加入 PHP 基金会 ，预计每年将筹集 30 万美元，JetBrains 每年出资 10 万美元。同时，该基金会是通过“<ruby> 基金会即服务 <rp>  （ </rp> <rt>  foundation-as-a-service </rt> <rp>  ） </rp></ruby>”供应商 [Open Collective](https://opencollective.com/) 发起的，只有不到 700 名捐款人就已经为该基金会筹集了 4 万多美元。

创建基金会而不是坚持现状的主要好处之一，不仅仅是增加了公共汽车系数 —— 基金会将使对 PHP 的影响多样化。Watkins 指出，在 PHP 的大部分历史中，Dmitry Stogov 的雇主 Zend 一直是主要的财务支持者，因此对该语言的发展方向有一定的影响。同样，JetBrains 在雇用 Popov 开发 PHP 的时候，也增加了影响力。

“说他们没有影响到整个语言的发展方向是不正确的。事实上，他们影响了。语言的许多部分和它的内部结构都是由 Zend 推动的，由他们的预算和专门的工程师促成的，”Watkins 写道。“同样，在 Nikita 为 JetBrains 工作的相对较短的时间内，他们也有某种影响，如果说他们没有，那就是说 Nikita 在受雇于 JetBrains 之前和期间的产出没有区别。”

虽然 Watkins 说，所有的事情都是光明正大的，并且经过了标准的程序来确保如此，但影响力还是不容置疑的，“基金会代表了一种推动语言发展的新方式。它为我们提供了提高公共汽车系数的机制，使我们永远不会再面临我们今天面临的问题，以及过去面临的问题。”

基金会以 [临时管理机构](https://blog.jetbrains.com/phpstorm/2021/11/the-php-foundation/#foundation_administration) 启动，成员包括 Popov、Stogov 和 Watkins。而且 JetBrains 写道，[php-src](https://github.com/php/php-src) 的任何贡献者都可以向基金会 [申请](https://forms.gle/mk52v6FphaYr6yMS8) 资助，申请期立即开始，持续 28 天。至于未来会发生什么，PHP 基金会将在前两年把工作重点放在雇用开发人员从事 PHP 核心工作上。至于目前的 RFC 流程，JetBrains 写道，“不会改变，语言的决定将始终留给 PHP 内部社区。”

>
> 我为 PHP 基金会做出了贡献，如果你能做到的话，一定会鼓励你也这样做。每一点都能让基金会更强大，并帮助我们的语言和社区！#phpc
>
>
> —— Matt Trask (@matthewtrask) [2021 年 11 月 22 日](https://t.co/rWyWC5Dz50)
>
>
>

---

via: <https://thenewstack.io/php-gets-a-foundation-to-work-on-php-core/>

作者：[Mike Melanson](https://thenewstack.io/author/mike-melanson/) 选题：[wxy](https://github.com/wxy) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](/article-14028-1.html) 荣誉推出


在 FreeDOS 上安装和移除软件包

Summary: 熟悉 FreeDOS 软件包管理器 FDIMPLES 。

取名的人是跟用户有仇是吧

>
> 熟悉 FreeDOS 软件包管理器 FDIMPLES 。
>
>
>

![](/data/attachment/album/202111/29/122823yhv0mg03v3mhr0cc.jpg)

在 Linux 上，你可能已经使用过 “软件包管理器” 来安装或移除软件包。例如，在 Debian Linux 上的默认软件包管理器是 `deb` 命令，在 Fedora Linux 上的默认软件包管理器是 `dnf` 命令。 但是你知道 FreeDOS 也有一个软件包管理器吗？

### 安装软件包

FreeDOS 1.3 RC4 发行版包含了很多极好的你可以使用的程序和应用程序。不过，我们不会默认安装其中的全部的程序 —— 我们不想过度地填充你的硬盘驱动器空间，尤其是在一个较老的系统上，可能仅有几百兆字节容量的硬盘驱动器。当你安装 FreeDOS 时，如果你选择 “Plain DOS system” 选项，你将发现你的 FreeDOS 系统是非常小的（大约 20 MB 大小）。

不过，要安装新的软件包很容易。在命令行中运行 `FDIMPLES` 程序。因为 DOS 是 *不区分大小写* 的，所以，你可以使用大写字母或小写字母来输入这个命令： `fdimples` 。（`fdimples` 与 `FDIMPLES` 或 `FDImples` 等同）

![fdimples](/data/attachment/album/202111/29/122831r9jpp49pxpccz1pe.png)

*在 FreeDOS 1.3 RC4 上的 FDIMPLES 软件包管理器（运行在 QEMU 之中）（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

FDIMPLES 是 "**F**ree**D**OS **I**nstaller - **M**y **P**ackage **L**ist **E**ditor **S**oftware" 的首字母缩略词，是一个交互式软件包管理器。FDIMPLES 读取安装介质来识别可以安装或移除的软件包。如果你看到一个不同的菜单，它显示 “Installed!” ，但是，不让你安装其它的软件的话，请检查你系统中是否有 FreeDOS 的 CD-ROM 的安装介质。在物理机器上，你将需要将 CD-ROM 插入 CD-ROM 驱动器；在诸如 QEMU 或 VirtualBox 之类的虚拟机器上，你需要将安装 FreeDOS 的 CD-ROM 的安装介质与虚拟机器关联在一起。

![fdimples installed](/data/attachment/album/202111/29/122832zsm9z0r8a855i806.png)

*如果你仅看到一条 “Installed!” 的信息，检查 CD-ROM 是否已经加载（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

让我们假设你想安装一些可以让你听音乐文件或其它声音文件的软件。使用向上箭头和向下箭头按键来导航到菜单中的 **声音工具** 项。这是一个针对声音和音乐程序的 *软件包组* 。

![fdimples sound](/data/attachment/album/202111/29/122832a0tto6k058o1582k.png)

*在 FDIMPLES 中突出显示声音软件包组（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

要选择这个组中的所有软件包，在你的键盘上按下空格键。如果你决定安装这个组中的某个软件包，按下 `Tab` 按键来移动到 *软件包列表* 方框面板，接下来使用空格键来选择每个软件包。

![fdimples sound select](/data/attachment/album/202111/29/122832elapbes6e8g6lgos.png)

*通过按下空格键来选择一个组中的所有的软件包（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

你可以继续选择你想要安装的其它的软件包或软件包组。当你选择好一切的东西后，使用 “Tab” 按键来高亮显示 “OK” 按键，并按下空格键按键。

![fdimples sound select ok](/data/attachment/album/202111/29/122833h2haav0lh7ie1irr.png)

*当你准备好安装时，突出显示 “Ok” 按钮（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

`FDIMPLES` 接下来会安装你所选择的所有的软件包。如果你仅选择几个小型的软件包，这可能只需要花费片刻的时间，或者，如果你要求安装很多大型的软件包，它可能会花费数分钟的时间。当 `FDIMPLES` 安装每个软件包时，`FDIMPLES` 会输出安装状态。在安装完后，`FDIMPLES` 退出到命令行之中，以便你可以回去继续工作。

![fdimples sound install done](/data/attachment/album/202111/29/122833o7ss2mzejeeqblc5.png)

*当 FDIMPLES 安装软件包时，FDIMPLES 会显示安装过程，并在完成安装后自动地退出（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

### 移除软件包

如果你安装了一个软件包，但是后来发现你不想要它了怎么办？在 `FDIMPLES` 中移除软件包也同样容易。

就像安装软件包一样，启动 `FDIMPLES` ，使用箭头键导航到包含你想要移除的软件包的组。例如，如果我想卸载一些我先前安装的音乐播放器软件包，我将导航到 “Sound Tools” 软件包组。

![fdimples sound select](/data/attachment/album/202111/29/122833qz6922ohv5so5935.png)

*导航到你想要移除的软件包组（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

为一次移除整个软件包组，你可以在你想要移除的软件包组上按下空格键来取消选择它们。但是，在这里让我们假设我只是想移除几个我不需要的软件包，像音频 CD 播放器 “CDP”。（我没有任何的真实的音乐 CD 光盘）。为移除 CDP ，敲击 `Tab` 按键来移动到软件包列表方框面板，接下来使用空格键来取消选择 CDP 软件包。这会在该软件包上移除 “X” 标志。

![fdimples unselect cdp](/data/attachment/album/202111/29/122833nxjcmxvfbjzfwmm8.png)

*取消选择一个软件包来移除它（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

你可以继续取消选择你想要移除的其它的软件包或软件包组。当你选择一切的东西后，使用 `Tab` 按键来突出显示 “OK” 按钮，并按下空格键按键。`FDIMPLES` 将移除你取消选择的软件包，然后自动地返回到命令行之中。

![fdimples cdp removed](/data/attachment/album/202111/29/122834dwwq364hqc2w4q3q.png)

*FDIMPLES 移除软件包，然后返回到命令行之中（Jim Hall, [CC-BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

在 FreeDOS 中。我们包含很多的软件包，遍及各种各样的软件包组。使用 `FDIMPLES` 来安装你需要的软件。请随意实验！如果你决定你不想要保留一个软件包了，你可以移除它，并为其它的软件包来释放所占用的磁盘空间。

---

via: <https://opensource.com/article/21/6/freedos-package-manager>

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

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


硬核观察 #470 2021 年了，还有人为 Windows 3.1 写了个 PS/2 鼠标驱动？

Summary: 更多：• 印度学者在版权诉讼中支持 Sci-Hub 和 LibGen • Nextcloud 向欧盟投诉微软捆绑 OneDrive 和 Teams 的反竞争行为

能够快速而可靠地进行啮齿动物操作,hhh

为何不是爬行动物呢

能够快速而可靠地进行啮齿动物操作

哈哈，一种幽默嘛

鼠标(老鼠)是啮齿动物

来自111.18.143.203的 Chrome Mobile 95.0|Android 12 用户

![](/data/attachment/album/202111/29/203503mxi0a4rvxlz4cal7.jpg)

### 2021 年了，还有人为 Windows 3.1 写了个 PS/2 鼠标驱动？

![](/data/attachment/album/202111/29/203516ath73l210lbdhdxh.jpg)

一位开发者为 Windows 3.1 提供了新的鼠标驱动程序 vmwmouse ，而他这么做的原因是为了确保当微软古老的操作系统作为虚拟机运行时，能够快速而可靠地进行啮齿动物操作。[开发者写道](https://github.com/NattyNarwhal/vmwmouse)，“在VMware 中运行 Windows 3.1，但对不得不手动释放和点入鼠标光标感到烦恼？希望能像现代操作系统一样，直接将光标移入和移出，而不需要按下 `Ctrl+Alt` 释放鼠标？”所以，他开发了这个驱动程序。他表示，主要的困难是在 USB 出现之前，没有办法发送鼠标的绝对坐标，而 Windows 3.x 来自 USB 之前的时代。

>
> 老王点评：额，这真是一种无用而有趣的开发工作。
>
>
>

### 印度学者在版权诉讼中支持 Sci-Hub 和 LibGen

![](/data/attachment/album/202111/29/203535kadspfg1i8afx3s8.jpg)

2020 年 12 月，一些大型全球出版社对 Sci-Hub 和 LibGen 的所有者 Alexandra Elbakyan 提起版权侵权诉讼。Sci-Hub 是一个拥有超过 8500 万篇研究论文的数字图书馆，而 LibGen 是一个链接聚合器，提供免费的学术文章、书籍和杂志。

七名印度的社会科学研究人员在互联网自由基金会（IFF）的法律支持下 [递交](https://internetfreedom.in/social-science-researchers-move-delhi-high-court-to-protect-libgen-scihub/) 了干预申请。他们指出，由于收费过高，他们无法获得所需的论文和学术作品，只能依靠 Sci-Hub 和 LibGen，强调任何封锁这些网站的决定会对其研究产生不利影响，侵犯了研究人员获取信息的权利。印度德里高等法院 [正在审理](https://www.trtworld.com/magazine/indian-academics-throw-weight-behind-sci-hub-and-libgen-in-landmark-case-51780) 研究人员和学生使用 Sci-Hub 和 LibGen 是否合法。

>
> 老王点评：知识是自由的，前提是这些知识没有印刷在这些需要花钱订阅的期刊上。
>
>
>

### Nextcloud 向欧盟投诉微软捆绑 OneDrive 和 Teams 的反竞争行为

![](/data/attachment/album/202111/29/203550wjzngav064v4o403.jpg)

Nextcloud 已正式向欧盟委员会 [投诉](https://ec.europa.eu/info/departments/competition_en) 微软的反竞争行为，即将其 OneDrive 云、Teams 和其他服务与 Windows 10 和 11 捆绑在一起。根据欧盟竞争法，自我推荐本身并不违法，但如果一家公司滥用其市场支配地位，就会违反法律。Nextcloud 指出，微软利用其看门人的地位从而直接阻挡了其他云服务厂商。微软在欧盟的市场份额已经增长到 66%，而当地供应商的市场份额从 26% 下降到 16%。一些开源的非营利组织和企业也加入了 Nextcloud 的投诉。

>
> 老王点评：微软现在恐怕已经忘记了上世纪 90 年代 IE 垄断案被处罚的历史了。
>
>
>

### 一句话回音

* 在 [#464](/article-14013-1.html) 期我们报道过，Rust 审核团队集体辞职。现在据称问题是由 [Ashley Williams](https://www.rust-lang.org/governance/teams/core) 引发的，她本来应该负责执行行为准则，但却同时不受准则的约束。她此前担任过 Node.js 基金会的董事，[曾被指控](https://news.ycombinator.com/item?id=28633113) 多次违反 Node 基金会的行为准则。


任何人都可以通过这三个简单的步骤编译开源代码

Summary: 你不需要知道如何写或读代码就可以编译它。

任何人都不要轻易去编译一个软件，否则会带来一堆这辈子也无法解决也解决不了的系统报错

依赖是个大问题，我就从没编译成功过。源码包就像是医院里等待器官移植的病人，都是缺胳膊少腿或是缺心少肺的。

来自广东广州的 Chrome Mobile 71.0|Android 6.0 用户

不要安装到系统目录下，新建一个目录保存二进制文件

你不需要知道如何写或读代码就可以编译它。

>
> 你不需要知道如何写或读代码就可以编译它。
>
>
>

![](/data/attachment/album/202111/30/133708wgq4rkecgbre93e1.jpg "Developing code.")

安装软件的方法有很多，但开源让你有了一个其他地方所没有的选择：你可以自己编译代码。编译源代码的经典三步流程是：

```
$ ./configure
$ make
$ sudo make install

```

由于有了这些命令，你可能会惊讶地发现，你不需要知道如何写代码，甚至不需要读代码就可以编译它。

### 安装用来构建软件的命令

由于这是你第一次进行编译，所以有一个一次性的准备步骤，即安装用于构建软件的命令。具体来说，你需要一个编译器。编译器（比如 GCC 或 LLVM）可以将像这样的源代码：

```
#include <iostream>

using namespace std;

int main() {
  cout << "hello world";
}

```

变成 *机器语言*，即 CPU 用来处理信息的指令。你可以看一下机器代码，但它对你来说没有任何意义（除非你是一个 CPU）。

你可以使用你的软件包管理器安装 GNU 编译器集合（GCC）和 LLVM 编译器，以及其他在 Fedora、CentOS、Mageia 和类似发行版上进行编译的基本命令：

```
$ sudo dnf install @development clang

```

在 Debian、Elementary、Mint 和类似发行版上命令如下：

```
$ sudo apt install build-essential clang

```

在你的系统设置好后，有几项你每次编译软件时都要重复进行的任务：

1. 下载源代码
2. 展开源代码的存档文件
3. 编译

你已经有了所有你需要的命令，所以现在你需要一些软件来编译。

### 1、下载源代码

获得一个应用程序的源代码和获得任何可下载的软件一样。你得去一个网站或一个代码管理网站，如 GitLab、SourceForge 或 GitHub。 通常情况下，开源软件既有正在进行的工作（“<ruby> 当前 <rt>  current </rt></ruby>”或 “<ruby> 每夜 <rt>  nightly </rt></ruby>”）的构建版本，也有打包的“<ruby> 稳定 <rt>  stable </rt></ruby>”发布版本。在可能的情况下，使用稳定版本，除非你有理由相信，或者对代码有足够的了解，能够在出现故障时修复。术语“稳定版”表明这些代码经过了测试，而且该应用程序的程序员对代码有足够的信心，从而将其打包成 `.zip` 或 `.tar` 归档，给了它一个官方编号，有时还有一个发布名称，然后提供给一般的非程序员公众下载。

在这个练习中，我使用 [Angband](https://rephial.org/)，一个开源的（GPLv2）ASCII 地牢猎手游戏。这是一个简单的应用程序，其复杂程度刚好可以说明你在自己编译软件时需要考虑的问题。

从 [网站](https://rephial.org/) 上下载其源代码。

### 2、展开源代码的存档文件

源代码通常是以存档的形式交付的，因为源代码通常由多个文件组成的。在与之交互之前，你必须先解压，不管它是一个 tarball、一个 zip 文件、一个 7z 文件，还是其他完全不同的东西。

```
$ tar --extract --file Angband-x.y.z.tar.gz

```

一旦解压缩后，就把目录切换到解压缩的目录，然后看一看。通常在目录的顶层有一个 `README` 文件。这个文件，一般会包含你需要做什么来编译代码的指导。`README` 通常包含关于代码的这些重要方面的信息：

* **语言**：代码使用的是什么语言（例如，C、C++、Rust、Python）。
* **依赖性**：你需要在你的系统上安装其他什么的软件，以便这个应用程序能够构建和运行。
* **说明**：你构建该软件所需要采取的明确步骤。偶尔，他们会在一个专门的文件中包含这些信息，这个文件被直观地称为 `INSTALL`。

如果 `README` 文件中不包含这些信息，可以考虑向开发者提交一份错误报告。你不是唯一需要介绍一下源代码的人。不管他们有多么丰富的经验，每个人都会对从未见过的源代码感到陌生，而文档是很重要的！

Angband 的维护者给出了在线说明的链接，描述了如何编译代码。这份文件还描述了你需要安装哪些其他软件，尽管它并没有确切地说明这一点。该网站说，“有几个不同的可选构建的前端（GCU、SDL、SDL2 和 X11），你可以使用诸如 `--enable-sdl`，`--disable-x11` 的参数配置。”这可能对你来说看起来像天书，但你经常编译代码后就会习惯。无论你是否理解 X11 或 SDL2 是什么，它们都是你经过几个月定期编译代码后经常看到的要求。你会对大多数软件需要其他软件库的想法感到适应，因为它们建立在其他技术之上。不过在这种情况下，Angband 非常灵活，无论是否有这些可选的依赖，都可以进行编译，所以现在，你可以假装没有额外的依赖。

### 3、编译代码

构建代码的典型步骤是：

```
$ ./configure
$ make
$ sudo make install

```

这些是使用 [Autotools](https://opensource.com/article/19/7/introduction-gnu-autotools) 构建的项目的步骤，该框架是为了规范源代码的交付方式而创建的。然而，还有一些其他框架（如 [Cmake](https://opensource.com/article/21/5/cmake)），它们需要不同的步骤。当项目没有遵循 Autotools 或 Cmake 框架时，它们往往会在 `README` 文件中提醒你。

### 配置

Angband 使用 Autotools，所以现在是编译代码的时候了!

在 Angband 目录中，首先，运行随源码一起提供的配置脚本：

```
$ ./configure

```

这一步将扫描你的系统，找到 Angband 正确构建所需的依赖性。有些依赖是非常基本的，没有它们你的电脑就无法运行，而有些则是专门的。在这一过程结束时，该脚本会给你一份关于它所发现的东西的报告：

```
[...]
configure: creating ./config.status
config.status: creating mk/buildsys.mk
config.status: creating mk/extra.mk
config.status: creating src/autoconf.h

Configuration:

  Install path:    /usr/local
  binary path:     /usr/local/games
  config path:     /usr/local/etc/angband/
  lib path:        /usr/local/share/angband/
  doc path:        /usr/local/share/doc/angband/
  var path:        (not used)
  (save and score files in ~/.angband/Angband/)

-- Frontends --
- Curses            Yes
- X11               Yes
- SDL2              Disabled
- SDL               Disabled
- Windows           Disabled
- Test              No
- Stats             No
- Spoilers          Yes

- SDL2 sound        Disabled
- SDL sound         Disabled

```

有些输出可能对你有意义，有些可能没有。无论如何，你可能注意到 SDL2 和 SDL 被标记为 “Disabled”，Test 和 Stats 都被标记为 “None”。虽然这些信息是负面的，但这并不一定是一件坏事。从本质上讲，这就是**警告**和**错误**之间的区别。如果配置脚本遇到了会阻止它构建代码的东西，它就会用一个错误来提醒你。

如果你想稍微优化一下你的构建，你可以选择解决这些负面信息。通过搜索 Angband 文档，你可能会确定 Test 和 Stats 实际上并不是你感兴趣的（它们是 Angband 专用于开发者的选项）。然而，通过在线研究，你可能会发现 SDL2 将是一个很好的功能。

要解决编译代码时的依赖问题，你需要安装缺少的组件和该缺少的组件的 *开发库*。换句话说，Angband 需要 SDL2 来播放声音，但它需要 `SDL2-devel`（在 Debian 系统上称为 `libsdl2-dev`）来构建。用你的软件包管理器安装这两个组件：

```
$ sudo dnf install sdl2 sdl2-devel

```

再试一下配置脚本：

```
$ ./configure --enable-sdl2
[...]
Configuration:
[...]
- Curses                                  Yes
- X11                                     Yes
- SDL2                                    Yes
- SDL                                     Disabled
- Windows                                 Disabled
- Test                                    No
- Stats                                   No
- Spoilers                                Yes

- SDL sound                               Disabled
- SDL2 sound                              Yes

```

### 制作（编译）

一旦一切配置完毕，运行 `make` 命令：

```
$ make

```

这通常需要一段时间，但它提供了很多视觉反馈，所以你会知道代码正在被编译。

### 安装

最后一步是安装你刚刚编译的代码。安装代码并没有什么神奇之处。所做的就是复制很多文件到非常具体的目录中。无论你是从源代码编译还是运行花哨的图形安装向导，都是如此。由于这些代码会被复制到系统级目录，你必须有 root（管理）权限，这是由 `sudo` 命令授予的。

```
$ sudo make install

```

### 运行该应用程序

一旦应用程序被安装，你就可以运行它。根据 Angband 文档，启动游戏的命令是 `angband`，所以可以试试：

```
$ angband

```

![Compile code lead image](/data/attachment/album/202111/30/133717f5i4kfb0wvllwv5l.jpg "Compile code lead image")

### 编译代码

无论是在我的 Slackware 台式电脑上，还是在我的 CentOS 笔记本电脑上，我都会使用 NetBSD 的 [pkgsrc](https://opensource.com/article/19/11/pkgsrc-netbsd-linux) 系统编译我自己的大部分应用程序。我发现，通过自己编译软件，我可以对应用程序中包含的功能、如何配置、使用的库版本等有自己的想法。这很有意义，它帮助我跟上了新的版本，而且因为我有时会在这个过程中发现错误，它帮助我参与了很多不同的开源项目。

你很少会只有编译软件的一种方式可选，大多数开源项目同时提供源代码（这就是为什么它被称为“开源”）和可安装包。是否从源代码编译是你自己的选择，也许是因为你想要最新版本中还没有的新功能，或者只是因为你喜欢自己编译代码。

### 家庭作业

Angband 可以使用 Autotools 或 Cmake，所以如果你想体验另一种构建代码的方式，可以试试这个：

```
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

```

你也可以尝试用 LLVM 编译器而不是 GNU 编译器集合（GCC）进行编译。现在，我把这个问题留给你自己去研究（提示：尝试设置 `CC` [环境变量](https://opensource.com/article/19/8/what-are-environment-variables)）。

一旦你完成了对 Angband 的源代码和至少几个地牢的探索（你已经赢得了一些休息时间），可以看看其他一些代码库。很多人都会使用 Autotools 或 Cmake，而其他人可能会使用不同的东西。看看你能构建的成果！

---

via: <https://opensource.com/article/21/11/compiling-code>

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

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


用 Flatseal 图形化管理 Flatpak 应用的权限

Summary: 就像 Android 一样，你可以控制 Flatpak 应用对系统资源的访问。

就像 Android 一样，你可以控制 Flatpak 应用对系统资源的访问。

![](/data/attachment/album/202111/30/135209fbcvqnvnzidvg2hw.jpg)

新版本的安卓系统让你对单个应用的访问和权限有了更精细的控制。这一点至关重要，因为许多应用曾经（正在）滥用系统权限。下载一个天气应用，它将要求访问你的通话记录，好像这与天气有什么关系一样。

为什么我在说安卓应用的权限？因为这可能与此应用的功能有关。

你可能已经知道 [什么是 Flatpak](https://itsfoss.com/what-is-flatpak/)。这些都是沙盒应用，可以选择访问系统资源，如文件存储、网络接口等。

就像 Android 一样，你可以控制 Flatpak 应用对系统资源的访问。默认情况下，这要用 [Flatpak 命令](https://itsfoss.com/flatpak-guide/)，不是每个人都能适应它。

因此，有一个叫做 Flatseal 的小工具，可以让你在应用层面上管理和控制 Flatpak 的权限。

### Flatseal

![Flatseal](/data/attachment/album/202111/30/135215vcsnss571odozi5s.png)

[Flatseal](https://flathub.org/apps/details/com.github.tchx84.Flatseal) 是一个图形化的工具，用于审查和修改你的 Flatpak 应用的权限。这使得事情比通过命令要容易得多。

Flatseal 会列出所有已安装的 Flatpak 应用。当你选择一个应用，你可以看到所有的权限。很容易发现已启用的权限，如果你愿意，你可以禁用它。

例如，Ksnip 是一个屏幕截图工具，但它也有联网权限，可以用 Imgur 等在线服务分享截图。如果你不需要它，你可以禁用它。

![Control permissions of individual Flatpak apps](/data/attachment/album/202111/30/135215n96c39uocu5tdffa.png)

如果不出意外，看看一个应用有什么样的权限是很有趣的。例如，你可以看到 ksnip 有在后台运行的能力（这样你就可以用键盘快捷键进行截图）。

![](/data/attachment/album/202111/30/135215ged2v2bvtivsg4tj.png)

### 安装 Flatseal

既然管理的都是 Flatpak，那么 Flatseal 作为一个 Flatpak 包来使用也是合理的。

在 Fedora 上，如果已经添加 Flathub 仓库，你可以从软件中心安装它。

![Installing Flatseal from the software center](/data/attachment/album/202111/30/135216vg3r7yn55r9y5ssn.png)

否则，命令行总是可以帮助你。

```
flatpak install flathub com.github.tchx84.Flatseal

```

### 你真的需要控制权限吗？

这是一个主观的问题，完全取决于你。值得庆幸的是，到目前为止，桌面 Linux 应用并不像 Android 应用那样滥用权限。

一个普通用户通常不会去管这些事情，这完全没问题。

然而，如果你对这些事情过于谨慎，或者你找到一个很好的理由，Flatseal 提供了一个简单的选择。

你还应该小心你所改变的权限。如果你禁用了对应用的运作至关重要的权限，在使用应用时肯定会造成麻烦。

所以，总的来说，这不是一个普通用户要使用的东西。

---

via: <https://itsfoss.com/flatseal/>

作者：[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/) 荣誉推出


硬核观察 #471 首部 RISC-V 手机有望在明年面世，中国公司研制

Summary: 更多：• 一批安卓网银木马已被下载 30 万次 • 英特尔建立了一个装满了旧芯片的秘密安全实验室

![](/data/attachment/album/202111/30/210120ilcqza4lktzk1ckw.jpg)

### 首部 RISC-V 手机有望在明年面世，中国公司研制

![](/data/attachment/album/202111/30/210135f5dzaldapm6mlzpt.jpg)

[矽速科技](https://www.sipeed.com/) 最近在 Twitter 上发布了一则 [短视频](https://twitter.com/SipeedIO/status/1457529282134089734)，演示了运行 Android 10 的 RISC-V RV64 智能手机原型。首批商用机型预计将在 2022 年发布。大约一年前，阿里巴巴成功通过玄铁开发板将 Android 10 移植到 RISC-V 上。而矽速科技演示的 Android 10 设备采用了玄铁 C901 开发板和 7 英寸触摸屏。此外，基于 RV64 的手机应该比任何当代基于 ARM 的芯片更容易移植完整的 Linux。

>
> 老王点评：非常期待，但是也希望不仅仅硬件出色，软件也一样适配出色。
>
>
>

### 一批安卓网银木马已被下载 30 万次

![](/data/attachment/album/202111/30/210157ut6u26gx7yj1x8cu.jpg)

安全研究人员刚刚公布了一批 [安卓网银木马](https://www.threatfabric.com/blogs/deceive-the-heavens-to-cross-the-sea.html)，在被谷歌应用商店清理之前，其下载量就已经超过了 30 万次。在二维码扫描仪、PDF 扫描仪、加密货币钱包等表象的掩饰下，这些恶意应用会在暗中窃取用户登录凭证、双因素身份验证码、记录按键以及屏幕截图。研究人员发现了四个独立的安卓恶意软件家族。它们其利用了多种技巧，来规避谷歌应用商店的检测机制。如这些恶意软件会先以一款良性应用的面目示人，但在用户安装后，它们就会开始诱骗用户下载并安装带有“附加功能”的更新包。

>
> 老王点评：简直是防不胜防，不能随便下载软件和盲目信任商店的检测。
>
>
>

### 英特尔建立了一个装满了旧芯片的秘密安全实验室

![](/data/attachment/album/202111/30/210210qktvhjcxhtxtcdco.jpg)

英特尔称，几年前当其工程师被迫在 eBay 上搜索旧芯片以解决影响特定配置的问题时，他们建立了一个 [长期保留（LTR）实验室](https://www.zdnet.com/article/intel-has-a-secret-security-lab-full-of-old-hardware-to-hunt-for-bugs/)，以存放那些已经停产的旧芯片。如今 LTR 实验室容纳了 2800 个平台的芯片，其中一些最古老的可以追溯到 2012 年。明年的目标是将容量提高到 6000 个平台。这个自 2019 年开始运作的实验室建立在哥斯达黎加的一个英特尔没有透露的秘密地点。英特尔工程师们可以全天候远程请求访问这些硬件，能够在几分钟内启动特定的配置。

>
> 老王点评：虽然这像是一个博物馆，但是可以为很多已经停产的芯片提供支持。
>
>
>


使用 Linux 的 diff 和 patch 对文件进行协作

Summary: 如果你曾经试图通过电子邮件或聊天来协作处理文件，并且发现自己试图描述需要修改的地方，那么你会喜欢 diff 和 patch 的。

>
> 如果你曾经试图通过电子邮件或聊天来协作处理文件，并且发现自己试图描述需要修改的地方，那么你会喜欢 `diff` 和 `patch` 的。
>
>
>

![](/data/attachment/album/202112/01/102607jmjbpu1jk1as61j1.jpg)

我编辑过很多文本文件。有时是代码。其他时候是角色扮演游戏（RPG）、编程书籍或一般信件的书面文字。有时候，做一个修改，而能让我的协作者把我的修改和他们原来写的东西进行比较就更好了。许多人默认使用办公套件（如 [LibreOffice](https://opensource.com/article/21/9/libreoffice-tips)）的注释或更改跟踪功能。不过有时更简单的工具更有意义，为此，你可以看看像 `diff` 和 `patch` 这样的工具的编程历史，它们为跟踪和应用共享文件的变化提供了标准化的格式。

即使对于简单的文件，在同步两个文件时也有复杂性。一些项目被改变，另一些被保留，新的内容被添加，还有一些保持不变，但被移到文件的不同位置。如果接受所有的变化，并且用新文件替换旧文件，就很难复制变化。它也是整体不透明的。如果变化很多，就很难挑出到底发生了什么变化。

通过 `diff` 命令，你可以创建一个文件变化的记录，通过 `patch` 你可以在旧版本上“重放”这些变化，使其与新版本保持一致。

### 设置

假设你和我正在合作编写一个描述如何泡茶的文件。

到目前为止，文件 `tea.md` 包含原始的复制粘贴来的内容：

```
烧开水。
加热茶壶。
在茶壶中加入茶和水。
在茶壶上放置一个茶叶滤网。
浸泡 6 分钟。
将茶倒入杯中。
加入牛奶。

```

这似乎很合理，但总有一些优化可以做，所以你把文件发给我改进。为了澄清泡茶过程，我把文件复制为`tea-revision.md`，并进行编辑，最后是这样的：

```
在烤箱的抽屉中加热茶壶。
烧开水。
将茶叶放入茶叶滤网。
将滤网和水加入茶壶。
浸泡 6 分钟。用茶壶罩保温。
将茶倒入杯中。
可以选择加入温牛奶。

```

正如预期的那样，一些项目（“烧开水”和“将茶倒入杯中”）没有变化，而其他行（“加热茶壶”）则有增加。有些行是全新的，有些行是相同的，但顺序不同。

### 创建一个差异

`diff` 工具会显示两个文件之间的差异。有几种不同的方法来查看结果，但我认为最清楚的是 `—unified`（简写为 `-u`）视图，它显示哪些行被增加或减少了。以任何方式改变的行都被视为先减后增的行。默认情况下，`diff` 将其输出打印到终端。

向 `diff` 提供旧文件，然后是新文件：

```
$ diff --unified tea.md tea-revised.md
--- tea.md      2021-11-13 10:26:25.082110219 +1300
+++ tea-revised.md      2021-11-13 10:26:32.049110664 +1300
@@ -1,7 +1,7 @@
+在烤箱的抽屉中加热茶壶。
 烧开水。
-加热茶壶。
-在茶壶中加入茶和水。
-在茶壶上放置一个茶叶滤网。
-浸泡 6 分钟。
+将茶叶放入茶叶滤网。
+将滤网和水加入茶壶。
+浸泡 6 分钟。用茶壶罩保温。
 将茶倒入杯中。
-加入牛奶。
+可以选择加入温牛奶。

```

行首的加号（`+`）表示在旧文件中增加了一些内容。行首的减号（`-`）表示被删除或改变的行。

### 用 diff 创建一个补丁

补丁文件就是将 `diff —unified` 命令的输出放到一个文件中。你可以用标准的 Bash 重定向来做这件事：

```
$ diff -u tea.md tea-revised.md > tea.patch

```

该文件的内容与输出到终端的内容完全相同。我喜欢在 [Emacs](https://opensource.com/article/20/12/emacs) 中查看补丁文件，它对每一行进行颜色编码，取决于它是被添加还是被减去。

![Emacs中的补丁文件](/data/attachment/album/202112/01/102615lyxryrxdetb3nr6r.jpg "A patch file in Emacs")

### 用补丁应用修改

一旦我有了补丁文件，我就可以把它发给你，让你审查，并且可以选择应用到你的旧文件中。你可以用 `patch` 命令来应用一个补丁。

```
$ patch tea.md tea.patch

```

增加了一些行，减少了一些行，最后，你得到了一个与我的版本相同的文件：

```
$ cat tea.md
在烤箱的抽屉中加热茶壶。
烧开水。
将茶叶放入茶叶滤网。
将滤网和水加入茶壶。
浸泡 6 分钟。用茶壶罩保温。
将茶倒入杯中。
可以选择加入温牛奶。

```

你可以给一个文件打多少次补丁，这是没有限制的。你可以对我的修改进行迭代，生成一个新的补丁，然后发给我审核。发送修改内容而不是结果，可以让每个贡献者审查修改的内容，决定他们要保留或删除的内容，并准确地记录过程。

### 安装

在 Linux 和 macOS 上，你已经有了 `diff` 和 `patch` 命令。在 Windows 上，你可以通过 [Cygwin](https://cygwin.com) 获得 `diff` 和 `patch`，或者使用 Chocolatey 搜索 [diffutils](https://community.chocolatey.org/packages/diffutils) 和 [patch](https://community.chocolatey.org/packages/patch)。

如果你曾经试图通过电子邮件或聊天来协作处理文件，并且发现自己需要 *描述* 需要修改的地方，那么你会喜欢 `diff` 和 `patch`。一个结构严谨的文件，如代码或以行为单位的 [Markdown](https://opensource.com/article/19/9/introduction-markdown)，很容易进行差异比较、补丁和维护。

---

via: <https://opensource.com/article/21/11/linux-diff-patch>

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

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


创建节日问候的 4 种开源方式

Summary: 开源工具和资源为任何节日提供了创造性的可能性。

不来个Blender建模圣诞树的教程?还有Audacity剪个圣诞歌的教程?

开源工具和资源为任何节日提供了创造性的可能性。

>
> 开源工具和资源为任何节日提供了创造性的可能性。
>
>
>

![](/data/attachment/album/202112/01/113447fkk2du1udmdu2n0d.jpg "Painting art on a computer screen")

节日再次来临，今年我决定用 [开源方式](https://opensource.com/open-source-way) 来庆祝。就像一个特别有名的假期忙人一样，我有一个长长的节日任务清单（我打算再三检查）：制作一张贺卡（带地址的明信片）寄给家人和朋友，用合适的节日歌曲制作照片蒙太奇或视频，并装饰我的虚拟办公室。有很多开源的应用和资源使我的工作更容易。以下是我使用的东西。

### Inkscape 和剪贴画

我最喜欢的资源之一是 [FreeSVG.org](http://freesvg.org)（前身是 [Openclipart.org](http://Openclipart.org)）。这里很容易找到你喜欢的节日，包括光明节、圣诞节、新年等等。这些剪贴画都是由像你我这样的用户贡献的，并且是 CC0 版权，所以你甚至不需要提供署名。当然，在可能的情况下，我还是会注明出处，以确保 FreeSVG 和它的艺术家们获得知名度。

下面是 FreeSVG 的一些剪贴画的例子：

![一幅棕色玉米棒的漫画，上面有红色的苹果、橙色的南瓜和棕色的坚果溢出来。](/data/attachment/album/202112/01/113649kx2ghzw1h1q33hov.png "cornucopia")

[openclipart.com](http://openclipart.com)， [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/)

使用 [Inkscape](https://opensource.com/article/18/1/inkscape-absolute-beginners) 的文本路径工具，我在图片上添加了我自己的文字，我把它用在卡片上。如果再做些工作，我还可以把这个图形用在一些定制的杯子或餐垫上。

![一幅棕色玉米棒的漫画，上面有红色的苹果、橙色的南瓜和棕色的坚果溢出来，上面有一个拱门形的“我们感谢”的字样。](/data/attachment/album/202112/01/113650npexe5qt80xtyq08.png "We Give Thanks")

Don Watkins， [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)

### 文字处理

[LibreOffice](https://opensource.com/article/21/9/libreoffice-tips) Writer 可以用来制作贺卡和海报，然后在你的家中使用或分发给你的朋友和家人。使用 LibreOffice Calc 创建一个关于你的家人和朋友的数据库，然后利用这一资源，用邮件合并功能简化制作邮件标签的过程。

### 创作共用的图片和图形

[search.creativecommons.org](https://search.creativecommons.org/) 上也有艺术品。注意许可证类型：对任何需要署名的东西给予适当的致谢。这张图片（[“Thanksgiving Dealies”](https://www.flickr.com/photos/34067077@N00/4014605524)）来自创作共用图片搜索。它的作者是 [Martin Cathrae](https://www.flickr.com/photos/34067077@N00)，并在 [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/?ref=ccsearch&atype=rich) 下授权，因此它可以在相同的许可证下被改编、重复使用和分享。

![用南瓜壳做花架，摆放红色和黄色小花束的烛光中心装饰。](/data/attachment/album/202112/01/113650tayos9syxpvsta94.png "Holiday table")

[Martin Cathrae](https://www.flickr.com/photos/34067077@N00)， [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/?ref=ccsearch&atype=rich)

我拿着这张相同的图片，用 [GIMP](https://opensource.com/content/cheat-sheet-gimp) 在上面添加了一些我自己的文字。你可以用 Inkscape 来做同样的事情。

![用南瓜壳作为花架，放置红色和黄色的小花束的烛光中心作品，图片左上方有“节日快乐”字样。](/data/attachment/album/202112/01/113651nlclfz482twcw1tf.png "Happy Holidays")

Don Watkins，[CC BY-SA 4.0](https://creativecommons.org/licenses/by/4.0/)

<ruby> 创作共用 <rt>  Creative Commons </rt></ruby>提供了大量的图片，在你的下一次 [视频会议](https://opensource.com/article/20/5/open-source-video-conferencing) 期间，可以这些图片作为一个节日背景。

### 视频和实时流媒体

你也可以把这些图片与你自己的一些图片结合起来，用 [OpenShot](https://opensource.com/article/17/5/using-openshot-video-editor) 视频编辑器创建一个简短的视频剪辑。你可以通过使用 Audacity 录制一个单独的音轨，轻松添加旁白。可以在 Audacity 中添加声音效果，保存到文件中，并导入到 OpenShot 视频编辑器的配乐中。寻找 [合法的背景音乐](https://opensource.com/article/20/1/what-creative-commons) 来添加到你的视频中。

使用 [开源广播软件（OBS）](https://opensource.com/article/21/4/obs-youtube) 来直播你的假期聚会。使用 OBS 可以轻松地为你的朋友和家人呈现引人入胜的假期节目，或者你可以将节目另存为 Matroska 或 MP4 文件以供日后观看。

### 阅读材料

<ruby> 古腾堡计划 <rt>  Project Gutenberg </rt></ruby>是一个用来分享免费节日阅读材料的很好的来源。[狄更斯的《圣诞颂歌》](https://www.gutenberg.org/ebooks/19337) 就是这样一种资源，它可以在网上轻松阅读，也可以下载成 EPUB 或你最喜欢的电子阅读器的格式。你还可以找到免版税的阅读材料，如 [Librivox](https://librivox.org/the-feast-of-lights-by-emma-lazarus/) 的“光的盛宴”，采用 MP3 格式，因此可以下载并在你喜欢的浏览器或媒体播放器中播放。

### 节日乐趣

节日里最重要的一点是，它们是与朋友和家人一起的放松和欢乐时光。如果你有家人对计算机感到好奇，花点时间与他们分享一些你最喜欢的开源资源。

（题图来自：[creativecommons.org](https://search.creativecommons.org/photos/388c71f3-0419-4e4b-a6a7-2db7e1a8bbc8)，作者：Sunny M5）

---

via: <https://opensource.com/article/21/11/open-source-holiday-greetings>

作者：[Don Watkins](https://opensource.com/users/don-watkins) 选题：[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/) 荣誉推出


硬核观察 #472 出租你的空闲算力来为应用程序和服务付费

Summary: 更多：• 德国政府支持“公共资金，公共代码”倡议 • 摆脱苹果之后，OpenPrinting 发布了新的 CUPS

![](/data/attachment/album/202112/01/133801bbi26u2o5yetb8b0.jpg)

### 出租你的空闲算力来为应用程序和服务付费

![](/data/attachment/album/202112/01/133812fsdwkqadpdjhjkk3.jpg)

将来自个人的分布式计算能力汇聚起来的概念并不新鲜，很早以前就有类似 SETI 这样的项目用来搜索外星信号和用于医药研究方面的蛋白质计算。一家名为 [Massive](https://joinmassive.com/) 的初创公司正在努力将这一概念“带入现代社会，作为向用户收费或用广告获得收入的一种替代方式”。他们将其描述为类似于用户电脑的 Airbnb。该公司称有大约 5 万名台式电脑用户（节点）已经选择加入其服务。这些节点在加入前需选择其计算能力可用于的服务，如 AI 学习等分布式任务。

>
> 老王点评：这件事本身不稀奇，如果能合规发展，对浪费的算力和电力也算是一个不错的出口。
>
>
>

### 德国政府支持“公共资金，公共代码”倡议

![](/data/attachment/album/202112/01/133830pd1zz951xivlvvu4.jpg)

在 9 月的选举之后，德国的新联合政府将 [接受](https://www.neowin.net/news/germany039s-new-coalition-government-backs-the-public-money-public-code-initiative/) “<ruby> 公共资金，公共代码 <rt>  Public Money, Public Code </rt></ruby>”（PMPC）倡议，该倡议已经被欧洲自由软件基金会（FSFE）宣传了好几年。PMPC 认为任何使用纳税人的钱创建的软件都应该以自由软件的形式发布，呼吁立法确保公共资助的软件在自由及开源软件（FOSS）许可证下发布。

>
> 老王点评：似乎这是理所应当的？但能接受并实行的政府并不多。
>
>
>

### 摆脱苹果之后，OpenPrinting 发布了新的 CUPS

![](/data/attachment/album/202112/01/133845fxw9fyn65zx68ybb.jpg)

当被苹果收购的 CUPS 的创始人在 2019 年离开苹果公司时，苹果公司在 CUPS 上的工作就基本停止了。今年早些时候，CUPS 的创始人建立的 OpenPrinting [接管](https://www.phoronix.com/scan.php?page=news_item&px=Apple-No-More-CUPS) 了 CUPS 打印服务器的开发，因为苹果不再有兴趣管理这个开源的打印服务器。本周推出的 [CUPS 2.4](https://github.com/OpenPrinting/cups/releases/tag/v2.4.0) 是 OpenPrinting 指导下的第一个主要版本。主要变化有：初步支持 OAuth 2.0 客户端和 AirPrint。CPUS 的上一个主要版本发布于 2019 年。

>
> 老王点评：当一个开源项目依赖于某一个商业企业时，其兴衰存亡取决于企业的兴趣，而当其开源开放时，总会有关心它的用户支持它的发展。
>
>
>


Chrome 与 Chromium 有何不同？

Summary: 在这篇文章中，我们将深入了解它们，并在根据一些基准对它们进行比较。

在这篇文章中，我们将深入了解它们，并在根据一些基准对它们进行比较。

![](/data/attachment/album/202112/02/100436xj1u51jhrjuwhjfw.jpg)

Chrome 浏览器是最流行的网页浏览器。无论你是否喜欢使用它，Chrome 都能提供良好的用户体验。

尽管它可以在 Linux 上使用，但它不是一个开源的网页浏览器。

而且，如果你喜欢 Chrome 的外观和感觉，但又想使用一个开源的解决方案，Chromium 是一个选择。

但是，Chrome 浏览器不是基于 Chromium 的吗？（是的。）而且，它也是由谷歌开发的吧？（也是的。）

那么，Chrome 和 Chromium 之间有什么区别呢？在这篇文章中，我们将深入了解它们，并介绍一些对它们进行比较的基准。

### 用户界面

![Chrome 和 Chromium 在 Zorin OS 16 上并排运行](/data/attachment/album/202112/02/100559cppcz4jff541e646.png)

Chrome 和 Chromium 的用户界面非常相似，除了一些细微的区别。

例如，我注意到 Chrome 的系统标题栏和边框一开始就被默认禁用了。相比之下，在我测试的时候，Chromium 默认启用了它们。

你还可以注意到在 Chrome 的地址栏里有一个分享按钮，而在 Chromium 上却没有。

这并不是大的视觉差异，而只是根据现有的功能进行了一系列的 UI 调整。所以，你可以预期它们的用户体验类似，而在底层有所不同。如果你在意用户界面，这两款浏览器应该都很适合你。

### 开源与专有代码

![](/data/attachment/album/202112/02/100559sv86z75f762667zm.png)

Chromium 是完全开源的，这意味着任何人都可以（根据许可证）按照自己的意愿使用和修改代码。你可以在其 [GitHub 镜像](https://github.com/chromium/chromium) 上查看其源代码。

这就是为什么你会发现有许多 [基于 Chromium 的浏览器](https://news.itsfoss.com/chrome-like-browsers-2021/)，如 Brave、Vivaldi 和 Edge。

有这么多的选择，你可以选择你最喜欢的那个。

另一方面，Chrome 在 Chromium 中加入了刚刚专有的代码，使 Chrome 成为了专有浏览器。例如，人们可以复刻 Brave，但不能复刻谷歌 Chrome，而限制使用其中的谷歌特定代码/工作。

对于终端用户来说，开源与否并不影响用户体验。然而，对于一个开源项目，你可以得到更多的透明度，而不需要依靠公司来沟通他们打算改变什么，以及他们在浏览器上做什么。

所以，是的，如果你不喜欢专有代码，Chromium 就是你的选择。

### 功能差异

谷歌不希望其竞争对手拥有类似的能力，这并不奇怪。因此，谷歌一直在 [锁定 Chromium 并在其中禁用了很多谷歌特有的能力](https://news.itsfoss.com/is-google-locking-down-chrome/)。

因此，你会发现这两个浏览器的能力有一些差异。

不仅如此，由于 Chromium 是开源的，你可能会注意到一些不便之处。别担心，我将在下面指出其中的关键差异。

| Chrome | Chromium |
| --- | --- |
| 有签到和同步功能 | 无签到和同步功能 |
| 支持媒体编解码器以使用 Netflix | 需要手动安装编解码器 |

对于初学者来说，在 Chromium 中不再能使用由谷歌支持的登录/同步功能。它曾经支持签到和同步，直到谷歌决定将其从开源项目中删除。

接下来，Chrome 内置了对高质量媒体编解码器的支持。因此，你可以加载来自 Netflix 的内容。但是，在 Chromium 中没有这些。

![Netflix 在 Chromium 中默认不能工作](/data/attachment/album/202112/02/100600p4jwvh2hxj723hjr.png)

从技术上讲，Chromium 并不包括 *Widevine 内容解密模块*。因此，你需要手动安装所需的编解码器，以使大部分东西都能工作。

不过，你在这两个浏览器上你都可以播放苹果音乐等平台的内容，应该不会有任何问题。

### 安装及最新更新

你可以在几乎任何平台上安装 Chrome。Linux 也不例外。只需前往其官方网站，抓取 DEB/RPM 包即可快速安装。安装后的应用程序也会自动更新。

![](/data/attachment/album/202112/02/100601qmgu1kjgmm1tp021.png)

有几个平台上安装 Chromium 并不那么简单。曾经有一段时间，一些 Linux 发行版将 Chromium 作为默认浏览器。那是过去的日子了。

即使在 Windows 上，Chromium 的安装和更新也不像 Chrome 那样顺利。

在 Linux 上，安装 Chromium 则完全是另一回事。像 Ubuntu 这样的流行发行版把它打包成一个沙盒式的 Snap 应用程序。

即使你试图用终端安装它，希望能从 APT 库中得到它，但它又是一个 Snap。

![](/data/attachment/album/202112/02/100601vpn1ncn2z722vop8.png)

使用 Snap 软件包，你可能会面临与你的自定义桌面主题相融合的问题。Snap 应用程序的启动时间也会更长。

![](/data/attachment/album/202112/02/100602byuyrwra91orh911.png)

而且，如果你构建它并手动安装 Chromium，你就得手动更新它。

### 隐私角度

Chrome 对大多数用户来说应该足够好了。但是，如果你担心你的隐私，Chrome 会追踪使用信息和一些与浏览有关的信息。

最近，[谷歌推出了一个新的 Chrome API](https://www.forbes.com/sites/zakdoffman/2021/10/02/stop-using-google-chrome-on-windows-10-android-and-apple-iphones-ipads-and-macs/)，可以让网站检测到你什么时候闲着，什么时候不闲着。虽然这是一个巨大的隐私问题，但并不是唯一的问题。

谷歌不断试验新的追踪用户的方法；例如，正如 [EFF](https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea) 所指出的那样，谷歌的 FLoC 实验并不受欢迎。

从技术上讲，他们声称他们想增强用户的隐私，而同时仍然提供广告机会。然而，就目前而言，这是一个不可能实现的任务。

相比之下，Chromium 在隐私方面的表现应该要好得多。然而，如果你讨厌你的浏览器中有任何与谷歌有关的东西，即使是最轻微的遥测，你应该试试 [UnGoogled Chromium](https://github.com/Eloston/ungoogled-chromium)。

它是 Chromium，但没有任何谷歌组件。

### 浏览器性能

有各种各样的浏览器基准，可以让你了解到一个浏览器处理任务的能力如何。

考虑到网站上的高级网站应用和资源密集型的 JavaScript，如果一个网页浏览器的性能不好，当你打开许多活动的标签时，你的体验就会明显很糟糕。

[JetStream 2](https://webkit.org/blog/8685/introducing-the-jetstream-2-benchmark-suite/) 和 [Speedometer 2](https://webkit.org/blog/8063/speedometer-2-0-a-benchmark-for-modern-web-app-responsiveness/) 是两个流行的基准，可以给你处理各种任务和响应能力的性能估计。

除此之外，我还试用了 [Basemark Web 3.0](https://web.basemark.com/)，它也是测试各种指标并给你一个综合分数。

![](/data/attachment/album/202112/02/100602p9nz0rert9i49uem.png)

总体而言，Chrome 在此获胜。

但是，值得注意的是，在运行浏览器时，你的系统资源和后台进程会对性能产生不同的影响。因此，也要考虑到这一点。

### 你应该选择哪个？

之所以存在对浏览器的选择，是因为用户喜欢不同的东西。Chrome 提供了一个良好的功能集和用户体验。如果你以某种形式使用由谷歌提供的服务，Chrome 是一个简单的推荐。

然而，如果你担心隐私和专有代码，Chromium 或 UnGoogled Chromium，或任何其他基于 Chromium 的浏览器，如 Brave，可以是一个不错的选择。

这就是我在比较 Chrome 和 Chromium 时的全部看法。我愿意接受你的意见。评论区都是你的。

---

via: <https://itsfoss.com/chrome-vs-chromium/>

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

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


最佳 Linux 桌面 DAW（数字音频工作站）

Summary: 我的目的是帮助你找出 Linux 上最好的音乐 DAW。

没有Audacity差评

我的目的是帮助你找出 Linux 上最好的音乐 DAW。

![](/data/attachment/album/202112/02/123844cydiigpj23zgi7z7.jpg)

<ruby> 数字音频工作站 <rt>  Digital Audio Workstation </rt></ruby>（DAW）可以让你录音、混音和制作音乐。对于商业用途，有几个主流的选择可以考虑，它们通常被认为是行业标准。

像 Steinberg 的 Nuendo/Cubase、ProTools、Ableton Live 和 FL Studio 这样成熟的音乐 DAW 是最流行（也是最昂贵）的解决方案。然而，它们并不能用于 Linux。

因此，当用在 Linux 上时，你只能根据现有的选项做出不同的选择。而在这里，我的目的是帮助你找出 Linux 上最好的音乐 DAW。

### 在使用 Linux 上的 DAW 之前要记住的事情

尽管你可以达到与 Windows/MacOS 系统相同的效果，但在选择使用 Linux 的 DAW 之前，你应该知道一些要点。

如果你是专业人士，并且使用过 Linux，你可能已经知道了这些。但是，对于新的 Linux 用户，这可以帮助你做出决定：

* 许多音频接口没有正式支持 Linux。所以，你可能要在开始之前检查一下兼容性和音频设置过程。
* 流行的音频插件可能无法直接工作。你必须得寻找替代品或尝试使用 Wine（这是一个耗时的过程）。
* 即插即用的情况可能不存在。各种任务都需要手动设置。

总的来说，在 Linux 中使用 DAW 时，有一些先决条件。它可能不能简单地安装然后就能开始制作音乐。所以，在选择 Linux 作为 DAW 的首选平台之前，你需要了解这些。

请注意，有几个 [可用于 Linux 的音频编辑器](https://itsfoss.com/best-audio-editors-linux/)，但不是所有的都可以作为一个成熟的 DAW 使用。

现在你知道了这些注意事项，让我提一下目前最好的 Linux DAW。

>
> 非 FOSS 警报！
>
>
> 这里提到的应用并不全是开源的。它们被列在这里是因为它们在 Linux 上可用，而这篇文章的重点是 Linux。
>
>
>

虽然可用于 Linux 的 DAW 可能有许多，但为了确保你得到最好的硬件/软件兼容性，以及易于使用的界面，我们将我们的列表限制在流行的选项上。

### 1、Ardour

![](/data/attachment/album/202112/02/123852ki3qbslpskckf9r2.png)

[Ardour](https://ardour.org/) 是最流行的开源 DAW，可用于 Linux。它也可用于 Windows 和 macOS。

它是音乐家、音频工程师和作曲家的一个合适选择。你可以获得编辑乐谱和录制/混合歌曲的所有基本能力。

它自带几个插件支持。但是，你需要通过在插件管理器中手动添加它们到混音器中。另外，你可以选择通过指定路径来添加外部 VST3 插件。如果你想从中提取音频或同步，Ardour 还支持视频时间线。

#### 在 Linux 中安装 Ardour

与其他付费版 DAW 不同，你不需要支付高昂的价格就可以使用它。你所需要做的就是购买一个低至 1 美元/月的订阅，只要你的订阅是有效的，你就可以继续访问这个程序和它的更新。

如果你对订阅不感兴趣，你可以选择一次性付款，这可以让你获得小版本更新和下一个主要版本（取决于你支付的金额）。

最重要的是，如果你喜欢测试即将到来的功能和改进，你还可以访问其开发（或每日）构建版本。

对于 Linux 发行版，它提供了一个 `.run` 文件，你可以轻松地从终端启动。

### 2、LMMS

![](/data/attachment/album/202112/02/123853ki0loy0zyis00p8h.png)

[LMMS](https://lmms.io/lsp/) 是一个自由开源的 DAW，可用于 Linux 和其他平台。

与其他一些 DAW 相比，LMMS 在专业人员所需的专业方面可能有所欠缺。

然而，如果你刚刚开始创作音乐，或者需要一些无需购买/订阅就可以使用的东西，它应该可以满足你的一些功能需求。换句话说，它是一个合适的歌曲编辑 DAW。

如果你是从另一个平台上的 DAW 迁移来的，它的用户界面可能不太容易熟悉。但是，当你习惯了它，它就很容易使用了。

它还支持钢琴音符标签，以帮助你获得音乐制作体验。

#### 在 Linux 中安装 LMMS

你可以选择下载一个 AppImage 文件，它可以在你选择的任何 Linux 发行版上工作。它的配置相当简单，所以你只需要指定一个工作目录就可以开始了。

### 3、Bitwig Studio

![](/data/attachment/album/202112/02/123853zku25kfx5a6ui2u0.png)

[Bitwig Studio](https://www.bitwig.com/) 是流行的主流音乐 DAW 之一，也支持 Linux。与本列表中的其他 DAW 相比，Bitwig 提供了更好的跨平台支持和硬件集成。

即使你可能坚持使用 Linux 进行音乐制作，但拥有跨平台的支持，以便在你出门在外也可以继续你的工作，对一些人来说这也是一个重要的因素。

Bitwig 包括各种创意工具来处理音频文件和信号。所以，它完全可以满足专业要求。

### 在 Linux 中安装 Bitwig Studio

它提供了一个传统的 DEB 包用于安装。你可以在“演示模式”下免费使用它，但它不允许你保存和导出任何东西。Bitwig Studio 在 [Flathub](https://flathub.org/apps/details/com.bitwig.BitwigStudio) 上还有一个 [Flatpak](https://itsfoss.com/what-is-flatpak/) 包。

要解锁所有的功能，你需要以 **$399** 的价格购买它。

### 4、REAPER

![](/data/attachment/album/202112/02/123854to93nh7znenyadsh.png)

[Reaper](https://www.reaper.fm) 是一个可用于 Linux 的经济型 DAW。它提供了一个简单的用户界面和所有的基本功能。

和 Bitwig Studio 相比，它可能没有提供很多开箱即用的插件和功能，但它应该足以满足大多数通常的需求，如调制、自动化、使用 VST 插件等等。

尽管我没有亲自使用过它，但 Reaper 声称它是高度可定制的，并提供了与各种硬件的良好兼容性。

#### 在 Linux 中安装 Reaper

与其他选择不同，Reaper 提供了一个 tar 包，你需要解压和安装。它包括一个脚本文件。因此，当你解压后，在该文件夹中打开终端或在终端中进入该文件夹，然后用以下命令执行该脚本：

```
./install-reaper.sh

```

当你安装它时，该脚本也会生成一个用于卸载的脚本。所以，在安装时一定要仔细选择文件夹，并确保在需要时能找到它。

在你需要购买它之前，你可以没有任何限制的免费使用它，最长可达 60 天。所以，如果你想在购买 DAW 之前彻底测试一下，我觉得这是一件非常好的事情。

个人使用的费用是 **$60**，如果你需要用于商业用途，则需要 **$225**。

### 总结

不幸的是，找不到太多可用于 Linux 的 DAW 。你可以尝试用 Wine 来运行一些流行的音乐 DAW，但我不确定成功率有多少。

无论是哪种情况，这里提到的这些对于大多数用户来说应该是绰绰有余了。

你喜欢哪种 DAW 用于音乐制作？请在下面的评论中告诉我你的想法。

---

via: <https://itsfoss.com/best-daw-linux/>

作者：[Ankush Das](https://itsfoss.com/author/ankush/) 选题：[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/) 荣誉推出


硬核观察 #473 在 Edge 上下载 Chrome 会弹出警告，还嘲讽 Chrome 是 2008 年的

Summary: 更多：• 地球还有三分之一以上人口从未使用互联网 • Linux 供应商固件服务提供了 4000 万次下载

![](/data/attachment/album/202112/02/182957psw60ere7ormreea.jpg)

### 在 Edge 上下载 Chrome 会弹出警告，嘲讽 Chrome 是 2008 年的

![](/data/attachment/album/202112/02/183008ys2l9729bzjpa8pj.jpg)

当 Windows 11 用户在 Edge 浏览器上尝试安装 Chrome 的时候，微软就会弹出 [一条警告](https://www.neowin.net/news/microsoft-says-its-own-edge-browser-is-more-trustworthy-than-so-2008-google-chrome/)，试图阻止用户下载：“微软 Edge 运行在与 Chrome 相同的技术上，并额外提供来自微软的信任”。在消息中还包括一个名为“现在安全使用浏览器”的按钮，它将用户重定向到一个网页，强调 Edge 的性能、安全和其他优于其他浏览器的优点。甚至有时候微软还会嘲讽说，“这个浏览器还在 2008 年！你知道什么是新浏览器吗？微软的 Edge。”

>
> 老王点评：哈哈哈哈，这种浏览器“大战”也真是服了。
>
>
>

### 地球还有三分之一以上人口从未使用互联网

![](/data/attachment/album/202112/02/183056v2tnanm2mtrcm2cv.jpg)

国际电信联盟的 [数据显示](https://www.itu.int/zh/mediacentre/Pages/PR-2021-11-29-FactsFigures.aspx)，使用过互联网的人数从 2019 年估计的 41 亿猛增到 2021 年的 49 亿，但世界上仍有 37% 的人口（即 29 亿人）从未使用过互联网。即使在被算作“互联网用户"的 49 亿人中，也有数亿人是通过共享设备，或使用明显限制其连接效用的连接速度偶尔得到上网机会。

>
> 老王点评：没想到还有这么多人从未使用过互联网！
>
>
>

### Linux 供应商固件服务提供了 4000 万次下载

![](/data/attachment/album/202112/02/183113wfe747det16d7tls.jpg)

Linux 供应商固件服务通过 `fwupd` 工具向 Linux 用户提供系统和组件的固件文件以刷入闪存，今天它跨越了一个新的 [里程碑](https://www.phoronix.com/scan.php?page=news_item&px=LVFS-40-Million-Downloads)，已经提供了超过 4000 万次的固件文件下载。而在今年 3 月份才刚刚到达 2500 万次。这可能是由于安全问题导致的 BIOS 更新增加，以及更多的 OEM/ODM 加入了进来。该服务目前已经包括来自 121 个供应商的 6,555 个组件，5,583 个固件文件（还有 1,938 个私有文件）。

>
> 老王点评：这个数据很好，但是仍然希望更多的硬件厂商的固件能加入到其中。
>
>
>


Vivaldi 5.0 发布！

Vivaldi的翻译功能有毒，就这么说吧，我现在用的是Vivaldi，它老是想把当前这篇文章翻译成阿尔巴尼亚语

![](/data/attachment/album/202112/03/123416pl0pt3xtzbyxkub1.jpg)

>
> 对于那些喜欢在桌面和安卓系统上进行定制和增加功能的用户来说，Vivaldi 5.0 是一个令人兴奋的版本。
>
>
>

Vivaldi 是一个基于 Chromium 的网页浏览器，可用于 Linux（及其他平台）。它因其增强功能和多任务特性而广为人知。这使它成为 [Linux 上最好的网页浏览器](https://itsfoss.com/best-browsers-ubuntu-linux/#:~:text=Mozilla%20Firefox&text=Firefox%20is%20the%20default%20web%20browser%20for%20most%20Linux%20distributions.) 之一，特别是对于高级用户来说。

随着 Vivaldi 5.0 的发布（以纪念其 5 周年），它推出了一系列重大功能增加和改进。

让我们来看看 Vivaldi 的新版本有什么特点。

### Vivaldi 5.0 的新功能

请注意，Vivaldi 除了其用户界面之外大部分是 [开源](https://vivaldi.com/source/) 的。然而，他们倾向于把重点放在 Linux 平台的改进上肯定是件好事。

以下是你可以在 Vivaldi 5.0 发现的变化：

#### Vivaldi 主题

![致谢：Vivaldi 博客](/data/attachment/album/202112/03/123417wp82bm8p9b8bb85b.png)

主题一直是 Vivaldi 最好的功能之一，不仅仅是因为它有各种预装的主题，而是你可以定制你的主题或编辑预装的主题。

它的主题编辑器已经更新，有更多可以定制的选项。你现在可以编辑颜色、边角、背景和设置来定制主题。以前，你必须单独编辑背景图片，而现在新的主题编辑器应该很方便使用。

而且，并不止于此，你已经创建好了你的主题？

现在，你可以使用新的“<ruby> 导出主题 <rt>  Export Theme </rt></ruby>”选项轻松地生成一个 ZIP 文件，与任何人分享你的主题。同样地，你也可以导入一个主题。

![致谢：Vivaldi 博客](/data/attachment/album/202112/03/123419ormhujm5b9mobnmh.png)

更进一步地，你可以把你新设计的主题提交到他们的 [社区画廊](https://themes.vivaldi.net)。你也可以从那里找到其他用户的主题，并安装它们。

#### 新的翻译面板

在 [Vivaldi 4.0 发布时](https://news.itsfoss.com/vivaldi-4-0-release/)，他们引入了由 [Lingvanex](https://lingvanex.com) 提供的内置翻译功能。

现在，通过侧边栏中新的“<ruby> 翻译面板 <rt>  Translate Panel </rt></ruby>”，你可以快速添加一个文本片段并进行翻译，而无需翻译整个网页。

Vivaldi 的侧面板以提高多任务处理能力而闻名，而这个功能的增加应该会加强这一点。

如果你想翻译更多的片段呢？当然，你肯定不想一直继续复制粘贴它们！

对于这个特殊的需求，Vivaldi 还引入了一个“<ruby> 一步自动翻译 <rt>  one-step auto-translate </rt></ruby>”选项。一旦启用该选项，突出显示你在网页中想要的文本，它的翻译将立即出现在侧面板上。这听起来很酷！

#### 在弹出式窗口中查看下载

![致谢：Vivaldi博客](/data/attachment/album/202112/03/123423uvv1s7uhlsefs1k1.png)

虽然 Vivaldi 在很多方面都令人印象深刻，但对于用户来说，其关注下载进度的能力并不那么直观。你必须到侧面板（或“下载”）中去检查下载的进度。

相比之下，在其他网页浏览器中，你可以在你的扩展程序旁边找到一个按钮。

在 Vivaldi 5.0 中，你终于可以使用地址栏中的一个按钮来检查下载进度，点击该按钮将打开一个弹出窗口来显示你的下载进度。

#### 为安卓用户提供的增强功能

Vivaldi 的安卓版也有了重大更新和期待已久的功能。

安卓用户现在可以使用桌面用户已经在使用的 “<ruby> 两级标签堆栈 <rt>  Two-level Tab Stacks </rt></ruby>”。

也许，这对任何安卓手机浏览器来说都是第一次！

对于那些不知道的人来说，这个功能有助于将标签页组合在一起，产生两级。这有助于避免多个标签挤在一起。

![致谢：Vivaldi](/data/attachment/album/202112/03/123425knzcqvqg4ecj962e.png)

可配置的“<ruby> 标签栏 <rt>  Tab Bar </rt></ruby>”现在多了两个选项。例如，背景标签上用于关闭的“X”按钮可以被移除（为更多的标签腾出空间）。用户还可以将标签简单地显示为收藏夹，因此没有标题，也没有“X”按钮。

因此，你有很多管理你的安卓移动设备上的标签的方法。

虽然这很有趣，但我不太确定对用户来说，在小屏幕上掺杂两级标签堆栈的感觉如何。

平板电脑和 Chromebook 用户也将享受到用户界面更新的待遇。平板电脑和 Chromebook 用户现在可以使用经典的“<ruby> 侧面板 <rt>  Side Panel </rt></ruby>”，以组织浏览器的布局，尽量减少杂乱。

这一功能的增加可以使 Vivaldi 成为平板电脑用户的有力选择。

#### 其他改进

除了关键的亮点之外，你可以发现速度的改进和错误的修复。

要探索更多，你可以查看其 [桌面版](https://vivaldi.com/blog/vivaldi-5-0-desktop-themes-translate-panel/) 和 [安卓版](https://vivaldi.com/blog/vivaldi-on-android-gets-worlds-first-two-rows-of-mobile-browser-tabs/) 的官方博客文章。

### 总结

Vivaldi 无疑是一个会关注其用户需求和网页体验的浏览器。对于喜欢更多定制和功能的用户来说，最新的版本听起来很令人感兴趣。

你可以从官方网站下载可用的 DEB/RPM 包并进行安装。

* [下载 Vivaldi 5.0](https://vivaldi.com/download/)

---

via: <https://news.itsfoss.com/vivaldi-5-0-release/>

作者：[Rishabh Moharir](https://news.itsfoss.com/author/rishabh/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

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


用 Flatpak 在 Linux 上安装应用

Summary: Flatpak 简化了 Linux 上应用的安装。

引入Flatpak，有叠床架屋的感觉，安装和使用上不如appimage简单明了。

来自江西南昌的 Chrome Mobile 65.0|Android 8.1 用户

>
> Flatpak 简化了 Linux 上应用的安装。
>
>
>

![](/data/attachment/album/202112/03/133555dxzijlzjp0ibglk0.jpg "Flatpak")

计算机应用由许多小文件组成，它们被链接在一起以执行一系列的任务。因为它们以“应用”的形式出现，在菜单或桌面上有彩色的图标，我们大多数人认为应用是一个单一的、几乎是有形的东西。在某种程度上，这样想是令人欣慰的，因为它们感觉是可以管理的。如果一个应用实际上是散落在你的计算机上的数百个小库和资源文件的组合，那么应用在哪里？撇开存在危机不谈，当一个应用需要一个版本的库，而另一个应用需要一个不同的版本时，会发生什么？

在云计算的世界里，[容器](https://opensource.com/article/21/7/linux-podman) 正变得越来越流行，因为它们为应用提供了隔离和整合。你可以在一个“容器”中安装一个应用需要的所有文件。这样一来，它的库就不会受到其他应用的影响，它所占用的内存也不会将数据泄露到另一个内存空间。所有的东西最后都感觉非常像一个单一的、几乎是 *有形的* 东西。在 Linux 桌面上，提供了类似的技术的 Flatpak，是一个跨发行版、无守护进程、去中心化的应用交付系统。

### 在 Linux 上安装 Flatpak

你的 Linux 系统可能已经安装了 Flatpak。如果没有，你可以从你的包管理器中安装它：

在 Fedora、Mageia 和类似的发行版上：

```
$ sudo dnf install flatpak

```

在 Elementary、Mint 和其他基于 Debian 的发行版上：

```
$ sudo apt install flatpak

```

在 Slackware 上，Flatpak 可以从 [SlackBuilds.org](http://slackbuilds.org) 获得。

### 选择一个 Flatpak 仓库

你可以通过在你的发行版的软件中心（如 GNOME 上的“软件”）添加一个 Flatpak 仓库，将一个应用安装为 Flatpak。Flatpak 是一个去中心化的系统，意味着任何开发软件的人都可以托管他们自己的仓库。尽管如此，在实践中，[Flathub](http://flathub.org) 是 Flatpak 格式的最大和最流行的应用集合。要将 Flathub 添加到 GNOME “<ruby> 软件 <rt>  Software </rt></ruby>” 或者 KDE “<ruby> 发现 <rt>  Discover </rt></ruby>” 中，请浏览 <https://flatpak.org/setup> ，找到适合你的发行版的说明，从第二步开始，或者直接下载 [Flatpakrepo](https://flathub.org/repo/flathub.flatpakrepo) 文件。根据你的网络情况，你的软件中心可能需要几分钟的时间来与 Flathub（或另一个 Flatpak 仓库）同步。Flathub 有很多软件，但你的系统上有多少个 Flatpak 仓库是没有限制的，所以如果你发现一个有你想尝试的软件，不要害怕添加一个新的仓库。

![Software Repositories](/data/attachment/album/202112/03/133602cdu2u90t0pbd2z9k.jpg "Software Repositories")

如果你喜欢在终端工作，你可以用 `flatpak` 命令直接添加到仓库：

```
$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

```

### 安装一个应用

只要你在软件中心添加了 Flatpak 仓库，你就可以像往常一样浏览应用了。

![GNOME Software](/data/attachment/album/202112/03/133603fkh6o67i2rpokwh2.jpg "GNOME Software")

点击一个看起来很吸引人的应用，阅读它，当你准备好时点击**安装**按钮。

### 在终端中安装 flatpak

如果你喜欢在终端工作，你可以把 Flatpak 当作一个专门的包管理器。你可以使用 `flatpak search` 命令来搜索一个应用程序：

```
$ flatpak search paint
Name        Description                         Application ID
CorePaint   A simple painting tool              org.cubocore.CorePaint
Pinta       Edit images and paint digitally     com.github.PintaProject.Pinta
Glimpse     Create images and edit photographs  org.glimpse_editor.Glimpse
Tux Paint   A drawing program for children      org.tuxpaint.Tuxpaint
Krita       Digital Painting, Creative Freedom  org.kde.krita

```

用 `flatpak install` 安装：

```
$ flatpak install krita

```

安装后，应用就会与系统中的所有其他应用一起出现在你的应用菜单或活动页上。

### 应用变得简单

Flatpak 通过消除版本冲突，可以使用户轻松安装应用。他们通过在自托管的平台或像 Flathub 这样的公共平台上只需要针对一种软件包格式提供应用，使分发软件变得简单。我在 Fedora Silverblue、CentOS 和 Slackware 上使用 Flatpak，我无法想象现在没有它的生活。在你的下一个应用安装中试试 Flatpak 吧！

---

via: <https://opensource.com/article/21/11/install-flatpak-linux>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[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/) 荣誉推出


硬核观察 #474 微软在利用 DNA 作为数据存储的探索中取得了突破

Summary: 更多：• DeepMind 的 AI 帮助发现新猜想和定理 • “笑哭?” 是 2021 年使用最多的表情符

储存密度越大，读写越慢

![](/data/attachment/album/202112/03/150127qm3tov0ix3r0j3xo.jpg)

### 微软在利用 DNA 作为数据存储的探索中取得了突破

![](/data/attachment/album/202112/03/150140e0lk2zo77l14314s.jpg)

微软与华盛顿大学的分子信息系统实验室在 DNA 存储方面进行合作研究，发表的一篇新的研究论文 [宣布](https://gizmodo.com/microsoft-makes-breakthrough-in-the-quest-to-use-dna-as-1848149522) 了第一个纳米级 DNA 存储写入器，可达到每平方厘米 25 \* 10^6 个序列的 DNA 写入密度，比之前提高了三个数量级。这一点特别重要的是，它是实现 DNA 存储所需最低写入速度的第一个突破迹象。找到提高写入速度的方法可以解决 DNA 存储的两个主要问题之一（另一个是成本）。

据称，DNA 的密度能够在每平方英寸内存储 1 EB（即 10 亿 GB）。据 IDC 预测，到 2024 年，全球数据存储需求将达到 9 ZB（即 1 万 EB），如果使用 DNA 来存储，只需要一个冰箱大小的空间。而且使用 DNA 可以存储数千年，而磁带只能存储几十年。

>
> 老王点评：技术的突破只能感慨一句，日新月异。
>
>
>

### DeepMind 的 AI 帮助发现新猜想和定理

![](/data/attachment/album/202112/03/150158a59p3pqeixfx7aqt.jpg)

从 1960 年代开始，数学家开始使用计算机帮助发现规律和提出猜想，但还没有使用 AI 技术。DeepMind 和数学家们一起建立了一个 [机器学习框架](https://www.nature.com/articles/d41586-021-03593-1)，用于协助数学研究。他们的算法搜索数学对象间潜在的规律和联系，尝试寻找意义。其后由数学家接手，利用这些观察来引导他们对潜在猜想的直觉。他们将机器学习框架这一方法应用于两个纯数学领域，发现了拓扑学的一个新定理，以及一个代数表示论的新猜想。

>
> 老王点评：或许将来 AI 能独立发现并证明新的定理了。
>
>
>

### “笑哭?” 是 2021 年使用最多的表情符

![](/data/attachment/album/202112/03/150213uiyts4ks4ft1t48f.jpg)

Unicode 联盟统计发现“笑哭?”表情符号占所有表情符号使用量的 5% 以上，其次是“红色爱心❤”表情符号。不过在过去几年里，[最受欢迎](https://home.unicode.org/emoji/emoji-frequency/) 的表情符号没有什么变化。如果按类别细分表情符号，那么派对烟花?是最受欢迎的活动表情符号，火?是最受欢迎的天气表情符号，而最受欢迎的植物表情符号是玫瑰?。蝴蝶?是使用最多的昆虫表情符号，而兔脸?是使用最多的哺乳动物表情符号。在服装表情符号中，皇冠?是最受欢迎的，而生日蛋糕?是迄今为止最受欢迎的甜食表情符号。热饮☕是最受欢迎的饮料表情符号，而在水果类别中，草莓?占据了首位。

>
> 老王点评：如果说早期的字符表情 :> 代表了人们在文字中表达感情的需求，而表情符更是将这一需求表达的淋漓尽致。而我最喜欢用这个斜着的笑哭?。
>
>
>

### 一句话回音

* 为了避免被 [诉讼](/article-13943-1.html)，美国前总统特朗普的社交媒体网站正在 [悄悄承认](https://www.pcmag.com/news/trumps-social-media-site-quietly-admits-its-based-on-mastodon) 为该平台提供动力的计算机代码来自 Mastodon，但还没有按照许可证公开其修改后的代码。


5 个去谷歌化的安卓操作系统

Summary: 让你的智能手机摆脱谷歌和其他科技巨头。

让你的智能手机摆脱谷歌和其他科技巨头。

![](/data/attachment/album/202112/04/143224d46wb5bqsw7xbsw7.jpg)

>
> 让你的智能手机摆脱谷歌和其他科技巨头。
>
>
>

随着谷歌和 Facebook 等广告巨头对你的个人和私密设备（如手机和平板电脑）的监控不断增加，现在是时候处理这个问题了。

最有效的方法之一是安装注重隐私/安全的安卓 ROM。

你可能想知道，为什么要在你的手机上安装一个与预装系统不同的、基于安卓的操作系统。让我给你几个理由：

* 你的手机制造商与 Facebook 等实体合作，[在你的手机上预装了各种应用程序](https://9to5google.com/2020/08/05/oneplus-phones-will-ship-with-facebook-services-that-cant-be-removed/)，仅仅是卸载这些应用程序可能无法摆脱它们（当操作系统有新的更新时，它们往往会被重新安装）。
* 通常，安卓设备制造商会提供三到四年的更新。其中大部分仅限于各种奇怪的安全补丁，以及一些安卓系统的升级。使用定制 ROM，你可以通过接收更多更新来延长设备的使用寿命。
* 由于这些现成的安卓 ROM 除了必要的东西外没有捆绑任何东西，你的手机不会太臃肿，反应更敏捷。
* 较少的预装软件也意味着在后台运行的服务较少，从而可提升性能并延长电池使用时间。
* 大量的定制选项。
* 容易回滚更新（因为以前的版本在 ROM 的网站上可以找到）。

>
> **警告**
>
>
> 如果你决定在实际设备上使用这些操作系统之一，请小心。在你的设备上刷入任何第三方 ROM 将使其保修失效，如果操作不当，甚至可能使你的设备失去作用。安装定制的 ROM 也需要一定的专业知识，即使如此，你也可能遇到问题，特别是如果你选择的操作系统不支持该设备。对你的设备造成的任何损害，我们概不负责。
>
>
>

参考了上述重要信息之后，如果你仍想进行实验，我们建议你始终在备用设备上进行尝试。

除此之外，你还应该记住以下几点：

* 安装自定义的安卓 ROM 可以增强开箱即用的安全性。但是，你必须确保自己采取了必要的措施。
* 你手机的所有硬件功能可能在定制 ROM 上不工作。
* 解锁引导加载程序是一个必要步骤，但这样做可能会带来安全问题。

这个列表特别关注基于安卓的发行版和定制 ROM。我们有一个另外单独的 [开源移动操作系统](https://itsfoss.com/open-source-alternatives-android/) 列表，包括 Ubuntu Touch 和 PureOS 等选项。

注：名单排名不分先后。你应该选择更多地了解所提到的选项，并决定什么最适合你。

### 1、LineageOS

![Lineage OS 用户界面的几张截图](/data/attachment/album/202112/04/143239c5uutworurr9tx5o.jpg)

[LineageOS](https://lineageos.org/) 可以说是最受欢迎的安卓 ROM 之一，它是非常流行的（[但自 2016 年以来已经消亡](https://www.androidauthority.com/cyanogenmod-lineageos-654810/)]）的 CyanogenMod 的一个复刻。由于 LineageOS 很流行，你可能会发现很多设备支持该操作系统。

换句话说，与其他定制安卓 ROM 相比，你可以更快地获得对新设备的支持，以及对各种旧设备的支持。

如果你有的话，LineageOS 甚至支持你的 Nvidia Shield 电视机和 Jetson Nano（[用于 AI 和深度学习项目的最佳单板计算机](https://itsfoss.com/best-sbc-for-ai/) 之一）。

* [获取 LineageOS](https://lineageos.org/)

#### 优点

* 优秀的官方和第三方文档
* 支持设备的及时更新
* LineageOS 非常紧跟 AOSP 树（适用于想要最原始安卓体验的人）
* 与原厂固件相比，“预装软件”更少。

#### 缺点

* LineageOS 项目是一个社区项目，所以并非你手机上所有的硬件功能都能开箱即用。
* 没有提供很多开箱即用的安全/隐私功能。

### 2、CalyxOS

![CalyxOS 的主页以及他们的用户界面一瞥](/data/attachment/album/202112/04/143239rteywv45h8xee82o.jpg)

[CalyOS](https://calyxos.org/) 是一个相当有趣的、基于 [安卓开源项目（AOSP）](https://www.androidauthority.com/aosp-explained-1093505/) 的安卓操作系统。CalyxOS 没有提供谷歌移动服务（GMS），而是让用户自己去想办法（可以刷入谷歌应用），但是它提供了 [microG](https://microg.org/)，你可以选择启用/禁用它，从而完全控制你的手机。

CalyxOS 得到了 [Calyx Institute](https://calyxinstitute.org/projects/calyx-os) 的支持，这是一个非营利组织，旨在促进个人权利，如言论自由、隐私权等。

它内置了一些注重隐私的应用程序，如 Signal、Tor 浏览器等。尽管对 CalyxOS 的支持仅限于 Pixel 手机，但在大多数情况下，它为用户提供了大量开箱即用的隐私功能，让用户具有领先优势。

* [获取 CalyxOS](https://calyxos.org/install/)

#### 优点

* 使用 [microG](https://microg.org/)。
* 带有 [F-Droid](https://www.f-droid.org/en/about/) 和 [Aurora 商店](https://auroraoss.com/) 而不是谷歌应用商店。
* Datura 防火墙允许你阻止每个应用程序的互联网访问。
* 使用 [Mozilla 定位服务](https://location.services.mozilla.com/) 而不是谷歌的定位服务。
* 每月一次的在线安全更新。
* 经过验证的启动程序，以提高安全性。
* 开箱即用的以安全为中心的应用程序和功能。

#### 缺点

* 只适用于 Pixel 手机（[但这背后有一个很好的理由](https://calyxos.org/docs/guide/device-support/#requirements-for-supporting-a-new-device)）。

### 3、GrapheneOS

![GrapheneOS 安装在 Pixel 设备上的照片](/data/attachment/album/202112/04/143240jdlwlddaz55l35ay.jpg)

[GrapheneOS](https://grapheneos.org/) 是一个基于安卓的 ROM，专注于安全和隐私。虽然人们可能会争论说，他们的努力更多的是为了提高安全性，但这样做也有利于你的隐私。

如果你想安装带有开箱即用的、特殊安全调整过的定制 ROM，GrapheneOS 应该是一个不错的选择。

与其他一些定制 ROM 不同，它没有包括启用/禁用 microG 的功能，这恰好为依赖于 Google Play 服务的应用程序提供了更好的支持。但是，GrapheneOS 可以 [对 Google Play 服务进行沙箱处理](https://twitter.com/grapheneos/status/1445572173389725709)，这应该可以让你使某些功能正常工作。但是，截至目前，它仍然是实验性的。

* [获取 GrapheneOS](https://grapheneos.org/)

#### 优点

* 提供比 AOSP 更强大、加固过的应用程序沙盒。
* 使用自己 [加固过的 malloc](https://github.com/GrapheneOS/hardened_malloc)（具有加固了安全性的内存分配器）。
* Linux 内核经过了加固，安全性更高。
* 提供及时的安全更新。
* 具备全盘加密功能（对移动设备来说非常重要）。
* 不包括任何谷歌应用程序或谷歌服务。

#### 缺点

* 有限的硬件支持；仅适用于谷歌 Pixels。
* 以安全为中心的调整可能不会转化为对新手友好的用户体验。

### 4、/e/OS

![看一下 /e/OS 中的应用启动器，以及对 /e/OS 的应用商店评级的概述](/data/attachment/album/202112/04/143241q1ezwh4hm5mq1ikl.png)

你可能认为 [/e/OS](https://e.foundation/e-os/) 只不过是又一个安卓操作系统，这 *一定程度上* 是对的。先别急着否定这个安卓 ROM。它远超于任何现成的基于安卓的操作系统。

最大的特点是 [eFoundation](https://e.foundation/)（在 /e/OS 背后的基金会）为你提供了一个免费的 [ecould 账户](https://e.foundation/ecloud/)（有 1GB 的存储空间），而不需要使用谷歌账户。

像任何尊重隐私的安卓 ROM 一样，/e/OS 将每一个与谷歌相关的模块或应用都替换成了自由软件替代品。

旁注：eFoundation 也销售预装了 /e/OS 的手机。[请看这里](https://esolutions.shop/)。

* [获取 /e/OS](https://e.foundation/e-os/)

#### 优点

* /e/OS 上的应用程序商店根据需要的权限以及对隐私的友好程度来对应用程序进行评级。
* 提供了一个 [ecloud 账户](https://e.foundation/ecloud/)（带有 @e.email 后缀；免费级提供 1GB）作为同步账户。
* 配备了 [microG](https://microg.org/) 框架。
* 谷歌 DNS 服务器（8.8.8.8 和 8.8.4.4）被替换为 [Quad9](https://www.quad9.net/) 的 DNS 服务器。
* DuckDuckGo 是替代谷歌的默认搜索引擎。
* 使用由 [Mozilla](https://location.services.mozilla.com/) 提供的位置服务。

#### 缺点

* 设备兼容性非常有限。
* 从安卓系统推出新功能需要一段时间。

### 5、CopperheadOS

![CopperheadOS 网站上关于手机安全和隐私的标语](/data/attachment/album/202112/04/143241q0pucrxgeqhcxpr6.jpg)

>
> **警告**
>
>
> 这不是一个开源项目。列在这里只是为感兴趣的用户提供的附加选项。
>
>
>

[CopperheadOS](https://copperhead.co/) 是另一个有趣的安卓 ROM。它是由一个只有两个人的团队开发的。

与其他选项不同，CopperheadOS 不是开源项目，你可能无法在你的手机上使用它。

它面向企业部署。因此，如果你想为你的员工购买安卓设备并调整安全性，那么这值得考虑。

* [获得 CopperheadOS](https://copperhead.co/android/docs/install/)

#### 优点

* 与其他安卓 ROM 文档相比 [更优良的文档](https://copperhead.co/android/docs/)。
* CopperheadOS 在 AOSP 之前就有许多面向安全的功能。
* 使用 Cloudfare DNS（1.1.1.1 和 1.0.0.1）而不是谷歌的 DNS（8.8.8.8 和 8.8.4.4）。
* 包括一个用于控制每个应用程序权限的互联网防火墙。
* 使用开源应用程序，而不是过时的 AOSP 应用程序（日历、短信、画廊等）。
* 包括 [F-Droid](https://www.f-droid.org/en/about/) 和 [Aurora 应用商店](https://auroraoss.com/)。

#### 缺点

* [在主要的开发者出走之后](https://twitter.com/DanielMicay/status/1068641901157511168)，CopperheadOS 的安全性存在质疑 。
* 仅适用于预装 CopperheadOS 的手机。
* 没有迹象表明 SafetyNet 会在 CopperheadOS 上工作。

### 荣誉提名：LineageOS for microG

![LineageOS for microG 中包含的应用程序列表](/data/attachment/album/202112/04/143242wcw5cn7m3358ly57.jpg)

[LineageOS for microG](https://lineage.microg.org/) 项目是官方 LineageOS 项目的一个复刻，默认包含 [microG](https://microg.org/) 和谷歌应用。这个项目负责确保 microG 在你的手机上完美运行（这对初学者来说可能是一个复杂的过程）。

* [获取 LineageOS for MicroG](https://download.lineage.microg.org/)

#### 优点

* 提供了 GMS 的 microG 实现，没有任何不便之处。
* 提供 [F-Droid](https://www.f-droid.org/en/about/) 作为默认的应用商店。
* 提供每周/每月一次的在线更新。
* 可以选择使用由 [Mozilla](https://location.services.mozilla.com/) 或 [Nominatim](https://nominatim.org/) 提供的定位服务。

#### 缺点

* 启用签名欺骗以启用 microG 支持，从安全角度来看，可能是一个攻击方向。
* 尽管这个 ROM 是基于 LineageOS 的，但在写这篇文章时，并不是所有的 LineageOS 设备都支持。
* 包括谷歌应用程序，而不是提供开源的替代品。
* 无法确认谷歌的 SafetyNet 是否工作。

### 附加信息

你可能想知道为什么一些有趣的基于安卓的 ROM（CalyxOS、GrapheneOS 等）只限于支持谷歌的手机。这不是很讽刺吗？

嗯，这是因为大多数手机都支持解锁引导器，但只有谷歌 Pixels 支持再次锁定引导器。当你为关注隐私和/或安全的人群开发基于安卓的 ROM 时，这是一个考虑因素。如果启动器被解锁，它就是一个你尚未修补的攻击方向。

另一个具有讽刺意味的原因是，只有谷歌才及时向公众提供他们手机的设备树和内核源代码。如果没有设备树和内核源代码，你就无法为该手机开发 ROM。

无论你选择何种 ROM，我都会推荐以下 FOSS 应用程序。它们将被证明是对你的隐私友好应用程序工具包的一个很好的补充。

* [Signal Messenger](https://signal.org/)
* [K-9 邮件](https://k9mail.app/)
* [DuckDuckGo 浏览器](https://duckduckgo.com/app)
* [Tor 浏览器](https://www.torproject.org/)。
* [F-Droid](https://www.f-droid.org/en/about/)
* [Aurora 商店](https://auroraoss.com/)
* [OpenKeychain](https://www.openkeychain.org/)

### 总结

在我看来，如果你有一部谷歌 Pixel 手机，我建议你尝试一下 CalyxOS、GrapheneOS 或 CopperheadOS。这些安卓 ROM 有出色的功能，可以帮助你的手机远离谷歌的监视，同时还可以让你的手机（可以说是）更加安全。

如果你没有谷歌 Pixel，你仍然可以尝试一下 LineageOS for MicroG。这是一项很好的社区贡献，在不侵犯你的隐私的情况下，它把谷歌的专有功能带给大众。

如果你的手机不被上述任何一个操作系统支持，那么 LineageOS 就是你的朋友。由于它对手机的支持广泛，毫无疑问，无论是官方还是非官方，你的手机都可以得到支持。

---

via: <https://itsfoss.com/android-distributions-roms/>

作者：[Pratham Patel](https://itsfoss.com/author/pratham/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

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


如何在 Ubuntu 和其他 Linux 上安装 Apache Cassandra

Summary: Apache Cassandra 是一个自由开源的 NoSQL 数据库管理系统，用于在许多服务器上操作大量信息，提供无单点故障的高可用性。

![](/data/attachment/album/202112/04/151942ihpizylzk0i3pt0i.jpg)

[Apache Cassandra](https://cassandra.apache.org/_/index.html) 是一个自由开源的 NoSQL 数据库管理系统，用于在许多服务器上操作大量信息，提供无单点故障的高可用性。

我不打算讨论 NoSQL 数据库的细节。我将会告诉你如何在基于 Ubuntu 的 Linux 发行版上安装 Apache Cassandra。

请注意，这更多是为了实践。

### 在 Linux 上安装 Apache Cassandra

有多种方法可以在 Ubuntu 和其他 Linux 发行版上安装 Cassandra：

* 使用 Apache 的官方 deb 仓库安装：适合并推荐给基于 Debian 和 Ubuntu 的发行版。如果有更新的版本，会得到自动更新。
* 使用 Docker 安装：适用于所有 Linux 发行版。
* 从 tarball 安装：适用于所有 Linux，但不会自动更新到新版本。

这仅仅是为了练习和体验 Apache Cassandra。如果你要在一个项目中使用它和其他服务，你必须遵循该服务的完整配置和设置指南。

我将展示前两种方法。

#### 方法 1：使用官方仓库在 Ubuntu 和 Debian 上安装 Cassandra

在你安装和使用 Cassandra 之前，你需要在你的系统上安装 Python 和 Java。你可能需要 [在 Ubuntu 上安装 Java](https://itsfoss.com/install-java-ubuntu/)，但 Python 通常是预装的。

你可以用下面这行来检查先决条件：

```
java -version && python --version

```

所有先决条件都安装好了？那就好。让我们来安装 Cassandra。这里的方法与 [在 Ubuntu 中添加任意外部仓库](https://itsfoss.com/adding-external-repositories-ubuntu/) 相同。

首先，将 Apache Cassandra 仓库添加到你的源列表中。下面这个添加最新的主要版本（在写这篇文章的时候）4.0 系列。

```
echo "deb http://www.apache.org/dist/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list

```

![Add Apache Cassandra repository](/data/attachment/album/202112/04/152044finw2ccwbw6k2cgw.png)

现在，下载并将 Apache Cassandra 仓库的密钥添加到服务器上的受信任密钥列表中。这样，你的系统就会信任来自你在上一步添加的仓库的软件包。

你应该确保 `apt` 可以通过 https 使用。

```
sudo apt install apt-transport-https

```

然后添加密钥：

```
wget https://www.apache.org/dist/cassandra/KEYS && sudo apt-key add KEYS

```

![Add Apache Cassandra repository key](/data/attachment/album/202112/04/152045vxulruzhrljzrigl.png)

你已经添加了仓库。更新本地缓存，使你的系统知道这个新仓库的存在。

```
sudo apt update

```

最后，用以下命令安装 Cassandra：

```
sudo apt install cassandra

```

![Installing Apache Cassandra on Ubuntu](/data/attachment/album/202112/04/152045ddlpwv9xpxzyiv5l.png)

安装完成后，Cassandra 服务会自动开始运行。如果你想的话，你仍然可以验证它：

```
sudo systemctl status cassandra.service

```

![Check if Cassandra is running](/data/attachment/album/202112/04/152046evhex7bux0ep0fbn.png)

你可以输入 `cqlsh` 连接到数据库。输入 `exit` 来退出这个 shell。

![Entering cqlsh](/data/attachment/album/202112/04/152046dztbntmrnz66a4tx.png)

这是非常基本和默认的设置。你可能需要根据你的需求来配置它。请查看 [官方文档中的配置部分](https://cassandra.apache.org/doc/latest/cassandra/getting_started/configuring.html)。

#### 方法 2：使用 Docker 安装 Apache Cassandra

这个方法适用于任何 Linux 发行版，只要你打算在 Docker 设置中使用它。

当然，你需要在你的系统上安装 Docker 来实现这个方法。这是这个方法的前提条件，我让你处理这件事情。

如果你有 Docker，使用下面的命令来拉取 Apache Cassandra 的 Docker 镜像：

```
sudo docker pull cassandra:latest

```

![Pulling Apache Cassandra docker image](/data/attachment/album/202112/04/152046swkwzc0zrczswxr0.png)

完成后，你可以用 [docker run 命令](https://linuxhandbook.com/docker-run-vs-start-vs-create/)来启动 Cassandra，像这样：

```
sudo docker run --name cass_cluster cassandra:latest

```

![Running Cassandra in a container](/data/attachment/album/202112/04/152047xnahi625am9vi6z6.png)

**注意：** `--name` 选项指的是创建的 Cassandra 集群的名称。

要与之前启动的 Cassandra 节点交互，你需要初始化 CQL shell，你可以用 Docker `exec` 命令这样做：

```
sudo docker exec -it cass_cluster cqlsh

```

![Access the cqlsh running in Docker.](/data/attachment/album/202112/04/152047b9w7977af7xsvahs.png)

**恭喜！** 现在你至少知道了在你的系统中安装 Apache Cassandra 的两种不同方法。

请记住，这篇文章只是一个介绍。如果你有兴趣了解更多关于 Apache Cassandra 的信息，请阅读 [文档](https://cassandra.apache.org/doc/latest/index.html)，在那里你可以找到更多关于这个神奇的 NoSQL 数据库管理系统的信息。如果这篇文章对你有帮助，请阅读并分享它。下一篇见。

---

via: <https://itsfoss.com/apache-cassandra-ubuntu/>

作者：[Marco Carmona](https://itsfoss.com/author/marco/) 选题：[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/) 荣誉推出


硬核观察 #475 微软撤销 Windows 11 中对改变默认浏览器的阻碍

Summary: 更多：• 量子计算云平台上线“祖冲之二号”同款量子计算指令集 • 苹果的 AirTag 被盗贼用来追踪盗窃高端汽车

大概已经有15年不在自己的电脑上安装windows系统了！！！从Fedora16 以后开始使用Debian Gnu/Linux，感觉还行。。。选在Debian Gnu/Linux最大的原因就是它的全组件ISO带给我的方便。我觉得自己比一般用户稍微知道的多一点，但比真正的开发人员知道的少一点。开发阶段的玩意用起来还是有一些难度，但很多其它版本的软件库依赖又没有Debian Gnu/Linux来的全，有些软件依赖问题很难搞。Debian Gnu/Linux正好在这两方面我觉得确实解决了很多我的现实问题。全套组件在手避免了很多网络不确定性带来的问题，比如源地址更换等等带来的折腾

挑战用户体验的下线，没多少人反馈的话，就继续挑战下一个下线

来自223.104.111.50的 Chrome Mobile 96.0|Android 11 用户

![](/data/attachment/album/202112/04/174333d7uzfsxoe3oi97fv.jpg)

### 微软撤销 Windows 11 中对改变默认浏览器的阻碍

![](/data/attachment/album/202112/04/174342wfh1ufr33fanklpr.jpg)

Windows 11 的新测试版本现在 [允许](https://www.theverge.com/2021/12/3/22815209/microsoft-windows-11-default-browser-button-changes) Chrome、Firefox 和其他浏览器的用户通过一个按钮来设置默认浏览器，这是一个简单得多的过程。之前人们必须手动去改变 HTTP、HTTPS、.HTML 和 .HTM 等单个文件扩展名或协议的处理程序，微软也曾经 [阻止](/article-13982-1.html) [浏览器](/article-13784-1.html) 和拦截器拦截 URL 访问的努力。微软已经确认这些变化是有意为之，目前正在测试中。

>
> 老王点评：看到微软听取了围绕其 Windows 11 变化的批评和反馈，这还是令人鼓舞的。
>
>
>

### 量子计算云平台上线“祖冲之二号”同款量子计算指令集

![](/data/attachment/album/202112/04/174407ltq1ioi2gol7lg2n.jpg)

据 [报道](https://www.thepaper.cn/newsDetail_forward_15674644)，中科院旗下的量子计算云平台公布了用于量子计算物理系统远程调控的指令集 QCIS，支持用户在真实量子计算原型机上进行“云端”量子编程实验。目前全球量子云平台广泛使用的是面向原始物理系统的 QASM 指令集。而此次量子计算云平台发布的是 QCIS 指令集，是对量子门的抽象表达。据了解，QCIS 指令集也是超导量子计算机“祖冲之二号”的编译语言，本次为首次对外开放。今年 10 月，“祖冲之二号” 实现 “量子计算优越性”，使得中国成为唯一在光量子和超导量子两条技术路线上实现“量子计算优越性”的国家。

>
> 老王点评：为量子计算找到更多使用场景，才是推动量子计算发展的动力。
>
>
>

### 苹果的 AirTag 被盗贼用来追踪盗窃高端汽车

![](/data/attachment/album/202112/04/174422l5ax5cx0k44khh5y.jpg)

加拿大警方透露，在过去的三个月里，他们已经调查了五起 [汽车盗窃事件](https://arstechnica.com/cars/2021/12/apple-airtags-being-used-by-thieves-to-track-high-end-cars-to-steal/)，小偷在停在公共场所的车辆上隐藏了 AirTag。之后，窃贼追踪到目标，在闲暇时偷走了汽车。AirTag 通过与广泛的苹果设备上的 Find My 应用通讯，这使得通过 AirTag 远程追踪某物通常比 Tile 等对手设备更快、更准确。不过，苹果也在 AirTag 中建立了一些反跟踪功能，如果你的苹果设备检测到你被一个陌生的 AirTag 设备跟踪，它就会提醒你。

>
> 老王点评：要想防御被恶意的 AirTag 跟踪，看来你得有个新的 iPhone。
>
>
>


13 个 Linux 桌面的最佳深色 GTK 主题

Summary: 我们在过去曾介绍过 最佳 Linux 主题，但这一篇是专门介绍深色主题的。

我们在过去曾介绍过 最佳 Linux 主题，但这一篇是专门介绍深色主题的。

![](/data/attachment/album/202112/05/110404dh7d463771gn6833.jpg)

在任何的 Linux 发行版上，你都有近乎无限的定制选项，在视觉上最明显的区别就是定制的主题。让我们来看看一些具有深色模式的 GTK 主题。

是的，我们在过去曾介绍过 [最佳 Linux 主题](https://itsfoss.com/best-gtk-themes/)，但这一篇是专门介绍深色主题的。曾几何时，只有程序员和系统管理员喜欢深色模式，但现在已经不是这样了。深色模式也受到了普通人的喜爱，因此我为像你这样的 Linux 桌面用户编制了这个深色主题列表。

如果你不熟悉设置桌面环境的主题，你可以看看我们的 [在 GNOME 中安装主题](https://itsfoss.com/install-switch-themes-gnome-shell/) 指南。

本文仅供参考，这并不是一个排名列表。

### 1、McMojave

![The stock image of how McMojave looks ](/data/attachment/album/202112/05/110412vyy2h2my6bz5d33d.jpg)

[McMojave](https://github.com/vinceliuice/Mojave-gtk-theme) 是一个 GTK 主题，其灵感来自于 macOS 风格的用户界面。显然这个主题是提供给深色模式的，但它也有浅色模式，嗯……，提供给任何可能想要它的人。

McMojave GTK 主题显然支持基于 GTK 的桌面环境，如 Pantheon、Gnome、XFCE、Mate 等。但是，这个主题也 [适用于 KDE 用户](https://github.com/vinceliuice/McMojave-kde)。

为了让你的桌面环境看起来与 macOS 非常相似，你还可以安装 [McMojave 圆形图标主题](https://github.com/vinceliuice/McMojave-circle) 以获得更完整的体验。

### 2、Yaru

![A screenshot of the default Yaru theme on Ubuntu 21.10](/data/attachment/album/202112/05/110412d85kbbe5de11e4dr.jpg)

[Yaru](https://github.com/ubuntu/yaru) 是 [Ubuntu](https://ubuntu.com/) 的默认 GTK（GNOME）主题。该主题的深灰色点缀着橙色，及少许黑色让我觉得很有吸引力。

现在，你可以让 Arch Linux 上的 GNOME 看起来像 Ubuntu。( ͡° ͜ʖ ͡°)

### 3、Pop

![A look at how the Pop GTK theme looks on Pop!_OS](/data/attachment/album/202112/05/110412n796c0fmbfvhdtkb.jpg)

[Pop GTK 主题](https://github.com/pop-os/gtk-theme) 是由 [System76](https://system76.com/) 为他们基于 Ubuntu 的 Linux 发行版 [Pop!\_OS](https://pop.system76.com/) 创建的主题。

如果你喜欢 System76 对 GNOME 在深色模式下的表现，你可以在你选择的 Linux 发行版中试用 [Pop GTK 主题](https://github.com/pop-os/gtk-theme)。

如果想获得完整的 Pop-esque 的外观和感觉，在安装主题的同时，还可以安装 System76 提供的 [Pop 图标](https://github.com/pop-os/icon-theme)。

### 4、Nordic

![Nordic GTK theme preview](/data/attachment/album/202112/05/110412bbmobm4mynb4mo6t.jpg)

你是一个喜欢简单的、有点扁平化的设计方法以及一些灰色或更多灰色的人吗？不妨看看这个基于 [北欧风调色板](https://github.com/arcticicestudio/nord) 的主题。

[Nordic](https://github.com/EliverLara/Nordic) GTK 主题给你的正是这样的感觉。一个基于北欧风调色板的 GTK 主题，设计简单。

### 5、Ultimate-Maia

![Stock screenshot of the Ultimate-Maia theme](/data/attachment/album/202112/05/110413uddqzr95gg0d0d5v.jpg)

[Ultimate-Maia](https://github.com/bolimage/Ultimate-Maia) 是一个基于 [Google 的 Material 主题](https://material.io/) 设计理念的 GTK 主题。这个主题有一个精细而独特的外观和感觉，特别是有各种不同的强调色可供选择。

### 6、Graphite

![A look at Graphite’s flat, rounded and gray characteristic](/data/attachment/album/202112/05/110413d6j6jnpjmmsl3zff.jpg)

[Graphite](https://github.com/vinceliuice/Graphite-gtk-theme) 是一个 GTK 主题，它为你的桌面环境（尤其是 GNOME）提供了一个完全独特的外观，同时保持了你的桌面环境的独特性，就像以前一样。这是一个值得一看的东西。

### 7、Qogir

![Customization options available with Qogir GTK theme](/data/attachment/album/202112/05/110413e7u948iucju9nanu.jpg)

[Qogir](https://github.com/vinceliuice/Qogir-theme) 是一个采用了扁平化设计的 GTK 主题。Qogir 主题为你提供的不仅仅是标题按钮、复选框、单选按钮、开关等自定义选项。

### 8、Layan

![Lyan – A very rounded-corners GTK theme](/data/attachment/album/202112/05/110413f12429hkmnoo1r1h.jpg)

你会很高兴知道，这个列表中还包括 [Layan](https://github.com/vinceliuice/Layan-gtk-theme)，这是一个强调平滑、圆角的 GTK 主题，带有气泡的美感。Layan 主题也继承了 [Google 的 Material 设计](https://material.io/) 指导方针的设计理念。

### 9、Juno

![](/data/attachment/album/202112/05/110414h1pu9oiri99p4ipo.jpg)

[Juno](https://github.com/EliverLara/Juno) 是我发现的另一个最好的对深色模式友好的 GTK 主题之一。有些人可能喜欢它的漆黑本质，有些人可能不喜欢。但是，如果你有一台 OLED 笔记本或电脑显示屏，Juno 感觉是为你而生的。

### 10、Ant 主题

![Ant themes’ available options for customization of window appearance](/data/attachment/album/202112/05/110414yfo8nikjo1ffha0a.jpg)

[Ant](https://github.com/EliverLara/Ant) 是一个 GTK 主题，它从 macOS 的布局和用户界面元素中获得了一些灵感，在我看来，Ant 主题很好地实现了这一切。

### 11、Equilux

![](/data/attachment/album/202112/05/110414mtjjjqnjjt9k9qn5.jpg)

[Equilux](https://github.com/ddnexus/equilux-theme) 主题给你一个漂亮的主题，带有精细的深色模式。这个主题能很好地与 GNOME 及 GNOME 的复刻融合在一起。我不会太多地描述这个主题，它简单而优雅。

### 12、Orchis-dark

![Orchis Dark](/data/attachment/album/202112/05/110415qb8ba29lbuqa2bca.jpg)

[Orchis Orchis-dark](https://www.gnome-look.org/s/Gnome/p/1357889) 是超酷的 Orchis 主题的深色变体。它为桌面提供了带有圆角和流畅界面的 iOS/macOS 触感。只需看一眼，你就可以立即猜到。

### 13、Elementary X

![A look at Elementary X GTK theme with the settings panel open](/data/attachment/album/202112/05/110415ara5claaak22zckd.jpg)

[Elementary X](https://github.com/surajmandalcell/elementary-x) 是基于 [elementary OS](https://elementary.io/) 团队为定制 GNOME 外观而开发的 GTK 主题。顺便说一句，elementary OS 是一个基于 Ubuntu 的 Linux 发行版。

### 总结

这篇文章中列出的主题都是非常漂亮的，而且你的选择也不限于这里列出的那些。还有其他成千上万的主题。

如果你喜欢一个主题，请在下面评论。如果你正在使用一个我没有提到的主题，也请留下评论。

---

via: <https://itsfoss.com/dark-gtk-themes/>

作者：[Pratham Patel](https://itsfoss.com/author/pratham/) 选题：[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/) 荣誉推出


如何使用 dig

Summary: 在这篇文章中，我打算不谈 dig 的大部分选项，只谈我实际使用的选项。

在这篇文章中，我打算不谈 dig 的大部分选项，只谈我实际使用的选项。

![](/data/attachment/album/202112/05/192530gj36ttdwz16azu6w.jpg)

你好！最近我和几个朋友聊天，他们提到希望知道如何使用 `dig` 来进行 DNS 查询，所以这是一篇关于它的速读博文。

当我第一次使用 `dig` 时，我发现它有点吓人 —— 有这么多的选项！我打算把大部分的选项省略。在这篇文章中，我打算不谈 `dig` 的大部分选项，只谈我实际使用的选项。

我最近还了解到，你可以设置一个 `.digrc` 配置文件，让它的输出更容易阅读，这让它的使用变得更加轻松。

几年前我还画了一个关于 `dig` 的 [zine 页](https://wizardzines.com/comics/dig/)，但我想写这篇文章来包括更多的信息。

### 两种类型的 dig 参数：查询和格式化

有两种主要的参数可以传递给 `dig`：

1. 告诉 `dig` **要进行什么 DNS 查询的参数**。
2. 告诉 `dig` 如何 **格式化响应的参数**。

首先，让我们看一下查询选项。

### 主要的查询选项

你通常想控制 DNS 查询的 3 件事是：

1. **名称**（如 `jvns.ca`）。默认情况下，查询的是空名称（`.`）。
2. **DNS 查询类型**（如 `A` 或 `CNAME`）。默认是 `A`。
3. 发送查询的 **服务器**（如 `8.8.8.8`）。默认是 `/etc/resolv.conf` 中的内容。

其格式是：

```
dig @server name type

```

这里有几个例子：

* `dig @8.8.8.8 jvns.ca` 向谷歌的公共 DNS 服务器（`8.8.8.8`）查询 `jvns.ca`。
* `dig ns jvns.ca` 对 `jvns.ca` 进行类型为 `NS` 的查询。

### `-x`：进行反向 DNS 查询

我偶尔使用的另一个查询选项是 `-x`，用于进行反向 DNS 查询。下面是输出结果的样子。

```
$ dig -x 172.217.13.174
174.13.217.172.in-addr.arpa. 72888 IN PTR yul03s04-in-f14.1e100.net。

```

`-x` 不是魔术。`dig -x 172.217.13.174` 只是对 `174.13.217.172.in-addr.arpa.` 做了一个 `PTR` 查询。下面是如何在不使用 `-x’ 的情况下进行完全相同的反向 DNS 查询。

```
$ dig ptr 174.13.217.172.in-addr.arpa.
174.13.217.172.in-addr.arpa. 72888 IN PTR yul03s04-in-f14.1e100.net。

```

我总是使用 `-x`，因为它可以减少输入。

### 格式化响应的选项

现在，让我们讨论一下你可以用来格式化响应的参数。

我发现 `dig` 默认格式化 DNS 响应的方式对初学者来说是很难接受的。下面是输出结果的样子：

```
; <<>> DiG 9.16.20 <<>> -r jvns.ca
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28629
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: d87fc3022c0604d60100000061ab74857110b908b274494d (good)
;; QUESTION SECTION:
;jvns.ca.           IN  A

;; ANSWER SECTION:
jvns.ca.        276 IN  A   172.64.80.1

;; Query time: 9 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Dec 04 09:00:37 EST 2021
;; MSG SIZE  rcvd: 80

```

如果你不习惯看这个，你可能需要花点时间来筛选，找到你要找的 IP 地址。而且大多数时候，你只对这个响应中的一行感兴趣（`jvns.ca. 180 IN A 172.64.80.1`）。

下面是我最喜欢的两种方法，可以使 `dig` 的输出更容易管理：

#### 方式 1 : +noall +answer

这告诉 `dig` 只打印 DNS 响应中的“答案”部分的内容。下面是一个查询 `google.com` 的 `NS` 记录的例子：

```
$ dig +noall +answer ns google.com
google.com.     158564  IN  NS  ns4.google.com.
google.com.     158564  IN  NS  ns1.google.com.
google.com.     158564  IN  NS  ns2.google.com.
google.com.     158564  IN  NS  ns3.google.com.

```

这里的格式是：

```
NAME         TTL            TYPE   CONTENT
google.com   158564   IN    NS     ns3.google.com.

```

顺便说一下：如果你曾经想知道 `IN` 是什么意思，它是指“查询类”，代表“<ruby> 互联网 <rt>  internet </rt></ruby>”。它基本上只是上世纪 80、90 年代的遗物，当时还有其他网络与互联网竞争，如“<ruby> 混沌网络 <rt>  chaosnet </rt></ruby>”。

#### 方式 2：+short

这就像 `dig +noall +answer`，但更短：它只显示每条记录的内容。比如说：

```
$ dig +short ns google.com
ns2.google.com.
ns1.google.com.
ns4.google.com.
ns3.google.com.

```

### 你可以在 `digrc` 中设置格式化选项

如果你不喜欢 `dig` 的默认格式（我就不喜欢！），你可以在你的主目录下创建一个 `.digrc` 文件，告诉它默认使用不同的格式。

我非常喜欢 `+noall +answer` 格式，所以我把 `+noall +answer` 放在我的 `~/.digrc` 中。下面是我使用该配置文件运行 `dig jvns.ca` 时的情况。

```
$ dig jvns.ca
jvns.ca.        255在172.64.80.1中

```

这样读起来就容易多了！

如果我想回到所有输出的长格式（我有时会这样做，通常是因为我想看响应的权威部分的记录），我可以通过运行再次得到一个长答案。

```
$ dig +all jvns.ca

```

### dig +trace

我使用的最后一个 `dig` 选项是 `+trace`。`dig +trace` 模仿 DNS 解析器在查找域名时的做法 —— 它从根域名服务器开始，然后查询下一级域名服务器（如 `.com`），以此类推，直到到达该域名的权威域名服务器。因此，它将进行大约 30 次 DNS 查询。（我用 `tcpdump` 检查了一下，对于每个根域名服务器的 `A` / `AAAA` 记录它似乎要进行 2 次查询，所以这已经是 26 次查询了。我不太清楚它为什么这样做，因为它应该已经有了这些 IP 的硬编码，但它确实如此。）

我发现这对了解 DNS 的工作原理很有用，但我不认为我用它解决过问题。

### 为什么要用 dig

尽管有一些更简单的工具来进行 DNS 查询（如 `dog` 和 `host`），我发现自己还是坚持使用 `dig`。

我喜欢 `dig` 的地方实际上也是我 **不喜欢** `dig` 的地方 —— 它显示了大量的细节！

我知道，如果我运行 `dig +all`，它将显示 DNS 响应的所有部分。例如，让我们查询 `jvns.ca` 的一个根名称服务器。响应有 3 个部分，我可能会关心：回答部分、权威部分和附加部分。

```
$ dig @h.root-servers.net. jvns.ca +all
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18229
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;jvns.ca.           IN  A

;; AUTHORITY SECTION:
ca.         172800  IN  NS  c.ca-servers.ca.
ca.         172800  IN  NS  j.ca-servers.ca.
ca.         172800  IN  NS  x.ca-servers.ca.
ca.         172800  IN  NS  any.ca-servers.ca.

;; ADDITIONAL SECTION:
c.ca-servers.ca.    172800  IN  A   185.159.196.2
j.ca-servers.ca.    172800  IN  A   198.182.167.1
x.ca-servers.ca.    172800  IN  A   199.253.250.68
any.ca-servers.ca.  172800  IN  A   199.4.144.2
c.ca-servers.ca.    172800  IN  AAAA    2620:10a:8053::2
j.ca-servers.ca.    172800  IN  AAAA    2001:500:83::1
x.ca-servers.ca.    172800  IN  AAAA    2620:10a:80ba::68
any.ca-servers.ca.  172800  IN  AAAA    2001:500:a7::2

;; Query time: 103 msec
;; SERVER: 198.97.190.53#53(198.97.190.53)
;; WHEN: Sat Dec 04 11:23:32 EST 2021
;; MSG SIZE  rcvd: 289

```

`dog` 也显示了 “附加” 部分的记录，但它没有明确指出哪个是哪个（我猜 `+` 意味着它在附加部分？） ，但它似乎没有显示“权威”部分的记录。

```
$ dog @h.root-servers.net. jvns.ca
  NS ca.                2d0h00m00s A "c.ca-servers.ca."
  NS ca.                2d0h00m00s A "j.ca-servers.ca."
  NS ca.                2d0h00m00s A "x.ca-servers.ca."
  NS ca.                2d0h00m00s A "any.ca-servers.ca."
   A c.ca-servers.ca.   2d0h00m00s + 185.159.196.2
   A j.ca-servers.ca.   2d0h00m00s + 198.182.167.1
   A x.ca-servers.ca.   2d0h00m00s + 199.253.250.68
   A any.ca-servers.ca. 2d0h00m00s + 199.4.144.2
AAAA c.ca-servers.ca.   2d0h00m00s + 2620:10a:8053::2
AAAA j.ca-servers.ca.   2d0h00m00s + 2001:500:83::1
AAAA x.ca-servers.ca.   2d0h00m00s + 2620:10a:80ba::68
AAAA any.ca-servers.ca. 2d0h00m00s + 2001:500:a7::2

```

而 `host` 似乎只显示“答案”部分的记录（在这种情况下没有得到记录）：

```
$ host jvns.ca h.root-servers.net
Using domain server:
Name: h.root-servers.net
Address: 198.97.190.53#53
Aliases:

```

总之，我认为这些更简单的 DNS 工具很好（我甚至自己做了一个 [简单的网络 DNS 工具](https://dns-lookup.jvns.ca/)），如果你觉得它们更容易，你绝对应该使用它们，但这就是为什么我坚持使用 `dig` 的原因。`drill` 的输出格式似乎与 `dig` 的非常相似，也许 `drill` 更好！但我还没有真正试过它。

### 就这些了

我最近才知道 `.digrc`，我非常喜欢使用它，所以我希望它能帮助你们中的一些人花更少的时间来整理 `dig` 的输出！

有人在 Twitter 上指出，如果有办法让 `dig` 显示响应的简短版本，其中也包括响应的状态（如 `NOERROR`、`NXDOMAIN`、`SERVFAIL` 等），那就更好了！我同意这个观点！不过我在手册中没有找到这样的选项。

---

via: <https://jvns.ca/blog/2021/12/04/how-to-use-dig/>

作者：[Julia Evans](https://jvns.ca/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #476 红帽称 CentOS Stream 9 基本像 RHEL 一样稳定

Summary: 更多：• JetBrains 发布 Fleet IDE • 华为称鸿蒙系统明年登陆欧洲

有证书劫持的疑似问题发生过

鸿蒙也用不了谷歌服务吧

我是手机是华为P10，按照的是鸿蒙2.0，可以使用google play。

不过我是在升级鸿蒙之前就安装了google play的。

这是不是google service，我不太清楚。

![](/data/attachment/album/202112/05/204140xrmdjzrmz6y9d0sg.jpg)

### 红帽称 CentOS Stream 9 基本像 RHEL 一样稳定

![](/data/attachment/album/202112/05/204149mrzz9gccixb1tjgj.jpg)

新的 CentOS Stream 已经可以通过 ISO 镜像下载了，这个新版本通过了一系列的测试和检查，以确保它符合严格的 RHEL 标准。发布在 Stream 上的更新与在 RHEL 未发布的次要版本上的更新是相同的。“[目的是让 CentOS Stream 基本像 RHEL 一样稳定](https://blog.centos.org/2021/12/introducing-centos-stream-9/)”。为了实现这种稳定性，CentOS Stream 建立于 Fedora Linux 的稳定版本，对于 CentOS Stream 9 就是 Fedora 34。而 Fedora 的稳定性也得到了业界肯定，比如 AWS 的 Amazon Linux 3 就是完全基于 Fedora 的。

>
> 老王点评：具体好用不好用，还是得看用户的感受。
>
>
>

### JetBrains 发布 Fleet IDE

![](/data/attachment/album/202112/05/204212wuarfsukuzuayuaf.png)

本周一，JetBrains [发布](https://www.jetbrains.com/fleet/) 了一个名为 Fleet 的轻量级多语言 IDE 的预览版，该 IDE 使用 IntelliJ 的代码处理引擎，具有分布式 IDE 架构和一个重新设计的 UI。据称，他们仅在 30 个小时内就收到了 8 万个预览请求，由于收到的请求太多，以至于在周五就关闭了申请通道。JetBrains 称它是一个成熟的编辑器，提供语法高亮、代码补完，以及所有你期待的编辑器的东西，以及重构、导航、调试和其他一切你习惯于在 IDE 中拥有的功能。它还提供了一个协作环境，允许开发人员一起工作，不仅仅是共享编辑器，还包括终端和调试会话。尽管 JetBrains 在发布公告中没有提及微软的 VS Code，但是似乎大家都将其 [视作](https://visualstudiomagazine.com/articles/2021/11/30/jetbrains-fleet.aspx) VS Code 的竞品。

>
> 老王点评：看来 VS Code 有竞争对手了。
>
>
>

### 华为称鸿蒙系统明年登陆欧洲

![](/data/attachment/album/202112/05/204228x5l07l06uy7w67m1.jpg)

今年 6 月发布的鸿蒙 2.0 主要是面向中国市场的。近日华为某海外负责人在罗马尼亚交流时 [接受采访称](https://news.mydrivers.com/1/800/800622.htm)，“目前鸿蒙已经拥有超过 1 亿用户，他们对鸿蒙系统带来的体验非常满意。当用户从安卓切换到鸿蒙时，满意度提高了 10%。”而海外市场的大部分华为手机使用的依然是 EMUI，与鸿蒙的区别非常明显。该负责人称，“对于欧洲用户，我们将从明年（2022 年）开始推出鸿蒙操作系统。”

>
> 老王点评：不知道国外对鸿蒙的认可程度如何。
>
>
>


是时候让更多 Linux 发行版和桌面环境接受“老莱暴捶”了

Summary: “老莱” 体验 Pop!_OS 的视频狠狠地给桌面 Linux 社区上了一课。

不奇怪，Linux桌面一直没有Adobe全家桶不是没有原因的

来自120.230.61.60的 Chrome Mobile 80.0|Android 10 用户

装Steam为什么会删桌面呢？<br />
搞这个设置的开发者是怎么想的？

在ubuntu上，apt装东西时要删关键包，我已经见怪不怪了，所以不用ubuntu

ubuntu还是好一点的，debian更容易动不动删桌面——尤其是在删除一些没用的软件时

“老莱” 体验 Pop!_OS 的视频狠狠地给桌面 Linux 社区上了一课。

![](/data/attachment/album/202112/06/103347wzayg7tcgt3falq2.png)

>
> “老莱” 体验 Pop!\_OS 的视频狠狠地给桌面 Linux 社区上了一课。
>
>
>

过去的几周，整个 Linux 桌面社区沸腾了。

知名 YouTube 创作者 Linus（LCTT 译注：不是 Linux 之父 Torvalds，是 Linus Tech Tips 的 Sebastian，“老莱”是国内网友对 Linus Sebastian 的称呼。）决定在一个月内挑战日常使用 Linux 桌面。“老莱” 想了解 Linux 是否已经达到了对用户友好的程度，乃至于“技术呆”级别的用户都能轻松上手。他的专注点同样也放在了 [Linux 游戏](https://itsfoss.com/linux-gaming-guide/) 上，毕竟电脑游戏确实也是 “老莱” 关注的一个领域。

这是一个有趣的概念，Linux 社区的许多人也十分兴奋，毕竟它向更广泛的技术受众群体免费宣传了桌面 Linux 平台。

唯一美中不足的是，这个日用 Linux 挑战 [从一开始就出了大乱子](https://www.youtube.com/watch?v=0506yDSgU7M&t=788s)。（LCTT 译注：[B 站](https://www.bilibili.com/video/BV1Fh411b7q3?t=769) 中也有相应的中文字幕视频。）

### “老莱”的 Pop!\_OS 名（或者说是“冥”）场面

（LCTT 译注：原文标题使用的是 (in)famous，同时指代“著名”和“臭名昭著”，此处的“冥场面”偏向事件悲剧性。）

“老莱” 决定 [安装 Pop!\_OS](https://itsfoss.com/install-pop-os/)，因为 Pop!\_OS 经常在社区中作为适合游戏的主流发行版出现。接下来，他尝试在软件中心（即 Pop!\_Shop）安装 Steam，但软件中心未能成功安装 Steam。

![Sebastian 安装 Steam 时遇到了问题](/data/attachment/album/202112/06/103348rtsytyy4c445qsnd.jpg)

既然没能通过图形化方式安装，他接下来做了其他所有 Linux 用户都会做的事情。他打开了终端，运行了神奇的 `sudo apt-get install` 命令。

![Sebastian 换用命令行方式安装 Steam](/data/attachment/album/202112/06/103349m88u8z1mxfxb88x1.jpg)

无论是图形化方式还是终端方式，Pop!\_OS 都显示了一条警告，提示用户正濒临卸载关键软件包的危险。

命令行方式清晰明了地警告：“***您的操作有潜在的危害性。若要继续，请输入下面的短句“是，按我说的做！（Yes, do as I say!）”***。”

![忽略移除关键软件包的警告](/data/attachment/album/202112/06/103349i0oigtugmvkuo0m7.jpg)

对于大部分 Linux 用户来说，到这一步就真的得停下来，深思熟虑了。输出的内容明确显示，接下来即将删除 `gdm3`、`pop-desktop` 和其他许多桌面环境要素。

但人们一般不会在意警告。于是 “老莱” 直接继续安装，最终就剩下了一个不能登录图形界面的损坏系统。

![意识到他的 Pop!_OS 彻底出乱子后的 Linus Sebastian（不是 Torvalds）](/data/attachment/album/202112/06/103350zs99qt3qi1ay7n8y.jpg)

### 给桌面 Linux 开发者的深刻教训

对于开发者来说，这里有两点教训值得注意：

* 安装 Steam 或任何其他常规软件时，不能导致关键的图形界面软件包被删除。
* 在一款常规的、主流的发行版中，用户不应该能删除关键软件包。

Pop!\_OS 迅速修复了 Steam 的问题，并增加了防御机制以阻止删除关键的桌面要素。

>
> 出于某些原因，i386 版的软件包不能在 Launchpad 上发布。Steam 是一个 i386 软件包，在尝试安装 Steam 时不得不将该软件包降级到 Ubuntu 版本以解决依赖问题，然后就删除了 Pop!\_OS 的软件包。
>
>
> — Jeremy Soller (@jeremy\_soller) [2021 年 10 月 26 日](https://twitter.com/jeremy_soller/status/1453008808314351628?ref_src=twsrc%5Etfw)
>
>
>

为避免此类事故，Pop!\_OS 为 APT 包管理器制作了补丁。现在，用户无法在 Pop!\_OS 通过输入“**是，按我说的做！（Yes, do as I say!）**”来删除关键软件包了。相反，用户将需要添加一个特殊文件来启用该功能（如果某个人真的想把这些关键软件包删掉的话）。（LCTT 译注：APT 2.3.12 上游已经彻底禁用卸载关键软件包的功能。）

对于 Pop!\_OS 来说，这确实是一个好举措。但，这并不仅仅是 Pop!\_OS 单方面的教训。大多数 Linux 发行版都可能会遇到这种情况，并最终删除掉桌面环境和显示服务器。

KDE 已经注意到了这一点，并在即将发布的 Plasma 5.24 中 [添加了禁止卸载 Plasma 桌面的功能](/article-14015-1.html)。

![KDE Plasma 不允许用户卸载 Plasma 桌面](/data/attachment/album/202112/06/103351yy69caz4jgzk2sqy.png)

许多人责怪 “老莱” 不顾清晰明确的警告，直接继续并走向灾难。但问题在于，许多用户真的不会在意 “警告” 这种东西，不管他们技术水平如何。人们只是觉得按 “Y” 或者其他东西就是程序正常的部分，也不会去多想。一些 Linux 用户之前已经踩过这种坑了，但未来可能还会有更多人重蹈覆辙。

这就是为什么添加故障保护措施才是明智之举。这是所有主流发行版都应该做的事。

---

via: <https://news.itsfoss.com/more-linux-distros-become-linus-proof/>

作者：[Abhishek](https://news.itsfoss.com/author/root/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[imgradeone](https://github.com/imgradeone) 校对：[wxy](https://github.com/wxy)

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


如何在 Linux 上安装和设置 Flutter 开发环境

![](/data/attachment/album/202112/06/115835fdjlxmd55mxew1nn.jpg)

谷歌的 UI 工具包 Flutter 在创建移动、网页和桌面的跨平台应用程序方面越来越受欢迎。

[Flutter](https://flutter.dev/) 不是一种编程语言，而是一个软件开发工具包。[Dart](https://dart.dev/) 是 Flutter SDK 下面使用的编程语言。

Flutter 是谷歌开源的 Fuchsia OS、谷歌 STADIA 以及许多其他软件和移动应用背后的主要框架。

如果你想使用 Flutter 进行开发，本教程将帮助你在 Ubuntu 和其他类似 Linux 发行版上搭建好你的环境。

### 在 Ubuntu 和其他 Linux 上用 Snap 安装 Flutter

在 Linux 上安装 Flutter 最简单的方法是使用 Snap。如果你使用的是 Ubuntu，你已经有了 Snap。**对于其他发行版，请确保 [启用 Snap 支持](https://itsfoss.com/install-snap-linux/)**。

[打开终端](https://itsfoss.com/open-terminal-ubuntu/) 并在终端中使用以下命令来安装 Flutter：

```
sudo snap install flutter --classic

```

你会在你的终端上看到类似这样的东西：

![](/data/attachment/album/202112/06/115908c0guz15670d06d6x.png)

一旦安装完成，就是验证它的时候了。不仅仅是 Flutter 的安装，还要验证 Flutter 正常运行所需满足的每一个依赖关系。

#### 验证 Flutter 的依赖项

为了验证 Flutter 正确工作所需的每一个依赖项，Flutter 有一个内置选项：

```
Flutter doctor

```

这个过程开始看起来像这样：

![](/data/attachment/album/202112/06/115909pjh5fiivvxi5vcfi.png)

而它完成时像这样：

![](/data/attachment/album/202112/06/115910der0s2p332p2n0j1.png)

正如你所看到的，我们需要 Android Studio 来工作。所以让我们来安装它。我们该怎么做呢？用 Snap [在 Linux 上安装 Android Studio](https://itsfoss.com/install-android-studio-ubuntu-linux/) 也是毫不费力的。

#### 安装并设置好 Android Studio

在终端中，使用下面的命令来安装 Android Studio：

```
sudo snap install android-studio --classic

```

![](/data/attachment/album/202112/06/115911oket1ntw0bsfsbfq.png)

安装完毕后，从我们的操作系统菜单中打开 Android Studio。

![](/data/attachment/album/202112/06/115912igijeqg1pgdy4yoy.jpg)

就快完成了。现在是配置 Android Studio 的时候了。

![](/data/attachment/album/202112/06/115913k0ofnntswfnfnkno.png)

点击下一步，如果你不想让事情复杂化，就选择“<ruby> 标准 <rt>  standard </rt></ruby>”。

![](/data/attachment/album/202112/06/115914asshz8cahdan0yh4.png)

选择你喜欢的主题（我喜欢“<ruby> 暗色 <rt>  Darcula </rt></ruby>”的）。

![](/data/attachment/album/202112/06/115915w44g54cl7nyfuklz.png)

确认一切正常，然后点击“<ruby> 下一步 <rt>  Next </rt></ruby>”。

![](/data/attachment/album/202112/06/115917i7fwrcfxcxzffq2x.png)

最后，点击“<ruby> 完成 <rt>  Finish </rt></ruby>”按钮。

![](/data/attachment/album/202112/06/115918ex78nrr9yyz4lygi.png)

然后等待，直到下载完成。

![](/data/attachment/album/202112/06/115920rexuef3soxfbu3cu.png)

### 创建一个 Hello World Flutter 应用样本

在 Android Studio 中，进入项目，选择“<ruby> 新建 Flutter 项目 <rt>  New Flutter Project </rt></ruby>”。Flutter SDK 路径会默认设置。

![](/data/attachment/album/202112/06/115921w4hockzas77ocxc4.png)

在这里，神奇的事情开始出现了，这是你设置你的项目名称的地方，在这个例子中，它将被称为 “hello\_world”。

让我们选择三个可用的平台。**Android、iOS 和 Web**。最后，点击“<ruby> 完成 <rt>  Finish </rt></ruby>”。

![](/data/attachment/album/202112/06/115922tmauzq7h71lhku7a.png)

项目中的主文件位于 `lib/main.dart`，如下图所示：

![](/data/attachment/album/202112/06/115925g25vmr5drd5rrar2.png)

选定后，擦除文件中包含的所有内容，并将其改为本示例代码：

```
// Copyright 2018 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Welcome to Flutter'),
        ),
        body: const Center(
          child: Text('Hello World'),
        ),
      ),
    );
  }
}

```

重要的是，这只是向你展示 Flutter 是如何工作的，如果你确信要学习这种美丽而不可思议的语言，这里有 [文档](https://flutter.dev/docs) 可以看到更多关于它的信息。**尝试**它！

最后，选择 “Chome Web” 设备，并点击“<ruby> 运行 <rt>  Run </rt></ruby>”按钮，如下图所示；并看到神奇的效果！

![](/data/attachment/album/202112/06/115927nm9n4wtyzgqh6mv6.png)

你可以如此快速地创建一个 Flutter 项目，真是不可思议。跟你的 Hello World 项目打个招呼吧。

![](/data/attachment/album/202112/06/115927c2k8uv05guph8fth.png)

### 最后...

如果你想在短时间内做出漂亮的移动和网页界面的贡献，Flutter 和 Dart 是完美的。

现在你知道了如何在 Ubuntu Linux 上安装 Flutter，以及如何用它创建你的第一个应用程序。我很高兴可以为你写这篇文章，希望对你有所帮助，如果你有任何问题，请通过留言或给我发邮件来告诉我，祝你好运!

本教程由 Marco Antonio Carmona Galván 提供，他是物理学和数据科学专业的学生。

---

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

作者：[Marco Antonio Carmona Galván](https://itsfoss.com/author/itsfoss/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)

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