Linux Mint 的更新管理器现在支持 Flatpak

Summary: Linux Mint 的更新管理器变得更有用了！

Linux Mint 的更新管理器变得更有用了！

# Linux Mint 的更新管理器现在支持 Flatpak

>
> Linux Mint 的更新管理器变得更有用了！
>
>
>

Linux Mint 的更新管理器是该发行版的一个重要组成部分，它使新用户可以获得更为方便简易的体验。

最近的一次更新 Linux Mint 21 推出了许多改进，包括更新管理器对 Flatpak 的支持。

**你只需要更新你的系统就可以获得这些改进。**

### ⭐ 更新管理器中支持 Flatpak

是的，你没看错。这终于实现了。

Flatpak 支持已被添加到更新管理器中，用户只需单击几下就能更新 Flatpak 应用程序和运行时。

这将为进一步改善用户体验的统一更新体验提供了帮助。

这对新用户来说很有好处，他们不需要熟悉终端命令就能更新 Flatpak。此外，你不需要将 Flatpak 与软件中心集成（对于 GNOME 而言）。

换句话说，Linux Mint 团队增强了你使用 Flatpak 应用程序的体验。

**除了对 Flatpak 的支持，本次更新还包括对 Linux Mint 21 的更多增强，这是一个开箱即用的更新。**

这些改进包括：

### 对角栏的改进

Linux Mint 21 中的 <ruby> 角栏 <rt>  Corner Bar </rt></ruby> 添加了两项新特性：

* 能够在角栏设置左键点击和中键点击的动作；你可以配置它以显示桌面、工作区选择器或桌面。
* 一个允许你将鼠标悬停在角栏上以显示桌面的新选项。

### Nemo 的更新

Nemo 文件管理器做了一些调整；现在，当文件被选中时，只会高亮显示文件名，而不是图标和文件名。

**如果你还不知道**, 你也可以通过我们建议的一些调整来增强 Nemo 文件管理器的体验：

>
> **[调整 Linux 中的 Nemo 文件管理器，让它更好用的 15 种方法](https://itsfoss.com/nemo-tweaks/)**
>
>
>

此外，桌面图标被垂直翻转，桌面上下文菜单中添加了一个新的快捷方式，可以快速打开显示设置。

### 更少的密码提示

这是很多人可能喜欢的另一个用户体验调整。

当删除 Flatpak 或任何快捷方式或本地应用程序时，它将不再要求你输入密码。

类似地，在新立得（LCTT 译注：Linux 下的一个包管理工具）和更新管理器的情况下，将使用 pkexec 来记住密码。

这样，用户就不需要每次执行多个操作时都输入密码。

你可以浏览 [Linux Mint 月度博客](https://blog.linuxmint.com/?p=4424) 以了解其它变化。

---

via: <https://news.itsfoss.com/linux-mint-update-manager/>

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

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


Fedora Linux 37 发布

Summary: 今天我很兴奋地与大家分享成千上万的 Fedora 项目贡献者的辛勤工作成果

今天我很兴奋地与大家分享成千上万的 Fedora 项目贡献者的辛勤工作成果

# Fedora Linux 37 发布

今天我很兴奋地与大家分享成千上万的 Fedora 项目贡献者的辛勤工作成果：Fedora Linux 37 版本来了！让我们看看这个最新版本给你带来了什么。一如既往，在从以前的版本升级之前，你应该确保你的系统是完全最新的。迫不及待地想开始了吗？在你阅读的同时 [下载](https://getfedora.org)！

>
> **[下载 Fedora Linux 37](https://getfedora.org)**
>
>
>

### 两个新的版本

Fedora 的各个“<ruby> 版本 <rt>  Edition </rt></ruby>”是针对某一特定“市场”的旗舰产品。在 Fedora Linux 37 中，我们增加了两个新版本：Fedora CoreOS 是你可能还记得的 Atomic Host 的后续版本。从 Project Atomic 和 CoreOS 的初始的工作中汲取营养，它提供了一种自动更新机制，以托管基于容器的工作负载。通过原子更新和简单的回滚，它为你的基础设施增加了安全感。

Fedora Cloud 也作为一个版本回来了。云计算工作组的活动已经重新开始了。Cloud 版本提供了一个很棒的 Fedora 基础，可以在你喜欢的公共或私有云中运行。AMI 将在本周晚些时候在 AWS 市场上提供，在社区频道上现在已经可以使用。请查看 [此网站](https://getfedora.org/en/cloud/) 以了解可以在其他云供应商或你自己的云上运行的镜像！

### 桌面的改进

Fedora Workstation 专注于桌面体验。像往常一样，Fedora Workstation 采用了最新的 GNOME 版本。[GNOME 43](https://release.gnome.org/43/) 在设置中包括一个新的设备安全面板，为用户提供关于系统中硬件和固件的安全信息。在上一个版本的基础上，更多的 GNOME 核心应用程序被移植到了最新版本的 GTK 工具包，提供了更好的性能和现代的外观。

在这个版本中，我们做了一些改变，让你的安装变得更精简。我们把 Firefox 浏览器的语言包分成了子包。这意味着如果你不需要本地化，你可以删除 `firefox-langpacks` 包。gettext 的运行包（帮助其他包产生多语言文本的工具）被分割成一个单独的、可选择的子包。

当然，我们生产的不仅仅是“版本”。Fedora <ruby>   定制版  <rt>  Spins </rt></ruby> 和 <ruby>   实验室  <rt>  Labs </rt></ruby> 针对的是不同的受众和使用情况，包括 [Fedora Comp Neuro](https://labs.fedoraproject.org/en/comp-neuro/) ，它为计算神经科学提供工具，以及像 [Fedora LXQt](https://spins.fedoraproject.org/en/lxqt/) 这样的桌面环境，它提供一个轻量级桌面环境。而且，别忘了我们的备用架构。[ARM AArch64、Power 和 S390x](https://alt.fedoraproject.org/alt/)。

### 系统管理方面的改进

Fedora Server 现在可以生成一个 KVM 磁盘镜像，使在虚拟机中运行 Server 更加容易。如果你已经禁用了 SELinux（没关系 —— 我们仍然爱你！），你可以在影响较小的情况下重新开启它。自动标签现在以并行方式运行，使 “fixfiles” 操作更快。

为了跟上密码学的发展，这个版本引入了一个 `TEST-FEDORA39` 策略，预览了计划在未来版本中的变化。新策略之一是不再使用 SHA-1 签名。研究人员早就知道这种哈希值（就像之前的 MD5 一样）在许多安全方面的使用是不安全的。

在未来，我们可能会将 SHA-1 从 Fedora Linux 可接受的安全算法列表中移除。（正如 `TEST-FEDORA39` 这个名字所暗示的那样，也许最快也要到明年。）不过我们知道如今 SHA-1 哈希值仍然在使用。新的策略可以帮助你现在就测试你的关键应用程序，这样你就可以做好准备。请尝试一下，并让我们知道你在哪里遇到了问题。

说到密码学，openssl1.1 包现在已经废弃了。它还能用，但我们建议你更新你的代码，以使用 openssl 3。

### 其他更新

树莓派 4 现在在 Fedora Linux 中得到了正式支持，包括图形加速。在 ARM 的其他方面，Fedora Linux 37 放弃了对 ARMv7 架构（也被称为 arm32 或 armhfp）的支持。

在我们的“[First](https://docs.fedoraproject.org/en-US/project/#_first)”基础上，我们已经更新了关键的编程语言和系统库包，包括 Python 3.11、Golang 1.19、glibc 2.36 和 LLVM 15。

我们很高兴你能试用这个新版本！请到 <https://getfedora.org/> 下载。或者如果你已经在运行 Fedora Linux，请按照 [简易升级说明](https://docs.fedoraproject.org/en-US/quick-docs/upgrading/)。更多关于 Fedora Linux 37 的新功能的信息，请看 [发行说明](https://docs.fedoraproject.org/en-US/fedora/f37/release-notes/)。

### 在不太可能发生的情况下...

如果你遇到了问题，请访问我们的 [Ask Fedora](https://ask.fedoraproject.org/) 用户支持论坛。这里有一个 [常见问题](https://ask.fedoraproject.org/c/common-issues/141/none) 的分类。

### 谢谢大家

感谢在这个发布周期为 Fedora 项目做出贡献的成千上万的人。我们很高兴 Fedora 社区有你们。

---

via: <https://fedoramagazine.org/announcing-fedora-37/>

作者：[Matthew Miller](https://fedoramagazine.org/author/mattdm/) 选题：[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/) 荣誉推出


硬核观察 #822 电子书的“磨损”速度快于实体书

Summary: ❶ 电子书的“磨损”速度快于实体书 ❷ 16 台晶圆级芯片计算机集群组成千万核超算 ❸ 美国的 Frontier 超算继续占据 TOP500 榜首

十年前主流还是txt和pdf，现在过时了吗？

没有，还是主流

pdf也有版本之分。新版格式支持3d交互。

txt其实也有编码问题。gbk，big5，utf-8，utf-16，unicode。更还有字节序。。。换行符linux与win也不一样。。。tab符默认宽度也很头疼。。。

p.s. emoji对于早期软件也是个问题。真实

当当网的电子书不是PDF的，国内都不走寻常路

# 硬核观察 #822 电子书的“磨损”速度快于实体书

### 电子书的“磨损”速度快于实体书

一百年前的实体书如果保存良好，可以正常阅读。但十年前的电子书今天去阅读极有可能会遇到各种问题。电子书需要不断维护，从文件格式到存储介质的不断变化，需要不断重新处理。电子书是脆弱且受到威胁的。

>
> **[消息来源：Archive](http://blog.archive.org/2022/11/15/digital-books-wear-out-faster-than-physical-books/)**
>
>
>

>
> 老王点评：这是一个违反直觉的事情，但是确实如此，所以，我们应该用一种明文的开放格式来承载这些电子书。
>
>
>

### 16 台晶圆级芯片计算机集群组成千万核超算

制造世界上最大的芯片 —— 晶圆级引擎 2（WSE-2）的公司 Cerebras 今天公布了其仙女座超级计算机。仙女座是由 16 个 WSE-2 芯片组成的，共有 1350 万个计算核心，比世界顶级超级计算机 Frontier 系统多出百分之六十，AI 算力与 Frontier 相当。全套系统功耗 500 千瓦，这比同等级的超级计算机的功率要低得多。

>
> **[消息来源：Venture Beat](https://venturebeat.com/ai/cerebrass-andromeda-supercomputer-has-13-5m-cores-that-can-do-an-exaflop-in-ai-computing/)**
>
>
>

>
> 老王点评：16 块脸盆大的芯片组成的超算，在 AI 算力上与世界第一超算相当。
>
>
>

### 美国的 Frontier 超算继续占据 TOP500 榜首

第 60 版 TOP500 显示，Frontier 系统仍然是名单上唯一拥有 Exaflop 级别算力的超级计算机。Frontier 的 HPL 分数和之前一样，1.102 EFlop/s，但是确是第二名的三倍。之前连续两年占据榜首的日本富岳超级计算机依旧保持第二名。中国排名前十的两台超算依旧是神威-太湖之光和天河-2A。

>
> **[消息来源：Top500](https://www.top500.org/lists/top500/2022/11/)**
>
>
>

>
> 老王点评：很多超算是不参加排名的。
>
>
>


如何在 RHEL 9 上安装 Node.js

Summary: 在这篇文章中，我们将逐步解释如何在 RHEL 9 系统上安装 Node.js。

在这篇文章中，我们将逐步解释如何在 RHEL 9 系统上安装 Node.js。

# 如何在 RHEL 9 上安装 Node.js

>
> 在这篇文章中，我们将逐步解释如何在 RHEL 9 系统上安装 Node.js。
>
>
>

[Node.js](https://nodejs.org/en/about/) 基于谷歌的 V8 JavaScript 引擎构建，它是一个自由开源的跨平台 JavaScript 运行时环境，主要用于构建服务器端应用。它使用事件驱动和异步模型，帮助开发人员构建高度可扩展的数据密集型的实时应用（RTA）。你可以使用 NodeJS 来构建前端和后端应用。

Node.js 通常用于构建以下应用：

* 聊天应用
* 流媒体应用
* 浏览器游戏
* 命令行工具
* 嵌入式系统

在其技术栈中使用 NodeJS 的顶级公司包括 PayPal、NetFlix 和 Uber 等等。

安装 Node.js 主要有以下三种方式：

* 从 NodeSource 仓库安装 Node.js
* 从发行版的官方仓库安装 Node.js
* 使用 NVM 安装 Node.js

让我们看看如何使用这些方法在 RHEL 9 上安装 Node.js。

先决条件：

* 最小化安装的 RHEL 9 系统
* 具有管理员权限的 [sudo 用户](https://www.linuxtechi.com/create-sudo-user-on-rhel-rocky-linux-almalinux/)
* 互联网连接
* Red Hat 订阅或本地配置的仓库

### 从 NodeSource 存储库安装 Node.js

[NodeSource](https://nodesource.com/) 是一家技术公司，旨在帮助组织运行生产就绪的 Node.js 应用，关注资源使用以及增强的安全性和应用程序性能。它提供了最新版本的 Node.js 和 NPM。

要从 NodeSource 安装 Node.js，首先，按如下所示更新系统包。

```
$ sudo dnf update -y

```

接下来，安装这期间所需的构建工具。其中包括 GCC C/C++ 编译器、Perl 和 Python 调试器等等。

```
$ sudo dnf groupinstall 'Development Tools' -y

```

接下来，我们将从 NodeSource 安装 Node.js 18.x。为此，请下载并运行 NodeSource 设置脚本，如下所示。

```
$ curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -

```

该脚本在其他任务中将 NodeSource 仓库添加到你的系统。

在输出的末尾，你将看到一些关于如何安装 Node.js 和 NPM 的附加说明。

因此，要安装 Node.js 和 NPM（Node 包管理器），请运行以下命令：

```
$ sudo dnf install nodejs -y

```

安装完成后，按如下所示验证 Node.js 和 NPM 的版本。

```
$ node -v
$ npm -v

```

输出显示我们正在运行 Node v18.12，它是最新的 LTS 版本和 NPM 8.19.2。

### 从官方 RHEL 仓库安装 Node.js

安装 NodeJS 和 NPM 的另一种方法是从发行版的官方仓库中安装它们。但是，这种方法不提供最新版本。

如果你不介意不安装最新版本的 Node 和 NPM。 那么在命令行上运行以下命令。

```
$ sudo dnf update -y
$ sudo dnf install nodejs npm -y

```

### 使用 NVM 安装 Node.js

最后，你可以使用 NVM（Node 版本管理器）安装 Node.js，这是一种用于管理系统上 Node 版本的工具。该工具可帮助开发人员在需要不同版本 Node.js 的不同项目上高效工作。

默认情况下没安装 NVM。你需要通过运行 [官方 GitHub 页面](https://github.com/nvm-sh/nvm) 上提供的 Shell 脚本来安装它。

```
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash

```

这会下载 NVM 并将其保存在主目录的 `.nvm` 目录中。

安装后，关闭终端会话并打开一个新终端。然后运行以下命令确认 NVM 已经安装。

```
$ command -v nvm

```

接下来，你可以使用以下命令列出所有可用的 Node.js 版本：

```
$ nvm ls-remote

```

或者，你可以列出 Node.js 版本的所有最新 LTS 版本，如图所示。

```
$ nvm ls-remote | grep -i latest

```

要安装最新版本的 Node.js（当前为 v19.0.0），请运行以下命令：

```
$ nvm install node

```

然后，你可以验证安装的 Node.js 版本，如下所示。

```
$ node -v

```

此外，你可以安装特定版本的 Node.js。例如，要安装 v18.2.0，请运行以下命令：

```
$ nvm install v18.12.0

```

要列出系统上所有已安装的 NodeJS 版本，请运行以下命令：

```
$ nvm ls

```

第一行带有 “->” 符号的条目指向当前使用的 Node.js 版本。然后是其他版本。

要切换到另一个版本的 Node.js，请使用以下语法：

```
$ nvm use <version>

```

例如，要使用 Node 版本 19.0.0，请运行以下命令：

```
$ nvm use 19.0.0

```

再次检查已安装的 Node.js 版本，这次“->” 符号将指向 v19.0.0。

### 总结

在本指南中，我们演示了如何使用三种不同的方法安装 Node.js。此外，我们还提供了几种使用 NVM 管理 Node 版本的方法。我们希望可以帮助你轻松地在 RHEL 上安装 NodeJS，并选择你想要在项目中使用的版本。

---

via: <https://www.linuxtechi.com/how-to-install-nodejs-on-rhel/>

作者：[James Kiarie](https://www.linuxtechi.com/author/james/) 选题：[lkxed](https://github.com/lkxed) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

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


在 VS Code 和 Codium 中编写 Python 程序

# 在 VS Code 和 Codium 中编写 Python 程序

>
> 如果你正在寻找一个优秀的、通用的、开源的、带有 Python 集成的代码编辑器，那么你可以尝试一下 Codium。
>
>
>

在过去几年内，我有幸和中学生们一起，并带他们入门 [Python 开发](https://opensource.com/article/22/8/math-python-raspberry-pi) 和树莓派 400。这一切都很有趣，树莓派对于学生和我来说都是一个很好的平台。我们使用了 [Code with Mu](https://codewith.mu/)，并且一切都很成功。我们的 Python 技能随着经验的增长而增长，因此最近我开始寻找给这些学生提供更多东西的方法。

我参与了一个 Python 课程并在课程中接触了微软的 Visual Studio Code。我在课程中学到了很多关于如何为 Python 设置虚拟环境，以及如何为 Python 编程配置 VS Code 的知识。在学习过程中，我也认识了 [Codium](https://opensource.com/article/20/6/open-source-alternatives-vs-code)，它基本上是没有微软品牌和遥测的 VS Code。

如果你正在寻找一个优秀的、通用的、开源的、带有 Python 集成的代码编辑器，那么你可以尝试一下 Codium。下面是我在 Linux 系统上为 Python 设置 Codium 的方法。

### 在 Linux 上安装或更新 Python

首先，确保你正在运行最新版本的 Python。你可以使用你的软件包管理器来完成这项工作。在 Debian 和基于 Debian 的系统上：

```
$ sudo apt install python3-pip

```

在 Fedora、CentOS、Mageia、OpenMandriva 和类似的系统上：

```
$ sudo dnf update python3

```

在某些系统上，你可能还需要安装创建 Python 虚拟环境的软件：

```
$ sudo apt install python3.10-venv

```

### 安装 Codium

接下来，在你的电脑上 [安装 Codium](https://github.com/VSCodium/vscodium/releases)。在 Linux 上，你可以下载一个包并使用你的包管理器安装它，或者 [使用 Flatpak](https://flathub.org/apps/details/com.vscodium.codium)。

在安装好 Codium 之后，打开你的应用程序或活动菜单，输入 `code` 以启动它。

### 安装 VS Code Python 扩展

代码其实不是什么特别的东西。它只是一些其他应用程序（编译器或运行时）解释的纯文本。你可以在 Codium 中编写 Python 代码而不需要特殊的扩展。但是，有一个 Python 扩展可以为你带来一些方便的功能。

点击“<ruby> 文件 <rt>  File </rt></ruby>”菜单，选择“<ruby> 首选项 <rt>  Preferences </rt></ruby>”，然后选择“<ruby> 扩展 <rt>  Extensions </rt></ruby>”。在“<ruby> 扩展 <rt>  Extensions </rt></ruby>”面板中，搜索 Python IntelliSense 扩展。

你已经在 Codium 中设置了 Python。剩下的就是把它用起来。

### 为 VS Code 或 Codium 设置虚拟环境

我们可以创建一个项目目录，并将其添加到 Codium 中，这样在工作时，你创建和保存的文件都将默认保存到活动项目目录。这是一种快速的管理方式，可以让你不必经常点击文件保存和打开对话框。

在你创建一个虚拟 Python 环境作为工作目录时，Codium 会检测到它（因为你已经安装了 Python 扩展）。当你激活一个虚拟环境文件夹作为活动项目目录时，Codium 会自动运行使用虚拟环境所需的激活代码。

要为 Python 创建一个虚拟环境，请打开终端并输入：

```
$ python3 -m venv ~/PythonCoding

```

### 添加项目目录

在 Codium 中，点击“<ruby> 文件 <rt>  File </rt></ruby>”菜单，选择“<ruby> 将文件夹添加到工作区 <rt>  Add Folder to Workspace </rt></ruby>”。打开你刚刚设置的虚拟环境（对我来说，是 `/home/don/PythonCoding`）。

现在你已经准备好写一些 Python 代码了！在你的工作区中创建一个新的 Python 文件并插入一些基本代码。当你输入时，你可能会注意到，Codium 会为环境包含的 Python 模块提供自动补齐建议。

```
import sys
print("Codium running Python " + sys.version)

```

现在点击 Codium 窗口右上角的“运行”按钮。这会在窗口底部打开一个控制台面板显示你的代码的输出：

```
(PythonCode) sh-5.1$ /home/bogus/PythonCode/bin/python
/home/bogus/PythonCode/app.py
Codium running Python 3.10.6 (main…)[GCC 12.1.0]
(PythonCode) sh-5.1$

```

就像你从输出中看到的，Codium 在 `PythonCode` 环境中运行，并成功运行了你的 Python 代码。

### Codium 和 Python

使用 Codium 编写 Python 代码比以往任何时候都更容易，但 Python 并不是 Codium 支持的唯一语言。你可以轻松地从 [Open VSX Registry](https://open-vsx.org/) 中找到并安装其他扩展，这是一个中立的开源 VS Code 扩展 “市场”。

Codium 的界面比一些基本的编辑器更复杂，但它有我在学习过程中所需要的东西。如果你需要一个更专业的编辑器，或者你想从当前的编辑器切换到新的编辑器，那么试试 Codium 吧。

---

via: <https://opensource.com/article/22/11/python-vs-code-codium>

作者：[Don Watkins](https://opensource.com/users/don-watkins) 选题：[lkxed](https://github.com/lkxed) 译者：[Cubik65536](https://github.com/Cubik65536) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #823 Evernote 被出售

Summary: ❶ Evernote 被出售 ❷ AlmaLinux 9.1 紧随 RHEL 9.1 发布 ❸ KDE 宣布新的社区目标：可访问性、环境可持续性、自动化

# 硬核观察 #823 Evernote 被出售

### Evernote 被出售

意大利移动应用开发商 Bending Spoons 公司今天宣布收购 Evernote。在收购的新闻稿中说，“Evernote 拥有约 1 亿美元的经常性收入，数百万付费客户，以及使用其跨平台应用程序创建的近 110 亿条笔记。”Evernote 曾经是最流行的笔记应用之一，但在 2016 年开始限制免费用户的使用。在同一年还宣布开发了可以审查用户笔记的 AI，以及让其员工可以访问用户笔记，虽然在招致巨大反对后取消了计划，但也导致了大量用户流失。如今，在 iOS 上，它甚至没有跻身生产力应用程序的前 100 名。收购宣告没有公开收购金额等细节。

>
> **[消息来源：The Register](https://www.theregister.com/2022/11/17/evernotes_fall_from_grace_ends/)**
>
>
>

>
> 老王点评：这个曾经兴盛一时的应用，也算是画上了一个逗号，或者，句号。还有人在用它吗？
>
>
>

### AlmaLinux 9.1 紧随 RHEL 9.1 发布

红帽企业 Linux（RHEL）9.1 今天正式发布，RHEL 9.1 将 PHP 8.1 作为支持的应用流，扩展了多级安全支持，支持将容器嵌入到镜像构建器蓝图中等等一系列更新增强。而仅仅半天后，作为 RHEL 9.1 的自由构建版本，AlmaLinux 9.1 就发布了。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Red-Hat-Enterprise-Linux-9.1)**
>
>
>

>
> 老王点评：我觉得 CentOS 的结束至少有一个好处，RHEL 的自由版本发布的更快了，以前都需要几周。
>
>
>

### KDE 宣布新的社区目标：可访问性、环境可持续性、自动化

在今年的 KDE 年度开发者大会上，KDE 宣布了新的社区目标。他们希望把重点放在确保 KDE 软件对所有人都是无障碍的。之前的 KDE 社区目标是围绕着一致性、对 KDE 应用程序的关注和 Wayland 支持。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/KDE-Community-Goals-2022)**
>
>
>

>
> 老王点评：我还是觉得之前的目标更务实一些，目前的 KDE 虽然已经很棒了，但是距离最好还有一些距离。
>
>
>

### 回音

* Fedora Linux [获准](https://www.phoronix.com/news/Fedora-Modern-C-Approved) 进行现代 C 语言的 [移植工作](/article-15184-1.html)，这些变化包括删除隐式函数声明、删除隐式整型、删除旧式函数声明等不符合 C99 规范的部分。


通过 SSH 在远程 Linux 系统上执行命令

Summary: 通过安全的网络连接在远程计算机上调用命令或程序。

通过安全的网络连接在远程计算机上调用命令或程序。

# 通过 SSH 在远程 Linux 系统上执行命令

>
> 通过安全的网络连接在远程计算机上调用命令或程序。
>
>
>

有一天，我正在测试如何在 [将文件或目录复制到多个位置和系统时保持完整的文件权限](https://ostechnix.com/how-to-keep-ownership-and-file-permissions-intact-when-copying-files-or-directories/)。当我想检查远程系统上的文件权限时，我必须通过 SSH 登录它并检查属性。从远程系统多次登录和注销的过程让我有点烦，我想，如果我可以**在远程 Linux 系统上通过 SSH 执行命令**就好了。

幸运的是，在浏览了 `ssh` 命令的手册页后，我找到了一个解决办法。

如果你想知道如何本地运行远程系统上运行命令或脚本，而不登录到远程系统，下面的内容会告诉你如何做。

### 1、通过 SSH 在远程 Linux 系统上执行命令

从本地系统通过 SSH 在远程系统上运行命令或脚本的典型方法是：

```
$ ssh <username@IP_Address-or-Doman_name> <Command-or-Script>

```

允许我给你们举几个例子：

#### 1.1、通过 SSH 在远程系统上运行单个命令

假设你想要 [查找远程 Linux 系统的内核详细信息](https://ostechnix.com/find-out-the-linux-distribution-name-version-and-kernel-details/)。为此，只需运行：

```
$ ssh sk@192.168.225.22 uname -a

```

这里，

* `sk` 是远程系统的用户名，
* `192.168.225.22` 是远程系统的 IP 地址，
* `uname -a` 是我想在远程系统上运行的命令。

示例输出：

看到没？我并没有实际登录到远程系统，但通过 SSH 在远程系统上执行了 `uname` 命令，并在本地系统的终端上显示了输出。

你还可以像下面这样用引号指定命令。

```
$ ssh sk@192.168.225.22 "uname -a"

```

或者，

```
$ ssh sk@192.168.225.22 'uname -a'

```

如果你已经 [更改了 SSH 协议的默认端口](https://ostechnix.com/how-to-change-apache-ftp-and-ssh-default-port-to-a-custom-port-part-3/)，只需使用 `-p` 参数指定它。

```
$ ssh -p 2200 sk@192.168.225.22 uname -a

```

#### 1.2、通过 SSH 在远程主机上执行多个命令

你还可以在远程主机上运行多个命令，方法是将它们放在引号中。

```
$ ssh sk@192.168.225.22 "uname -r && lsb_release -a"

```

或者：

```
$ ssh sk@192.168.225.22 "uname -r ; lsb_release -a"

```

上面的命令将显示我的 Ubuntu 服务器的内核版本和发行版详细信息。

示例输出：

正如一位读者在下面的评论部分提到的那样，你应该用引号指定多个命令。如果不使用引号，第一个命令将在远程系统上执行，第二个命令将仅在本地计算机上执行。整个带引号的命令将按预期在远程计算机上运行。

>
> **提示：** 了解 `&&` 和 `;` 在命令中的区别：
>
>
> `&&` 操作符只有在第一个命令成功时才执行第二个命令。
>
>
> 示例：
>
>
>
> ```
> sudo apt-get update && sudo apt-get upgrade
>
> ```
>
> 在上述示例中，如果第一个命令成功，才会执行 `sudo apt-get upgrade`。否则，它将不会运行。
>
>
> `;` 操作符会执行第二个命令，无论第一个命令是成功还是失败。
>
>
> 示例：
>
>
>
> ```
> sudo apt-get update ; sudo apt-get upgrade
>
> ```
>
> 在上述示例中，即使第一个命令失败，`sudo apt-get upgrade` 也会执行。
>
>
>

#### 1.3、通过 SSH 在远程机器上调用有 sudo 权限的命令

有些命令需要 `sudo` 权限才能运行。例如，以下命令将在我的远程系统上安装 `apache2`。

```
$ ssh -t sk@192.168.225.22 sudo apt install apache2

```

示例输出：

注意到了吗？我在上面的命令中使用了 `-t` 标志，我们需要使用它来强制进行伪终端分配。它用于在远程机器上执行任意基于屏幕的程序，这非常有用。例如，在实现菜单服务时。

另外，我输入了**两次**密码。第一次是远程用户的密码，以便从本地系统通过 SSH 访问远程系统，第二次是为了向远程用户赋予 sudo 权限，以便安装应用程序（在本例中为 apache2）。

让我们用以下命令检查 Apache 服务是否正在运行：

```
$ ssh -t sk@192.168.225.22 sudo systemctl status apache2
sk@192.168.225.22's password:
[sudo] password for sk:
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Thu 2019-12-19 11:08:03 UTC; 52s ago
Main PID: 5251 (apache2)
Tasks: 55 (limit: 2318)
CGroup: /system.slice/apache2.service
├─5251 /usr/sbin/apache2 -k start
├─5253 /usr/sbin/apache2 -k start
└─5254 /usr/sbin/apache2 -k start

Dec 19 11:08:03 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
Dec 19 11:08:03 ubuntuserver apachectl[5227]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 2409:4072:51f:a1b6:a00:27ff:f
Dec 19 11:08:03 ubuntuserver systemd[1]: Started The Apache HTTP Server.

```

同样的，我们可以通过 SSH 在本地系统上运行远程系统上的任何命令或脚本。

#### 1.4、通过 SSH 在远程系统上运行本地脚本

让我们在本地系统上创建一个简单的脚本来显示关于远程系统的发行版名称、包管理和基本细节等。

```
$ vi system_information.sh

```

添加以下行：

```
#!/bin/bash
#Name: Display System Details
#Owner: OSTechNIx
#----------------------------
echo /etc/*_ver* /etc/*-rel*; cat /etc/*_ver* /etc/*-rel*

```

按下 `ESC` 键，输入 `:wq` 保存退出。

现在，通过 SSH 命令在远程系统上运行这个脚本：

```
$ ssh sk@192.168.225.22 'bash -s' < system_information.sh

```

示例输出：

```
sk@192.168.225.22's password:
/etc/debian_version /etc/lsb-release /etc/os-release
buster/sid
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

```

如果你没有在上面的命令中指定 `bash -s`，你将获得远程系统的详细信息，但伪终端不会被分配。

#### 1.5、将远程主机的命令输出保存到本地主机

如果你希望与支持团队或同事共享远程系统上运行的命令输出，那么这非常有用。

以下命令将通过 SSH 在远程系统运行 `du -ah`，并将输出保存在本地系统的 `diskusage.txt` 文件中。

```
$ ssh sk@192.168.225.22 du -ah > diskusage.txt

```

然后，你可以通过使用 `cat` 命令或文本编辑器查看 `diskusage.txt` 文件来分析磁盘使用细节。

```
$ cat diskusage.txt
4.0K ./.profile
4.0K ./.gnupg/private-keys-v1.d
8.0K ./.gnupg
76K ./data/image.jpg
128K ./data/file.pdf
20K ./data/text.docx
5.9M ./data/audio.mp3
6.1M ./data
0 ./.sudo_as_admin_successful
4.0K ./pacman?inline=false
4.0K ./.bash_logout
4.0K ./.wget-hsts
4.0K ./.bash_history
0 ./.cache/motd.legal-displayed
4.0K ./.cache
4.0K ./deb-pacman_1.0-0.deb
4.0K ./.bashrc
6.2M .

```

#### 1.6、配置 SSH 密钥认证，避免输入密码

如果你经常在远程系统上运行命令，你可能需要配置基于 SSH 密钥的身份验证，以便每次跳过密码输入。更多细节可以在以下链接中找到。

>
> **[Linux 系统下如何配置 SSH 密钥认证](https://ostechnix.com/configure-ssh-key-based-authentication-linux/)**
>
>
>

配置了基于 SSH 密钥的认证后，我们可以通过 SSH 在远程机器上执行命令，从而不需要输入密码：

```
$ ssh sk@192.168.225.22 sudo apt update

```

### 2、通过 sshpass 在远程机器上运行命令

如果你不想配置基于 SSH 密钥的身份验证，你可以使用 `sshpass` 实用程序。

#### 2.1、什么是 sshpass?

`sshpass` 是为使用键盘交互密码身份验证模式运行 ssh 而设计的，但它以非交互的方式。简单来说，`sshpass` 提供了非交互式的方式来验证 SSH 会话。

SSH 使用直接 TTY 访问来确保密码确实是由交互式键盘用户发出的。`sshpass` 在一个专用 tty 中运行 SSH，让它误以为从交互用户那里获得了密码。

#### 2.2、在 Linux 中安装 sshpass

在许多 Linux 发行版的默认仓库中都有 `sshpass` 实用程序。例如，在 Debian、Ubuntu 及其衍生版本中，你可以使用下面的命令来安装 `sshpass`：

```
$ sudo apt install sshpass

```

#### 2.3、通过 SSH 和 sshpass 在远程机器上执行命令

`sshpass` 可以通过参数接受密码，或者通过环境变量读取密码，也可以从文本文件中读取密码。

**警告：** 所有这些方法都是 **高度不安全的**。所有系统用户都可以通过 `ps` 命令看到命令中的密码。**不建议**在生产中使用这些方法。最好使用基于密钥的身份验证。

让我们看看每种方法的示例。

##### 将密码作为参数提供

将密码作为参数提供，使用 `-p` 选项，如下所示：

```
$ sshpass -p <remote-password> ssh remoteuser@ip-address <command-to-execute>

```

示例输出：

```
$ sshpass -p ubuntu ssh ostechnix@192.168.1.30 uname -a

```

其中，

* `-p ubuntu` - 提供远程系统的密码。
* `ostechnix@192.168.1.30` - 远程系统用户名和地址。
* `uname -a` - 要在远程计算机上执行的命令。

示例输出：

```
Linux Ubuntu22CT 5.15.60-1-pve #1 SMP PVE 5.15.60-1 (Mon, 19 Sep 2022 17:53:17 +0200) x86_64 x86_64 x86_64 GNU/Linux

```

##### 密码作为环境变量提供

在这个方法中，我们声明一个名为 `SSHPASS` 的环境变量，用远程环境的密码作为其值。然后我们使用 `-e` 标志，如下所示：

```
$ SSHPASS=ubuntu sshpass -e ssh ostechnix@192.168.1.30 uname -a

```

##### 从文本文件中读取密码

使用 `echo` 命令在文本文件中追加密码：

```
$ echo "ubuntu" > mypassword.txt

```

现在，将密码文件传递给带有 `-f` 标志的 `sshpass`，如下所示：

```
$ sshpass -f mypassword.txt ssh ostechnix@192.168.1.30 uname -a

```

### 总结

在本教程中，我们学习了一些通过安全的网络连接在远程计算机上调用命令或程序的方法。在所有的方法中，`sshpass` 方法是最不安全的，建议用户避免在生产系统中使用它。

---

via: <https://ostechnix.com/execute-commands-on-remote-linux-systems-via-ssh/>

作者：[sk](https://ostechnix.com/author/sk/) 选题：[lkxed](https://github.com/lkxed) 译者：[MjSeven](https://github.com/MjSeven) 校对：[wxy](https://github.com/wxy)

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


在 Linux 上使用 Checksec 识别二进制文件的安全属性

# 在 Linux 上使用 Checksec 识别二进制文件的安全属性

>
> 这篇文章能让你了解如何使用 Checksec ，来识别一个可执行文件的安全属性，了解安全属性的含义，并知道如何使用它们。
>
>
>

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

编译源代码会生成一个二进制文件（LCTT 译注：即 `.o` 文件）。在编译期间，你可以向 `gcc` 编译器提供 <ruby> 标志 <rt>  flags </rt></ruby>，以启用或禁用二进制文件的某些属性，这些属性与安全性相关。

Checksec 是一个漂亮的小工具，同时它也是一个 shell 脚本。Checksec 可以识别编译时构建到二进制文件中的安全属性。编译器可能会默认启用一些安全属性，你也可以提供特定的标志，来启用其他的安全属性。

本文将介绍如何使用 Checksec ，来识别二进制文件的安全属性，包括：

1. Checksec 在查找有关安全属性的信息时，使用了什么**底层的命令**
2. 在将源代码编译成二进制文件时，如何使用<ruby> GNU 编译器套件 <rt>  GNU Compiler Collection </rt></ruby>（即 GCC）来**启用安全属性**。

### 安装 checksec

要在 Fedora 和其他基于 RPM 的 Linux 系统上，安装 Checksec，请使用以下命令：

```
$ sudo dnf install checksec

```

对于基于 Debian 的 Linux 发行版，使用对应的 `apt` 命令，来安装 Checksec。

```
$ sudo apt install checksec

```

### shell 脚本

在安装完 Checksec 后，能够发现 Checksec 是一个**单文件**的 shell 脚本，它位于 `/usr/bin/checksec`，并且这个文件挺大的。Checksec 的一个优点是你可以通过快速通读这个 shell 脚本，从而了解 Checksec 的执行原理、明白所有能查找有关二进制文件或可执行文件的安全属性的**系统命令**：

```
$ file /usr/bin/checksec
/usr/bin/checksec: Bourne-Again shell script, ASCII text executable, with very long lines

$ wc -l /usr/bin/checksec
2111 /usr/bin/checksec

```

以下的命令展示了如何对你每天都会使用的：`ls` 命令的二进制文件运行 Checksec。Checksec 命令的格式是：`checksec --file=`，后面再跟上二进制文件的绝对路径：

```
$ checksec --file=/usr/bin/ls
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      Symbols         FORTIFY Fortified       Fortifiable     FILE
Full RELRO      Canary found      NX enabled    PIE enabled     No RPATH   No RUNPATH   No Symbols        Yes   5       17              /usr/bin/ls

```

当你在终端中对某个二进制文件运行 Checksec 时，你会看到安全属性有颜色上的区分，显示什么是好的安全属性（绿色），什么可能不是好的安全属性（红色）。我在这里说 **“可能”** 是因为即使有些安全属性是红色的，也不一定意味着这个二进制文件很糟糕，它可能只是表明发行版供应商在编译二进制文件时做了一些权衡，从而舍弃了部分安全属性。

Checksec 输出的第一行提供了二进制文件的各种安全属性，例如 `RELRO`、`STACK CANARY`、`NX` 等（我将在后文进行详细解释）。第二行打印出给定二进制文件（本例中为 `ls`）在这些安全属性的状态（例如，`NX enabled` 表示为堆栈中的数据没有执行权限）。

### 示例二进制文件

在本文中，我将使用以下的 “hello world” 程序作为示例二进制文件。

```
#include <stdio.h>

int main()
{
        printf("Hello World\n");
        return 0;
}

```

请注意，在编译源文件 `hello.c` 的时候，我没有给 `gcc` 提供任何额外的标志：

```
$ gcc hello.c -o hello

$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=014b8966ba43e3ae47fab5acae051e208ec9074c, for GNU/Linux 3.2.0, not stripped

$ ./hello
Hello World

```

使用 Checksec 运行二进制文件 `hello`，打印的某些安全属性的状态，与上面的 `ls` 二进制文件的结果不同（在你的屏幕上，某些属性可能显示为红色）：

```
$ checksec --file=./hello
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      Symbols         FORTIFY Fortified       Fortifiable     FILE
Partial RELRO   No canary found   NX enabled    No PIE          No RPATH   No RUNPATH   85) Symbols       No    0       0./hello
$

```

（LCTT 译注：在我的 Ubuntu 22.04 虚拟机，使用 11.3.0 版本的 `gcc`，结果与上述不太相同，利用默认参数进行编译，会得到 RELRO、PIE、NX 保护是全开的情况。）

### 更改 Checksec 的输出格式

Checksec 允许自定义各种输出格式，你可以使用 `--output` 来自定义输出格式。我将选择的输出格式是 JSON 格式，并将输出结果通过管道传输到 `jq` 实用程序，来得到漂亮的打印。

接下来，确保你已安装好了 [jq](https://stedolan.github.io/jq/download/)，因为本教程会使用 `jq` 从 Checksec 的输出结果中，用 `grep` 来快速得到某一特定的安全属性状态，并报告该安全属性是否启动（启动为 `yes`，未启动为 `no`）：

```
$ checksec --file=./hello --output=json | jq
{
  "hello": {
    "relro": "partial",
    "canary": "no",
    "nx": "yes",
    "pie": "no",
    "rpath": "no",
    "runpath": "no",
    "symbols": "yes",
    "fortify_source": "no",
    "fortified": "0",
    "fortify-able": "0"
  }
}

```

### 看一看所有的安全属性

上面的二进制文件 `hello` 包括几个安全属性。我将该二进制文件与 `ls` 的二进制文件进行比较，以检查启用的安全属性有何不同，并解释 Checksec 是如何找到此信息。

#### 1、符号（Symbol）

我先从简单的讲起。在编译期间，某些 <ruby> 符号 <rt>  symbols </rt></ruby>包含在二进制文件中，这些符号主要用作于调试。开发软件时，需要用到这些符号，来调试和修复错误。

这些符号通常会从供用户普遍使用的最终二进制文件中删除。删除这些符号不会影响到二进制文件的执行。删除符号通常是为了节省空间，因为一旦符号被删除了，二进制文件就会稍微小一些。在闭源或专有软件中，符号通常都会被删除，因为把这些符号放在二进制文件中，可以很容易地推断出软件的内部工作原理。

根据 Checksec 的结果，在二进制文件 `hello` 中有符号，但在 `ls` 的二进制文件中不会有符号。同样地，你还可以用 `file` 命令，来找到符号的信息，在二进制文件 `hello` 的输出结果的最后，看到 `not stripped`，表明二进制文件 `hello` 有符号：

```
$ checksec --file=/bin/ls --output=json | jq | grep symbols
    "symbols": "no",

$ checksec --file=./hello --output=json | jq | grep symbols
    "symbols": "yes",

$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=014b8966ba43e3ae47fab5acae051e208ec9074c, for GNU/Linux 3.2.0, not stripped

```

Checksec 是如何找到符号的信息呢？Checksec 提供了一个方便的 `--debug` 选项，来显示运行了哪些函数。因此，运行以下的命令，会显示在 shell 脚本中运行了哪些函数：

```
$ checksec --debug --file=./hello

```

在本教程中，我试图寻找 Checksec 查找安全属性信息时，使用了什么**底层命令**。由于 Checksec 是一个 shell 脚本，因此你始终可以使用 Bash 功能。以下的命令将输出从 shell 脚本中运行的每个命令：

```
$ bash -x /usr/bin/checksec --file=./hello

```

如果你滚动浏览上述的输出结果的话，你会看到 `echo_message` 后面有各个安全属性的类别。以下显示了 Checksec 检测二进制文件是否包含符号时，运行的底层命令：

```
+ readelf -W --symbols ./hello
+ grep -q '\\.symtab'
+ echo_message '\033[31m96) Symbols\t\033[m  ' Symbols, ' symbols="yes"' '"symbols":"yes",'

```

上面的输出显示，Checksec 利用 `readelf`，来读取二进制文件，并提供一个特殊 `--symbols` 标志，来列出二进制文件中的所有符号。然后它会查找一个特殊值：`.symtab`，它提供了所能找到的条目的计数（即符号的个数）。你可以在上面编译的测试二进制文件 `hello` 上，尝试以下命令，得到与 Checksec 查看二进制文件类似的符号信息：

```
$ readelf -W --symbols ./hello
$ readelf -W --symbols ./hello | grep -i symtab

```

（LCTT 译注：也可以通过直接查看 `/usr/bin/checksec` 下的 Checksec 源文件。）

##### 如何删除符号

你可以在编译后或编译时删除符号。

* **编译后：** 在编译后，你可以使用 `strip`，手动地来删除二进制文件的符号。删除后，使用 `file` 命令，来检验是否还有符号，现在显示 `stripped`，表明二进制文件 `hello` 无符号了：

```
$ gcc hello.c -o hello
$
$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=322037496cf6a2029dcdcf68649a4ebc63780138, for GNU/Linux 3.2.0, not stripped
$
$ strip hello
$
$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=322037496cf6a2029dcdcf68649a4ebc63780138, for GNU/Linux 3.2.0, stripped
$

```
* **编译时：** 你也可以在编译时，用 `-s` 参数让 gcc 编译器帮你自动地删除符号：

```
$ gcc -s hello.c -o hello
$
$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=247de82a8ad84e7d8f20751ce79ea9e0cf4bd263, for GNU/Linux 3.2.0, stripped
$

```

重新运行 Checksec，你可以看到现在二进制文件 `hello` 的 `symbols` 这一属性的值是`no`：

```
$ checksec --file=./hello --output=json | jq | grep symbols
    "symbols": "no",
$

```

#### 2、Canary（堆栈溢出哨兵）

Canary 是放置在缓冲区和 <ruby> 栈 <rt>  stack </rt></ruby> 上的控制数据之间的已知值，它用于监视缓冲区是否溢出。当应用程序执行时，会为其分配两种内存，其中之一就是 *栈*。栈是一个具有两个操作的数据结构：第一个操作 `push`，将数据压入堆栈；第二个操作 `pop`，以后进先出的顺序从栈中弹出数据。恶意的输入可能会导致栈溢出，或使用特制的输入破坏栈，并导致程序崩溃：

```
$ checksec --file=/bin/ls --output=json | jq | grep canary
    "canary": "yes",
$
$ checksec --file=./hello --output=json | jq | grep canary
    "canary": "no",
$

```

Checksec 是如何确定二进制文件是否启用了 Canary 的呢？使用上述同样的方法，得到 Checksec 在检测二进制文件是否启用 Canary 时，运行的底层命令：

```
$ readelf -W -s ./hello | grep -E '__stack_chk_fail|__intel_security_cookie'

```

##### 启用 Canary

为了防止栈溢出等情况，编译器提供了 `-stack-protector-all` 标志，它向二进制文件添加了额外的代码，来检查缓冲区是否溢出：

```
$ gcc -fstack-protector-all hello.c -o hello

$ checksec --file=./hello --output=json | jq | grep canary
    "canary": "yes",

```

Checksec 显示 Canary 属性现已启用。你还可以通过以下方式，来验证这一点：

```
$ readelf -W -s ./hello | grep -E '__stack_chk_fail|__intel_security_cookie'
     2: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __stack_chk_fail@GLIBC_2.4 (3)
    83: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __stack_chk_fail@@GLIBC_2.4
$

```

#### 3、位置无关可执行文件（PIE）

<ruby> 位置无关可执行文件 <rt>  Position-Independent Executable </rt></ruby>（PIE），顾名思义，它指的是放置在内存中某处执行的代码，不管其绝对地址的位置，即代码段、数据段地址随机化（ASLR）：

```
$ checksec --file=/bin/ls --output=json | jq | grep pie
    "pie": "yes",

$ checksec --file=./hello --output=json | jq | grep pie
    "pie": "no",

```

通常，PIE 仅对 <ruby> 库 <rt>  libraries </rt></ruby>启用，并不对独立命令行程序启用 PIE。在下面的输出中，`hello` 显示为 `LSB executable`，而 `libc` 标准库（`.so`） 文件被标记为 `LSB shared object`：

```
$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=014b8966ba43e3ae47fab5acae051e208ec9074c, for GNU/Linux 3.2.0, not stripped

$ file /lib64/libc-2.32.so
/lib64/libc-2.32.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=4a7fb374097fb927fb93d35ef98ba89262d0c4a4, for GNU/Linux 3.2.0, not stripped

```

Checksec 查找是否启用 PIE 的底层命令如下：

```
$ readelf -W -h ./hello | grep EXEC
  Type:                              EXEC (Executable file)

```

如果你在共享库上尝试相同的命令，你将看到 `DYN`，而不是 `EXEC`：

```
$ readelf -W -h /lib64/libc-2.32.so | grep DYN
  Type:                              DYN (Shared object file)

```

##### 启用 PIE

要在测试程序 `hello.c` 上启用 PIE，请在编译时，使用以下命令：

```
$ gcc -pie -fpie hello.c -o hello`

```

你可以使用 Checksec，来验证 PIE 是否已启用：

```
$ checksec --file=./hello --output=json | jq | grep pie
    "pie": "yes",
$

```

现在，应该会显示为 “<ruby> PIE 可执行 <rt>  pie executable </rt></ruby>”，其类型从 `EXEC` 更改为 `DYN`：

```
$ file hello
hello: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=bb039adf2530d97e02f534a94f0f668cd540f940, for GNU/Linux 3.2.0, not stripped

$ readelf -W -h ./hello | grep DYN
  Type:                              DYN (Shared object file)

```

#### 4、NX（堆栈禁止执行）

NX 代表 <ruby> 不可执行 <rt>  non-executable </rt></ruby>。它通常在 CPU 层面上启用，因此启用 NX 的操作系统可以将某些内存区域标记为不可执行。通常，缓冲区溢出漏洞将恶意代码放在堆栈上，然后尝试执行它。但是，让堆栈这些可写区域变得不可执行，可以防止这种攻击。在使用 `gcc` 对源程序进行编译时，默认启用此安全属性：

```
$ checksec --file=/bin/ls --output=json | jq | grep nx
    "nx": "yes",

$ checksec --file=./hello --output=json | jq | grep nx
    "nx": "yes",

```

Checksec 使用以下底层命令，来确定是否启用了 NX。在尾部的 `RW` 表示堆栈是可读可写的；因为没有 `E`，所以堆栈是不可执行的：

```
$ readelf -W -l ./hello | grep GNU_STACK
  GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW  0x10

```

##### 演示如何禁用 NX

我们不建议禁用 NX，但你可以在编译程序时，使用 `-z execstack` 参数，来禁用 NX：

```
$ gcc -z execstack hello.c -o hello

$ checksec --file=./hello --output=json | jq | grep nx
    "nx": "no",

```

编译后，堆栈会变为可读可写可执行（`RWE`），允许在堆栈上的恶意代码执行：

```
$ readelf -W -l ./hello | grep GNU_STACK
  GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RWE 0x10

```

#### 5、RELRO（GOT 写保护）

RELRO 代表 “<ruby> 重定位只读 <rt>  Relocation Read-Only </rt></ruby>”。可执行链接格式（ELF）二进制文件使用全局偏移表（GOT）来动态地解析函数。启用 RELRO 后，会设置二进制文件中的 GOT 表为只读，从而防止重定位攻击：

```
$ checksec --file=/bin/ls --output=json | jq | grep relro
    "relro": "full",

$ checksec --file=./hello --output=json | jq | grep relro
    "relro": "partial",

```

Checksec 使用以下底层命令，来查找是否启用 RELRO。在二进制文件 `hello` 仅启用了 RELRO 属性中的一个属性，因此，在 Checksec 验证时，显示 `partial`：

```
$ readelf -W -l ./hello | grep GNU_RELRO
  GNU_RELRO      0x002e10 0x0000000000403e10 0x0000000000403e10 0x0001f0 0x0001f0 R   0x1

$ readelf -W -d ./hello | grep BIND_NOW

```

##### 启用全 RELRO

要启用全 RELRO，请在 `gcc` 编译时，使用以下命令行参数：

```
$ gcc -Wl,-z,relro,-z,now hello.c -o hello

$ checksec --file=./hello --output=json | jq | grep relro
    "relro": "full",

```

现在， RELRO 中的第二个属性也被启用，使程序变成全 RELRO：

```
$ readelf -W -l ./hello | grep GNU_RELRO
  GNU_RELRO      0x002dd0 0x0000000000403dd0 0x0000000000403dd0 0x000230 0x000230 R   0x1

$ readelf -W -d ./hello | grep BIND_NOW
 0x0000000000000018 (BIND_NOW)

```

#### 6、Fortify

Fortify 是另一个安全属性，但它超出了本文的范围。Checksec 是如何在二进制文件中验证 Fortify，以及如何在 `gcc` 编译时启用 Fortify，作为你需要解决的课后练习。

```
$ checksec --file=/bin/ls --output=json | jq  | grep -i forti
    "fortify_source": "yes",
    "fortified": "5",
    "fortify-able": "17"

$ checksec --file=./hello --output=json | jq  | grep -i forti
    "fortify_source": "no",
    "fortified": "0",
    "fortify-able": "0"

```

### 其他的 Checksec 功能

关于安全性的话题是永无止境的，不可能在本文涵盖所有关于安全性的内容，但我还想提一下 Checksec 命令的一些其他功能，这些功能也很好用。

#### 对多个二进制文件运行 Checksec

你不必对每个二进制文件都进行一次 Checksec。相反，你可以提供多个二进制文件所在的目录路径，Checksec 将一次性为你验证所有文件：

```
$ checksec --dir=/usr

```

#### 对进程运行 Checksec

Checksec 除了能检查二进制文件的安全属性，Checksec 还能对程序起作用。以下的命令用于查找你系统上所有正在运行的程序的安全属性。如果你希望 Checksec 检查所有正在运行的进程，可以使用 `--proc-all`，或者你也可以使用进程名称，选择特定的进程进行检查：

```
$ checksec --proc-all

$ checksec --proc=bash

```

#### 对内核运行 Checksec

除了本文介绍的用 Checksec 检查用户态应用程序的安全属性之外，你还可以使用它来检查系统内置的 <ruby> 内核属性 <rt>  kernel properties </rt></ruby>：

```
$ checksec --kernel

```

### 快来试一试 Checksec 吧

Checksec 是一个能了解哪些用户空间和内核的安全属性被启用的好方法。现在，你就可以开始使用 Checksec，来了解每个安全属性是什么，并明白启用每个安全属性的原因，以及它能阻止的攻击类型。

---

via: <https://opensource.com/article/21/6/linux-checksec>

作者：[Gaurav Kamathe](https://opensource.com/users/gkamathe) 选题：[lujun9972](https://github.com/lujun9972) 译者：[chai001125](https://github.com/chai001125) 校对：[wxy](https://github.com/wxy)

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


如何在 Linux 上安装 AWS 命令行工具

Summary: 本文讲述如何一步步在 Linux 上安装 AWS CLI（命令行工具）。

本文讲述如何一步步在 Linux 上安装 AWS CLI（命令行工具）。

# 如何在 Linux 上安装 AWS 命令行工具

>
> 本文讲述如何一步步在 Linux 上安装 AWS CLI（命令行工具）。
>
>
>

AWS CLI 是一个能够和 AWS 账户进行交互的命令行程序。开发者和系统管理员用它管理日常的活动和自动化。

### 准备环节

* 安装好的 Linux 系统
* 具有管理员权限的 sudo 账户
* 能够联网

现在让我们开始安装：

### 1、下载安装文件

打开终端使用 `curl` 命令下载 AWS CLI 的安装文件：

```
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

```

以上命令会在当前工作目录下载一个 `awscliv2.zip` 的文件。

使用 [ls 命令](https://www.linuxtechi.com/linux-ls-command-examples-beginners/) 确认当前下载下来的文件：

```
$ ls -l awscliv2.zip
-rw-rw-r-- 1 linuxtechi linuxtechi 47244662 Oct 20 10:53 awscliv2.zip
$

```

### 2、解压缩下载的文件

使用 [unzip 命令](https://www.linuxtechi.com/linux-zip-unzip-command-examples/) 解压安装包：

```
$ unzip awscliv2.zip

```

它会在当前目录创建一个 `aws` 文件夹，把解压好的文件放进去：

```
$ ls -ld aws
drwxr-xr-x 3 linuxtechi linuxtechi 4096 Oct 19 17:18 aws
$

```

### 3、运行安装脚本

使用以下命令运行安装脚本：

```
$ sudo ./aws/install

```

脚本会把所有安装的文件放到 `/usr/local/aws-cli` 目录下，然后创建一个链接文件到 `/usr/local/bin` 目录。

### 4、检查 AWS CLI 的版本

运行以下脚本检查版本：

```
$ aws --version
aws-cli/2.8.4 Python/3.9.11 Linux/5.15.0-48-generic exe/x86_64.ubuntu.22 prompt/off
$

```

### 5、配置 AWS CLI

为了验证 AWS CLI 是否安装正确，开始配置 AWS CLI：

登录你的 AWS 管理控制台，取得 AWS <ruby> 访问密钥 ID <rt>  Access Key ID </rt></ruby> 和 <ruby> 安全访问密钥 <rt>  Secret Access Key </rt></ruby>。

如果还没完成创建，请先创建，并把它们复制到安全的地方。

然后回到命令行，运行以下命令：

```
$ aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxx
Default region name [None]: us-west-2
Default output format [None]: json
$

```

以上的证书会被保存到这个文件：

```
$ cat  ~/.aws/credentials

```

上面的命令的输出：

运行 `aws` 命令列出你账户中的 s3 储存和 VPC：

```
$ aws s3 ls
$ aws ec2 describe-vpcs

```

输出如下：

成功输出内容，说明你的 AWS CLI 已经配置完成。

这就是这篇文章的全部内容，请在下面的评论区发表你的疑问和反馈。

---

via: <https://www.linuxtechi.com/how-to-install-aws-cli-on-linux/>

作者：[Pradeep Kumar](https://www.linuxtechi.com/author/pradeep/) 选题：[lkxed](https://github.com/lkxed) 译者：[littlebirdnest](https://github.com/littlebirdnest) 校对：[wxy](https://github.com/wxy)

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


硬核观察 #824 一半的 macOS 恶意软件都来自一个“杀毒软件”

Summary:
❶ 一半的 macOS 恶意软件都来自一个“杀毒软件”
❷ 开源推动 5G 占据了 50% 的电信市场
❸ Mozilla 收入更多样，但仍然主要依靠谷歌

老王点评：这可真够讽刺的，一个杀毒软件反而是最大的黑窝。

大胆刁民

# 硬核观察 #824 一半的 macOS 恶意软件都来自一个“杀毒软件”

### 一半的 macOS 恶意软件都来自一个“杀毒软件”

Elastic 安全实验室发现，一半 macOS 恶意软件来自 MacKeeper。讽刺的是，MacKeeper 声称 “以零努力保持你的 Mac 清洁和安全”。该程序可以被威胁者滥用，因为它有广泛的权限和对进程和文件的访问。这意味着，一个旨在保持 Mac 安全不受网络威胁的程序可能使你的系统处于危险之中。 MacKeeper 也以难以完全卸载而著称。然而，Mac 仍然是恶意软件最少的操作系统，研究发现只有 6.2% 的恶意软件出现在 macOS 上，而 Windows 和 Linux 上则分别为 54.4% 和 39.4%。

>
> **[消息来源：Neowin](https://www.neowin.net/news/study-almost-50-of-macos-malware-only-comes-from-one-app/)**
>
>
>

>
> 老王点评：这可真够讽刺的，一个杀毒软件反而是最大的黑窝。
>
>
>

### 开源推动 5G 占据了 50% 的电信市场

5G 部署现在已经超过 50% 的电信市场规模，这得益于开源。Linux 基金会称，在这一切的背后，“是向开放网络和框架的彻底转变。无论经济和政治风向如何，这种转变都在继续。事实上，开源可能是唯一没有受到影响的领域，因为它有能力跨越国界和边界来做需要做的事情。”据一些分析师的说法，到 2030 年，5G 的经济价值将达到 7 万亿美元。

>
> **[消息来源：ZDNet](https://www.zdnet.com/article/thanks-to-open-source-5g-cracks-50-of-the-telecom-market/)**
>
>
>

>
> 老王点评：开源居然对 5G 的推广有这么大的作用，这是有些想不到。
>
>
>

### Mozilla 收入更多样，但仍然主要依靠谷歌

Mozilla 今天发布了其年度《Mozilla 状况》报告，2021 年，Mozilla 公司从搜索合作、订阅和广告收入中获得了 5.85 亿美元，比前一年增长了 25%。除了主要来自谷歌的搜索合作的收入之外，来自 Mozilla VPN、Mozilla MDN Plus、Pocket 等新产品的收入为 5700 万美元，与前一年相比增长了 125%。

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2022/11/17/mozilla-looks-to-its-next-chapter/)**
>
>
>

>
> 老王点评：虽然 Mozilla 也有一些让人批评的地方，但是这已经是自由开源世界不多的重要旗舰了。
>
>
>


学习 Python：我最喜欢的 7 个资源

Summary: 这些年来，我通过这些开源资源提高了我的 Python 技能。

这些年来，我通过这些开源资源提高了我的 Python 技能。

# 学习 Python：我最喜欢的 7 个资源

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

>
> 这些年来，我通过这些开源资源提高了我的 Python 技能。
>
>
>

我最近决定进一步学习 Python，以便提高我的教学技能，拓宽我的学生的视野。在这个过程中，我发现了这些优秀的资源，让我学习新的代码，并提高了对 Python 的整体理解。

### 1、《教孩子学编程 Python 语言版》

我的 Python 之旅大约是 7 年前开始的，当时我发现了 Apple LOGO 和 Python 中的 [Turtle 模块](https://opensource.com/article/21/9/logo-python-turtle) 之间的联系。当时使用的 Linux 计算机的默认 Python 版本为 Python 2.7，我很快发现我想使用 Python 3。我成功地安装了它，并开始使用 Turtle 模块编写一些简单的程序。在阅读 Dr. Bryson Payne 的 《[教孩子学编程 Python 语言版](https://opensource.com/education/15/9/review-bryson-payne-teach-your-kids-code)》 之后，我意识到 Python 不仅仅是 Turtle。那时我安装了 [IDLE](https://docs.python.org/3/library/idle.html)。

### 2、IDLE

在使用 IDLE 工作的过程中，交互式界面优化了我的体验，并让我有足够的信心来考虑向学生教授 Python。我志愿帮助我社区中的一群在家学习的孩子，很快我发现自己在教授一个有十六个孩子的班级！我很高兴他们的父母同意帮助我，否则我想我会被压垮。这个经历激发了我学习更多的欲望，以便我可以教授更多。

### 3.、Mu 编辑器

2018 年春天，我参加了 PyConUS。我听了一场由中学老师 [Nicholas Tollervey](https://us.pycon.org/2018/speaker/profile/194/) 主讲的演讲，他为学龄前儿童编写了一个 Python 开发环境。[Mu 编辑器](https://opensource.com/article/20/9/teach-python-mu) 内置了一个可以帮助我找到代码中的错误的 <ruby> 质检工具 <rt>  Linter </rt></ruby>。Mu 帮助我提高了我的编码技能，我也能够与学生分享这些技能，他们也从中受益。

我的自信和经验增长后，我希望与更多的学生分享 Python 之旅。我与其他人合作撰写了一个申请书，以教授一个使用树莓派 4 和 Python 的课程。疫情打断了这个计划。在此期间，树莓派基金会发布了树莓派 400。2021 年春天，我使用了前一年开发的材料和一个来自当地图书馆的慷慨的资助，来 [教授两组](https://opensource.com/article/21/6/teach-python-raspberry-pi) 学生如何编程。这个活动非常成功并在今年再次举办。

### 4、Codium

几年前，我了解到微软的 VS Code 是一个可以在 Linux 上使用的开源代码编辑器。我最近才了解到，如何在 VS Code 中配置和使用 Python 虚拟环境。我的问题在一篇 [关于虚拟环境的文章](https://opensource.com/article/20/10/venv-python) 中得到了解答，这让我可以知道如何在 Linux 计算机上设置和配置 Python 虚拟环境。大约在同一时间，我发现了 [Codium](https://opensource.com/article/22/11/python-vs-code-codium)，一个围绕 VS Code 构建的社区项目。

现在我希望与我的学生分享 VS Codium 的体验，并让他们对 Python 的理解不再局限于 Turtle 模块。这种学习的热情让我寻找开源且可以在互联网上随意获得的教学资源。

### 5、《Python 编程练习，简单解释》

《[Python 编程快速上手 让繁琐工作自动化](https://automatetheboringstuff.com/#toc)》 这本书是我最喜欢的一本书。现在，作者已经发布了 《[Python 编程练习，简单解释](https://inventwithpython.com/pythongently/)》。这两本书都可以免费在线阅读，并且都采用了知识共享许可证。

### 6、《每个人都可以使用 Python》

Dr. Charles Severance 在 2017 年发布了 《[每个人都可以使用 Python](https://www.py4e.com/lessons)》，我非常推荐这本书。他为像我这样的有抱负的程序员提供了简短的课程。课程的代码可以在 [GitHub](https://github.com/csev/py4e) 上找到，所以你可以下载它并在自己的计算机或学校网络上安装它。

### 7. Python 视频

最近，我了解到 [Jay LaCroix](https://opensource.com/users/jlacroix) 在 YouTube 上有一系列精彩的视频，其中包括 28 个免费视频，从 Python 基础开始，涵盖了 [Python 编程](https://youtube.com/playlist?list=PLT98CRl2KxKGIazPd2nQEPbG7sQpT8LEj) 的全面介绍。最重要的是，他使用的是 Linux 计算机，因此他的课程特别适合 Linux 编程环境。这些视频的其中一个收获是学习如何使用 [nano](https://opensource.com/article/20/12/gnu-nano) 作为编程环境，它默认情况下包含在大多数 Linux 发行版中。

### 你的学习之路

此处提到的这七个资源帮助我成长为一名程序员，它们都是开源的并可以与其他人分享。你是如何提高编程技能的？你有什么要分享的吗？在评论中告诉我们。

---

via: <https://opensource.com/article/22/11/learn-python>

作者：[Don Watkins](https://opensource.com/users/don-watkins) 选题：[lkxed](https://github.com/lkxed) 译者：[Cubik65536](https://github.com/Cubik65536) 校对：[wxy](https://github.com/wxy)

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


使用 ImageMagick 修复扫描图像

Summary: 使用这个开源工具，即使是批量校正图像也很容易。

使用这个开源工具，即使是批量校正图像也很容易。

# 使用 ImageMagick 修复扫描图像

>
> 使用这个开源工具，即使是批量校正图像也很容易。
>
>
>

多年前，在翻阅一家旧书店的书架上的内容时，我偶然发现了一本名为 《UNIX System Command Summary for Berkeley 4.2 & 4.3 BSD》 的小册子，由 Specialized Systems Consultants 出版。我买它是出于好奇，因为它已经有将近 20 年的历史了，但仍然在很大程度上适用于现代 Linux 和 BSD。

无论是当时还是现在，我都很开心。一本写于 1986 年的小册子在 2016 年仍然很重要，而同一个书架上关于专有操作系统的书籍并不值得印刷它们的纸张。（想一想：你认为什么技术可以在僵尸末日中幸存下来？）这本小册子已经放在我自己的书架上好几年了，但我突然想到可能值得对这个作品做一点数字保存，所以我决定扫描这本小册子来创建一本 [CBZ 电子书](https://opensource.com/article/19/3/comic-book-archive-djvu)。

使用 [Skanlite](https://opensource.com/article/22/2/scan-documents-skanlite-linux-kde) 进行扫描很容易，但很耗时。然而，当我完成后，我发现有些页面不是很平整。

在打印中，这称为配准问题，这意味着打印内容的位置在页面上的方向不正确。

### ImageMagick

[ImageMagick](https://opensource.com/article/17/8/imagemagick) 是基于终端的非交互式图形编辑器。尝试在无图形环境（如纯文本终端）中编辑图形似乎违反直觉，但实际上很常见。例如，当你将图像上传到 Web 应用用作个人资料图片时，应用服务器上的脚本可能会使用 ImageMagick 或其库处理你的图像。非交互式编辑器的优点是你可以制定需要对示例图像执行的操作，然后只需按一下按钮即可将这些效果应用于数百个其他图像。

ImageMagick 通常与其他图形编辑器一样强大，只要你花时间了解它的许多功能以及如何组合它们以实现所需的效果。在这种情况下，我想旋转歪斜的页面。在搜索了 ImageMagick 的文档后，我发现我需要的解决方案的 ImageMagick 术语称为纠偏。将你的术语与其他人的术语保持一致对于你不知道的任何事情都是一个挑战，因此当你使用 ImageMagick（或其他任何东西）时，请记住，你描述问题或解决方案的用词可能和别人不一样。

要使用 ImageMagick 对带有弯曲文本的图像进行校正：

```
$ convert page_0052.webp -deskew25% fix_0052.webp

```

`-deskew` 选项表示可接受偏差的阈值。通过跟踪看似字母的对象的峰谷来确定倾斜。根据扫描的弯曲程度，你可能需要多于或少于 25% 的阈值。我已经达到了 80%，到目前为止，低于 25% 没用效果。

结果如下：

修复了！将其应用于文档的剩余 55 页以修复倾斜的页面，而对已经笔直的页面不做任何事情。换句话说，由于我的阈值设置，在不需要调整的页面上运行此命令是安全的。

### 使用 ImageMagick 裁剪图像

在纠正了歪斜之后，因为我扫描每一页都比必要的范围要多，以防止意外切断单词，我认为裁剪我纠正的页面是有意义的。我很高兴在页边空白处保留一些空间，但没有以前那么多。我经常使用 ImageMagick 的“裁剪”功能来处理这个网站上的图像，所以我很熟悉这个选项。但是，我需要确定如何裁剪每一页。

首先，我需要图像的大小：

```
$ identify fixed_0052.webp
WEBP 1128x2593 1128x2593+0+08-bit sRGB 114732B 0.020u 0:00.021

```

知道尺寸后，我能够对我可以承受的丢失多少像素做出一些估计。经过几次试运行，我得到了这个：

```
convert fix_0052.webp -gravity Center -crop 950x2450+0+0 crop_0052.webp

```

这并不完全适合，但当我将它应用于册子中的其他图像时，它被证明很重要。这些页面的内容和扫描仪位置各不相同，所以我很高兴给每一页一点空余空间。

这是校正和裁剪的图像：

### 使用开源批量编辑图像

ImageMagick 的美妙之处在于，当你确定了修复图像的公式，你就可以将该修复应用于需要相同修复的所有图像。我使用 [GNU Parallel](http://LINK-TO-SETH-GNU-PARALLEL-REDHAT.COM/SYSADMIN) 执行此操作，它使用我所有的 CPU 内核来完成数百页的图像校正。这并不需要很长时间，而且结果不言而喻。更重要的是，我已经有了一个 UNIX 历史上有趣作品的数字档案。

---

via: <https://opensource.com/article/22/11/fixing-scanned-images-imagemagick>

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

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


如何在 Ubuntu 和其他 Linux 发行版中安装 FFmpeg

如果你的软件装的够多，那么 ffmpeg 会作为依赖装进系统。

至少在 Arch 上，只要装了以下软件，ffmpeg 就有了：

blender, chromium, electron, firefox, mplayer, mpv, obs-studio, openshot, scrcpy...........

# 如何在 Ubuntu 和其他 Linux 发行版中安装 FFmpeg

>
> 本教程讲述了在 Ubuntu 和其他 Linux 系统中安装 FFmpeg 所需的步骤。
>
>
>

FFmpeg 是一系列用于操作多媒体文件的库和软件程序。整个 FFmpeg 是一组强大的库，允许你转换、推流和操作音频和视频文件。许多前端 Linux 应用程序将其用作后端并依赖它。例如，屏幕录制应用程序可能需要 FFmpeg 将录制的流转换为 Gif 图像。

主流的应用程序和服务，如 VLC 媒体播放器、YouTube、Blender、Kodi、Shotcut 和 Handbrake 等，都使用 FFmpeg。

>
> 趣事：NASA 2020 年发射的毅力号火星探测器使用 FFmpeg 完成和处理图像和视频，然后将其发送回地球！
>
>
>

### 关于 FFmpeg 包

[FFmped](https://ffmpeg.org/) 是一个强大的命令行工具。它支持 Linux、Windows 和 macOS，并支持多种架构。它是用 C 和汇编编写的，提供了强大的性能和跨平台实用性。

#### 核心

FFmpeg 的核心是命令行实用程序。它们可以在命令行上使用，也可以从任何编程语言中调用。例如，你可以从 Shell 程序、Python 脚本等程序中使用它们。

* `ffmpeg`：用于转换音频和视频流，包括来自 TV 卡等实时流的源
* `ffplay`：此软件包中捆绑的媒体播放器，用于播放媒体
* `ffprobe`：命令行工具，用于显示媒体信息 - 可以以 txt、csv、xml、json 格式输出

### FFmpeg 安装

在 Ubuntu 和其他 Linux 发行版中安装 FFmpeg 很容易。打开终端并运行以下命令以安装。

#### Ubuntu 以及相似的发行版

```
sudo apt install ffmpeg

```

#### Fedora

对于 Fedora Linux，你需要添加 [RPM Fusion repo](https://www.debugpoint.com/2020/07/enable-rpm-fusion-fedora-rhel-centos/)。Fedora 官方仓库没有 FFmpeg 包。

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

```

```
sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-

```

```
sudo dnf install ffmpeg

```

#### Arch Linux

```
pacman -S ffmpeg

```

在安装完成后，你可以使用以下命令验证安装。

```
ffmpeg --version

```

### 示例：ffmpeg 的基础用法

首先，让我给你一个简单的例子。考虑以下示例。它只是将 mp4 文件转换为 mkv 文件。

1、转换一个基本的视频文件

```
ffmpeg -i big_buck_bunny.mp4 big_buck_bunny.mkv

```

当然，这是最简单的方法，但它不完整，因为它没有转换所需的视频文件的比特率、分辨率和其他属性。

2、转换一个音频文件

其次，你可以使用类似的命令转换音频文件。

```
ffmpeg -i sunny_day.ogg sunny_day.mp3

```

3、使用音频和视频编解码器转换

最后，以下示例可以使用指定的编解码器转换视频文件。参数 `-c` 带有的 `a` 或 `v` 分别定义音频和视频。下面的命令使用 `libvpx` 视频和 `libvorbis` 音频编解码器进行转换。

```
ffmpeg -i big_buck_bunny.mp4 -c:v libvpx -c:a libvorbis big_buck_bunny.webm

```

### 如何找出系统中可用的编解码器，编码器和解码器？

#### 列出所有编解码器

要列出所有可用的编解码器，请运行以下命令：

```
ffmpeg -codecs

```

该命令列出了所有可用的编解码器及其功能，是否支持解码或编码等。此外，它们根据下表的位置进行标识。

```
D..... = Decoding supported
.E.... = Encoding supported
..V... = Video codec
..A... = Audio codec
..S... = Subtitle codec
...I.. = Intra frame-only codec
....L. = Lossy compression
.....S = Lossless compression

```

#### 列出所有编码器

通过以下命令列出所有编码器：

```
ffmpeg -encoders

```

#### 列出所有解码器

同样的，你可以通过以下命令获取解码器列表：

```
ffmpeg -decoders

```

#### 详细信息

你还可以使用参数 `-h` 获取编码器或解码器的更多详细信息。

```
ffmpeg -h decoder=mp3

```

### 总结

我希望你学会了 FFmpeg 和它的命令的基础知识。你可以通过 [官方文档](https://ffmpeg.org/documentation.html) 了解更多有关该程序的信息。

---

via: <https://www.debugpoint.com/install-ffmpeg-ubuntu/>

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

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


硬核观察 #825 Meta 公司最新的大型语言模型仅在网上生存了三天

Summary:
❶ Meta 公司最新的大型语言模型仅在网上生存了三天
❷ 中国在全球顶级芯片峰会上发表的论文数超越美国
❸ 对多因素认证的攻击正在增加

切，凑数而已，什么？日经？那没事了，考虑到日本还在用软盘。。。还能喷什么？！

# 硬核观察 #825 Meta 公司最新的大型语言模型仅在网上生存了三天

### Meta 公司最新的大型语言模型仅在网上生存了三天

11 月 15 日，Meta 公司发布了一个名为 Galactica 的新的大型语言模型。它是一个用于科学的大型语言模型，由 4800 万篇科学文章、网站文章、教科书、讲义和维基等训练而成。Meta 公司将其模型宣传为研究人员和学生的捷径，说它“可以总结学术论文，解决数学问题，生成维基文章，编写科学代码，为分子和蛋白质做注解，等等。”但是，像所有的语言模型一样，Galactica 只是一个无意识的机器人，无法区分事实与虚构。几小时内，科学家们就在社交媒体上分享了它有偏见和不正确的结果。三天后，Meta 撤下了它的在线演示版本。

>
> **[消息来源：Technology Review](https://www.technologyreview.com/2022/11/18/1063487/meta-large-language-model-ai-only-survived-three-days-gpt-3-science/)**
>
>
>

>
> 老王点评：这可能是最短命的 AI。不过抛开夸大的宣传，它或许会有一些更务实的用途。
>
>
>

### 中国在全球顶级芯片峰会上发表的论文数超越美国

国际固态电路会议（ISSCC）将于明年初在旧金山举行。据会议委员会称，本次会议通过了筛选的 198 篇论文中有 59 篇来自中国，42 篇来自美国，32 篇来自韩国。中国论文数从第三位上升到第一位，中国在每个类别的入选研究论文数量都有所增加。ISSCC 于 1954 年首次举行，它是该领域最大和最著名的国际会议。

>
> **[消息来源：日经新闻](https://asia.nikkei.com/Business/Tech/Semiconductors/China-tops-U.S.-to-take-research-crown-at-global-chip-conference)**
>
>
>

>
> 老王点评：我们的芯片行业在进步，虽然这条路还很长。
>
>
>

### 对多因素认证的攻击正在增加

三年前，针对多因素认证（MFA）的攻击非常罕见，因为很少有机构启用 MFA。但随着微软、谷歌等开始推行多因素认证，对它的攻击开始增加。在这些攻击中，攻击者破坏了发给已经完成多因素认证的人的令牌，并复制该令牌以获得不同设备的访问。令牌是 OAuth 2.0 身份平台的核心，其目的是使用户的身份验证更简单、更快速，并能抵御密码攻击。微软的检测和响应团队发现攻击者为此目的利用令牌盗窃的情况有所增加。

>
> **[消息来源：ZDNet](https://www.zdnet.com/article/microsoft-hackers-are-using-this-concerning-tactic-to-dodge-multi-factor-authentication/)**
>
>
>

>
> 老王点评：道高一尺魔高一丈，安全的关键其实不是技术，是人。
>
>
>


使用 Linux 的 ping 命令诊断网络连接问题

Summary: 在本文中，我们将讨论网络连接最基本的诊断工具之一：ping 命令。

在本文中，我们将讨论网络连接最基本的诊断工具之一：ping 命令。

# 使用 Linux 的 ping 命令诊断网络连接问题

>
> 在本文中，我们将讨论网络连接最基本的诊断工具之一：`ping` 命令。
>
>
>

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

如今，联网计算机变得十分普遍，以至于我们大多数人都理所当然地认为，房间一侧的计算机可以连接上房间另一侧的计算机，更不用说能连接上世界的另一端的计算机了。如此，网络使互联网、云、文件共享、媒体流、远程管理、打印等服务成为可能。但是当网络出现问题时，有时很难诊断到底是其中哪一环节出现了问题。下面，我们就来介绍：网络连接最基本的诊断工具之一—— `ping` 命令。

### 基本的 ping 命令

当你无法访问本地网络上的计算机或互联网上的服务器时，你可以 `ping` 它的 IP 地址。`ping` 将 <ruby> 互联网控制报文协议 <rt>  Internet Control Message Protocol </rt></ruby>（ICMP）数据包发送到目标 IP 地址。当我们要对网路连接状况进行判断时，ICMP 是个非常有用的协议，本质上 ICMP 是一个响应和应答信号。

让我们由近及远地进行故障排除。请先 `ping` 你自己的计算机，以确保你的计算机正在运行 <ruby> 网络栈 <rt>  networking stack </rt></ruby>。你正在操作的计算机称为 <ruby> 主机 <rt>  localhost </rt></ruby>，本地回环地址是：`127.0.0.1`。

`ping` 命令能用主机的 <ruby> 主机名 <rt>  hostname </rt></ruby>、IP 地址（即 `127.0.0.1`）或者仅仅用简写 `0` 来表示 “主机”。

你可以使用 `-c` 选项，来控制发送数据包的 <ruby> 次数 <rt>  count </rt></ruby>。

```
$ ping 0 -c 1
PING 0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.069 ms

--- 0 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.069/0.069/0.069/0.000 ms

```

在你确认本地网络栈已启动并运行后，接下来，你可以 `ping` 你的路由器的 IP 地址。路由器的 IP 地址通常以 `192.168` 或 `10` 开头。实际的 IP 地址取决于路由器的配置。

当你没有指定要发送多少次请求时，你可以用 `Ctrl+C`，来终止 `ping` 的运行。

```
$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
From 192.168.0.100: icmp_seq=2 Redirect Host(New nexthop: 192.168.0.1)
From 192.168.0.100: icmp_seq=3 Redirect Host(New nexthop: 192.168.0.1)
From 192.168.0.100: icmp_seq=4 Redirect Host(New nexthop: 192.168.0.1)
From 192.168.0.100: icmp_seq=5 Redirect Host(New nexthop: 192.168.0.1)
^C

```

如果你能 `ping` 通路由器，则表示你的有线或无线连接能正常工作。

对于你的局域网上的其他主机呢？你可以 `ping` 各种设备，但是并非所有设备都能保证响应，因为一些设备会丢弃 ICMP 数据包，但许多设备会做出响应。例如，我可以 `ping` 我的打印机：

```
$ ping 192.168.0.4

```

### ping 路由器以外的其他服务器

在确定你自己的网络内部都能连通以后，你还可以 `ping` 通到路由器以外的其他服务器。同样地，并非所有服务器都能接收 ICMP 数据包，更不用说响应 ICMP 数据包了。然而，也有一些服务器可以接收并响应 ICMP 数据包，而在互联网中的一个重要服务器是 <ruby> 域名服务器 <rt>  nameserver </rt></ruby>。

谷歌的 <ruby> 域名解析服务器 <rt>  DNS server </rt></ruby>的 IP 地址很容易记住，而且它会响应 `ping` 请求：

```
$ ping -c 2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.5 ms

--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 53.304/53.424/53.544/0.120 ms

```

当你连不上一个网站时，你可以查询全球 DNS 网络，以找出其主机服务器的地址，然后 `ping` 该服务器。这至少可以告诉你，网站不通的原因是主机已关闭，或者只是 Web 服务器问题。

例如，假设你尝试访问 `example.com`，但是发现失败了。首先，使用 `host` 命令找到 `example.com` 的 IP 地址：

```
$ host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
example.com mail is handled by 0

```

然后，`ping` 该网站的的 IP 地址：

```
$ ping 93.184.216.34 -c 1

```

### 使用 IPv6

`ping` 不仅可以使用 IPv4，还能使用 IPv6。可以通过指定 `-4` 或 `-6` 选项，来只使用 IPv4 或 IPv6。

### 设置数据包大小

你可以使用 `-s` 选项，来更改要发送的 ICMP 数据包的 <ruby> 大小 <rt>  size </rt></ruby>。默认的数据大小为 56 字节，加上 8 字节包头，总共得到 64 字节的 ICMP 数据包。以下的示例将发送的 ICMP 数据包大小修改为 35+8=43 个字节：

```
$ ping -s 35 -c 5 8.8.8.8

```

你可以使用 `-D` 选项，使得在终端中的每个 `ping` 回复之前，先打印出当前的时间戳。该时间戳为 UNIX 时间戳，加上微秒：

```
$ ping -D 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
[1634013430.297468] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms
[1634013431.298738] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.1 ms

```

### 设置时间间隔/长短

你可以使用 `-i` 选项，来更改两次 `ping` 请求之间的 <ruby> 时间间隔 <rt>  interval </rt></ruby>。以下的示例将 `ping` 间隔更改为 2 秒：

```
$ ping -i 2

```

你也可以使用 `-w` 选项，来在一段时间后终止 `ping`，单位为秒。

```
$ ping -w 6

```

### ping 的变体

`ping` 有很多变体。例如，`iputils` 包提供了 `ping` 命令；[Busybox](https://opensource.com/article/21/8/what-busybox) 也有`ping` 命令；BSD 也有；甚至还有一个图形界面的 `ping`：`gping`，它可用于 Linux、macOS 和 Windows。你可以在 [GitHub](https://github.com/orf/gping) 上找到更多有关 `gping` 的信息。

### 一起来学习吧

`ping` 命令很简单，但它可以帮你诊断网络连接问题。下次再遇到网络连接问题时，让 `ping` 命令成为你解决问题的第一个工具吧。

---

via: <https://opensource.com/article/21/10/linux-ping-command>

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

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


Fedora Workstation 37 中的新功能

Summary: 文介绍了 Fedora Workstation 37 中一些面向用户的新功能。

redhat系真他妈卡

# Fedora Workstation 37 中的新功能

Fedora Workstation 37 是 Fedora Project 桌面操作系统的最新版本，由致力于推动开源创新的全球社区开发。本文介绍了 Fedora Workstation 37 中一些面向用户的新功能。现在就从 GNOME “<ruby> 软件 <rt>  Software </rt></ruby>”应用升级，或者在你最喜欢的终端模拟器中使用 [dnf system-upgrade](https://docs.fedoraproject.org/en-US/quick-docs/dnf-system-upgrade/) 升级！

### GNOME 43

Fedora Workstation 37 具有最新版本的 GNOME 桌面环境，其中包含更多移植到 GTK 4 的核心应用、用户界面调整和性能调整。查看 [GNOME 43 发行说明](https://release.gnome.org/43/) 了解更多信息！

#### 重新设计的快速设置菜单

新的“<ruby> 快速设置 <rt>  Quick Settings </rt></ruby>”菜单提供更多控制和便利。你现在可以在菜单中轻松切换你的 Wi-Fi 网络，而不用进入全屏对话框；在默认模式和深色模式之间切换；以及在不打开“<ruby> 设置 <rt>  Settings </rt></ruby>”应用的情况下启用夜灯。现在还提供了一个方便的截屏和录屏按钮。

#### 核心应用

Fedora Workstation 37 中包含的 GNOME 核心应用已经进行了一轮调整和改进：

* “<ruby> 文件 <rt>  Files </rt></ruby>”应用已移植到 GTK 4，并且用户界面有许多改进。这里只是其中的一些：
	+ 它现在是自适应的，这意味着它会自动调整到更窄的尺寸，从而更好地利用可用空间。
	+ 列表视图已重新设计，使橡皮筋选择更容易。
	+ 重新设计了 “<ruby> 属性 <rt>  Properties </rt></ruby>” 和 “<ruby> 打开方式…… <rt>  Open With… </rt></ruby>” 对话框。

* “<ruby> 日历 <rt>  Calendar </rt></ruby>”应用有一个新的边栏，可以一目了然地显示即将发生的事件。它与“<ruby> 联系人 <rt>  Contacts </rt></ruby>”应用一起，现在具有自适应用户界面。
* “<ruby> 角色 <rt>  Characters </rt></ruby>”应用现在会向你显示不同的肤色、头发颜色和表情符号的性别选项。
* “<ruby> 软件 <rt>  Software </rt></ruby>” 中的包源选择器已重新设计并移至更显眼的位置。
* “<ruby> 地图 <rt>  Maps </rt></ruby>”应用已移植到 GTK 4。
* “<ruby> 设置 <rt>  Settings </rt></ruby>”应用包括一个新的“<ruby> 设备安全 <rt>  Device Security </rt></ruby>”面板，让你可以轻松查看你的设备提供或缺少的硬件安全功能！

### 新补充的默认壁纸

Fedora Workstation 37 附带一组新的补充壁纸。 [在这里看看它们是如何制作的！](https://blog.linuxgrrl.com/2022/06/27/abstract-wallpapers-in-blender-using-geometry-nodes/)

### Fedora Linux 37 的底层变化

Fedora Linux 37 具有许多底层更改。以下是一些值得注意的：

* 现已正式支持树莓派 4 单板机，包括 3D 加速！
* 在 BIOS 系统上的新安装将使用 GPT 磁盘布局，而不是传统的 MBR 布局。在 BIOS 系统上，安装程序镜像现在还将使用 GRUB 而不是 syslinux 进行引导。
* 如果你禁用然后重新启用 SELinux，或运行 `fixfiles onboot` 命令，文件系统的重新标记过程现在将并行完成，从而显着提高速度。
* 波斯语的默认字体已从 DejaVu 和 Noto Sans Arabic 更改为 Vazirmatn，为在波斯语中使用 Fedora Linux 的用户提供更一致的体验。

### 还有这些...

Fedora 项目中发生的很酷的事情！

* Fedora CoreOS 和 Fedora Cloud Base 已升级为 “<ruby> 版本 <rt>  Edition </rt></ruby>” 级别！
* Fedora Linux 系统安装程序，带有新 GUI 的 Anaconda 预览安装程序镜像将在大约一周内可用。我将发布一篇文章以提供更多详细信息，敬请关注！

---

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

作者：[Merlin Cooper](https://fedoramagazine.org/author/mxanthropocene/) 选题：[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/) 荣誉推出


硬核观察 #826 新的包管理器让开源贡献者得到报酬

Summary:
❶ 新的包管理器让开源贡献者得到报酬
❷ 协调世界时将停止添加“闰秒”
❸ GIMP 2.99.14 发布

没记错的话，上一个gimp版本的发布公告不就说是最后一个2.x版本吗

需要砍一刀~

把3.0砍了吧，gtk都4.0了，怎么也得上gimp5.0，到时候和gtk6.0一起推出，还是落后一代

# 硬核观察 #826 新的包管理器让开源贡献者得到报酬

### 新的包管理器让开源贡献者得到报酬

MacOS 包管理器 Homebrew 的创建者新开发了一个名为 Tea 的包管理器，作为 Homebrew 的最终继承者。Tea 除了一些包管理器的新功能之外，还有一种基于区块链的方法，以确保开源软件的创造者、维护者和贡献者都能为他们的努力获得报酬。他从 NFT 中获得了灵感，简单来说，关注开源软件生态健康的人可以购买通证并质押，而 Tea 作为一个 DAO 会奖励质押者和注册的软件包及其依赖关系的贡献者。

>
> **[消息来源：Stack Overflow](https://stackoverflow.blog/2022/11/18/the-creator-of-homebrew-has-a-plan-to-get-open-source-contributors-paid-ep-506/)**
>
>
>

>
> 老王点评：一个探索的方向，不过我不是很看好。
>
>
>

### 协调世界时将停止添加“闰秒”

11 月 18 日，全球代表在计量大会（CGPM）上投票决定，“从 2035 年起，将搁置在官方时钟上增加‘闰秒’以使其与地球自转同步的做法。”这意味着从 2035 年开始，或者可能更早，天文时间（称为 UT1）将被允许与协调世界时（UTC）相差一秒以上，甚至多达一分钟，而协调世界时是以原子钟的稳定滴答为基础。添加闰秒的做法始于 1972 年。

>
> **[消息来源：《自然杂志》](https://www.nature.com/articles/d41586-022-03783-5)**
>
>
>

>
> 老王点评：添加闰秒给互联网服务和各种依赖精确计时的服务带来很多麻烦，而且我们可能还面临着史无前例的负闰秒。取消了也好。
>
>
>

### GIMP 2.99.14 发布

这是迈向 GIMP 3.0 的最新开发版本，GIMP 3.0 将从 GTK2 切换到 GTK3 工具箱，并有大量仍在开发中的其他改进。此版本的具体改进没有什么太值得说的，在发布公告中说，“从 3.0 的路线图中可以看出，大多数项目都‘接近完成’或‘已经完成’。……真正接近了 GIMP 3.0 的发布。……开始针对具体的痛点，很多痛点。”

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/GIMP-2.99.14-Released)**
>
>
>

>
> 老王点评：我觉得需要大伙帮忙砍一刀。
>
>
>


如何修复：“bash wget Command Not Found” 错误

# 如何修复：“bash wget Command Not Found” 错误

>
> 以下是你如何在 Debian、Ubuntu 和其他发行版中修复 “bash: wget command not found” 的错误。
>
>
>

著名的 `wget` 工具被用来通过终端从 URL 下载任何文件。它是 Linux 终端中最流行和最快速的工具之一。

作为一个 GNU 工具，`wget` 带来了一些奇妙的功能。你可以实现各种目的，如从网上提取信息、下载文件、暂停/恢复等。

然而，许多 [Linux 发行版](https://www.debugpoint.com/category/distributions) 在默认安装时并没有附带这个工具。因此，当你想用 `wget` 下载一些文件时，你会得到 wget 命令未找到的错误。

修复它其实很容易。

### 修复 wget 命令未找到

你所需要做的就是打开终端，运行以下命令来安装 `wget`。

对于 Ubuntu、Linux Mint、elementaryOS、Debian 和相关发行版：

```
sudo apt install wget

```

Arch Linux：

```
pacman -S wget

```

对于 Fedora（虽然它默认包括）：

```
sudo dnf install wget

```

安装后，你就可以使用 `wget` 程序了。你也可以通过检查其版本来验证它是否正确安装。

```
wget --version

```

### 如何使用 wget

下面是一些关于如何使用 `wget` 的例子。

命令的语法如下：

```
wget [选项]… [URL]…

```

例如，如果我想下载 Ubuntu 的 ISO 文件，那么我可以运行下面的命令，用 URL 直接下载。

```
wget https://releases.ubuntu.com/22.04.1/ubuntu-22.04.1-desktop-amd64.iso

```

同样，你也可以使用上述命令下载，或者，通过下面描述的几个开关组合。你也可以通过 `wget --help` 命令得到这个：

* `-t, --tries=NUMBER` 设置重试次数为 `NUMBER`（0 为不限）
* `--retry-connrefused` 即使连接被拒绝，也要重试
* `--retry-on-http-error=ERRORS` 逗号分隔的 HTTP 错误列表，以便重试
* `-O, --output-document=FILE` 将文件写入 `FILE` 中
* `--nc, --no-clobber` 跳过那些会下载到现有文件的下载（即覆盖它们）
* `--no-netrc` 不要试图从 `.netrc` 中获取证书
* `-c, --continue` 继续已部分下载的文件
* `--start-pos=OFFSET` 从 `OFFSET` 位置开始下载
* `--progress=TYPE` 选择进度条类型
* `--show-progress` 在详细模式下显示进度条
* `--N, --timestamping` 不重新获取文件，除非比本地文件新
* `--no-if-modified-since` 在时间戳模式下不使用条件性的 `if-modified-since` 获取请求的资源
* `--no-use-server-timestamps` 不以服务器上的时间戳来设置本地文件的时间戳
* `--S, --server-response` 打印服务器响应
* `--spider` 不下载任何东西
* `-T, --timeout=SECONDS` 设置所有的超时值为 `SECONDS` 秒
* `--dns-timeout=SECS` 将 DNS 查询超时设置为 `SECS`
* `--connect-timeout=SECS` 将连接超时设置为 `SECS`
* `--read-timeout=SECS` 设置读取超时为 `SECS`
* `--w, --wait=SECONDS` 在两次检索之间等待 `SECONDS` 秒（适用于检索的 URL 超过 1个）
* `--waitretry=SECONDS` 在检索的重试之间等待 1 到 `SECONDS` 秒（适用于检索的 URL 超过 1 个）
* `--random-wait` 在两次检索之间等待 `0.5WAIT` 到 `1.5WAIT` 秒（适用于检索的 URL 超过 1 个）

### 总结

我希望这个指南能帮助你解决 Linux 发行版中的 `wget` 错误。显然方案是非常简单的。

如果有帮助或者你有任何问题，请在下面留言。

>
> **[参考](https://www.gnu.org/software/wget/)**
>
>
>

---

via: <https://www.debugpoint.com/wget-not-found-error/>

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

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


适合程序员的十大 Linux 发行版（2022 版）

debian sid唉谁谁

linux常见发行版de日常鞭尸

依旧是这几个发行版

炒冷饭呗

适合程序员的十大 Linux 发行版（2022 版）

适合程序员的十大 Linux 发行版（2023 版）

适合程序员的十大 Linux 发行版（2024 版）

适合程序员的十大 Linux 发行版（2025 版）

适合设计师的十大 Linux 发行版（2023 版）

适合设计师的十大 Linux 发行版（2024 版）

适合设计师的十大 Linux 发行版（2025 版）

# 适合程序员的十大 Linux 发行版（2022 版）

>
> 我们点评了为程序员和开发人员提供的十大最佳 Linux 发行版（2022 版），以帮助他们完成工作和个人项目。
>
>
>

程序员和开发人员在其工作或项目中会使用各种工具和应用程序，包括代码编辑器、编程语言编译器、附加组件、数据库等。如果你对现代开发者的工作流程进行分类，它包含以下典型的工作流程：

* 访问代码库
* 编程
* 调试
* 测试
* 部署

而这种典型的工作流程可能需要各种工具。一个标准的清单可能是这样的：

* 代码编辑器
* 简单的文本编辑器
* 网页浏览器（网页开发者需要所有变体）
* 数据库引擎
* 一个本地服务器
* 编程语言相应的编译器
* 调试器
* 监测或剖析工具（可执行文件或网络版）

可以说，与 Windows 相比，Linux 是编程的最佳选择。（出于几个原因，我在本文中不对 macOS 进行比较。）Linux 是最佳选择的主要原因是，与 Windows 相比，在 Linux 发行版中已经预装具有现代技术的软件包和应用程序，或非常容易安装。

因此，在这篇文章中，我们想列出 2022 年最适合程序员的 Linux 发行版。

### 2022 年适合程序员的十大 Linux 发行版

#### 1、Fedora Workstation

也许这个名单中最完美的 Linux 发行版是 Fedora Linux。它用于桌面的默认 Workstation 版通过其选择的软件包带来了正宗的 GNOME 桌面体验。

Fedora Linux 的默认安装为你提供了所有主要的开发包，开箱即用。它们包括 PHP、OpenJDK、PostgreSQL、Django、Ruby on Rails、Ansible 等。

通过 dnf 软件包管理器安装更多的应用程序是非常简单的，如 VS Code 编辑器和其他软件包。你也可以借助“<ruby> 软件 <rt>  Software </rt></ruby>”应用来安装，这是一个应用商店，你只需点击一个按钮就可以搜索和安装应用程序。

Fedora Linux 支持 Snap 和 Flatpak，这给了你更多的灵活性。你也可以利用 Fedora 中的 RPM Fusion 仓库，这个仓库让你可以访问许多自由和非自由的软件包。由于许可证和其他明显的原因，Fedora Linux 不想在他们的主仓库中包括这些包。

你可以在下面的官网上查看最新的 Fedora Linux。

>
> **[下载 Fedora](https://getfedora.org/)**
>
>
>

#### 2、Ubuntu Linux

本列表中的第二个 Linux 发行版是 Ubuntu Linux。Ubuntu Linux 是目前在服务器和桌面上使用最多的 Linux 发行版。Ubuntu 提供长期支持（LTS）版本，有五年的官方支持（另外还有五年的维护支持），期间还有短期支持版本供高级用户使用。

由于它很流行，所有最新的软件包和应用程序供应商都提供 Ubuntu（.deb）版本。因其流行，也带来了论坛和文档的大量支持，这对开发者来说是完美的，特别是当你在开发阶段被错误困住的时候。在下面的链接中了解更多关于 Ubuntu 的信息。

>
> **[下载 Ubuntu](https://ubuntu.com/download)**
>
>
>

#### 3、openSUSE

openSUSE 是全球在关键系统中使用的最稳定和最专业的 Linux 发行版之一。这个 Linux 发行版是企业级工作负载的首选解决方案之一，包括台式机、服务器和瘦客户机。

它比 Ubuntu 和 Fedora 有一些优势。首先，它有两个变种：Leap 和 Tumbleweed。openSUSE Leap 是一个长期支持版本（LTS），提供最新的稳定性。openSUSE Tumbleweed 是一个滚动发布的软件，提供尖端的软件包。

如果你的开发需要最新的软件包和硬件支持，那么 Tumbleweed 就是你的选择。如果你需要稳定性和一个运行时间较长、维护量较小的系统，请选择 openSUSE Leap。

使用 openSUSE 进行开发工作的优势之一是其软件包管理器 YaST。使用 YaST 软件包管理器，你可以轻松地将许多事情自动化。

除此之外，openSUSE 的软件交付方式也很出色。它的软件门户在网上，你可以访问它，搜索一个软件包，然后点击安装。

如果与新用户相比，你对 Linux 有一定的经验，请选择 openSUSE 进行开发工作。

>
> **[下载 openSUSE](https://www.opensuse.org/)**
>
>
>

#### 4、Manjaro Linux

Manjaro Linux 是一个基于 Arch Linux 的发行版，它使 Arch 的安装变得简单。它基于 Arch Linux，但带来了一些功能，如像 Ubuntu 或 Linux Mint 那样的图形化安装程序、 pamac 安装程序、精心策划的软件仓库等。Manjaro 有三种主要的桌面风格：GNOME、KDE Plasma 和 Xfce，可以满足几乎所有用户的需求。

如果你想用 Arch Linux 和它的滚动发布包来满足你的开发需求，但又不想陷入安装原生 Arch 的麻烦，Manjaro 是你的完美选择。

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

#### 5、Arch Linux

虽然 Manjaro 和其他基于 Arch 的易于安装的 Linux 发行版已经出现，但你可能还是想用 [原生 Arch](https://www.debugpoint.com/2022/01/archinstall-guide/) 来亲手定制你的桌面。

这更多的是针对那些想要更多控制权和为项目或需求建立自定义 Linux 操作系统的资深开发者或程序员。在这些情况下，你可能想用你最喜欢的桌面安装 Arch Linux 来设置你的开发操作系统。

假设你对 Arch Linux 和计算机有一定的经验。在这种情况下，这是所有选择中最好的，因为它可以让你完全控制定制的 Linux 操作系统中的每个软件包。

>
> **[下载 Arch Linux](https://archlinux.org/download/)**
>
>
>

#### 6、Pop OS

Pop OS（写作 Pop!\_OS ）是由计算机制造商 System76 为其系列硬件开发的。Pop OS 是自由开源的，基于 Ubuntu。它遵循 Ubuntu 的发布周期，同时带来额外的调整，以及为用户定制的软件包。

Pop OS 是程序员的完美选择，因为它原生支持许多 Ubuntu 支持的编程语言。它因其打造的软件中心而在计算机科学家和程序员中广受欢迎，该软件中心有一个专门的部分介绍开发和编程的应用程序。

除此之外，Pop OS 中的 COSMIC 桌面（一个定制的 GNOME 桌面）为程序员提供了独特的体验，包括自动平铺、可爱的调色板、原生的深色模式和丰富的设置。

如果你需要一个基于 Ubuntu、稳定的、并对程序员友好的 Linux 发行版，那么请选择 Pop OS。

>
> **[下载 POP OS](https://pop.system76.com/)**
>
>
>

#### 7、KDE Neon

如果你是一个很习惯 KDE Plasma 桌面的开发者，并且想要一个基于 Qt 的开发环境，那么 KDE Neon 就非常适合你。

KDE Neon 是一个基于 Ubuntu LTS 版本的 Linux 发行版，带有最新的 KDE Plasma 桌面和 KDE 框架包。因此，在 KDE Neon 中，你可以得到 Ubuntu LTS 的稳定性和带有 Qt 的最新 KDE 软件包。

如果你需要一个拥有开箱即用的应用程序的快速系统、一个友好的用户界面和巨大的社区支持，这是一个完美的 Linux 发行版。

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

#### 8、Debian

Debian GNU/Linux 无需介绍。Debian 的稳定分支是 Ubuntu 及其所有衍生品的基础。因此，它是主要和稳定的 Linux 之一。它是你的开发环境的完美选择，因为它为你提供了终极稳定性和多年的支持。

不过，Debian 的稳定分支在采用最新软件包方面略显保守。Debian 的维护者会仔细检查和合并软件包，因为整个世界（嗯，几乎）都依赖于 Debian 的稳定性。

对于高级用户和系统管理员来说，如果你想要一个稳定的、长期运行的开发环境，并且维护工作量较少，那么它是一个完美的编程环境。

>
> **[下载 Debian Linux](https://www.debian.org/distrib/)**
>
>
>

#### 9、Kali Linux

Kali Linux 是由 Offensive Security 开发的，主要针对寻找网络漏洞的道德黑客和渗透测试人员。它预装了大量的黑客工具和应用程序。

如果你有足够的经验，它可以成为程序员和开发人员的一个完美的 Linux 发行版。如果你对 Linux 很熟悉，并且在处理错误和依赖关系方面有一定的经验，就可以选择 Kali Linux。

>
> **[下载 Kali Linux](https://www.kali.org/)**
>
>
>

#### 10、Fedora 实验室

而这个名单上的最后一个 Linux 发行版是 Fedora Linux 的发行版组合。

Fedora <ruby> 实验室 <rt>  Labs </rt></ruby>为程序员、科学家和学生提供了专门策划的 Linux 发行版，并预装了应用程序、相应的软件包和实用程序。很多人都不知道这些，如果配置得当，它们可以作为完美的现成 Linux 发行版为你服务。

下面是对它们的总结：

**Fedora 科学**

* 科学和数值开源工具与 KDE Plasma 桌面的结合
* 应用列表包括：
	+ 用于 C/C++ 的 GNU 科学库
	+ 与 MATLAB 兼容的 MGNU Octave
	+ LaTeX
	+ Maxima 计算机代数系统
	+ 用于绘制二维和三维图形的 Gnuplot
	+ 用于数据科学的 Pandas Python 库
	+ IPython
	+ 用于 Java 和 R 编程语言的软件包
* 关于 Fedora 科学，[在此下载](https://labs.fedoraproject.org/en/scientific/) 和了解更多。

**Fedora 计算神经科学**

* 带有 GNOME 桌面环境的开源神经科学应用程序和软件包。
* 了解更多并 [在此下载](https://labs.fedoraproject.org/en/comp-neuro/)。

**Fedora 机器人套件**

* 这个完美的 Linux 发行版结合了最好的开源机器人应用程序和软件包，针对初级和经验丰富的机器人科学家和程序员。
* 了解更多并 [在此下载](https://labs.fedoraproject.org/en/robotics/)。

来自 Fedora Linux 的**其他解决方案**包括 [Fedora 安全实验室](https://labs.fedoraproject.org/en/security)、[Fedora 天文学](https://labs.fedoraproject.org/en/astronomy) 和 [Fedora Python 教室](https://labs.fedoraproject.org/en/python-classroom)，你或许想看看这些解决方案。

这些 Fedora 实验室选项可以成为编程项目或在特定科学领域工作的完美 Linux 发行版。

### 总结

那么，你如何在这份最适合程序员的 Linux 发行版名单中选择你的最爱？

如果你不确定，并希望以最小的努力来建立和运行一个开发系统，那就选择 Fedora Workstation 或 Ubuntu。

如果你有空闲时间，或者想对你的系统有更多的控制，喜欢做实验，对偶尔出现的错误也不在意，那么就选择基于 Arch Linux 的系统。

对于刚进入 Linux 生态系统的新开发者来说，Pop OS 也是一个不错的选择。对于特定的需求，请到 Fedora 实验室选择。

我希望这份 2022 年最适合程序员的 Linux 发行版清单能给你一些指导，让你选择最喜欢的 Linux 发行版进行编程和开发。

干杯。

---

via: <https://www.debugpoint.com/top-linux-distributions-programmers-2022/>

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

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


硬核观察 #827 使用 AI 来创建幻灯片

Summary:
❶ 使用 AI 来创建幻灯片
❷ AI 辅助编程公司 Kite 关闭和宣布开源
❸ 安全专家两年间秘密帮助解密勒索软件

“创建了一个工作的解密器”怎么读着怪怪的

“创建了一个工作的解密器”____根据有限的见识，通常见过the 'work'翻译都是'可工作的'或者是'可用的'

# 硬核观察 #827 使用 AI 来创建幻灯片

### 使用 AI 来创建幻灯片

一家初创公司借助 DALL-E 的 API 创建生成性的幻灯片（PPT），其产品旨在让用户在几分钟内，而不是几小时内创建幻灯片。他们发现，对于他们的大多数用户来说，“在几次尝试中可以得到一些有助于实现其观点的东西。”并且，他们还计划利用 GPT-3 对文件进行总结，添加到幻灯片中。

>
> **[消息来源：Venture Beat](https://venturebeat.com/ai/new-dall-e-integration-adds-generative-ai-for-next-level-slides/)**
>
>
>

>
> 老王点评：这倒是一个好的应用，以后做 PPT 不用那么费劲就可以做出来了。
>
>
>

### AI 辅助编程公司 Kite 关闭和宣布开源

成立于 2014 年的 AI 辅助编程公司 Kite 比 GitHub Copilot 起步更早，但很遗憾的是未能建立起一个盈利机制。Kite 虽然有 50 万月活跃开发者用户，但他们的支付意愿很低，仅仅提高程序员的编程速度 18% 并不能说服工程经理们掏钱。Kite 宣布停止运作，公开大部分源代码，项目托管在 GitHub 上。

>
> **[消息来源：Kite](https://www.kite.com/blog/product/kite-is-saying-farewell/)**
>
>
>

>
> 老王点评：看来 AI 替代人类进行编程，还有比较长的道路。
>
>
>

### 安全专家两年间秘密帮助解密勒索软件

安全研究人员在 Zeppelin 勒索软件的加密机制中发现了漏洞，并利用这些漏洞创建了一个工作的解密器，他们自 2020 年以来用于帮助受害公司恢复文件而不向攻击者付款。原本他们在 2020 年 2 月已经准备好了一份技术报告，但推迟了发布，以避免勒索黑帮知道，并悄悄帮助被勒索的机构恢复数据。可能是察觉了这种帮助解密的情况，现在 Zeppelin 采取了多次加密的方式来勒索赎金。

>
> **[消息来源：Bleeping Computer](https://www.bleepingcomputer.com/news/security/researchers-secretly-helped-decrypt-zeppelin-ransomware-for-2-years/)**
>
>
>

>
> 老王点评：说到底，勒索软件也是存在 bug 的，这就是和安全专家的博弈。
>
>
>


如何在 Ubuntu 中安装最新的 LibreOffice

# 如何在 Ubuntu 中安装最新的 LibreOffice

>
> 在 Ubuntu 和其他 Linux 中安装最新的 LibreOffice 版本的快速指南。
>
>
>

自由开源的办公套件 LibreOffice 有两个版本：社区版和企业版。“社区” 版是为那些希望获得最新的尖端软件技术的早期采用者准备的。而 “企业” 版本更加稳定，可能不包括所有的最新功能，但它是生产环境和专业工作的理想选择。

### 在 Ubuntu 和其他 Linux 中安装最新的 LibreOffice

#### 1、删除预安装的 LibreOffice

Ubuntu 和其他的 Linux 发行版带有预安装的 LibreOffice。这可能不是最新的，这是因为发行版有特定的发行周期。在进行新安装之前，你可以通过以下命令删除 Ubuntu 及其衍生发行版中的的旧版本。

打开一个终端并运行以下命令，以删除 Ubuntu 和相关发行版中的已安装的 LibreOffice。对于其他发行版，你可以使用发行版的软件包管理器将其删除。

```
sudo apt remove –purge libreoffice*
sudo apt autoclean
sudo apt autoremove

```

然后重启以确保一切正常（尽管你也可以跳过这一步）。

#### 2、从网站上下载安装

前往 [官方下载页面](https://www.libreoffice.org/download/download/). 并通过从下拉菜单中选择类型下载 “最新的” 版本。对于 Ubuntu 和其他衍生产品，请选择 .deb 文件。

下载后，提取文件；你应该看到下面的所有软件包。

在提取文件的位置打开终端，并按顺序运行以下命令。首先，你需要安装 ure 包，其次是核心包，然后是所有的基本包。最后，就是主要的 LibreOffice 软件包。下面是一组典型的命令。你需要更改为具体版本的版本号。

```
sudo dpkg -i libobasis7.0-ure_7.0.4.2-2_amd64.deb
sudo dpkg -i libobasis7.0-core_7.0.4.2-2_amd64.deb
sudo dpkg -i libobasis7.0*

```

```
sudo dpkg -i libreoffice7.0*

```

如果你使用的是 Fedora Linux 或 Red Hat Linux，请按照上述相同的顺序使用 [dnf 命令](https://www.debugpoint.com/dnf-commands-examples/)。

等待安装完成。完成后，你可以通过应用程序菜单找到 LibreOffice。

这应该完成安装最新 LibreOffice 的步骤。如果你不想遵循上述方法，请参阅以下选项。

### 通过 PPA 安装

如果你想通过 PPA 安装它，请按照以下步骤操作。确保在上面的第 1 步中删除现有的 LibreOffice。

```
sudo add-apt-repository ppa:libreoffice/ppa

```

最后，运行以下命令从这个官方 PPA 安装最新的 LibreOffice 5.4 系列。

```
sudo apt update
sudo apt install libreoffice

```

安装后，你可以通过 Dash 搜索启动 LibreOffice。

### 通过 Snap 和 Flatpak 安装

如果你是 Linux 用户，你可以尝试 LibreOffice 独立的可执行文件，它在 Snap 或 Flatpak 等沙箱中运行。

要通过 [Flatpak](https://flathub.org/apps/details/org.libreoffice.LibreOffice) 安装 LibreOffice ，请访问 [这个页面](https://flatpak.org/setup/) 进行设置，然后运行以下命令进行安装：

```
flatpak install flathub org.libreoffice.LibreOffice

```

同样，对于 [Snap](https://snapcraft.io/libreoffice) 版本，使用以下命令进行安装：

```
sudo snap install libreoffice

```

### 如何升级到最新的 LibreOffice 版本？

如果你不想删除 LibreOffice 但想升级到最新版本，请阅读我们下面的完整指南。

>
> **[在 Ubuntu、Linux Mint 和 Windows 中升级到最新的 LibreOffice](https://www.debugpoint.com/libreoffice-upgrade-update-latest/)**
>
>
>

如果你在安装最新的 LibreOffice 时遇到问题，请随时留言。

---

via: <https://www.debugpoint.com/install-latest-libreoffice-ubuntu-linux/>

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

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


在你的 Linux 家庭实验室上运行 Kubernetes 的 5 个理由

Summary: Kubernetes 的优势不仅在于它能够做什么，还在于知道它能为你做什么。

一个不运行的理由：费电

能不能把电子书搬运过来。下载报错

Kubernetes 的优势不仅在于它能够做什么，还在于知道它能为你做什么。

# 在你的 Linux 家庭实验室上运行 Kubernetes 的 5 个理由

>
> Kubernetes 的优势不仅在于它能够做什么，还在于知道它能为你做什么。
>
>
>

在 [树莓派家庭实验室上运行 Kubernetes 的 5 个理由](https://opensource.com/article/20/8/kubernetes-raspberry-pi) 这篇文章中，我解释了为什么推荐在家里使用 Kubernetes。其中的理由相对来说会有点随意，并且主要于关注结果。除了 Kubernetes 好用的功能之外，还有其他几个应将 Kubernetes 包含在你自己的计算机的理由。

（LCTT 译注：<ruby> 家庭实验室 <rt>  Homelab </rt></ruby> 指的是安置在你家里的一个服务器或者多服务器的组合配置。在之上托管了多个服务和虚拟系统，以此来进行测试、开发，或者提供家庭功能用途。）

### 1、Kubernetes 是基于 Linux 而建立的

Kubernetes 有很高的知名度。对于一些人来说，Kubernetes 是一种神秘技术，有一个不好念的名字；而对另一些人来说，Kubernetes 就好像是牧羊犬放牧羊群一样，可以帮助他们管理过多的容器；对于其它人来说，Kubernetes 是一种 <ruby> 云 <rt>  cloud </rt></ruby> 的操作系统，是 <ruby> 实效云开发 <rt>  effective cloud development </rt></ruby> 的一个有用的界面；对于大多数人来说，Kubernetes 可能是他们从未听说过的后端软件。正如人们所想的那样，Kubernetes 具有所有这些能力，甚至有更多的功能。

并非每个人都以相同的方式使用 Kubernetes，但如果你主要的工作是系统管理，你会发现 Kubernetes *只是又一个 Linux 命令*。

我有一件 T 恤，上面写着 “<ruby> 容器就是 Linux <rt>  Containers are Linux </rt></ruby>”，它的意思是显而易见的。容器技术使用 cgroup，来运行包含一个或一组应用程序的最小 Linux 操作系统镜像。当你运行容器时，实际上你就是在运行 Linux。虽然 Kubernetes 能在许多平台上使用，但 Kubernetes 管理的是 Linux 容器。当你通过终端与 Kubernetes 交互时，就像是使用 Linux：有命令、选项、参数和语法。运行 Kubernetes 的 `kubeadm` 或（在 OKD 或 OpenShift 上）运行 `oc` 命令，你会感觉到很熟悉，是因为它们的工作方式与你习惯使用的任何其他 Linux 命令一样。开始时看似陌生的东西很快就会变得自然，任何有兴趣在终端上花时间的 Linux 用户都可以在 Kubernetes 中探索到许多有趣的东西。

### 2、Kubernetes 很灵活

在过去，Kubernetes 有点死板，因为从本质上来说，它仅能支持一个 <ruby> 容器运行时 <rt>  container runtime </rt></ruby>。这个规定非常严格，以至于今天需要一个 <ruby> 硬编码的垫片 <rt>  hardcoded shim </rt></ruby>，才能绕过这个遗留问题。幸运的是，如今 Kubernetes 已经变得足够灵活，可以满足管理员的许多不同需求了。[Podman](http://podman.io) 和 [CRI-O](http://cri-o.io) 可用作于容器引擎，它们都可以与 [systemd](https://opensource.com/article/21/5/systemd) 集成（这是因为 Kubernetes 的底层都是 Linux）。你可以自己选择 Kubernetes 所使用的文件系统、集群大小和构造、监控工具、镜像、编程语言等等配置。甚至现在有些人说 Kubernetes 有 *太多* 的选择了。

### 3、学习 Kubernetes 有助于个人发展

容器是一个硕果累累的事物，它们会快速地成倍增长，这就是它的设计。容器旨在扩展，它们通过生成克隆来扩展。将容器分组（称为 “<ruby> 容器荚 <rt>  pod </rt></ruby>”），并自动管理容器荚的生命周期，这就是 Kubernetes 运用的方式。它正在改变服务器的运行方式。

你可能不需要无限扩展的容器集合，也不需要任何东西来帮助你管理正运行的一或两个容器。但是，如果你希望受益于处理容器荚的能力，那么 Kubernetes 正是你需要学习的工具。随着越来越多的公司和组织走向全球，拥抱 [数字化转型](https://enterprisersproject.com/what-is-digital-transformation)，Kubernetes 正在成为 IT 领域的必备技能。如果你想要在这个领域中发展，那么现在开始学习 Kubernetes 并熟悉它的常见问题及其解决方案，将会是一项很好的投资。

### 4、Kubernetes 让容器更有意义

你可能还记得几年前，当开源项目刚开始将它们的代码作为容器镜像分发时，对于许多人来说，容器这一概念是令人费解的：没有多少系统管理员真正理解 [容器是什么](https://opensource.com/article/18/11/behind-scenes-linux-containers)，或者明白容器的边界在哪里、如何进入容器，以及为什么数据不能存在于容器内。

现在，IT 界（包括开发人员在内）都对容器的概念都十分熟悉了。对于现代的 [CI/CD 工作流程](https://opensource.com/article/18/8/what-cicd) 来说，交付给容器十分有意义。不过，对于系统管理员来说，容器的优势如下：安装容器（理论上）比等待发行版更新其软件包更为容易，而且容器可以扩展。然而，在你使用 Kubernetes 之前，你很可能都不会真正地感受到这些好处。当你开始使用 Kubernetes 和相关工具管理容器之前，持续交付容器的好处和容器的扩展能力可能只是你从文章里面读过的想法。将容器集成到你管理服务器的方式中，你会突然明白 Kubernetes 中令人兴奋的是什么。

你可以试试看这个最基本的测试：只需在容器中启动你最喜欢的 Web 服务器，创建一个容器荚，然后使用来自 [Apache JMeter](https://jmeter.apache.org) 的流量访问你的服务器，然后观察容器响应。

### 5、Kubernetes 是云原生的

如果你主要做的是软件开发，而不是系统管理，那么 Kubernetes 也是 <ruby> 网页应用程序 <rt>  web apps </rt></ruby>的一个很好的平台。我们现在都在使用网页应用程序，尽管大多数人只是将它们视为 “<ruby> 网站 <rt>  website </rt></ruby>”。网络拥有庞大的用户群，因此通过浏览器提供开源的应用程序是非常有意义的。有一些很棒的开源应用程序在网络上运行，其中许多的应用程序都以容器的形式分发的，它们可以支持简单的安装和持续的用户体验。

### Kubernetes 的其他优势：Kubernetes 很有意思

你还记得你还是 Linux 新手的时候吗？对于一些人来说，那可能是几十年前的事了，而对于其他人来说，可能是不久的过去。不过，对于所有人来说，学习一项新事物会是一个有趣的挑战。如果你达到了认为 “Linux 的安装与其说是一个挑战，不如说是一个麻烦” 的程度，那么你可以尝试一下构建一个 Kubernetes 集群。它会让你回忆起你忘记的各种概念：如何修改纯文本（特别是 [YAML](https://www.redhat.com/sysadmin/yaml-beginners) 格式的）配置文件，如何配置网络接口和网络，如何路由流量，知道一个后端相对于另一个后端的优缺点，在 `--dry-run` 测试之后运行 `--dry-run` 测试，试探性地按回车键来确定你是否做对了。老实说，使用 Kubernetes 很有趣。

如果你想构建自己的基础架构，没有什么比构建你自己的 Kubernetes 集群更好的了。Kubernetes 集群将会为你打开一个全新的世界。你很快就会成为一名云架构师，学会完善你的开放云，在容器中安装令人惊叹的开源 Web 应用程序，也能为你的家人和朋友提供访问权限。

你自己就能得到解决方案。这真是太棒啦。

### 快来试试看 Kubernetes 吧

对 Kubernetes 的初学者来说，Kubernetes 似乎很难快速上手，因为 Kubernetes 是一个新的工具，会让你感到有点害怕，而且它还需要云服务。但是，以下有几种方法可以让你开始 Kubernetes 体验。

首先，安装 [Minikube](https://opensource.com/article/18/10/getting-started-minikube) 或 [Minishift](https://opensource.com/article/18/10/getting-started-minikube)。这两个工具都允许你在自己的计算机上运行 Kubernetes 的本地实例。虽然这种方式比不上“构建一个集群并与你的朋友共享”那么令人满意，但它是一种让你熟悉 Kubernetes 环境、命令和工具包的很好且安全的方式。

当你准备进一步研究 Kubernetes 后，请进一步阅读 Chris Collins 的《[使用树莓派构建 Kubernetes 集群](https://opensource.com/article/20/6/kubernetes-raspberry-pi)》 的文章。之后，再下载我们的免费电子书 《[在你树莓派家庭实验室上运行 Kubernetes](https://opensource.com/downloads/kubernetes-raspberry-pi)》。在不知不觉中，你会发现自己也明白了“容器就是 Linux”的含义。

---

via: <https://opensource.com/article/21/6/kubernetes-linux-homelab>

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

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


Summary:
❶ Ubuntu 正在为即将发布的昉・星光 2 RISC-V 板做准备
❷ 英伟达称融化的 RTX 4090 是因为电源线没插好
❸ 高性能计算越来越多采用液冷

昉・星光 2 不带WiFi的410，带WiFi的460.<br />
这价格很可以了

# 硬核观察 #828 Ubuntu 正在为即将发布的昉・星光 2 RISC-V 板做准备

### Ubuntu 正在为即将发布的昉・星光 2 RISC-V 板做准备

今年夏天，Ubuntu 为赛昉科技的昉・星光 RISC-V 单板计算机发布了官方镜像，而现在正在为即将发布的昉・星光 2 准备新的镜像。昉・星光 2 在几个月前宣布，将在年底陆续发货。它使用 SiFive 的 U74 四核 RISC-V SoC，运行频率高达 1.5GHz，有 2GB 到 8GB 的内存，双千兆以太网。除了 Ubuntu，他们还在努力支持多个 Linux 发行版。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Ubuntu-StarFive-VisionFive-2)**
>
>
>

>
> 老王点评：新的板子更强大，价格也不贵，我觉得树莓派并不一定是最好的选择了。
>
>
>

### 英伟达称融化的 RTX 4090 是因为电源线没插好

在英伟达宣布它正在调查关于其 RTX 4090 显卡的电源线融化和燃烧的报告数周后，他们认为大多是因为电源线没插好而导致急剧发热。4090 使用了使用新标准的电源连接器，因而需要专门的适配器。调查显示，这个适配器在设计上缺乏正确插入指示，因此没有完全插好的电源线会急剧发热，从而融毁电源线和 GPU 等设备。

>
> **[消息来源：The Verge](https://www.theverge.com/2022/11/18/23466974/nvidia-rtx-4090-power-cable-12vhpwr-melt-burn-plugged-in)**
>
>
>

>
> 老王点评：虽然可能是用户没插好，但是其实归根到底是产品设计不够好。
>
>
>

### 高性能计算越来越多采用液冷

随着 400W 的 CPU 和 700W 的 GPU 的出现，对这些部件的冷却已经不能风扇所能满足的了。本周在达拉斯举行的超级计算会议上，展示了一些冷却设备，其中将冷板连接到 CPU、GPU 上的直接式液冷可以散掉 80%-90% 的热量；也有一些采用浸入式液冷，整个设备浸入在冷却液中或在密闭的机箱中注满冷却液。报告称，预计到 2026 年，液体和浸入式冷却设备的支出将达到 11 亿美元，占热管理支出的 19%。

>
> **[消息来源：The Register](https://www.theregister.com/2022/11/19/liquid_cooling_sc22)**
>
>
>

>
> 老王点评：只能说现在的计算设备越来越热了。
>
>
>


如何修复：“sudo Command Not Found” 错误

Sudo 是 Switch user do 的缩写，而不是 Super user do。

'substitute user， do' ----替代用户, 做

----from wikipedia

sudo (/suːduː/[4] or /ˈsuːdoʊ/[4][5]) is a program for Unix-like computer operating systems that enables users to run programs with the security privileges of another user, by default the superuser.[6] It originally stood for "superuser do",[7] as that was all it did, and it is its most common usage;[8] however, the official Sudo project page lists it as "su do".[9] The current Linux manual pages for su define it as "substitute us

# 如何修复：“sudo Command Not Found” 错误

>
> 以下是你如何在 Debian、Ubuntu 和其他发行版中修复 “sudo command not found” 错误的方法。
>
>
>

有时，当你第一次设置或安装 [Linux 发行版](https://www.debugpoint.com/category/distributions) 时，你在用 `sudo` 尝试一些命令时，会出现 “sudo command not found” 的错误。

`sudo` 命令是 “superuser do” 的缩写，它是一个允许用户以管理员权限执行命令的程序。`sudo` 命令帮助你像管理员用户一样运行程序/命令。

此外，用 `sudo` 运行命令的用户必须是 `sudo` 组的一部分。

你看到这个错误的主要原因是该软件包本身没有安装。然而，大多数现代 Linux 发行版都默认提供了这个功能，但有些则没有。

下面是解决这个问题需要遵循的步骤。

#### 故障排除 #1

首先，安装 `sudo` 包来解决这个问题。打开一个终端，刷新你的系统，并运行以下命令来安装 `sudo`。

对于 Ubuntu、Debian 和相关发行版：

```
su -apt updateapt install sudo

```

对于 Arch Linux：

```
pacman -S sudo

```

对于 Fedora、RHEL 等：

```
su -dnf updatednf install sudo

```

上述安装完成后，你必须使用以下命令将用户添加到 `sudo` 组中。

```
usermod -aG sudo <yourusername>

```

然后从终端运行 `visudo`，并运行以下行。按 `CTRL+O` 和 `CTRL+X` 来保存和退出。

退出并再次登录使变化生效。

#### 故障排除 #2

在做了上述改变之后，如果你仍然收到错误信息，那么请按照以下步骤操作。

确保你的 `$PATH` 变量包含 `sudo` 可执行文件的正确路径。如果 `sudo` 已经安装，但 `$PATH` 不正确，你也会得到这个错误。理想情况下，你的路径应该包含以下所有的路径。

```
echo $PATH

```

```
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin

```

要改变路径变量，使用以下命令。例如，如果 `/usr/bin` 不存在，那么你可以通过以下方式添加它。

```
export PATH=$PATH:/usr/bin

```

然后注销并登录查看效果。

### 总结

我希望这个指南能帮助你解决 Linux 发行版中的 sudo 错误。表面上的解决方案很简单，真的。

如果有帮助，或者如果你有任何问题，请在下面留言。

>
> **[参考](https://linux.die.net/man/8/sudo)**
>
>
>

---

via: <https://www.debugpoint.com/sudo-command-not-found/>

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

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


在 Ubuntu 中使用和自定义程序坞

# 在 Ubuntu 中使用和自定义程序坞

当你登录 Ubuntu 时，你会看到屏幕左侧的 <ruby> 程序坞/停靠栏 <rt>  dock </rt></ruby>，上面有一些应用程序的图标。程序坞（也称为 <ruby> 启动器 <rt>  launcher </rt></ruby>，或者 <ruby> 面板 <rt>  panel </rt></ruby>）可以让你快速启动某个常用的应用程序。

我经常使用程序坞。在本文中，我将分享一些关于有效使用程序坞的小技巧，并介绍自定义程序坞的外观和位置的方法。

你将在本教程中学习到以下内容：

* 程序坞的基本用途：添加应用程序，并使用快捷方式来启动应用程序
* 自定义程序坞的外观：更改图标大小、图标位置
* 更改程序坞的位置：可用于单屏和多显示器的设置
* 在程序坞中隐藏已安装的磁盘图标
* 自动隐藏或禁用程序坞
* 使用 `dconf-editor` 对程序坞进行额外的定制
* 用其他程序坞应用程序替换 Ubuntu 默认的程序坞

我将在教程中使用 <ruby> 程序坞 <rt>  dock </rt></ruby>、<ruby> 面板 <rt>  panel </rt></ruby>和 <ruby> 启动器 <rt>  launcher </rt></ruby> 等术语，它们的意思是等同的。

### 如何使用 Ubuntu 程序坞：你必须知道的基础知识

如果你是 Ubuntu 的新手，你需要掌握如何使用程序坞。尽管，在一段时间后你总会熟悉程序坞的功能，但是阅读本文能让你更快地明白。

#### 向程序坞添加新的应用程序（或删除应用程序）

这一步骤十分简单。从菜单中搜索你想要添加在程序坞的应用程序，然后运行它。

正在运行的应用程序会显示在程序坞中，它的图标在程序坞中所有图标的下方。右键单击该图标，然后选择 “<ruby> 添加到收藏夹 <rt>  Add to Favorites </rt></ruby>” 选项。这会把该应用程序的图标锁定到程序坞上。

从程序坞中删除应用程序的图标，操作起来更为简单。你不需要运行你想要在程序坞删除的应用程序，只需右键单击应用程序图标，然后选择 “<ruby> 从收藏夹中删除 <rt>  Remove From Favorites </rt></ruby>” 即可。

#### 更改程序坞中的图标顺序

默认情况下，新添加到程序坞的应用程序图标会放置在程序坞上的所有图标之后。但是，你也可以改变图标的位置。

要更改图标的顺序，你只需将它拖放到另一个位置即可，不用 “<ruby> 锁定位置 <rt>  lock it </rt></ruby>”，或者做其他的事情。如果你不做任何的更改，这个图标会一直停留在那个位置。

#### 右键单击程序坞中的图标，以获取应用程序的额外选项

左键单击程序坞中的图标会启动应用程序，或者如果应用程序已经在运行，则这个应用程序会被聚焦，即它会出现在所有其他正在运行的应用程序窗口前面。

右键单击程序坞中的图标会为你提供应用程序的额外选项。不同的应用程序会有不同的选项。

右键单击**浏览器**图标，在它的额外选项中，你可以打开一个新的私人窗口，或预览所有正在运行的窗口。

右键单击**文件管理器**图标，在它的额外选项中，你可以查看所有已添加书签的目录，或预览打开的窗口。

当然，你也可以通过右键单击图标，来退出应用程序。大多数应用程序能够通过右键单击而退出，而一些应用程序（例如 Telegram 等），将被最小化到 <ruby> 系统托盘 <rt>  system tray </rt></ruby> 中。

#### 使用键盘快捷键，以快速启动程序坞中的应用程序 [知道这个的人不多]

你只需用鼠标单击程序坞上的图标，即可启动应用程序。但是，你也可以用键盘快捷键，来启动应用程序。

使用 `WIN`/`Super` + `数字键` 的组合，能够启动程序坞中该位置的应用程序。

如果应用程序已经在运行了，它将被聚焦。

由于这个功能是基于位置的，所以请不要一直对图标进行重新排序。就我个人而言，我把 Firefox 放在程序坞的第 1 个位置，文件管理器放在第 2 个位置，备用浏览器放在第 3 个位置，以此类推，直到第 9 个位置。这样，我可以使用 `Super + 2`，从而快速启动文件管理器。

因为我的系统连接了 3 个屏幕，所以我发现这个快速启动应用程序的功能特别好用，我不必再将鼠标移动到第一个屏幕上的程序坞上了。你也可以在其他屏幕上启用或禁用程序坞，我将在本教程的后面部分向你展示如何设置。

### 改变程序坞在屏幕上的位置

默认情况下，程序坞位于屏幕的左侧。但是，有些人喜欢将程序坞放置在屏幕底部。

Ubuntu 允许你更改程序坞的位置。你可以将程序坞移至底部或右侧。我不觉得有很多人真的想要把扩展坞放在了顶部，所以没有将扩展坞移到顶部的选项。

要更改程序坞位置，请进入 “<ruby> 设置 <rt>  Settings </rt></ruby>” 菜单，然后点击 “<ruby> 外观 <rt>  Appearance </rt></ruby>” ，你可以在 Dock 栏下看到一些选项，然后你可以在此处更改 “<ruby> 屏幕上的位置 <rt>  Position on screen </rt></ruby>” 这一设置。

Appearance->Dock" title="Go to Settings->Appearance->Dock">

#### 程序坞在多显示器设置中的位置

如果你的系统连接了多个屏幕，你可以选择是在所有的屏幕上还是在某个选定的屏幕上，显示扩展坞。

对于我个人而言，我只在我的笔记本电脑屏幕上显示程序坞，因为这是我的主屏幕。这样在我的另外两个屏幕会留有最大的空间。

### 更改程序坞的外观

让我们继续看看 Ubuntu 程序坞中的更多自定义选项吧。

想象一下，如果你在程序坞中添加了太多的应用程序或打开了太多应用程序，那么程序坞的空间会被填满。如果你想要进入到程序坞端点处的应用程序，那么你必须滚动到程序坞顶部和底部才可以。

你可以更改程序坞的图标大小，来解决这个问题，这样程序坞就能够容纳更多图标来。不过，也不要让图标太小。

要更改程序坞的图标大小，请进入 “<ruby> 设置 <rt>  Settings </rt></ruby>” 菜单，然后点击 “<ruby> 外观 <rt>  Appearance </rt></ruby>” ，并通过移动 “<ruby> 图标大小 <rt>  Icon size </rt></ruby>” 下的滑块来更改它。默认的图标大小为 48 像素。

#### 在程序坞中隐藏已安装的磁盘图标

当你插入 U 盘或 SD 卡时，它的驱动器会安装到系统中，并且在程序坞中会立即出现一个图标。这个图标很有用，因为你可以直接通过右键单击它，来安全地删除驱动器选项。

如果你认为在程序坞中显示已安装的磁盘图标很麻烦的话，你也可以关闭这个功能。别担心，你仍然可以从文件管理器访问已安装的驱动器。

打开终端，使用以下命令，来隐藏程序坞中已安装的磁盘图标：

```
gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts false

```

更改会立即生效。你不再会为程序坞中显示已安装的磁盘而烦恼了。

如果你想要恢复默认情况，请使用以下命令：

```
gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts true

```

### 改变程序坞的行为

接下来，让我们自定义程序坞的默认行为，使它能更适合你的需求吧。

#### 启用点击最小化

如果你单击一个正在运行的应用程序的图标，那么这个应用程序的窗口将成为焦点。当如果你**再次单击**这个图标时，将什么都不会发生。这是因为，在默认情况下，第二次点击同一图标不会最小化应用程序。

这是现代桌面的默认行为，但我不太喜欢，我更喜欢的是：当我**第二次点击图标时，应用程序会被最小化**。

如果你像我一样，那么你可能想要在 Ubuntu 中 [启用点击最小化选项](https://itsfoss.com/click-to-minimize-ubuntu/)：

为此，请打开终端并输入以下命令：

```
gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize'

```

#### 自动隐藏 Ubuntu 程序坞，以获得更多屏幕空间

如果你想要有最大的屏幕空间，你可以在 Ubuntu 中为程序坞启用自动隐藏选项。

自动隐藏选项会隐藏程序坞，你就能获得整个屏幕。不过，程序坞仍然可以使用。将光标移动到程序坞原来所在的位置，它就会再次出现。当程序坞重新出现时，它会覆盖在正在运行的应用程序窗口上。这是一件好事，否则太多元素会开始在屏幕上移动。

要设置程序坞自动隐藏，请进入 “<ruby> 设置 <rt>  Settings </rt></ruby>” 菜单，然后点击 “<ruby> 外观 <rt>  Appearance </rt></ruby>” ，你可以在 Dock 栏下开启 <ruby> 自动隐藏选项 <rt>  Auto-hide the Dock </rt></ruby>” 。

如果你不喜欢自动隐藏程序坞的话，你可以用同样的方式禁用它。

#### 禁用 Ubuntu 默认的程序坞

Ubuntu 程序坞的自动隐藏选项对很多人来说已经足够好了，但是依旧有些用户根本不喜欢 Ubuntu 自带的程序坞。如果你也是其中的一员，你可以选择完全禁用 Ubuntu 的程序坞。

从 Ubuntu 20.04 开始，你可以使用 <ruby> 扩展应用程序 <rt>  Extensions application </rt></ruby>，来管理 [GNOME 扩展](https://itsfoss.com/gnome-shell-extensions/)。

使用这个扩展应用程序，你就可以轻松地禁用或重新启用程序坞了。

### 使用 dconf-editor 进行高级的程序坞定制 [不推荐]

##### 请注意

`dconf-editor` 能让你更改 GNOME 桌面环境的几乎每个方面。这个性质喜忧参半，因为你在更改时必须小心，而且大多数设置都可以即时更改，无需确认。虽然你可以重置你的更改，但你仍可能会将系统置于难以恢复正常的状态。

出于这个原因，我不推荐你使用 `dconf-editor`，特别是如果你不喜欢花时间在故障排除和修复问题上，或者如果你不太熟悉 Linux 和 GNOME。

[dconf-editor](https://wiki.gnome.org/Apps/DconfEditor) 给你提供了在 Ubuntu 中自定义程序坞的其他选项。你可以在从软件中心安装 `dconf-editor`，然后导航到 `org > gnome > shell > extensions > dash-to-dock`，在这里你会找到很多自定义程序坞的选择。

### 替换 Ubuntu 默认的程序坞

有几个第三方的程序坞应用程序可用于 Ubuntu 和其他 Linux 发行版。你可以安装你想要的第三方程序坞，并使用它。

例如，你可以从软件中心下载 “Plank dock”，并以与 Ubuntu 程序坞类似的方式来使用它。

在这种情况下，禁用 Ubuntu 默认的程序坞会是一个更好的主意，因为同时使用多个扩展坞是不太明智的。

### 总结

本教程介绍了在 GNOME 实现中，如何自定义 Ubuntu 默认的程序坞。上述程序坞的更改在 vanilla GNOME 的程序坞上运行良好。

我已经向你展示了大多数常见的 Ubuntu 程序坞的定制方法。你不需要去盲目地跟随教程中的所有步骤。阅读并思考哪一个是你需要的，然后根据教程中的方法更改配置。

如果你不喜欢 Ubuntu 默认的程序坞，也有其他的程序坞可供试验。

这个教程让你学到了新东西吗？你还想看到更多这样的教程吗？欢迎你在评论区中建议和反馈。

---

via: <https://itsfoss.com/customize-ubuntu-dock/>

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

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


硬核观察 #829 六年后，微软称 WSL 达到一般可用

Summary:
❶ 六年后，微软称 WSL 达到一般可用
❷ 游戏玩家已达 32 亿
❸ 英特尔将在第四代至强处理器提供可选的按需服务

能跑，叫WSLg，可以去查下。但不太建议。

# 硬核观察 #829 六年后，微软称 WSL 达到一般可用

### 六年后，微软称 WSL 达到一般可用

微软官方博客宣布，Windows Subsystem for Linux（WSL）的商店版本已经从预览阶段毕业，进入到一般可用（GA）阶段。WSL 已有六年历史，WSL2 也有两年多历史，支持运行 Linux 图形应用和 GPU 加速，支持 systemd。微软是在去年将 WSL 放到微软应用商店的，支持 Windows 10 和 11。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/WSL-GA-Windows)**
>
>
>

>
> 老王点评：居然才成为正式版，合着之前一直算测试版啊。
>
>
>

### 游戏玩家已达 32 亿

Newzoo 的最新全球游戏市场报告显示，今年全球玩游戏的人数增长了 4.6%，有多达 32 亿游戏玩家。但游戏行业的收入为 1844 亿美元，是 15 年来首次下降，但这仍然比其它行业要好。

>
> **[消息来源：Tech Spot](https://www.techspot.com/news/96720-there-32-billion-gamers-2022-but-revenue-set.html)**
>
>
>

>
> 老王点评：终究还是游戏挣钱。
>
>
>

### 英特尔将在第四代至强处理器提供可选的按需服务

英特尔公司的软件定义硅服务（SDSi）被正式称为“英特尔按需服务”，这是一种可以付费购买启用处理器中特定功能的服务。根据计划，英特尔将在明年年初的第四代至强处理器（蓝宝石激流）上提供该功能。英特尔称，“可以选择功能齐全的高级产品，也可以在整个生命周期内随时挑选对其业务最重要的功能。”可以启用的功能包括：软件防护扩展（SGX）、快速辅助技术、动态负载平衡器、内存分析加速器、数据流加速器等等。

>
> **[消息来源：The Register](https://www.theregister.com/2022/11/22/intel_reveals_paid_xeon_features/)**
>
>
>

>
> 老王点评：这给带来了更多的灵活性，可以一次性购买高端芯片，然后根据需要付费启用。
>
>
>


cool！

# 如何在 Ubuntu 和其他 Linux 下安装 LibreOffice Base 数据库

>
> 以下是如何在 Ubuntu 和其他 Linux 发行版中安装 LibreOffice Base 数据库模块。
>
>
>

流行的自由开源的办公套件 LibreOffice 由六个独立的组件组成。然而，Ubuntu 和相关发行版中默认安装的 LibreOffice 只包括其中的五个：

* Calc
* Writer
* Impress
* Draw
* Math

由于某些原因，数据库模块 LibreOffice Base 没有被包括在内。所以，这里告诉你如何在 Ubuntu 和其他发行版中单独安装它。

### 在 Ubuntu 和其他 Linux 中安装 LibreOffice Base

你可以使用 “<ruby> 软件 <rt>  Software </rt></ruby>” 应用或终端来安装 `libreoffic-base` 包。我建议使用终端来安装它。打开一个终端窗口，运行以下命令来安装它。

```
sudo apt install libreoffice-base

```

如果你喜欢 “<ruby> 软件 <rt>  Software </rt></ruby>” 应用 或其他基于 GUI 的安装程序，搜索 “libreoffic-base” 并点击安装。

对于 Fedora 和基于 RPM 的发行版，使用以下命令：

```
sudo dnf install libreoffice-base

```

如果你在 Arch Linux 中安装了 LibreOffice，无论是 [libreoffic-fresh](https://archlinux.org/packages/extra/x86_64/libreoffice-fresh/) 还是 [libreoffic-still](https://archlinux.org/packages/extra/x86_64/libreoffice-still/)，那么就不需要任何操作了。LibreOffice Base 已经包含在这两个软件包中了。你可以开始使用了。

在另一个方面，如果你想看看如何安装最新的 LibreOffice，请查看 [这个指南](https://www.debugpoint.com/install-latest-libreoffice-ubuntu-linux/)。

最后，安装完毕后，你可以在应用菜单中找出 LibreOffice Base。

---

via: <https://www.debugpoint.com/install-libreoffice-base-ubuntu/>

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

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


如何在 Linux 中使用 Audacity 录制音频（并降噪）

Summary: Audacity 是一个自由开源的跨平台 音频编辑器。专业人士使用它是因为它提供的功能仅需安装很小的软件包。

# 如何在 Linux 中使用 Audacity 录制音频（并降噪）

[Audacity](https://github.com/audacity/audacity) 是一个自由开源的跨平台 [音频编辑器](https://itsfoss.com/best-audio-editors-linux/)。专业人士使用它是因为它提供的功能仅需安装很小的软件包。

你不必成为一名专业人士并使用它的所有功能。你可以使用它从麦克风录制音频，并执行一些基本操作，如背景噪声消除。

我将在本教程中向你展示如何做到这一点。

### 在 Linux 上安装 Audacity

在 Linux 上安装 Audacity 是一个非常简单的过程。由于其受欢迎，可以在大多数 Linux 发行版的官方存储库中找到它。

你可以在发行版的软件中心或软件包管理器中搜索它。

作为一个终端爱好者，让我分享一下常见发行版的命令。

对于基于 Debian 或 Ubuntu 的发行版：

```
sudo apt install audacity

```

对于基于 RHEL 或 Fedora 的发行版：

```
sudo dnf install audacity

```

如果你在用基于 Arch 的发行版：

```
sudo pacman -Syu audacity

```

**注意**，通过官方存储库安装可能无法获得 [最新版本](https://github.com/audacity/audacity/releases)。要获得最新版本，你可以使用 AppImage 或 Flatpak/Snap 软件包。

### 使用 Audacity 录制音频

安装 Audacity 后，从应用程序菜单打开它或从终端启动它。你会看到这样的界面：

单击“录制”按钮（红点）即可轻松开始录制。完成后，单击“ 停止”按钮（方形图标）来结束录制。你还可以预览录制的波形，如下所示：

然后，你可以通过单击“播放”按钮（绿色图标）检查录制的内容。

如果你没有看到任何波形，则表示未录制到任何内容。很可能，你没有正确设置音频输入。确保你选择了正确的麦克风，并确保在“<ruby> 系统设置 <rt>  system settings </rt></ruby>”中其未被静音。你也可以通过 Audacity 接口设置。

录音不会自动保存为 MP3 或其他格式。**要保存录音**，你可以转到 “<ruby> 文件 <rt>  File </rt></ruby> → <ruby> 导出 <rt>  Export </rt></ruby>” 并选择 “<ruby> 导出为 MP3 <rt>  Export as MP3 </rt></ruby>”（或任何其他想要的格式）。

### 使用 Audacity 降低背景噪声

Audacity 还有另一个很棒的功能，你可以使用它来减少录制音频中的白噪声。

最好的做法是在开始使用 Audacity 录制时的前五秒不要说任何话。这将为你提供所需的背景噪声。

在录制音频的波形上，选择你认为是背景噪声的部分。

选择噪声部分后，从顶部文件菜单中转到 “<ruby> 效果 <rt>  Effects </rt></ruby> → <ruby> 降低噪音 <rt>  Noise Reduction </rt></ruby>”。

它会像这样打开一个弹出窗口。单击此处的 “<ruby> 获取噪音配置文件 <rt>  Get Noise Profile </rt></ruby>”。

现在，你已经设置了噪声配置文件。现在，你必须使用它来减少录音中的噪声。

按 `Ctrl + A` 快捷键选择整段录音。你也可以选择其中的一部分，仅对所选部分减少噪声。

选择音轨后，再次转到 “<ruby> 效果 <rt>  Effects </rt></ruby> → <ruby> 降低噪音 <rt>  Noise Reduction </rt></ruby>”。

**这次不要单击** “<ruby> 获取噪音配置文件 <rt>  Get Noise Profile </rt></ruby>”。这一次，你应该能够按下 “OK” 按钮。

只需按下 “OK” 按钮，即可将降噪效果应用到录音中，并反映在波形上，如下所示：

现在，相较而言，录制的音频将具有更少的噪声。你可以在选择 “<ruby> 降低噪音 <rt>  Noise Reduction </rt></ruby>” 效果时微调噪声过滤。

总结如下：

* 选择噪声部分，转到 “<ruby> 效果 <rt>  Effects </rt></ruby> → <ruby> 降低噪音 <rt>  Noise Reduction </rt></ruby>”，然后单击 “<ruby> 获取噪音配置文件 <rt>  Get Noise Profile </rt></ruby>”
* 按 `Ctrl + A` 选择整段音频录制，转到 “<ruby> 效果 <rt>  Effects </rt></ruby> → <ruby> 降低噪音 <rt>  Noise Reduction </rt></ruby>”，这次按 `OK` 按钮

请注意，你无法移除所有类型的噪声，但这应该会有所帮助。

### Audacity 能做更多事情

使用 Audacity 录制音频可能不像使用 GNOME 录音机那样简单，但它并不太复杂。如果你正在录制画外音，降噪功能将非常有用。

Audacity 有更多其他功能，不可能在一个教程中涵盖所有这些功能。这就是为什么我会保持简短的原因。

如果你不能接受 2021 年的 [Audacity 的隐私政策调整](https://news.itsfoss.com/audacity-fiasco-fork/)，试试其他可用的工具。

我希望这个小教程能帮助你使用 Audacity 进行音频录制。如果你有问题或建议，请告诉我。

---

via: <https://itsfoss.com/audacity-recording/>

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

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


硬核观察 #830 奔驰汽车推出年费 1200 美元的加速提升功能

Summary:
❶ 奔驰汽车推出年费 1200 美元的加速提升功能
❷ 攻击者利用数十年前的软件入侵电网
❸ 旧金山警方申请部署武装机器人

订阅制汽车？不就是租车吗？

买了一个硬件，想要使用这个硬件还要付租金，那我为什么要买？

# 硬核观察 #830 奔驰汽车推出年费 1200 美元的加速提升功能

### 奔驰汽车推出年费 1200 美元的加速提升功能

每年 1200 美元的订阅费，可以将发动机的输出功率提高 20-24%，增加扭矩，以及在动态驾驶模式下将百公里加速时间缩短近 1 秒来提高性能。这项服务并不附带任何物理硬件的升级，相反，只需要解锁就可以使用。这个功能提供在奔驰的两款电动汽车上。

>
> **[消息来源：The Verge](https://www.theverge.com/2022/11/23/23474969/mercedes-car-subscription-faster-acceleration-feature-price)**
>
>
>

>
> 老王点评：订阅制汽车，以后或许生活中所有主要家电都要付费使用，像付电费一样。
>
>
>

### 攻击者利用数十年前的软件入侵电网

微软警告说，恶意黑客正在利用常见的物联网设备中发现的一个已停用的 Boa Web 服务器来攻击能源领域。在 Boa Web 服务器中发现了一个易受攻击的开源组件，尽管该软件于 2005 年退役，但仍被广泛用于一系列路由器和安全摄像头，以及流行的软件开发工具包。微软表示，在一周的时间里，它已经在全球范围内发现了 100 万个暴露在互联网上的 Boa 服务器组件。

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2022/11/23/microsoft-boa-server-energy-grids/)**
>
>
>

>
> 老王点评：遗留的旧软件带来的问题，对无法更新的 IoT 设备是巨大的隐患，这都是历史欠账。
>
>
>

### 旧金山警方申请部署武装机器人

旧金山警察局目前正在向该市监事会提出申请，要求允许部署机器人来杀死执法部门认为有足够威胁的嫌疑人。警方称，“可能会出现部署致命武力是唯一选择的情况”。这项提案已经遭到了监事会内外的巨大反对。

>
> **[消息来源：Engadget](https://www.engadget.com/san-francisco-police-seek-permission-for-its-robots-to-use-deadly-force-183514906.html)**
>
>
>

>
> 老王点评：这是非常危险的趋势，就是一步步的迈向机器管人的未来。
>
>
>