硬核观察 #436 Linux 用户提交了更多、更好的错误报告

Summary: 更多：• 英特尔的 CPU 扳回一局 • 韩国电信澄清是路由错误导致中断

更多：• 英特尔的 CPU 扳回一局 • 韩国电信澄清是路由错误导致中断

# 硬核观察 #436 Linux 用户提交了更多、更好的错误报告

### Linux 用户提交了更多、更好的错误报告

一个独立开发者发现了一个 [有趣的情况](https://www.pcgamer.com/indie-dev-finds-that-linux-users-generate-more-better-bug-reports/)。虽然他的游戏只有 5.8% 的买家在 Linux 上玩，但他们产生了超过 38% 的错误报告。这也不是因为 Linux 平台的错误更多。在 Linux 用户提交的大约 400 个错误报告中，只有 3 个是针对 Linux 平台的。而且，这些错误报告本身的质量也相当高，包括软件和操作系统版本、日志和复制的步骤。

>
> 老王点评：这可能就是 Linux 用户的特征吧，他们已经熟悉了报错和规范的报错方式了。我不知道对此是该哭还是该笑。
>
>
>

### 英特尔的 CPU 扳回一局

随着英特尔第 12 代 Alder Lake 移动处理器的即将到来，苹果的 M1 SoC 在 Geekbench 速度基准上的统治可能很快就会结束。[基准测试结果显示](https://wccftech.com/intel-alder-lake-mobility-cpu-benchmarks-leaked-faster-than-the-apple-m1-max-smokes-amd-5980hx-11980hk/?utm_source=dlvr.it&utm_medium=twitter)，英特尔的这款预发布的移动 CPU 以微弱优势超过了苹果的旗舰产品 10 核 M1 Max，而后者还集成了 32 核 GPU 和 64GB 的统一内存。但英特尔的 Alder Lake 移动处理器以更大的优势击败了 AMD 的顶级移动 CPU Ryzen 5980HX。

>
> 老王点评：差距很小，但这个结果对英特尔来说很重要。
>
>
>

### 韩国电信澄清是路由错误导致中断

昨天我们 [报道过](/article-13920-1.html)，韩国电信全网中断了 40 分钟，最初怀疑是大规模 DDoS 攻击导致的。但在仔细检查后发现，该公司发现 [原因是路由错误](https://www.zdnet.com/article/kt-clarifies-routing-error-caused-outage-instead-of-ddos-attack/)。韩国电信尚未公布是什么导致了路由错误，以及这如何导致了中断，预计将在晚些时候公布。

>
> 老王点评：我怀疑是人工操作错误导致的，这种骨干网上的操作都这样弱不禁风么？
>
>
>


在 OpenTTD 中玩模型火车

Summary: 想玩实体模型火车，却没有足够大的空间？试试 OpenTTD 中的虚拟火车吧。

想玩实体模型火车，却没有足够大的空间？试试 OpenTTD 中的虚拟火车吧。

# 在 OpenTTD 中玩模型火车

>
> 想玩实体模型火车，却没有足够大的空间？试试 OpenTTD 中的虚拟火车吧。
>
>
>

我父亲一直很喜欢火车模型，我记得我小时候，曾看着他在圣诞树周围建了一整条轨道。当 [乐高](https://opensource.com/article/20/6/open-source-virtual-lego) 火车套装发布时，因其便利性和固有可扩展性，我们转而投向了乐高火车的怀抱。多年来，我们热衷于建造和改装乐高火车及单轨轨道。我经常想象，未来我会有一个车库或地下室，专门用于微型景观和电动汽笛火车。强调一下，我沉迷于另一个爱好的可能性非常低，所以当发现 *虚拟* 模型铁路可以为我提供相同的满足感时，我很开心。我的虚拟爱好引擎是 [OpenTTD](http://openttd.org)，这是一款基于名为 **Transport Tycoon Deluxe** 的 90 年代老游戏的开源模拟游戏。

### 安装 OpenTTD

你可以在 [openttd.org/downloads](https://www.openttd.org/downloads/openttd-releases/latest.html) 下载适用于 Linux、macOS 和 Windows 的 OpenTTD。

如果你正使用 Debian Linux 或其衍生产品，甚至是[在使用 Chromebook](https://opensource.com/article/21/2/chromebook-linux)，你可以下载 `.deb` 包。使用 `apt` 命令安装它：

```
$ sudo apt install ./openttd*deb

```

如果你在使用其他 Linux 发行版，请下载通用安装程序，并使用 [tar 命令](https://opensource.com/article/17/7/how-unzip-targz-file)解压缩包：

```
$ tar xvf openttd-x.yy.z-linux*.tar.xz

```

OpenTTD 已经在 Linux、macOS 和 Windows 的 [Steam](https://store.steampowered.com/app/1536610/OpenTTD/) 中上架（Steam 是一个非开源的，但是很常见的跨平台游戏客户端）。

### 启动 OpenTTD

如果你安装了 OpenTTD，可以从应用程序菜单启动它。

如果你是下载了通用包，可以切换到游戏目录，使用本地的 `openttd` 命令启动游戏：

```
$ cd openttd*
$ ./openttd &

```

首次启动 OpenTTD 时，游戏会提示必须下载图像集，在 Steam 版中会自动安装，但在独立应用程序中需要单击一下鼠标。无论如何，因为 OpenTTD 是开源的，经过了很好的改进，所以在默认图像之外，你最终还会下载的还有很多其他图像。

下载图像集后，你会看到一个古色古香的小型界面。我觉得 640x480 的界面有点小，虽然旧图像界面确实更有年代感（那时计算能力还比较弱），但一些适配现代屏幕的轻度升级还是很好用的。因此，你的第一步操作就是点击“<ruby> 检查在线内容 <rt>  Check online content </rt></ruby>”按钮。

### 加载模组

“<ruby> 内容下载 <rt>  Content downloading </rt></ruby>”界面是一个查看已通过审查的 OpenTTD <ruby> 模组 <rt>  mod </rt></ruby>的窗口，可以提供个性化的改进图像界面、全新音乐、火车模型和地图名称。我使用了新西兰全套配置，所以对我来说，生成的所有城市都很熟悉，尽管 2020 年我转而开始使用“辐射 3”套装了。模组 *非常多*，可以使用右上角的搜索栏来缩小选择范围。

下面是一些个人认为必备的模组：

* **abase** - 高分辨率图像。将近 300 MB，这可能是你玩此游戏需要的最大一次下载（游戏本身只有 50 MB）。
* **OpenSFX** - 一个声音合集。让你能听到城市中的交通声、船运的喇叭声以及很棒的火车汽笛声。
* **Town names** - 城镇名称。默认的城市名称很有趣，但我认为记一些本地化的名称更容易。
* **Trains** - 火车模组。OpenTTD 有一组运行良好的默认火车模型，但如果你已经是一名火车观察员，那你可能会喜欢下载一些额外的火车模型。我使用的是 NZR 火车合集，但还有很多火车也是可用的，包括来自英国、美国、奥地利、比利时、捷克共和国的车，以及按字母表顺序排列的许多其他火车。
* **Beginner tutorial** - 新手教程。是一个帮你学习游戏及界面的引导场景。

### 游戏引擎默认值

下载新素材后，你需要将它们设置为默认值。有两个设置的地方：游戏引擎默认值、游戏内脚本与素材。

*OpenTTD 菜单（Seth Kenlon, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

单击“<ruby> 游戏选项 <rt>  Game Options </rt></ruby>”按钮。 在游戏选项屏幕中，调整以下设置：

* 将<ruby> 屏幕分辨率 <rt>  screen resolution </rt></ruby>设置为你喜欢的界面尺寸。
* 将<ruby> 基础图像集 <rt>  base graphics set </rt></ruby>设置为 **abase**。
* 将<ruby> 基础声音设置 <rt>  base sounds set </rt></ruby>设置为 **OpenSFX**。

关闭游戏选项屏幕。你的改动会自动保存。

### 游戏选项

在主菜单界面，单击“<ruby> NewGRF 设置 <rt>  NewGRF Settings </rt></ruby>”按钮。

*NewGRF 设置菜单（Seth Kenlon, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

未活动的模组显示在 NewGRF 设置窗口的下半部分。要激活一个未活动的模组，请选择它并单击左下角的“<ruby> 添加 <rt>  Add </rt></ruby>”按钮。选择要激活的模组后，再单击“<ruby> 应用 <rt>  Apply </rt></ruby>”按钮。

### 教程

如果你下载了“<ruby> 初学者教程 <rt>  Beginner tutorial </rt></ruby>”场景，可以通过它来学习 OpenTTD。开始教程请单击主菜单屏幕顶部附近的“<ruby> 播放场景 <rt>  Play scenario </rt></ruby>” 按钮，然后选择该教程并开始。

初学者教程有着游戏界面的完整浏览流程，全部完成需要花费一些时间。

### 快速开始

现在我们快速介绍一下，此处你要了解以下内容：车辆出自仓库，一切活动都需要时间表。记住这两条规则，你可以立即开始建造火车（以及道路、海港和机场）。

#### 建造车站

要在两个城市之间建立一条简单的铁路线，请单击顶部图标栏中的铁路轨道图标。

*新建图标栏——铁路选项（Seth Kenlon, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

铁路以车站开始和结束，所以我通常在预定线路的两端各放置一个车站。单击火车站图标（将鼠标悬停在其上方可查看其标签）。一个火车站要服务于一个地区，其作用范围必须与该地区尽量多地重叠。要查看车站的覆盖范围，请通过单击车站对话框底部的“<ruby> 开启 <rt>  On </rt></ruby>”按钮以启用<ruby> 覆盖区域高亮 <rt>  Coverage area highlight </rt></ruby>功能。

*车站覆盖信息窗口（Seth Kenlon, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

黑色网格表示覆盖范围，而白色网格显示车站的物理占据范围。当你将鼠标悬停在一个区域上时，车站的覆盖范围所需耗材会在弹出窗口中列出。从简单的开始，创建一个单轨 4 辆车的站台。在地图上的两个城市之间重复执行此操作两次。

*创建车站菜单（Seth Kenlon, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

### 铺设铁轨

接下来，用铁轨连接车站。 OpenTTD 的等距视图需要一些时间来适应，但是在单击铁路图标并在地图上单击拖动之后，你就开始大概有所了解了。X-rail 图标提供了“自动轨道”模式，该模式会根据用户单击的方块位置对齐轨道。

铺设导轨时要细心。OpenTTD 是不可撤回的，所以一旦点击一个正方形，轨道就会被构造出来。你必须使用炸药图标来移除导轨。和现实生活中一样，没有撤消按钮。

### 火车车库

火车来自<ruby> 车库 <rt>  depot </rt></ruby>。因此，要在铁路上添加火车，必须在沿线的某处添加一个车库。单击车库图标并在现有铁路附近放置。将车库连接到现有轨道，以确保你的火车可以从车库到达适当线路的（在此简单示例中，线路是唯一的）。

*建造车库菜单（Seth Kenlon, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

### 模型火车

终于，你可以将虚拟模型火车添加到虚拟铁路中了。要创建火车，请单击车库。

单击站点窗口底部的“<ruby> 新建车辆 <rt>  New Vehicle </rt></ruby>”按钮，会列出可用的火车引擎和汽车。列表会部分取决于你从可下载内容中添加的模型。一般来说，发动机分为三种：蒸汽发动机、柴油发动机和电动发动机。游戏内时间从 1950 年开始，所以早期你只有蒸汽可选。随着时间推进，你会获得可用于升级的创新型新模型。

*创建火车菜单（Seth Kenlon, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

现在创建一个简单的火车，其中包括一节引擎、一节客车和一节邮车。如果想添加其他类型的车厢，请单击站点以确认它们的可提供车型（由其覆盖区域决定）

### 创建火车时刻表

现在有了铁路和火车，还需要创建一个火车时刻表。时间表与车辆关联，因此无论何时添加新车，都要记得添加时间表，以让新车投入使用。

要为火车添加时刻表，请单击其车库列表中列车左侧的编号。这样可以打开火车视口，窗口右侧会有按钮。单击箭头图标即可查看该列车的时刻表。

*创建时刻表菜单（Seth Kenlon, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

要创建时间表，请单击时间表窗口底部的“<ruby> 前往 <rt>  Go To </rt></ruby>”按钮，然后单击要设置成第一个目的地的车站。然后点击下一站。你可以在时间表中选择一个停靠点，浏览“<ruby> 满载 <rt>  Full load </rt></ruby>”和“<ruby> 卸载 <rt>  Unload </rt></ruby>”下拉菜单中的选项，以此调整装卸要求，并且可以在“<ruby> 无停靠 <rt>  Non-stop </rt></ruby>”下拉菜单中调整路线（如果开发了新路线）。选项有很多，随着城市发展和地图完善，你可能需要随时调整策略。

但是现在，单击火车视口底部的红色“<ruby> 已停止 <rt>  Stopped </rt></ruby>”按钮，让火车投入使用吧！

*在役中的火车（Seth Kenlon, [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)）*

### 试试 OpenTTD 吧

OpenTTD 是一个模拟器，同时也是一个游戏，所以确实会有一些限制，比如你可能想要优化的预算和参数。例如，你可以单击一个城市、农场或工厂，了解其可接受的进出口类型。你可以通过单击 OpenTTD 窗口右下角的预算按钮来借钱。它不仅仅是一个虚拟的火车集合游戏。你还可以建造道路、机场、海港等。记得所有车辆都需要车库和时间表，你就在实现虚拟企业的路上成功了一半。

OpenTTD 有着活跃而热情的社区，以及[详细的维基](https://wiki.openttd.org/en/)，并且有大量的资源和教程在线可用。下载游戏并试试吧！

---

via: <https://opensource.com/article/21/9/model-trains-openttd>

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

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


Mark Text：我最喜欢的 Markdown 编辑器

# Mark Text：我最喜欢的 Markdown 编辑器

>
> Mark Text 拥有的工具使得撰写 Markdown 变得容易，同时又提供了一个不会打扰我的简单的界面。
>
>
>

几年前，当我开始使用 Jupyter 笔记本时，我接触到了 Markdown 格式。许多作者都知道 Markdown，但这是我不熟悉的一种技能。

Markdown 是一种标准的文本写作方式，在这种方式中，你可以用精简的符号来标记你想要的文本样式。例如，你不用点击一个按钮来使一个词变粗体，而是用两个星号（`**word**`）包围这个词。这有两种效果：

* 当作为纯文本查看时，视觉上显示出强调的文本
* 如果有一个好的文本转换器或渲染器（如 Pandoc 或一个好的 Markdown 文本编辑器），就会显示为加粗。

Markdown 最大的优点之一是它的大部分符号都是直观的，并且来自我们大多数人已有的习惯。它使得用星号强调单词，用字符标记标题以区分它们等等变得很自然。

每个人都对它评价很高，但我不确定为什么我需要学习和使用 Markdown。然而，我是一个好奇的人，我开始探索 Markdown，以及它如何在我的写作中发挥作用。

### 学习 Markdown

我很喜欢在学习时使用 [Markdown 速查表](https://opensource.com/downloads/cheat-sheet-markdown)。我发现 Markdown 是一个很好的工具，可以写任何内容，而且我很喜欢甚至不需要一个专门的 Markdown 编辑器这一点。任何文本编辑器都可以写 Markdown，因为 Markdown 使用标准文本来表示样式。我开始使用简单的编辑器，如 Vim 或 gedit（或任何其他编辑器），并查阅这个速查表以记住简单的格式化规则。

今年我一直在写日记，作为组织我的想法和学习更多关于 Markdown 的方法。我最近尝试了 [Ghostwriter](https://wereturtle.github.io/ghostwriter/) 文本编辑器，这是一个优秀的编辑器，有一些额外的 Markdown 特定功能。Markdown 现在已经变得非常流行了，许多编辑器都加入了语法高亮、提示和其他使 Markdown 编写变得容易的功能，或者将其作为重点。它们不是必须的功能，但当你拥有它们时，还是很好的。

### 尝试 Mark Text

在阅读一个博客时，我发现了 [Mark Text](https://marktext.app/)。Mark Text 使写 Markdown 变得很容易，同时提供了一个简单的界面，而且又不影响我。Mark Text 有六个主题，三个浅色和三个深色主题。深色主题对我来说更容易使用。它的 [用户文档](https://github.com/marktext/marktext/blob/master/docs/README.md) 非常好，而且也提供了 Markdown 的 [语法帮助](https://github.com/marktext/marktext/blob/master/docs/MARKDOWN_SYNTAX.md)。

### Markdown 的实时预览

Mark Text 以简洁的界面提供了实时预览功能。它支持 [Commonmark](https://commonmark.org/) 规范、Github 风格的 Markdown 规范，以及 Pandoc Markdown。据其网站说，Mark Text 还支持 KaTex、front matter 和 emoji 等 Markdown 扩展。它还可以输出 HTML 和 PDF 文件。

Mark Text 有各种编辑模式，如打字模式、源代码模式和专注模式。添加图片是一件很容易的事，因为你可以简单地从剪贴板上复制和粘贴它们。

在 Mark Text 窗口的左上方有一个弹出窗口，显示迄今为止输入的字符和段落数量。作为一个作家，这真的很有帮助。

从 Mark Text 窗口左上方的菜单或使用 `Ctrl+S` 保存文件很容易。事实上，Mark Text 的菜单对任何习惯于基本文本编辑器或文字处理器的人来说都是友好和熟悉的。

我喜欢 Mark Text 用简单的快捷键支持各种格式，包括表格块、图表、行内格式、数学公式块和其他代码块。

你可以从以下链接中为你的操作系统下载 Mark Text：

* [Linux](https://github.com/marktext/marktext/releases/latest/download/marktext-x86_64.AppImage)
* [macOS](https://github.com/marktext/marktext/releases/latest/download/marktext.dmg)
* [Windows](https://github.com/marktext/marktext/releases/latest/download/marktext-setup.exe)

Mark Text 以 [MIT](https://github.com/marktext/marktext/blob/develop/LICENSE) 许可证开源。你可以随时 [下载](https://github.com/marktext/marktext/releases) 最新的版本。

另外，你可以用 `brew install --cask mark-text` 在 macOS 上安装 Mark Text，在 Windows 上用 [Chocolatey](https://chocolatey.org/) 输入 `choco install marktext` 来安装它。

Mark Text 一直在寻找赞助商和开发者。该项目有一个给贡献者的 [指南](https://github.com/marktext/marktext/blob/develop/CONTRIBUTING.md)。此外，你可以在 Patreon 和 Open Collective 上支持该项目。

---

via: <https://opensource.com/article/21/10/mark-text-markdown-editor>

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


硬核观察 #437 《沙丘》的剧本是在 MS-DOS 中完成的

Summary: 更多：• 日本政务部门坚持使用软盘 • 微软在 Windows 10 中强制安装 PC 健康检查应用程序

# 硬核观察 #437 《沙丘》的剧本是在 MS-DOS 中完成的

### 《沙丘》的剧本是在 MS-DOS 中完成的

《沙丘》的剧作家 Eric Roth 在过去三十年一直用 MS-DOS 程序 [Movie Master 完成剧本写作](https://www.vice.com/en/article/wxdeay/the-dune-screenplay-was-written-in-ms-dos)。他说，“这一半是迷信，一半是对变化的恐惧。”他在 2018 年写下了《沙丘》的剧本，并在 2020 年的一个播客上解释说他仍在使用 Movie Master。这意味着《沙丘》也是用 MS-DOS 程序写的。Movie Master 有 40 页的页数限制，Eric Roth 认为这有利于他组织剧本。根据 2014 年发布的一则采访视频，他在 Windows XP 中通过一个 DOS 窗口启动 Movie Master 3.09，在一个古老的米黄色机械键盘上写剧本。

>
> 老王点评：虽然说能完成工作的都是好工具，但是我觉得恐惧变化才是老一代人的心理感受。
>
>
>

### 日本政务部门坚持使用软盘

按照之前的计划，今年底日本多家银行都会淘汰 3.5 寸软盘，但是日本的地方政府部门 [并不乐意](https://screenrant.com/japan-tokyo-phasing-out-floppy-disks-maintenance-data-loss-risks/)，在他们的争取下，该计划延期了 5 年，直到 2026 年之前他们还可以继续用软盘为客户服务。一个地方政府部门给出的理由是，过去多年的经验显示软盘及软驱几乎从未损坏过或者丢失数据，该地区长期以来一直都在使用软盘来保存员工的福利信息。此外，他们还表示政府部门的软盘库存充足，可以使用很多年，而软盘差不多在十年前就停产了。当然，要让银行继续支持软盘，他们需要每年多付出 5000 美元的费用。

>
> 老王点评：看来守旧的不仅仅是老年人，还有老年人工作的机构。
>
>
>

### 微软在 Windows 10 中强制安装 PC 健康检查应用程序

“PC 健康检查”是微软与 Windows 11 一起发布的一个新的诊断工具，它的主要用途是分析设备的硬件，检查它是否与 Windows 11 兼容。然而，微软已经开始使用新的 KB5005463 更新在 Windows 10 设备上 [强制安装这个应用程序](https://www.bleepingcomputer.com/news/microsoft/microsoft-is-force-installing-pc-health-check-in-windows-10/)。虽然微软表示可以删除该应用，但是用户不得不无数次地卸载该应用程序，因为在下一次检查更新时，该应用程序又会被重新安装。更糟糕的是，当试图卸载 KB5005463 时，Windows 10 表示该更新没有安装。

>
> 老王点评：看来微软为了让符合条件的人升级到 Windows 11，真是耗尽了心血啊。
>
>
>


如何在 Linux 下将网页转换为 PDF 文件

Summary: 在这里，我将提到这两种方法来帮助你完成工作。

在这里，我将提到这两种方法来帮助你完成工作。

# 如何在 Linux 下将网页转换为 PDF 文件

当你将某些资源存档或用于教育目的时，将网页保存为 PDF 是很方便的。

但是，你如何在 Linux 中把一个网页转换成 PDF？

你可以选择使用每个 Linux 发行版上的网页浏览器（GUI），或者使用终端将网页变成 PDF 文件。

在这里，我将提到这两种方法来帮助你完成工作。

### 方法 1：使用网页浏览器将网页转换为 PDF 文件

尽管我在本教程中使用的是 Mozilla Firefox，但你也可以用任何 [可用于 Linux 的最佳浏览器](https://itsfoss.com/best-browsers-ubuntu-linux/) 做同样的事情。

1、加载你想转换的网页。

2、在浏览器菜单中找到“**打印**”选项，或使用键盘快捷键 `Ctrl + P`。

3、默认情况下，它应该让你把它保存为 PDF。你需要点击“保存”，然后选择目的地并保存网页。

这种简单方法的一个主要问题是，它包括页面上的所有元素。这可能包括评论、页脚等。你可以用一个 PDF 编辑器来删除部分内容，但这是一个额外的任务。

更好的选择是利用一个浏览器扩展，如 [Print Friendly](https://www.printfriendly.com/)。它允许你在下载 PDF 之前编辑和删除网页的部分内容。

### 方法 2：使用终端将网页转换为 PDF 或图片

你可能已经知道，你可以 [在 Linux 终端浏览互联网](https://itsfoss.com/terminal-web-browsers/)，甚至 [使用命令行下载文件](https://itsfoss.com/download-files-from-linux-terminal/)。这并不奇怪，因为你可以在终端中做更多的事情，包括将网页下载为 PDF。

一个灵巧的开源命令行工具 `wkhtmltopdf` 和 `wkhtmltoimage` 可以帮到你，让你把任何 HTML 网页转换成 PDF 或图像文件。

它使用 Qt WebKit 渲染引擎来完成这个任务。你可以浏览它的 [GitHub页面](https://github.com/wkhtmltopdf/wkhtmltopdf) 了解更多信息。

你应该能够从你的 Linux 发行版的默认仓库中安装它。对于基于 Ubuntu 的发行版，你可以输入以下命令：

```
sudo apt install wkhtmltopdf

```

无论你想把它转换为 PDF 还是图像文件，它的使用都是非常直接的：

要将一个网页转换成 PDF，请输入：

```
wkhtmltopdf URL/domain filename.pdf

```

比如，类似于这样：

```
wkhtmltopdf linuxmint.com mint.pdf

```

你可以选择使用 `https://linuxmint.com` 这样完整的 URL 或使用域名，如上面的例子所示。

默认情况下，生成的文件将保存在主目录下。

在转换网页时，你还可以得到一些好玩的选项。

例如，你可以**对 PDF 文件应用灰度过滤器**，在同一文件中**制作多个页面副本**，以及在转换过程中**排除**图像。

灰度过滤器不一定对每个网页都有效，但你可以用命令试试：

```
wkhtmltopdf -g google.com googlepage.pdf

```

要在同一个 PDF 文件中复制多个页面，命令是：

```
wkhtmltopdf --copies 2 linuxmint.com mint.pdf

```

而且，如果你想排除网页中的图像，只需输入：

```
wkhtmltopdf --no-images linuxmint.com mint.pdf

```

此外，如果你想把一个网页转换为图像，命令是这样的：

```
wkhtmltoimage linuxmint.com mint.png

```

注意，与使用浏览器的 GUI 方法不同，通过终端使用这些工具有其局限性。它似乎不能成功转换利用任何 `<iframe>` 代码片段的网页。

像我们的网站，甚至 DuckDuckGo 都没有转换为 PDF 或图像。然而，简单的 HTML 网站，如 [Linuxmint.com](http://Linuxmint.com)、[Ubuntu.com](http://Ubuntu.com)、[Google.com](http://Google.com) 则非常有效。

### 总结

使用浏览器将网页保存为 PDF 似乎是个好办法。但是，如果你想有更多的选择并通过终端，`wkhtmltopdf` 工具应该会派上用场。

你喜欢如何在 Linux 中把网页转换为 PDF？欢迎在评论中分享你的想法。

---

via: <https://itsfoss.com/convert-webpage-pdf-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/) 荣誉推出


有哪些 Linux 平板电脑可供选择

# 有哪些 Linux 平板电脑可供选择

有很多 [基于 Linux 的笔记本电脑](/article-13672-1.html)，也有 [预装了 Linux 的迷你 PC](https://itsfoss.com/linux-based-mini-pc/)，而市场上还有一些 [基于 Linux 的智能手机](/article-13711-1.html)。

那平板电脑呢？有没有一些不错的基于 Linux 的平板电脑？这可能不能用一句话说清楚。

许多仅使用 Linux 的系统制造商专注于制造台式电脑。这主要是由于触摸设备上的 Linux 体验与安卓和 iOS 提供的体验相距甚远。

但这是否意味着你不能在平板电脑上使用 Linux？并非如此。对于早期尝试用户和 DIY 爱好者来说，还有一些选择的。让我们来看看在这些 Linux 平板电脑中，你有哪些选择。

### Ubuntu Touch

好吧！这不是一个平板电脑，而是一个操作系统。但它确实让你可以在一些旧的安卓平板电脑上安装一个适合触摸操作的 Ubuntu 版本。

注意“一些”这个词。Ubuntu Touch 官方 [支持](https://devices.ubuntu-touch.io/) Nexus 7、联想 M10、Xperia Z4 和 BQ Aquaris 平板。你甚至可以尝试在你的其他平板电脑上安装 Ubuntu Touch。它可能无法 100% 工作，但仍然非常有用。

[Ubuntu Touch](https://ubuntu-touch.io/) 是 Ubuntu 团队的一个项目，但是他们 [在 2017 年中止了它](https://itsfoss.com/ubuntu-unity-shutdown/)。[UBports](https://ubports.com/) 承担了继续这个项目的责任，他们在有限的资源下做的很棒。

总而言之，如果你喜欢各种实验，想让你的旧安卓平板电脑获得新生，Ubuntu Touch 可能是你的周末项目。

### PineTab

Pine64 始于其单板计算机 Pine A64，以作为 [树莓派的替代品](https://itsfoss.com/raspberry-pi-alternatives/)。随着时间的推移，它推出了几个 Pine 品牌的产品。这份名单里包括低调的 [PineTime 智能手表](https://itsfoss.com/pinetime-linux-smartwatch/)、PineBook 笔记本电脑、PinePhone 智能手机和 PineTab 平板电脑。

这些 Pine 设备通常价格低廉，并允许用户对这些小设备进行完全控制。这种可魔改的特性帮助它聚集了一大批开源 DIY 爱好者的粉丝。

[PineTab](https://pine64.com/product/pinetab-10-1-linux-tablet-with-detached-backlit-keyboard/?v=0446c16e2e66) 基本上使用了与带有触摸屏和键盘的 Pine64 单板计算机相同的组件。它不是看起来最漂亮的平板电脑，也不打算成为这样的。

它的规格很一般，有一个高清 IPS 电容式触摸屏、全志 A64 芯片组、四核 CPU 和 2GB 内存。

它无法与 iPad 或 Galaxy Tab 竞争，但它允许你安装你选择的发行版，并按你的要求进行配置。

请记住，Pine 的库存有限，所以如果你能看到这个设备可以购买，那你很幸运。

### PineNote

另一个 Pine 设备，与你在上一节看到的 PineTab 略有不同。

PineTab 是一款用于浏览互联网、使用应用程序和玩游戏的 Linux 平板电脑，而 [PineNote](https://www.pine64.org/pinenote/) 是用来做笔记和阅读书籍和文件的。

它有一个电子墨水显示屏，你可能在 Kindle 等电子书阅读器上见过。除了电子书阅读器之外，PineNote 还可以你用 Wacom 笔做笔记。

PineNote 拥有四核 Rockchip、多点触控电子墨水面板、4GB 内存和 128GB eMMC 存储。它也是为数不多的价格高于通常的 399 美元的平板点之一。

请记住，PineNote 正处于早期开发阶段，只接受开发者的订单。

### RasPad

[RasPad](https://raspad.com/products/raspadv3) 是一个用于树莓派设备的套件，可以把它变成一个基于触摸功能的设备。与普通的平板不同，这不是一个扁平的设备，而是有一个楔形的身体。这使得它更容易在办公桌上使用。

RasPad 是专门为树莓派设备创建的，你可以轻松使用它的大部分端口。它有一个专门的 RasPad 操作系统，但你可以自由使用常规的树莓派操作系统或 Ubuntu 或任何其他适合树莓派的操作系统。在选择操作系统时请考虑触控友好性。

请记住，树莓派设备不包括在套件中。你必须要单独购买。

### 你的选择是什么？

我知道我们离一个优秀的 Linux 平板电脑还很远，但它们至少可以和市场上的安卓平板电脑竞争。至少我们有一些可用的选择，这也是一线希望。

你是否已经拥有以上列出的设备之一了？你的体验如何？

如果你只能选择其中之一，那么你选择哪一款 Linux 平板电脑？

---

via: <https://itsfoss.com/linux-tablets/>

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


硬核观察 #438 中国建造了两台性能速度远超美国竞争对手的量子计算机

Summary: 更多：• 中国超算率先突破百亿亿次大关 • 字节跳动开源的 Semi Design，承认早期参考了阿里的 Ant Design

# 硬核观察 #438 中国建造了两台性能速度远超美国竞争对手的量子计算机

### 中国建造了两台性能速度远超美国竞争对手的量子计算机

根据最近发表在同行评议杂志《物理评论快报》和《科学通报》上的一项 [论文](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.127.180501)，中国建造了两台性能速度远超美国竞争对手的量子计算机。

第一台 “祖冲之 2 号”是三个月前完成的，它是一台 66 量子比特的可编程超导量子计算机，比谷歌的 55 量子比特的“悬铃木”快 1000 万倍，令人难以置信，[成为世界上最快的机器](https://interestingengineering.com/chinas-new-quantum-computer-has-1-million-times-the-power-of-googles)，也是两年来第一个击败谷歌的机器！

另外一台 “九章 2 号” 可以在一毫秒内计算出世界上最快的传统计算机需要 30 万亿年才能完成的任务。它是一种不同的量子计算机，使用光子来运行，但是应用场景较少。比当今最大的传统计算机快 100 sextillion 倍，即 1 后面有 23 个零。

>
> 老王点评：除了说“卧槽”啥也说不出来了。
>
>
>

### 中国超算率先突破百亿亿次大关

ExaFLOPS 代表每秒运行浮点运算百亿亿次（Exascale），即 1 的后面有 18 个零。

据报道，这两台性能 [突破百亿亿次大关](https://www.nextplatform.com/2021/10/26/china-has-already-reached-exascale-on-two-separate-systems/) 超算分别是：

无锡国家超算中心的神威太湖之光，它最初使用申威 SW26010 处理器，由上海高性能集成电路设计中心设计，超算由 40,960 个节点构成，总共 10,649,600 个核心，此次升级后处理器核心数翻了一番，峰值性能达到 1.3 ExaFLOPS，持续性能 1.05 ExaFLOPS，功耗 35 兆瓦。

第二台是广州国家超算中心的天河三号，使用基于 Armv8 架构的飞腾 2000+ (FTP) 处理器，峰值性能达到 1.3 ExaFLOPS，Rmax 性能超过 1 ExaFLOPS。

>
> 老王点评：和第一条比起来没那么震撼，但是实用性更强。率先突破百亿亿次并不算太意外，不过我觉得最重要的是它们都使用的是国产 CPU。
>
>
>

### 字节跳动开源的 Semi Design，承认早期参考了阿里的 Ant Design

字节跳动 [开源](https://github.com/DouyinFE/semi-design/blob/main/README-zh_CN.md) 了它使用的设计系统和 UI 库 Semi Design，采用 MIT 许可证。但它的代码中很快被发现有阿里巴巴设计系统 Ant Design 的痕迹。字节跳动的工程师随后发表了 [致歉声明](https://github.com/DouyinFE/semi-design/issues/70)，承认早期使用了 Ant Design 的文案，但现在的版本与 Ant Design 相差巨大。

>
> 老王点评：平心而论，很多项目都会借鉴已有的开源项目，但是开源前一定遵循相关的许可证要求。
>
>
>


树莓派 Zero 2 W 来了！

# 树莓派 Zero 2 W 来了！

>
> 树莓派 Zero W 的继任者来了！仅售 15 美元，它包括一些承诺的升级和改进。
>
>
>

树莓派 Zero W 是最实惠的包括了无线和蓝牙连接的单板计算机之一。

虽然 [树莓派 Zero 与树莓派 Zero W](https://itsfoss.com/raspberry-pi-zero-vs-zero-w/) 之间有一些区别，但考虑到它们分别以 5 美元和 10 美元的价格推出，两者都是靠谱的选择。

现在，树莓派在大约 6 年后推出了这个系列的继任者，即树莓派 Zero 2 W，售价为 **$15**。

即使 [树莓派提高了价格](https://news.itsfoss.com/raspberry-pi-price-hike/)，我想说 15 美元买一块改进了多线程性能的新一代电路板应该是个不错的选择。

让我们来看看它有什么优点和新的东西。

### 树莓派 Zero 2 W 的规格

树莓派 Zero 2 W 使用了在树莓派 3 发布版中使用的相同芯片。

虽然频率略微降低到了 1GHz，它仍然能够保证其性能是原来树莓派 Zero 的 5 倍。

下面是它的规格：

* 博通 BCM2710A1，四核 64 位SoC（Arm Cortex-A53 @ 1GHz）
* 512MB LPDDR2 SDRAM
* 2.4GHz IEEE 802.11b/g/n 无线网络、蓝牙 4.2，BLE
* 1×USB 2.0 接口，带 OTG
* 与 HAT 兼容的 40 针 I/O 针脚
* MicroSD 卡插槽
* mini HDMI 接口
* 复合的视频和复位引脚焊点
* CSI-2 相机连接器
* H.264，MPEG-4 解码（1080p30），H.264 编码（1080p30）
* OpenGL ES 1.1，2.0 图形

看看这些规格，考虑到它的外形尺寸，它足够令人印象深刻。不要忘了，他们增加了更多的铜覆层来处理升级后的处理器产生的热量。

此外，无线电路是用金属屏蔽密封的，这应该使它容易用于商业终端产品。

如果你已经有了树莓派 Zero 的外壳，那么它应该很有可能适用于 Zero 2 W。

根据 [官方公告](https://www.raspberrypi.com/news/new-raspberry-pi-zero-2-w-2/)，树莓派提到：

>
> 与 Zero 相比，确切的性能提升因工作负载而异，但对于多线程的 [sysbench](https://github.com/akopytov/sysbench) 来说，它几乎正好是五倍的速度。
>
>
>

小巧的外形和性能的提升应该使它成为安全摄像机和许多其他物联网项目的理想板卡。你可以了解一下我们的 [树莓派 Zero W 的 DIY 项目](https://itsfoss.com/raspberry-pi-zero-projects/) 清单，看看有什么灵感。

### 一个新的 USB 电源

除了新的电路板，树莓派还推出了一个改进的 USB 电源，峰值电流为 2.5A。

该电源配备了一个 micro USB 接口，而不是 USB-C。尽管这不是为新的 Zero 2 W 准备的，而是为树莓派 3B 或 3B+ 准备的。

### 可用性 & 价格

树莓派基金会已经澄清，他们在 2026 年 1 月之前不会停产树莓派 Zero 和 Zero W。

因此，如果你想省钱做实验，你可以继续使用旧板。

新的 Zero 2 W 将在官方经销商处以 15 美元的价格出售。目前供货范围仅限于英国、欧盟、美国、加拿大和香港。

它应该在 11 月在澳大利亚和新西兰上市，在接下来的几个月里会有更多国家加入。

* [树莓派 Zero 2 W](https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/)

你对最新的微型树莓派 Zero 2 W 有什么看法？欢迎在下面的评论中分享你的想法。

---

via: <https://news.itsfoss.com/raspberry-pi-zero-2-w-launch/>

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


如何在使用 Xfce 桌面环境的 Xubuntu 上安装主题

# 如何在使用 Xfce 桌面环境的 Xubuntu 上安装主题

>
> 这是一个循序渐进的初学者教程，展示了如何在 Xubuntu 和其他使用 Xfce 桌面环境的 Linux 发行版中安装主题和图标。
>
>
>

在 Xubuntu 上安装主题与 Ubuntu 或其他 Linux 发行版类似。你把主题文件放在 `~/.themes` 文件夹中，然后用一个工具来改变它。

然而，考虑到 Xubuntu 使用 [Xfce 桌面环境](https://xfce.org/)，一些选项或用户界面看起来会有所不同。这就是为什么我创建了这个教程，用适当的截图来展示步骤。

### 在 Xubuntu（Xfce）中安装新主题

开始前，你需要在主目录下创建一个 `.themes` 文件夹。注意文件夹名称前的点（`.`）。它很重要，可以从正常的视图中隐藏该文件夹。

要检查你是否已经有了它，你可以 [启用查看隐藏文件](https://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/)，然后在它不存在的时候创建它。

完成后，你需要下载一个主题。

1、你可以在 [Xfce-look](https://www.xfce-look.org/browse?cat=138&ord=latest) 门户网站上浏览 XFCE 主题。你所要做的就是下载存档（压缩）文件。

2、接下来，你需要 [解压缩文件](https://itsfoss.com/unzip-linux/)，如下面的截图所示。

3、解压后，你会发现出现一个文件夹，你要复制它。

4、然后你要把这个文件夹粘贴到你最初创建的 `.themes` 目录中。

5、最后，你需要到外观设置中找到它，并选择它/应用它以使其生效。

正如你在下面的截图中注意到的，新的主题已经被添加和应用：

除了主题之外，如果你需要定制你的 Xubuntu 桌面的图标，你需要在主目录中创建另一个 `.icons` 文件夹。

就像你安装主题一样，你将不得不遵循一个类似的过程来应用图标主题。

为了给你一个例子，让我在这里强调这些步骤：

### 在 Xubuntu（Xfce） 中添加图标主题

你可以浏览同样的 [xfce-look portal](https://www.xfce-look.org/browse?cat=132&ord=latest) 来寻找完整的图标主题。

或者，你可以寻找一些最好的 [可用于 Ubuntu 的图标主题](https://itsfoss.com/best-icon-themes-ubuntu-16-04/)，它们应该也适用于 Xubuntu。

一旦你找到了你喜欢的，就下载它，并按下面的方式解压。

接下来，你需要把这个文件夹复制并粘贴到 `.icons` 文件夹中。

现在，你可以回到外观设置中，找到列在“图标”下的可用图标。

为了向你展示区别，**我把默认的 Xubuntu 主题改为 adwaita-dark**，你可以在这里看到：

**注意**：一些图标或主题文件可能包含有不同变体的嵌套文件夹。你会注意到它们并没有出现在外观工具中。如果是这种情况，直接将内部文件夹复制到 `~/.themes` 或 `~/.icons` 文件夹中。

### 总结

通过对风格和图标的调整，你可以 [定制你的 Xubuntu 体验](https://itsfoss.com/customize-xfce/) 以融入你的品味。

你是喜欢默认的 Xubuntu 外观还是使用不同的主题/图标来定制它的外观？请在评论中告诉我你的想法。

---

via: <https://itsfoss.com/install-themes-xfce-xubuntu/>

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


硬核观察 #439 三年半后，X.Org 服务器重焕新生

Summary: 更多：• 国家鼓励金融部门拥抱自由和开源软件 • 微软放弃 Electron

更多：• 国家鼓励金融部门拥抱自由和开源软件 • 微软放弃 Electron

# 硬核观察 #439 三年半后，X.Org 服务器重焕新生

### 三年半后，X.Org 服务器重焕新生

X.Org 服务器的上一个版本 1.20 发布于 2018 年，三年半后，在新的维护者的努力下 [发布](https://lists.x.org/archives/xorg/2021-October/060799.html) 了新的版本 1.21 —— 哦不，现在流行飙版本号了，新版本号为 21.1.0。虽然 Wayland 有很多优势，但是 X.Org 服务器仍然被广泛使用，Wayland 对这些使用 X.Org 服务器的应用的兼容还不够好，而且 X.Org 服务器也有一些 Wayland 所没有的独特优势。去年，X.Org 服务器项目的长期维护者说它几乎被放弃了，它能复活要感谢新的维护者 Kanapickas，他在 7 月份站出来 [接过了开发维护工作](https://www.theregister.com/2021/09/22/xorg_server_21_1_0/)。有用户评价说，“不是所有的英雄都穿斗篷”。

>
> 老王点评：很多开源项目不是软件老了，而是维护软件的人老了啊。
>
>
>

### 国家鼓励金融部门拥抱自由和开源软件

据报道，[该文件](http://www.cac.gov.cn/2021-10/27/c_1636928705274546.htm) “鼓励金融机构将开源技术应用作为提高核心技术自主可控能力的重要手段”，“积极参与开源生态建设，依法合规分享开源技术应用经验，共享开源技术研究成果”。并提出“金融机构应当遵循开源技术相关法律和许可要求，合规使用开源技术”。文件要求遵循安全可控、合规使用、问题导向和开放创新等原则，并着重指出金融机构要“在操作系统、数据库、中间件等基础软件领域和云计算、大数据、人工智能、区块链等新兴技术领域加快生态建设”。

>
> 老王点评：向来比较保守的金融部门能主动拥抱开源，可见开源已经成为了一种普遍共识。
>
>
>

### 微软放弃 Electron

在 Electron 上运行的 Teams 已经成为占用内存和降低计算机速度的代名词，微软甚至 [专门解释](https://docs.microsoft.com/en-us/microsoftteams/teams-memory-usage-perf) 了为什么 Teams 占用这么多内存。最近，[微软宣布](https://twitter.com/rishmsft/status/1408085784016539653)，Teams 将转向他们自己的 Edge Webview2 渲染引擎，放弃 Electron 以寻求性能提升。据介绍，转型后，Teams 的内存消耗将减少 2 倍，它将被称为 Teams 2.0。有很多知名的应用程序都是由 Electron 驱动的，该框架可以帮助 Web 开发者将他们的 Web 应用转到桌面平台。但每个 Electron 应用程序的后台都有一个唯一的 Chrome OS 实例，运行两个以上的此类应用程序会耗尽主机的性能。

>
> 老王点评：Electron 开发的应用就和 Java 开发的桌面应用一样臃肿笨重。这种跨平台的代价不菲啊。
>
>
>


现可下载微软 Edge 的 Linux 稳定版了

# 现可下载微软 Edge 的 Linux 稳定版了

>
> 微软 Edge 的 Linux 最终版本终于亮相了。对于涉足 Linux 的 Windows 用户来说，这似乎是一个值得考虑的选择。
>
>
>

早在 5 月，[微软就启动了 Linux 版的 Edge 的公开测试](https://news.itsfoss.com/microsoft-edge-beta/)。

现在，就在正式宣布之前，其稳定版已经被推送到官方仓库。

注意：微软 Edge 不是一个开源的浏览器，但它基于开源的组件。我们报道这个是因为它可以用于 Linux。

### 微软 Edge 的 Linux 版本：有什么值得喜欢的？

微软 Edge 基于开源的 Chromium，这一点并不奇怪。所以，是的，它只是又一个 [基于 Chromium 的 Linux 浏览器](https://news.itsfoss.com/chrome-like-browsers-2021/)。

然而，与谷歌 Chrome 浏览器相比，微软 Edge 提供了良好的用户体验和一些对 Windows 用户来说可能很方便的额外功能。

根据我在 Windows 10 上的经验，与谷歌 Chrome 浏览器相比，微软 Edge 似乎性能更好，但我还没有为此比较过任何基准。

那么，它对 Linux 是否有用？有什么理由让你去尝试吗？

当然，如果你不喜欢使用微软的服务，那就完全是另一回事了。但是，总的来说，微软 Edge 看起来是一个有前途的基于 Chromium 的浏览器，具有一些有用的功能。

一些可用于 Linux 的关键功能包括：

* 睡眠标签（以节省资源）
* 垂直标签
* 收藏
* 防止跟踪

虽然它在配置你的微软账户时也支持家庭安全选项，但并不是每项功能都适用于 Linux。

此外，我没有发现可以派上用场的 Linux 的“儿童模式”。

而且，如果你在使用 Linux 的同时还使用其他桌面平台，微软 Edge 可以是跨平台冒险的一个好选择。

但如果你只想在 Linux 上试用它，你可能想在作出决定之前将它与其他浏览器进行比较。

### 下载微软 Edge Linux 版

想知道 [如何在 Linux 上安装微软 Edge 浏览器](https://itsfoss.com/microsoft-edge-linux/)？尽管 [微软 Edge 的官方网站](https://www.microsoft.com/en-us/edge) 没有列出 Linux 版本，但你可以在他们的官方资源库中找到它。

DEB 和 RPM 两种软件包都是可用的。你可以使用下面的链接下载这些软件包：

* [微软 Edge (deb)](https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/)
* [微软 Edge (rpm)](https://packages.microsoft.com/yumrepos/edge/)

Via: [Sophos](https://nakedsecurity.sophos.com/2021/10/29/microsoft-edge-finally-arrives-on-linux-official-build-lands-in-repos/)

---

via: <https://news.itsfoss.com/microsoft-edge-stable-release/>

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


Summary: 我假设你对 Linux 很陌生。

我假设你对 Linux 很陌生。

# 修复在 Ubuntu 上 “Unable to acquire dpkg frontend lock. Are You Root?” 的错误

我假设你对 Linux 很陌生。

你按照网上的一些教程，告诉你要安装某个程序或运行某个命令。可能是与服务器有关的东西。

但当你运行这个命令时，你遇到了这个错误：

```
E: Could not open lock file /var/lib/dpkg/lock-frontend – open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

```

或者类似的错误：

```
dpkg: error: required read/write access to the dpkg database directory /var/lib/dpkg
E: Sub-process dpkg –set-selections returned an error code (2)
E: Executing dpkg failed. Are you root?

```

这两个错误都在问你同一个问题：你是 root 吗？而这就是这个问题的答案。成为 root。

### 成为 root 以避免这个错误

你如何 [在 Ubuntu](https://itsfoss.com/root-user-ubuntu/) 或 Debian 中成为 root？你使用 `sudo` 命令。

是的，就是这样。无论你在运行什么命令，只要在它前面加上 `sudo` 即可。

```
sudo your_command

```

它将要求你输入你的用户账户密码。请记住，当你输入密码时，屏幕上不会显示任何东西，这也没关系。

你的系统没有任何问题。在大多数 Linux 系统中，输入密码时不会显示通常的星号或其他东西是一种“安全特性”。

只要输入密码，并在密码后按下回车键即可。如果密码输入正确，你现在应该可以运行该命令了。

你甚至可以使用这个方便的 [Linux 命令行技巧](https://itsfoss.com/linux-command-tricks/)，用 `sudo` 运行以前的命令：

```
sudo !!

```

这很简单，而且立即生效，除非你没有 sudo 权限。然后，你会看到一个不同的错误。

### 看到一个 “User is not in sudoer file” 的错误？

当你 [安装 Ubuntu](https://itsfoss.com/install-ubuntu/) 时，你必须创建一个用户账户。这个用户被自动授予 `sudo` 权限，在需要时以 root 身份运行命令。

这发生在 Ubuntu 桌面上，而不是服务器上。大多数服务器发行版会有一个单独的 root 账户。如果你单独创建了一个普通账户，你就必须把这个用户添加到 `sudoer` 中，以便这个普通用户可以使用 `sudo`。

在上面的截图中，我已经创建了这个额外的用户，但没有将其添加到 sudo 组中。这意味着这里的用户 `prakash` 没有使用 `sudo` 命令的权限，因此系统抱怨 “prakash is not in sudoers file”。

#### 该事件在哪里报告？

错误的 `sudo` 尝试会被添加到系统日志中。它记录了用户名、虚拟终端号、运行命令的位置和运行的命令。

这些日志的位置在不同的发行版中有所不同。

通常，在 Ubuntu 中你可以在 `journalctl` 日志或 `/var/log/auth.log` 文件中找到它，在 Fedora 中可以在 `/var/log/audit/audit.log` 文件中找到它。

#### 如果一个用户不在 sudoer 列表中，你能做什么？

当你不能用当前的用户账户使用 `sudo` 时，你能做什么？首先，[验证该用户是否有 sudo 权限。如果没有，你可以有一些选择](https://linuxhandbook.com/check-if-user-has-sudo-rights/)：

* 以 root 身份登录或切换 root 身份（如果你有 root 密码）。
* [将该用户加入 sudoer 列表](https://linuxhandbook.com/create-sudo-user/) （如果你有其他用户账户的管理或 `sudo` 权限）。
* 如果你在多用户的 Linux 系统中，自己没有 root 或 `sudo` 权限，请你的系统管理员授予你的用户 sudo 权限或安装你想安装的应用。

### 这有帮助吗？

`sudo` 是一个非常全面的安全机制，它不仅仅是允许一个普通用户成为 root。它有助于对系统进行审计，了解哪个用户用 `sudo` 运行了哪个命令。它还可以被配置为只允许某个用户用 `sudo` 运行某些命令。

你不会在桌面 Linux 上看到如此细化的 `sudo` 配置，在桌面 Linux 上，它被预先配置为允许 `sudo` 组中的任何用户以 `root` 的身份运行任何命令。关于 `sudo` 的更多信息，请参见其他文章。

我希望在解决这个经典的初学者问题时，你能对 `sudo` 命令有一些初步的了解。如果你对这个主题有进一步的问题，请在评论区告诉我。

---

via: <https://itsfoss.com/fixed-are-you-root-error/>

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


硬核观察 #440 中国主要网站仍然不支持 IPv6

Summary: 更多：• 磁带仍占有数据备份的 4% 份额 • 世界论文索引 General Index 上线

# 硬核观察 #440 中国主要网站仍然不支持 IPv6

### 中国主要网站仍然不支持 IPv6

对 Alexa 排名前 500 网站的 [检查显示](http://www.delong.com/ipv6_alexa500.html)，支持 IPv6 的网站占 25%。而中国主要网站基本不支持 IPv6，如天猫、百度、搜狐、淘宝、京东、奇虎360、微博、新浪、新华网等等。全世界的 [IPv6 普及度](https://www.6connect.com/blog/global-adoption-of-ipv6-top-ten-countries/) 正在逐渐增长，根据 [Google IPv6 的统计](https://www.google.com/intl/en/ipv6/statistics.html) 显示，IPv6 的普及度已经达到了 35%，但中国的 IPv6 的普及度仍然较低。

>
> 老王点评：现在电信运营商对 IPv6 的支持比较好，毕竟 IP 不太够用。但是各个网站对此则动力不足。
>
>
>

### 磁带仍占有数据备份的 4% 份额

虽然早在 2003 年 LiveVault 就宣称“磁带备份是上个世纪的事情”，但将近 20 年过去了，仍有 4% 的组织 [使用磁带备份](https://www.databarracks.com/resources/data-health-check-2021)，15% 在使用 “硬盘+磁带” 的混合式备份方案，但云端备份的使用率已增长到 51% 。磁带备案难以退出市场的主要原因是：组织机构需要保留多年的历史备份，大企业的转型动作更是既困难又缓慢；磁带的成本其实相当划算；磁带备份具有物理隔离的特性。

>
> 老王点评：虽然磁带备份看起来很老旧了，但是也有现在云端备份所不具备的一些优势。
>
>
>

### 世界论文索引 General Index 上线

一位美国技术专家 [发布](https://www.nature.com/articles/d41586-021-02895-8) 了一个包含 1 亿多篇期刊文章中单词和短语的索引 [General Index](https://archive.org/details/GeneralIndex)——其中包括了许多付费论文。 索引于 10 月 7 日发布可免费使用，包含超过 3550 亿个单词及相应论文中的句子片段。此举是为了帮助科学家使用软件从已发表论文中收集见解，即使他们没有合法访问相关论文的权限。索引不包含论文全文，只包含最多五个单词的句子片段。早期访问过该索引的研究人员表示，这是帮助他们使用软件搜索文献的重大进展。

>
> 老王点评：这对于科研来说应该很有用。
>
>
>


# 如何在 Ubuntu 和其它的 Linux 发行版安装 Rust 和 Cargo

>
> 了解在 Linux 上安装 Rust 编程语言及其包管理器 Cargo 的各种方法。
>
>
>

自从 Mozilla 贡献了 [Rust](https://www.rust-lang.org/) 语言之后，它就获得了更加突出和受欢迎的地位。口说无凭。[Rust 将被使用在 Linux 内核中](https://www.zdnet.com/article/rust-in-the-linux-kernel-why-it-matters-and-whats-happening-next/)，它是继 C 语言之后的第二种编程语言。

许多开发人员也开始使用 Rust 语言制作很棒的基于命令行的工具。这些工具通常可以通过 [Cargo 包管理器](https://crates.io/) 获得。

这就是为什么在 Linux 中安装 Rust 支持对程序员和最终用户都很重要的原因。

官方 Rust 文档建议通过以下这种方式下载并执行安装程序脚本在 Linux 中安装 Rust：

```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

```

这是可行的。但是，你的发行版可能已经打包了 Rust。使用你的发行版的 [包管理器](https://itsfoss.com/package-manager/) 也是一种选择。

让我向你介绍官方 Rust 方式和包管理器方式的 Rust 安装步骤。

### 方法1：使用官方方法在任意的 Linux 上安装 Rust

这种方法有几个优点：

* 你可以获取最新的 Rust 和 Cargo 版本
* Rust 仅仅是为当前的用户安装，并不是所有用户
* 你并不需要 root 用户或者 `sudo` 权限就可以为自己安装 Rust

一些人不喜欢从互联网下载并 [运行 shell](https://itsfoss.com/run-shell-script-linux/) 脚本，即使它来自官方。但是，由于它不需要 root 访问权限并且脚本来自官方，因此以这种方式安装它应该是安全的。

首先，确保你已经安装了 `curl`。如果没安装，使用你的发行版的包管理器安装它。你可以使用 `apt` 命令在 [Ubuntu 和 Debian 上安装 Curl](https://itsfoss.com/install-curl-ubuntu/)。

```
sudo apt install curl

```

接下来，使用这条命令下载脚本并运行它：

```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

```

它会询问你输入所需的安装类型。选择选项 `1`：

脚本完成安装后，你需要获取配置文件的来源，以使更改应用于你的 shell。

应用文件：

```
source $HOME/.cargo/env

```

完成后，通过检查已安装的版本来验证 Rust 是否可用：

```
rustc --version

```

太酷了。如果 Rust 发布了新版本，你可以使用如下命令更新已安装的版本：

```
rustup update

```

在你看到其它安装方法之前，让我快速展示如何移除以这种方式安装的 Rust。

#### 删除以官方方式安装的 Rust

在终端中，使用如下的命令从系统中移除 Rust：

```
rustup self uninstall

```

询问时按 `Y`，你将从系统中删除 Rust。

官方方式安装已经完成。让我们看看如何使用 `apt` 命令在 Ubuntu 上安装 Rust。

### 方法2：使用 apt 命令在 Ubuntu 上安装 Rust

为什么要使用包管理器？

* 它在整个系统范围内安装 Rust，可供系统上的所有用户使用
* 它与其它系统更新一起集中更新（如果你的发行版添加了新版本的 Rust）

Ubuntu 中有两个主要的 Rust 包：

* `rustc`：用于 Rust 编程语言的 Rust 编译器
* `cargo`：Cargo 是 Rust 的包管理器，它会自动安装 `rustc`

作为一个普通用户，你将使用 Cargo 来安装基于 Rust 的应用程序。作为程序员，你需要 Cargo 来获取其它 Rust 包或创建自己的包。

由于 `cargo` 包含 `rustc`，所以我建议安装它，以便一次性安装所有必需的软件包。

```
sudo apt install cargo

```

系统会要求你输入账号密码。

当然，你可以自由使用 `apt install rustc`，只安装 Rust。这取决于你的选择。

你可以验证是否为你和所有其他用户安装了 Rust（如果你愿意）：

很好。让我也快速展示卸载步骤。

#### 使用 apt remove 移除 Rust

要移除 Rust，你可以先移除 Cargo，然后使用 `autoremove` 命令移除随它安装的依赖项。

```
sudo apt remove cargo

```

现在运行 `autoremove`：

```
sudo apt autoremove

```

就是这样。你现在了解了在 Ubuntu 和其它 Linux 发行版上安装 Rust 的所有基本知识。随时欢迎提出问题和建议。

---

via: <https://itsfoss.com/install-rust-cargo-ubuntu-linux/>

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

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


在 Linux 上用 ASCII 艺术打印万圣节问候语

# 在 Linux 上用 ASCII 艺术打印万圣节问候语

>
> 使用 Linux 或 FreeDOS 从一个 C 程序中生成彩色的 ASCII 艺术。
>
>
>

利用扩展 ASCII 字符集和它的绘画元素集合的全彩 ASCII 艺术在 DOS 上曾经相当流行。你可以在你的下一个 FreeDOS 程序中加入 ASCII 艺术，作为一个很酷的“欢迎”屏幕，或者作为一个提供了更多程序信息的彩色“退出”屏幕，来增加一点视觉上的乐趣。

但是，这种 ASCII 艺术的风格并不仅仅局限于 FreeDOS 程序。你可以在 Linux 终端模式的程序中使用同样的方法。虽然 Linux 使用 [ncurses](https://opensource.com/article/21/8/ncurses-linux) 来控制屏幕，而不是 DOS 的 [conio](https://opensource.com/article/21/9/programming-dos-conio)，但相关的概念也适用于 Linux 程序。本文探讨了如何从 C 语言程序中生成彩色 ASCII 艺术。

### ASCII 艺术文件

你可以使用各种工具来绘制你的 ASCII 艺术。在这个例子中，我使用了一个叫做 TheDraw 的老式 DOS 应用程序，但是你可以在 Linux 上找到现代的开源 ASCII 艺术程序，比如 [Moebius](https://blocktronics.github.io/moebius/)（Apache 许可证）或者 [PabloDraw](https://github.com/blocktronics/pablodraw)（MIT 许可证）。只要你知道保存的数据是什么样子的，你使用什么工具并不重要。

下面是一个 ASCII 艺术文件样本的一部分，以 C 源代码保存。请注意，这个代码片段定义了几个值。`IMAGEDATA_WIDTH` 和 `IMAGEDATA_DEPTH` 定义了屏幕上的列数和行数。在这里，它是一个 80x25 的 ASCII 艺术“图像”。`IMAGEDATA_LENGTH` 定义了 `IMAGEDATA` 数组中的条目数量。ASCII 艺术画面中的每个字符可以用两个字节的数据表示。要显示的字符和包含该字符的前景和背景颜色的颜色属性。对于一个 80x25 的屏幕，每个字符都与一个属性配对，该数组包含 4000 个条目（即 `80*25*2=4000`）。

```
#define IMAGEDATA_WIDTH 80
#define IMAGEDATA_DEPTH 25
#define IMAGEDATA_LENGTH 4000
unsigned char IMAGEDATA [] = {
    '.', 0x08,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,
    ' ', 0x08,  ' ', 0x08,  '.', 0x0F,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,
    ' ', 0x08,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,  '.', 0x0F,
    ' ', 0x08,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,
    ' ', 0x08,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,  ' ', 0x08,

```

数组的其它部分依此类推。

为了在屏幕上显示这种 ASCII 艺术，你需要写一个小小的程序来读取数组并以正确的颜色打印每个字符。

### 设置一个颜色属性

这个 ASCII 艺术文件中的颜色属性在一个字节中定义了背景和前景的颜色，用十六进制的值表示，如 `0x08` 或 `0x6E`。十六进制是适合表达这样的颜色“对”的紧凑方式。

像 Linux 上的 ncurses 或 DOS 上的 conio 这样的字符模式系统 [只能显示 16 种颜色](https://opensource.com/article/21/6/freedos-sixteen-colors)。这就是十六种可能的文本颜色和八种背景颜色。用二进制计算十六个值（从 0 到 15）只需要四个二进制位。

>
> `1111` 是二进制的 15
>
>
>

而且方便的是，十六进制可以用一个字符表示 0 到 15：`0`、`1`、`2`、`3`、`4`、`5`、`6`、`7`、`8`、`9`、`A`、`B`、`C`、`D`、`E` 和 `F`。所以十六进制的值 `F` 是数字 15，或二进制的 `1111`。

通过颜色对，你可以用一个八位的字节来编码背景和前景的颜色。这就是文本颜色的四个二进制位（十六进制中的 0 到 15 或 0 到 F）和背景颜色的三个二进制位（十六进制中的 0 到 7 或 0 到 E）。字节中剩余的二进制位在这里没有使用，所以我们可以忽略它。

为了将颜色对或属性转换成你的程序可以使用的颜色值，你需要 [使用位掩码](https://opensource.com/article/21/8/binary-bit-fields-masks)，只指定用于文字颜色或背景颜色的位。使用 FreeDOS 上的 OpenWatcom C 编译器，你可以编写这个函数，从颜色属性中适当地设置颜色。

```
void
textattr(int newattr)
{
  _settextcolor(newattr & 15);         /* 0000xxxx */
  _setbkcolor((newattr >> 4) & 7);     /* 0xxx0000 */
}

```

`_settextcolor` 函数只设置文本颜色，`_setbkcolor` 函数设置背景颜色。两者都定义在 `graph.h` 中。注意，由于颜色属性在一个字节值中包括了背景色和前景色，`textattr` 函数使用 `&`（二进制的“与”运算）来设置一个位掩码，只隔离了属性中的最后四个位。这就是颜色对存储前景颜色的值 0 到 15 的地方。

为了得到背景色，该函数首先执行了一个位移，将位“推”到右边。这就把“上”位放到了“下”位范围，所以任何像 `0xxx0000` 这样的位都变成了 `00000xxx`。我们可以用另一个的位掩码 7（二进制 `0111`）来挑选出背景颜色值。

### 显示 ASCII 艺术

`IMAGEDATA` 数组包含整个 ASCII 艺术屏幕和每个字符的颜色值。为了在屏幕上显示 ASCII 艺术，你的程序需要扫描该数组，设置颜色属性，然后一次在屏幕上显示一个字符。

让我们在屏幕的底部留出空间，以便向用户提供单独的信息或提示。也就是说，我不想显示一个 80 列 ASCII 屏幕的所有 25 行，而只想显示前 24 行。

```
  /* print one line less than the 80x25 that's in there:
     80 x 24 x 2 = 3840 */

  for (pos = 0; pos < 3840; pos += 2) {
...
  }

```

在 `for` 循环里面，我们需要设置颜色，然后打印字符。OpenWatcom C 编译器提供了一个函数 `_outtext` 来显示带有当前颜色值的文本。然而，这需要传递一个字符串，如果我们需要一个一个地处理每个字符，在一行中的每个字符需要不同颜色的情况下，效率就会很低。

相反，OpenWatcom 有一个类似的函数，叫做 `_outmem`，允许你指示要显示多少个字符。对于一次一个字符，我们可以在 `IMAGEDATA` 数组中提供一个字符值的指针，并告诉 `_outtext` 只显示一个字符。这将使用当前的颜色属性显示该字符，这就是我们需要的。

```
  for (pos = 0; pos < 3840; pos += 2) {
    ch = &IMAGEDATA[pos];              /* pointer assignment */
    attr = IMAGEDATA[pos + 1];

    textattr(attr);
    _outmem(ch, 1);
  }

```

这个更新的 `for` 循环通过向 `IMAGEDATA` 数组分配一个指针来设置字符 `ch`。接下来, 循环设置文本属性, 然后用 `_outmem` 显示字符.

### 整合起来

有了 `textattr` 函数和处理数组的 `for` 循环, 我们可以编写一个完整的程序来显示 ASCII 艺术文件的内容。对于这个例子，将 ASCII 艺术文件保存为 `imgdata.inc`，并用 `#include` 语句将其包含在源文件中。

```
#include <stdio.h>
#include <conio.h>
#include <graph.h>

#include "imgdata.inc"

void
textattr(int newattr)
{
  _settextcolor(newattr & 15);         /* 0000xxxx */
  _setbkcolor((newattr >> 4) & 7);     /* 0xxx0000 */
}

int
main()
{
  char *ch;
  int attr;
  int pos;

  if (_setvideomode(_TEXTC80) == 0) {
    fputs("Error setting video mode", stderr);
    return 1;
  }

  /* draw the array */

  _settextposition(1, 1);              /* top left */

  /* print one line less than the 80x25 that's in there:
     80 x 24 x 2 = 3840 */

  for (pos = 0; pos < 3840; pos += 2) {
    ch = &IMAGEDATA[pos];              /* pointer assignment */
    attr = IMAGEDATA[pos + 1];

    textattr(attr);
    _outmem(ch, 1);
  }

  /* done */

  _settextposition(25, 1);             /* bottom left */

  textattr(0x0f);
  _outtext("Press any key to quit");

  getch();

  textattr(0x00);
  return 0;
}

```

在 FreeDOS 上使用 OpenWatcom C 编译器编译该程序，你会得到一个显示这个节日信息的新程序。

*万圣节快乐（Jim Hall, [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/))*

万圣节快乐，各位！

* [在此下载 inc 代码文件](https://opensource.com/sites/default/files/uploads/imgdata.inc_.txt)
* [在此下载 C 代码文件](https://opensource.com/sites/default/files/uploads/hallown.c.txt)

---

via: <https://opensource.com/article/21/10/ascii-linux-halloween>

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


硬核观察  #441 Linux 发行版在性能测试中击败 Windows 11

Summary: 更多：• NASA 希望人工帮助改善火星车的人工智能 • Hive 勒索软件已经准备加密 Linux 和 FreeBSD

# 硬核观察  #441 Linux 发行版在性能测试中击败 Windows 11

### Linux 发行版在性能测试中击败 Windows 11

Phoronix 本周进行了一些有趣的 [性能测试](https://www.phoronix.com/scan.php?page=article&item=11900k-windows11-clear&num=1)。所有 44 项测试的几何平均值显示，在当前这一代英特尔平台上，Linux 明显领先于 Windows 11。在这个系统上，Ubuntu / Arch / Fedora 总体上比 Windows 11 Pro 快 11% 左右。Clear Linux 比 Windows 11 快约 18%，总体上比其他 Linux 发行版的性能高约 5%。Clear Linux 获得了 33 项的第一，Windows 11 Pro 获得 3 项第一。

>
> 老王点评：不出意料的结果，不过 Clear Linux 居然得到大部分的第一，值得关注。
>
>
>

### NASA 希望人工帮助改善火星车的人工智能

NASA 呼吁任何有兴趣的人为其火星车的机器学习算法 [做出贡献](https://mars.nasa.gov/news/9063/you-can-help-train-nasas-rovers-to-better-explore-mars/)，以帮助毅力号火星车四处游走。你所需要做的就是看一些图片并标记地质特征。毅力号有增强的人工智能，以帮助它避开障碍物。它有 23 个摄像头，可以从火星上捕捉到大量的视觉数据，但它必须依靠人类操作员来解释其中大部分图像，从而改善其人工智能水平。

>
> 老王点评：所谓人工智能还是需要“人工”才能智能。
>
>
>

### Hive 勒索软件已经准备加密 Linux 和 FreeBSD

Hive 勒索软件团伙自 2021 年6月以来袭击了 30 多个组织，现在针对 Linux 和 FreeBSD 开发了 [新的恶意软件变种](https://www.bleepingcomputer.com/news/security/hive-ransomware-now-encrypts-linux-and-freebsd-systems/) 来加密这些系统。不过，ESET 发现，Hive 的新加密器尚在开发中，仍缺乏功能，并且存在一些 bug。相比之下，Hive 的 Windows 勒索软件具有更多功能。

>
> 老王点评：Linux 和 FreeBSD 管理员们需要注意了，它们并不具有先天的高安全性。
>
>
>


如何在 Linux 上杀死一个僵尸进程

Summary: 要杀死一个僵尸进程，你必须从进程列表中删除其名称。

要杀死一个僵尸进程，你必须从进程列表中删除其名称。

# 如何在 Linux 上杀死一个僵尸进程

>
> 要杀死一个僵尸进程，你必须从进程列表中删除其名称。
>
>
>

<img src="content_image/album_202111_01_095024jyrvo8ss5jnxysqo.jpg" alt="" title="Full moon on a hazy night">

这里有一个和 Unix 纪元一样古老的故事。自从有了 C 和 Unix，以及（后来的）Linux，我们就有了“<ruby> 僵尸 <rt>  zombie </rt></ruby>”。具体来说，有一些进程被标记为“<ruby> 僵尸进程 <rt>  zombie process </rt></ruby>”。一些人误解它，另一些人忽视它，而它对我们许多人试图 “杀死” 这些进程的努力免疫，没有什么成效。这是为什么呢？

### Linux 中的进程是什么？

这一切始于执行 Linux 中的一个程序时，当它被执行时，它的运行实例被称为进程。你可以用 [ps 命令](https://opensource.com/article/21/8/linux-procps-ng) 查看你的 Linux 环境中的所有进程：

```
$ ps -ax
        PID TTY         STAT   TIME COMMAND
        1 ?     Ss      0:01 /usr/lib/systemd/systemd rhgb --switched-root --sys
        2 ?     S       0:00 [kthreadd]
        3 ?     I<      0:00 [rcu_gp]
        4 ?     I<      0:00 [rcu_par_gp]

```

有时一个进程启动另一个进程，使第一个进程成为第二个进程的父进程。`pstree` 命令是一个很好的工具，可以让你看到系统中进程的“家谱”：

```
$ pstree -psn
systemd(1)─┬─systemd-journal(952)
        ├─systemd-udevd(963)
        ├─systemd-oomd(1137)
        ├─systemd-resolve(1138)
        ├─systemd-userdbd(1139)─┬─systemd-userwor(12707)
        │                     ├─systemd-userwor(12714)
        │                     └─systemd-userwor(12715)
        ├─auditd(1140)───{auditd}(1141)
        ├─dbus-broker-lau(1164)───dbus-broker(1165)
        ├─avahi-daemon(1166)───avahi-daemon(1196)
        ├─bluetoothd(1167)

```

每个进程在系统中都会被分配一个编号。进程编号（PID）1 被分配给启动过程中执行的第一个进程，PID 1 之后的每一个进程都是它的子孙。PID 1 进程是初始化进程，在大多数新版本的 Linux 中，它只是一个指向 `systemd` 程序的符号链接。

### 用 kill 命令结束一个进程

你可以用 `kill` 命令来终止 Linux 系统中的进程。尽管名字叫 “杀死”，但 `kill` 命令和其他一些命令，如 `pkill` 和 `killall`，都是为向一个或多个进程发送信号而编写/设计的。当没有指定信号时，它发送的默认信号是 `SIGTERM` 信号，以终止进程。

当一个父进程死亡或被杀死，而其子进程没有跟随其父进程的死亡，我们称该进程为“<ruby> 孤儿进程 <rt>  orphan process </rt></ruby>”。

### 如何杀死一个僵尸进程

另一方面，僵尸进程是不能被“杀死”的！你可能会问为什么？因为它们已经死了！

每一个子进程，当被终止时，都会成为一个僵尸进程，然后被父进程删除。当进程退出并释放它所使用的资源时，它的名字仍然在操作系统的进程表中。这时，父进程的工作就是把它的名字从进程表中删除。如果没有删除，我们就有了僵尸进程，它不再是一个真正的进程，而只是操作系统进程表上的一个条目。

这就是为什么试图对一个<ruby> 失效的 <rt>  defunct </rt></ruby>（僵尸）进程执行 “杀死” 命令，即使使用 `-9`（`SIGKILL`）选项也不起作用，因为没有什么可以杀死的。

因此，要杀死一个僵尸进程，比如从进程列表（进程表）中删除其名称，你必须杀死其父进程。例如，如果 PID 5878 是一个僵尸进程，而它的父进程是 PID 4809，那么要杀死僵尸进程（5878），就必须结束父进程（4809）：

```
$ sudo kill -9 4809  # 4809 是父进程，而非僵尸

```

我对僵尸的最后一句警告：在杀死父进程时要非常小心。如果一个进程的父进程是 PID 1，而你杀了它，你就会重新启动自己！

而这将是一个更可怕的故事！

---

via: <https://opensource.com/article/21/10/linux-zombie-process>

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


Annotator：为 Linux 图片添加基本注解

Summary: 一款令人兴奋和有用的注解工具，为 Linux 系统提供额外的功能。

一款令人兴奋和有用的注解工具，为 Linux 系统提供额外的功能。

# Annotator：为 Linux 图片添加基本注解

>
> 一款令人兴奋和有用的注解工具，为 Linux 系统提供额外的功能。
>
>
>

谈及图像处理和编辑，有很多工具可用。然而，像 GIMP 这样的工具不一定能解决所有问题。

GIMP 确实为初学者和高级用户提供了大量的功能，但要学习一些东西并对图像进行视觉增强功能的应用可能很费时。

Annotator 是一个令人印象深刻的开源工具，可以让你能轻松完成很多事情。

### Annotator：开源图像注解工具

Annotator 帮你快速添加形状、文本和其他视觉元素。这对各种使用情况都很有用。

这个工具提供了一个简单的用户界面并且易于使用。而且，你还可以通过各种你想要的功能来增强图像。

### Annotator 的功能

不局限于图片增强，你还可以通过 Annotator 获得一些其他功能。其中的一些主要功能是：

* 能够添加文本
* 自定义文本的颜色，调整大小，调整高亮的颜色等
* 使用放大镜工具来关注图像中的某个特定点
* 调整放大镜以改变角度和大小
* 添加视觉图标来表达一些东西
* 使用铅笔来书写，这对触控板用户很有用
* 模糊工具来模糊重要或不必要的细节
* 计数器图标来突出图像中重要的任何种类的顺序
* 支持多种字体
* 调整形状和文本的边界宽度和线条
* 可用各种形状，如箭头、圆圈和星星
* 能够调整图像的大小和裁剪图像

### 在 Linux 中安装 Annotator

Annotator 通常可在 elementaryOS 的应用中心找到。但幸运的是，它是一个 Flatpak 包，所以你可以在任何 Linux 发行版上安装它。

你所需要做的就是前往应用中心商店的链接，然后使用软件安装程序下载/打开 **Flatpak ref** 文件。如果你需要帮助，我们的 [Flatpak 指南](https://itsfoss.com/flatpak-guide/) 中有更多相关信息。

[Annotator](https://appcenter.elementary.io/com.github.phase1geo.annotator/)

要从源代码构建或探索更多关于它的信息，你可以查看它的 [GitHub 页面](https://github.com/phase1geo/Annotator)。

### 关于使用 Annotator 的想法

我发现它对我的工作很有用，因为我们每天都需要处理各种截图。而且，描述性越详细，图片就越能让我们的读者理解。

通常情况下，我使用 Flameshot 作为我的截图工具，并通过它添加可用的注解。还有其他 [可用于 Linux 的截图工具](https://itsfoss.com/take-screenshot-linux/)，但我更喜欢 Flameshot 的快速注解功能。

然而，你不能使用 Flameshot 或其他任何截图工具来为现有的图片添加注解。

因此，Annotator 在编辑现有的截图或任何其他所需的图像时就显得非常方便。

在我短暂的使用过程中，它的所有功能都运行良好，不过我希望可以编辑和调整文字的大小，使之更加直观。

如果你需要为系统上的图像添加高亮/注解，我建议你试一试。请在下面的评论中告诉我你的想法。

---

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

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

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


硬核观察 #442 法院要求 Signal 提供私人用户数据，但它根本没有

Summary: 更多：• Linux 5.15 内核发布，NTFS3 驱动上线 • 开源软件给特朗普的社交网站 30 天时间遵守 AGPL 许可证

# 硬核观察 #442 法院要求 Signal 提供私人用户数据，但它根本没有

### 法院要求 Signal 提供私人用户数据，但它根本没有

端对端加密消息应用 Signal 通过其官方博客 [公布](https://signal.org/bigbrother/cd-california-grand-jury/) 了它收到的一张法庭传票，传票要求它提供各种用户数据。然而Signal 根本没有数据可以提供。这家公司指出，“Signal 无法访问你的信息、你的聊天列表、你的群组、你的联系人、你的贴纸，你的个人资料名称或头像。” Signal 能提供给法庭的唯一东西就是有关账号创建和最后一次访问该服务的 Unix 时间戳。

>
> 老王点评：这简直就是给 Signal 打广告啊。
>
>
>

### Linux 5.15 内核发布，NTFS3 驱动上线

Linux 5.15 [正式释出](https://lkml.org/lkml/2021/10/31/203)，该版本的提交数是 5.x 系列最少的。主要新变化包括：Paragon 开发的 NTFS3 内核驱动终于进入了主线；新内核模块 KSMBD 实现了服务器端 SMB3 协议；在 DRAM 满的情况下内存页的内容转移到持久性内存而不是直接丢弃；等等。

>
> 老王点评：虽然不知道有多少人会在 Linux 下使用 NTFS 卷，但是看到这个商业驱动终于变成了开源软件的一部分，还是很好的。
>
>
>

### 开源软件给特朗普的社交网站 30 天时间遵守 AGPL 许可证

自由软件社交网络项目 Mastodon 向美国前总统特朗普的公司发去 [正式通知](https://blog.joinmastodon.org/2021/10/trumps-new-social-media-platform-found-using-mastodon-code/)，要求其基于 Mastodon 开发的社交网络 TRUTH Social 遵守 AGPL 许可证公开修改的源代码。特朗普旗下的公司上周 [宣布](https://www.solidot.org/story?sid=69332) 了新的社交网络 TRUTH Social，预计 11 月开放测试。然而 TRUTH 很快被发现是基于 Mastodon，按照 AGPL 许可证要求它需要公开源代码。

>
> 老王点评：这老头可以说，没有人比我懂开源软件和许可证。
>
>
>


VS Code 还是 Atom？你应该选择哪个

# VS Code 还是 Atom？你应该选择哪个

如今，找到一个 [好的开源代码编辑器](https://itsfoss.com/best-modern-open-source-code-editors-for-linux/) 并不难，随便选择一个就可以了。

微软的 [VS Code](https://code.visualstudio.com/) 和 GitHub 的 [Atom](https://atom.io/) 是两个最流行的、功能丰富的、类似于 IDE 的代码编辑器，都拥有庞大的用户群和粉丝。

VS Code 和 Atom 现在都属于微软，因为 Atom 的原开发者 GitHub 现在属于微软。这两个都有一个有吸引力的、现代的 UI，有一个漂亮的原生黑暗主题。两个编辑器都使用 [Electron](https://www.electronjs.org/) 作为用户界面。

相似的地方很多，这就是为什么你很容易在它们中间选择时感到迷惑。

如果你不能下定决心，想在 VS Code 和 Atom 之间进行一番比较和选择，这篇文章应该可以帮助你。

### VS Code

[VS Code](https://code.visualstudio.com/) 是开源的现代编辑器之一。它的用户群爆炸性地增长，因为它具有类似 IDE 的功能，但仍然保持相对较轻的资源占用。

VS Code 是由微软制作的，可用于 Linux、macOS 和 Windows。微软于 2015 年 11 月 18 日在 [GitHub](https://github.com/microsoft/vscode) 上根据 MIT 许可发布了 VS Code 的 *大部分* 源代码。

VS Code 的开发者对 Electron 进行了一些奇妙的优化，使其尽可能的轻量级和高效。由于 Electron 应用程序可以在大多数操作系统上运行，Linux、macOS 和 Windows 的用户都可以从这些优化中受益。

[在 Linux 上安装 VS Code](https://itsfoss.com/install-visual-studio-code-ubuntu/) 也相当简单。事实上，它在许多发行版的软件中心都有。

#### 为什么你应该选择 VS Code？

* 那些从一开始就想获得接近 IDE 的功能，而又不想摆弄他们的代码编辑器的人，[通常] 会选择 VS Code 。
* 即使是基于 Electron，VS Code 与其他 Electron 应用（如 GitHub 的 Atom）相比，开销也非常小。
* 更多开箱即用的功能，如微软的 IntelliSense 自动补完、Git 集成、Markdown 支持等等。
* 插件可以只用来增加功能、主题和支持新的语言；而这种插件约束确保编辑器的核心在增加新插件后仍保持熟悉。

[由微软分发的](https://code.visualstudio.com/Download) 二进制版本仍然是专有的免费软件。[VSCodium](https://vscodium.com/) 建立在 VS Code 的公开源代码之上。然而，关于 VSCodium 的讨论超出了本文的范围，如果你想获得 VS Code 提供的功能，而又没有任何专有元素的话，可以考虑将其作为 VS Code 的一个可行的替代品。

Atom
----

[GitHub 的 Atom](https://atom.io/) 是另一个自由开源的代码编辑器，可用于 Linux、macOS 和 Windows。Atom 是一个使用 JavaScript 通过 Electron 制作的桌面应用程序，用于轻松开发软件包。

Atom 的源代码是根据 MIT 许可发布 [在 GitHub 上](https://github.com/atom/atom) 的。由于 Atom 是 GitHub 的产品，因此它嵌入了 Git Control。

Atom 被称为“<ruby> 可魔改的 <rt>  hackable </rt></ruby> 21 世纪文本编辑器”，因为它可以使用 HTML、CSS 和 JS 完全定制。

像 VS Code 一样，你可以轻松地在其他平台和 [Linux 上安装 Atom](https://itsfoss.com/install-atom-ubuntu/) 。

#### 选择 Atom 的理由

* Atom 是那些想要一个基础的编辑器，并希望在其上进行开发的人的首选，因为 Atom 的可魔改性质。
* 内置了 Git 和完整的 GitHub 集成；考虑到它是由 GitHub 开发的，这并不令人惊讶。
* 从应用程序中非常容易搜索、安装和升级 [Atom 的插件](https://itsfoss.com/install-packages-in-atom/)。
* 可用的 Atom 插件是非常可扩展的，甚至可以完全改变编辑器的功能，并最终创造出几乎一个新的编辑器；它确实是“可魔改”的。
* Atom 的二进制版本和它的源代码是完全开源的（不像 VS Code 的二进制版本包含专有部分+遥测）。
* 你可以 [把 Atom 从一个代码编辑器变成 IDE](https://ide.atom.io/)，有更智能的上下文自动完成、代码导航功能、文档格式化等。

### 总结

Atom 和 VS Code 都是建立在 Electron 之上的。但是微软在 VS Code 上做了更多的优化，使其尽可能的轻量化。

在这一点上，VS Code 就像 Ubuntu，几乎所有的东西都开箱即用。而 Atom 就像 Arch，精简，而极易魔改（可扩展）。

Atom 和 VS Code 在技术上都隶属于微软，最终它们会殊途同归。因此，最好是使用你的社区（网页开发/软件开发）所倾向的编辑器，并铺平前进的道路。也许你最终会选择 Vim！

---

via: <https://itsfoss.com/visual-studio-code-vs-atom/>

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


硬核观察 #443 研究人员在源代码中隐藏人眼看不见的漏洞

Summary: 更多：• 美国航空机构与电信机构因 5G 发生争执 • 蓝牙标签被用来跟踪被盗物品

# 硬核观察 #443 研究人员在源代码中隐藏人眼看不见的漏洞

### 研究人员在源代码中隐藏人眼看不见的漏洞

剑桥大学的研究人员发表论文，[介绍了](https://www.lightbluetouchpaper.org/2021/11/01/trojan-source-invisible-vulnerabilities/) 在源代码中隐藏人眼看不见的漏洞的攻击方法。这种被称为 [Trojan-Source](https://trojansource.codes/trojan-source.pdf) 的攻击方法利用了 Unicode 中的特殊字符，通过方向覆盖、同形异义等方法创造出对编译器和人类视觉上存在差异的源代码。人眼看不出漏洞，但对编译器来说逻辑编码顺序和显示的顺序是不同的。这种攻击方法对大多数主流编程语言都有效，研究人员已经将漏洞报告给了相关项目。

>
> 老王点评：“眼见并不为实”，这个锅一方面是 Unicode 无克制的增加各种奇怪字符和控制字符导致的，另外一方面也是传统上面对 ASCII 字符的编程语言支持 Unicode 时没有预料到这种恶意利用。
>
>
>

### 美国航空机构与电信机构因 5G 发生争执

美国联邦航空管理局正准备向飞行员和航空公司发出警告，指出一项新的 5G 无线服务可能会干扰飞机驾驶舱安全系统、自动化系统，该服务将于 12 月初上线。美国联邦通信委员会则对安全问题进行了反驳，称在审查了对航空安全的潜在影响后，于 2020 年初制定了频谱使用规则，现有证据不支持 5G 网络会干扰航空安全的结论。双方争论的核心问题是无线电频谱在 3.7 到4.2 GHz 之间的波段。该波段非常适合 5G 网络传输，并且已经服务于一些国家的手机网络中。而航空设备则工作在 4.2 至 4.4 GHz 的附近频段，因此，美国联邦航空管理局觉得增加了干扰的可能性。

>
> 老王点评：说到底，还是频谱之争。
>
>
>

### 蓝牙标签被用来跟踪被盗物品

今年 4 月，苹果公司发布了 29 美元的 AirTag，为更广泛的受众带来了更有效的蓝牙跟踪技术。虽然苹果公司从没有说过 AirTag 可被用于 [追回被盗财产](https://www.msn.com/en-us/news/technology/i-found-my-stolen-honda-civic-using-a-bluetooth-tracker-it-s-the-latest-controversial-weapon-against-theft/ar-AAQ0DQw)，但实际上该公司建立了一个非常适合此类用例的网络。每一款兼容的 iPhone、iPad 和 Mac 都被默默地用作定位设备，AirTag 使用蓝牙向最近的 Apple 设备发送带有其加密位置的 ping，这些设备将信息传递到苹果的 Find My 网络。兼容 Apple 设备有近 10 亿台，使得 Find My 非常有效，尤其是在城市中。

>
> 老王点评：从技术上来说，是一个非常有用的进步，但是如何避免被滥用是个问题。
>
>
>


Ferdi：Franz 和 Rambox 的自由开源替代品

# Ferdi：Franz 和 Rambox 的自由开源替代品

>
> Ferdi 是一个很有前途的开源应用，是 Franz 和 Rambox 的替代品，免费提供了更多功能。让我们来探索一下它的更多信息。
>
>
>

有一个可以帮助你管理多个服务的应用会方便，这样你就不用什么事情都要打开一个浏览器去做了，虽然从技术上讲，你可以这样，但这肯定不是最有条理的做事方式。

因此，像 [Rambox](https://itsfoss.com/rambox/) 和 [Franz](https://itsfoss.com/franz-messaging-app/) 这样的跨平台解决方案是相当流行的，它可以登录到几个服务，并一目了然地访问所有的服务。

尽管它们都可用于 Linux（而且我们已经单独介绍过它们），但它们免费提供的功能有限。

相比之下，Ferdi 是 Franz 的一个复刻，旨在提供更好的体验，同时免费提供了许多高级功能。

### Ferdi: 一处管理多个应用

Ferdi 是一个自由开源应用，让你在一个地方添加多个应用，包括各种消息服务。

它还可以让你定制应用的各个方面和它的行为。如果你喜欢像 Rambox 和 Franz 这样的应用，你更应该看看 Ferdi。

### Ferdi 的特点

你可以发现它有大量的功能，而不需要支付额外费用。在这里，我将重点提到一些关键的功能：

* 跨平台支持（Linux、Windows 和 macOS）。
* 包含丰富的信息服务（Slack、WhatsApp、Element 等）。
* 支持用 Franz 账户登录
* 能够对信息进行密码保护
* 可以选择使用你的自定义服务器
* 快速访问待办事项列表，可选择使用 Franz Todo、Todoist、Microsoft To Do、[Any.do](http://Any.do) 等
* 通过在不使用时卸载应用（休眠）来调整性能
* 私密通知，以隐藏你的信息
* 支持“请勿打扰”模式
* 可为每个应用单独切换黑暗模式
* 云同步
* 对账户数量没有限制
* 能够设置一个代理，并通过它进行连接
* 可以添加多个工作空间

### 关于使用 Ferdi 的想法

就像 Rambox 和 Franz 一样，Ferdi 不可避免的会消耗大量资源。所以，你需要知道你是否有足够的内存来让几个应用在 Ferdi 中活动。

在不使用时，能够卸载应用是件好事。因此，如果你的资源不足，你可能想利用休眠选项。

Ferdi 还提供一些高级选项，如 GPU 加速、通用黑暗模式、隐私切换、外观定制等。你甚至可以添加没有列出的自定义服务。

总的来说，在 Ferdi 中你会得到许多功能和选择，你可以用这些选项组合有效地将多个应用有条理地组织起来。

### 在 Linux 中安装 Ferdi

Ferdi 提供了多个软件包，便于在 Linux 上安装。你可以找到一个适用于 Ubuntu/Fedora 的 DEB/RPM 包，以及一个适用于所有其他 Linux 发行版的 [AppImage 文件](https://itsfoss.com/appimage-interview/)。

他们还提供了一个 snap 包，并且也可以通过 [AUR](https://itsfoss.com/aur-arch-linux/) 安装。所以，你有很多选择来让它安装在你的 Linux 电脑上。

你可以探索他们的 [GitHub 页面](https://github.com/getferdi/ferdi) 并前往其发布页下载，或者访问其官方网站。

* [下载 Ferdi](https://getferdi.com/)

你试过 Ferdi 了吗？它是否达到了取代 Franz 或 Rambox 的目的？它是否更好？请在下面的评论中分享你的经验。

---

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

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


如何更改 Ubuntu 的终端的颜色

Summary: 如果你只是想完成一些工作，默认的终端已经看起来足够好了。

如果你只是想完成一些工作，默认的终端已经看起来足够好了。

# 如何更改 Ubuntu 的终端的颜色

如果你只是想完成一些工作，默认的终端已经看起来足够好了。

但是，如果你想要一个独一无二的的终端体验或者符合你自身品位的一些东西，你也可以改变你的 Ubuntu 的终端的颜色。

在这篇速成教程中，我将专注于调整 Ubuntu 中的颜色方案。由于 Ubuntu 使用 GNOME 的终端，因此这些步骤可能也对大多数的使用 GNOME 桌面环境的其它的发行版有效。

### 更改你的 Ubuntu 的终端的颜色

这些步骤类似于 [如何更改终端的字体和大小](https://itsfoss.com/change-terminal-font-ubuntu/)。你必须找到自定义颜色的选项，就是这样的简单。

让我们快速指出你需要找到什么：

**步骤 1**：[在 Ubuntu 中打开终端窗口](https://itsfoss.com/open-terminal-ubuntu/)，方法是按 `Ctrl+Alt+T` 组合键。

**步骤 2**：打开终端<ruby> 首选项 <rt>  Preferences </rt></ruby>。你可以单击菜单按钮或者右击终端屏幕的任意位置来访问首选项。

针对你的自定义选项，创建一个独立的配置文件将会是一个好主意，因为这样做不会更改默认的设置。

**步骤 3**：现在，你可以找到一些调整字体大小和样式的选项。但是，在这里，你需要前往 “<ruby> 颜色 <rt>  Colors </rt></ruby>” 选项卡，如下面的屏幕截图所示。

**步骤 4**：在默认情况下，你将会注意到：它使用来自系统主题的颜色。如果你想融入你自己的系统主题，这应该是首选的方式。

但是，如果你想要自定义，你需要先取消系统的颜色的选项，然后再开始选择颜色。

如你在上面的屏幕截图中能够注意到的那样，你可以选择使用一些内置的颜色方案，也可以 **通过更改文本和背景的默认颜色选项** 来完成自定义颜色方案。

如果你选择一种“自定义”内置方案，那么你可以自定义从文本到光标的各个层面的终端的屏幕颜色。

再强调一次！如果你想快速地访问终端的不同的自定义版本，请创建一个单独的配置，否则，每次当你想要一种独特的颜色组合方案时，你都将需要重新自定义。

### 更改终端的颜色的其它的方法

这里有其它的几种更改 Ubuntu 的终端的颜色的方法：

#### 更改主题

大多数的 Ubuntu 主题都有它们自己的终端的颜色的实现，并且其中的一些实现看起来非常漂亮。这里是如何针对 Ant 和 Orchis 主题进行更改终端的颜色方案：

你可以选择一种黑暗主题，接下来你的主题将会变成黑色。不需要担心选择颜色方案的问题。

#### 依据你的壁纸选择终端颜色

如果你不想手动自定义你的终端的颜色，你可以使用 Pywal 。使用这个方便的 Python 工具，你的计算机能够随着你的每一张壁纸来 [更改你的终端的颜色方案](https://itsfoss.com/pywal/) 。

它将自动地适配你所使用的壁纸。因此，你不需要费心地自定义终端。

### 针对你的终端的自定义选项

如果你是一个更高级的玩家，你可能会热衷于更多的自定义终端的外貌的选项。你可以通读我们关于 [调整终端的外貌的不同的方法](https://itsfoss.com/customize-linux-terminal/) 的资源来探索更多的信息。

你更喜欢自定义终端吗？在下面的评论区，让我们知道你的经历！

---

via: <https://itsfoss.com/change-terminal-color-ubuntu/>

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


Summary: 更多：• 科学家开发出可存储 138 亿年的 5D 光盘 • 麦当劳开源了薯条字体

# 硬核观察 #444 自 JDK 17 开始 Oracle JDK 又可以免费商用了

### 自 JDK 17 开始 Oracle JDK 又可以免费商用了

Oracle 最新发布的 [NFTC 许可](https://www.oracle.com/downloads/licenses/no-fee-license.html) 中撤回了 2018 年制定的要对 Oracle JDK 收取商用费用的决定，并且也将继续提供 Oracle OpenJDK 发行版。最新 NFTC 适用于最近发布的 Oracle JDK 17 和后续版本。Oracle [对此解释称](https://blogs.oracle.com/java/post/free-java-license)，“在 GPL 下提供的 Oracle OpenJDK 构建版本是非常受欢迎的，但来自开发者、学术界和企业的反馈是，他们也希望在一个明确的自由条款许可下获得值得信赖、坚如磐石的 Oracle JDK。”并明确表示，新版 NFTC “包括商业和生产用途”，而且“只要不收费，允许再分发”。但调查表明，甲骨文的 JDK 发行版已不再是最受欢迎的 Java 发行版。开发人员们更喜欢 AdoptOpenJDK、亚马逊、微软等其他供应商的 OpenJDK 发行版。

>
> 老王点评：早知今日何必当初。但是即便如此，我也不看好他们对开源方面的态度。
>
>
>

### 科学家开发出可存储 138 亿年的 5D 光盘

南安普顿大学的研究人员“开发了一种快速和节能的激光写入方法，用于在硅玻璃中生产高密度的纳米结构，这些微小的结构可用于长期的 [五维光学数据存储](https://www.extremetech.com/extreme/328700-5d-optical-disc-could-store-500tb-for-billions-of-years)，其密度是蓝光光盘存储技术的 10,000 倍以上。”数据存储在玻璃光盘中三层纳米级的点上，这些点的大小、方向和位置（在三个维度上）提供了用于编码数据的五个“维度”。研究人员说，5D 光盘可以在 138 亿年后仍然可读，并且在较短的时间内被加热到 1000 摄氏度后也可以继续保持数据。写入数据速率大约为每秒 230 KB，一张 5D 光盘可存储 500 TB 数据。这项工作仍处于早期阶段。

>
> 老王点评：有趣的技术，就是不知道这些光盘怎么保存 138 亿年。
>
>
>

### 麦当劳开源了薯条字体

上周，麦当劳授权薯条体在 [GitHub](https://github.com/mcdtaiwan/McDonalds_Fries_Font) 上开源。该字体带有薯条和番茄酱设计风格，可以免费下载，只要标注 “#麦当劳薯条体”字样就能自由使用，包括商业用途。

>
> 老王点评：感觉这字体适合在万圣节、密室逃脱中使用。
>
>
>


Fedora 35 登场：带来了 GNOME 41 和一个新的 KDE 变体

# Fedora 35 登场：带来了 GNOME 41 和一个新的 KDE 变体

>
> Fedora 35 发布了，带来了 GNOME 41，并有一个专注于可靠性的基于 KDE 的新变体。
>
>
>

在测试版发布几周后，Fedora 35 稳定版终于来了！这个版本带来了一些关键性的改进，我们将在这里介绍它们。

这些改进中最值得注意的是加入了最近发布的 GNOME 41，同时还有一些小的升级，如 Linux 内核 5.14 和完成向 PipeWire 的过渡。

现在，让我们来简要看一下这些变化，以及 Fedora 35 引入的一些改进。

### Fedora 35 的关键升级

下面是 Fedora 35 中一些比较有影响的升级和新增功能。

### 桌面环境

Fedora 因其对最新桌面环境的支持而闻名，而这一点在这个版本中似乎没有改变。

#### GNOME 41

Fedora 35 工作站现在搭载了目前最受欢迎的 GNOME 41。这意味着它有了新的“<ruby> 连接 <rt>  Connections </rt></ruby>”应用、显著改进的软件中心，以及一些很棒的多任务控制。

它还对笔记本用户有所帮助，因为它改进了触摸板手势、电源配置文件和移动数据设置。

如果你想看看还有什么新东西，你可以看看我们的 [GNOME 41 发布报道](https://news.itsfoss.com/gnome-41-release/)。

#### KDE Plasma 5.22

不过，这个版本并不包括最近发布的 Plasma 5.23，而是选择了 [Plasma 5.22](https://news.itsfoss.com/kde-plasma-5-22-release/)。不过，这是可以理解的，因为 Fedora 团队只有一周的时间。

虽然是一个相当小的升级，Plasma 5.22 确实带来了自适应透明功能，以及改进的 Krunner 和系统设置。如果你有兴趣，你可以看看 [KDE Plasma 5.22](https://news.itsfoss.com/kde-plasma-5-22-release/) 的更多信息。

### 新的 KDE 版本：Fedora Kinoite

Fedora Kinoite 采用 KDE Plasma 桌面，并且它是基于 rpm-ostree 技术的。你可以得到开箱即用的 Flatpak 应用程序支持，以轻松安装软件。

根据其官方的描述：

>
> “Kinoite 提供原子更新和一个不可变操作系统，以提高可靠性。”
>
>
>

因此，它可能是一个值得尝试的选择，可以作为你的 Linux 桌面操作系统用于日常工作，而不存在因更新而破坏用户体验的风险。

截至目前，它支持 X86\_64 和 AArch64 架构。你可以去它的 [项目网站](https://kinoite.fedoraproject.org/) 了解一下。

### Linux 5.14 内核

早在八月份，我就介绍了 [新的 Linux 5.14](https://news.itsfoss.com/kernel-5-14-release/) 内核，它现在已经出现在了 Fedora 35 中。这对那些基于 ARM 的系统来说是个好消息，因为 Linux 5.14 带来了许多针对 ARM 的改进。

如果你没有使用 ARM 计算机，你仍然会从 Linux 5.14 的一些其他改进中受益。这些改进主要与 GPU 有关，以及对 USB 4 的改进支持。

#### DNS over TLS 支持

随着隐私变得越来越重要，像 DNS over TLS（DoT）这样的技术正在成为我们隐私的一个关键部分。现在，Fedora 35 带来了对这项技术的支持，它有助于加密你进出 DNS 服务器的互联网流量。

这意味着你的 ISP 不能监视你的浏览习惯，我相信每个人都会喜欢这一点。

### 其他改进

除了前面提到的那些，Fedora 35 还带来了对以下新功能的支持。

* Firewalld 软件包更新
* GNU 工具链更新
* 支持第三方软件库中的 Flathub 应用程序
* Fedora Cloud 默认采用 btrfs 文件系统
* 过渡到 Pipewire

如果你想看完整的变化列表，可以在 [官方更新列表](https://fedoraproject.org/wiki/Releases/35/ChangeSet) 或 [官方公告](https://fedoramagazine.org/announcing-fedora-35/) 中找到。

### 总结

虽然这个版本没有像 Fedora 34 那样带来很多突破性的改进，但我认为用户会对它更加满意。在 GNOME 41 和 Linux 5.14 之间，用户应该会发现他们的系统有了不错的改进。

如果你想亲自尝试一下 Fedora 35，请随时从下面的链接中下载它。

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

你对 Fedora 35 中引入的变化有什么看法？请在下面的评论中告诉我！

---

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

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


一个深色模式的简单 CSS 技巧

Summary: 让你的网站根据用户选择的主题进行调整的能力是一个很棒的辅助功能。

让你的网站根据用户选择的主题进行调整的能力是一个很棒的辅助功能。

# 一个深色模式的简单 CSS 技巧

>
> 让你的网站根据用户选择的主题进行调整的能力是一个很棒的辅助功能。
>
>
>

<img src="content_image/album_202111_04_101203a19wb2ptlcmwmmnl.jpg" alt="" title="Text editor on a browser, in blue">

你可能已经熟悉<ruby> 媒体查询 <rt>  media query </rt></ruby>了。它们被广泛地用于使网站具有响应性。`width` 和 `height` 属性包含视区的尺寸。然后，你可以使用 CSS 在不同的尺寸下呈现不同的布局。

[prefers-color-scheme 媒体查询](https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme) 的工作方式与此相同。用户可以将他们的操作系统配置为使用浅色或深色主题。`prefers-color-scheme` 包含这个值。该值是 `light` 或 `dark` ，尽管 W3C 规范指出它可能支持未来的值，如 `sepia`。我为这两种模式指定不同的 CSS 变量值，让用户的操作系统来决定。

### prefers-color-scheme 媒体查询

`prefers-color-scheme` 媒体查询的两种变化是:

```
/* Light mode */
@media (prefers-color-scheme: light) {
   :root {
       --body-bg: #FFFFFF;
       --body-color: #000000;
   }
}

/* Dark mode */
@media (prefers-color-scheme: dark) {
   :root {
       --body-bg: #000000;
       --body-color: #FFFFFF;
   }
}

```

在上面的 CSS 中，`--body-bg` 和 `--body-color` 是 [CSS 变量](https://www.w3.org/TR/css-variables-1/)。正如你所看到的，它们对两种模式都包含不同的值。在浅色主题中，我设置了一个白色背景和黑色文本。在深色主题中，我设置了黑色背景和白色文本。

因为[规范](https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme)说 W3C 可能会引入未来的值，所以把这个 CSS 转换为默认值是有意义的。

```
/* Light mode */
:root {
   --body-bg: #FFFFFF;
   --body-color: #000000;
}

/* Dark mode */
@media (prefers-color-scheme: dark) {
   :root {
       --body-bg: #000000;
       --body-color: #FFFFFF;
   }
}

```

在上面的代码中，我默认定义了一个浅色主题，如果媒体查询是 `dark`，则将其转换为深色主题。这样一来，以后任何添加到媒体查询的值都会默认设置为浅色主题。

### 使用 CSS 变量

现在我为不同的主题设置了不同的值，我需要实际使用它们来设计页面。

```
body {
   background: var(--body-bg);
   color: var(--body-color);
}

```

[var() 语法](https://www.w3.org/TR/css-variables-1/) 是 CSS 使用变量的方式。在上面的代码中，我是说把 `background` 设置为 `--body-bg` 的值，把 `color` 设置为 `--body-color` 的值。注意，这些变量的值来自媒体查询。这意味着背景和前景的颜色是根据操作系统的设置而改变的！

这就是媒体查询的真正能力。提供一个从操作系统到网页的一致的用户体验。

如果你进入 [findmymastodon.com](https://findmymastodon.com/)，并切换你的操作系统的主题，你会看到从一个主题到另一个主题的过渡。

[CSS 工作组](https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme) 网站也使用同样的媒体查询。改变你的操作系统主题，网站就会切换主题来进行调整。

### 结论

请注意，使用 `prefers-color-scheme` 与使用普通的编程语言没有什么不同。我定义了一些变量，这些变量的值根据一些逻辑而改变。而这些变量然后被用于进一步的操作。

让你的网站根据用户选择的主题进行调整的能力是一个很棒的辅助功能。而且，为了用户的利益，它进一步模糊了桌面和网络之间的界限。最新的浏览器版本 [支持 prefers-color-scheme](https://caniuse.com/prefers-color-scheme)，所以你今天就可以开始实验了。

编码愉快。

这篇文章最初发表在 [作者的网站](https://ayushsharma.in/2021/10/creating-light-and-dark-themes-for-websites-correctly-using-prefers-color-scheme) 上，经许可后重新发表。

---

via: <https://opensource.com/article/21/10/dark-themes-websites>

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


硬核观察 #445 在元宇宙中做 PPT 和 Excel

Summary: 更多：• 用超级计算机应对人类抗生素耐药性 • 小偷机器人正在窃取你的 2FA 代码

# 硬核观察 #445 在元宇宙中做 PPT 和 Excel

### 在元宇宙中做 PPT 和 Excel

目前最热的流行词某过于“元宇宙”了。除了连名字都改成 “Meta” 的 Facebook 之外，微软也在积极 [拥抱元宇宙](https://www.bloomberg.com/news/articles/2021-11-02/microsoft-s-own-metaverse-is-coming-and-it-will-have-powerpoint)，它正在调整其标志性的软件产品，以创建一个更加企业化的元宇宙版本。第一个产品是具有数字化身功能的聊天和会议程序 Teams，该版本正在进行测试，将于 2022 年上半年推出。用户也能在这个空间中使用 PowerPoint 和 Excel。当然，除了这些企业级需求外，微软也会将其游戏产品搬到元宇宙里面。

>
> 老王点评：哪怕是在虚拟世界，你也得工作。
>
>
>

### 用超级计算机应对人类抗生素耐药性

像红霉素这样的抗生素曾经起到了巨大作用，但是随着抗生素的滥用，很多细菌都对抗生素产生了耐药性。据估计，每年约有 70 万人死于抗生素耐药细菌，而这一数字预计将上升至数百万。朴茨茅斯大学研究团队的 [一项研究](https://www.news-medical.net/news/20211103/Scientists-tackle-antibiotic-resistance-by-using-supercomputers.aspx) 通过重新设计现有抗生素来克服细菌耐药性机制，利用超级计算机来对抗细菌的进化能力，最终解决耐药性问题。该团队已经证明，他们的最佳候选药物（尚未进行临床试验）对测试菌株的活性是红霉素和克拉霉素的 56 倍。其候选药物对世卫清单上排名前三的细菌依然有效，而这三种细菌已经对红霉素和克拉霉素产生耐药性。

>
> 老王点评：有人曾经问超级计算机有什么用？这就是超级计算机的用处之一。
>
>
>

### 小偷机器人正在窃取你的 2FA 代码

诈骗者使用了一种机器人，[通过电话](https://www.vice.com/en/article/y3vz5k/booming-underground-market-bots-2fa-otp-paypal-amazon-bank-apple-venmo) 冒充苹果支付、贝宝、亚马逊、Coinbase 和各种银行的来电，欺骗受害者输入其 2FA 代码。电话中说，“有人试图使用你的账户消费。需要验证你的身份以阻止转账”。并说：“为了保护你的账户，请输入我们现在发给你的移动设备的代码。”在输入一串六位数字后，该声音说："谢谢你，你的账户已经得到保护……。你现在可以挂断了。”以前往往需要黑客直接与受害者对话，在电话中假装是银行或相关支付机构，而这些机器人大大降低了绕过多因素认证的门槛。

>
> 老王点评：真是科技助长坏人。无论如何，你的多因素认证代码不要给任何人，除非是你主动进行的操作。
>
>
>


构建基础包的基础知识

# 构建基础包的基础知识

>
> 这是一篇快速提示，旨在给 Ubuntu 的新用户解释构建基础包是什么、它的用处和安装步骤。
>
>
>

在 Ubuntu 中安装构建基础包（`build-essential`），只需要在终端中简单输入这个命令：

```
sudo apt update && sudo apt install build-essential

```

但围绕它有几个问题，你可能想知道答案：

* 什么是构建基础包？
* 它包含什么内容？
* 为什么要安装它（如果安装的话）？
* 如何安装它？
* 如何删除它？

### 什么是 Ubuntu 中的构建基础包？

构建基础包（`build-essential`）实际上是属于 Debian 的。在它里面其实并不是一个软件。它包含了创建一个 Debian 包（`.deb`）所需的软件包列表。这些软件包包括 `libc`、`gcc`、`g++`、`make`、`dpkg-dev` 等。构建基础包包含这些所需的软件包作为依赖，所以当你安装它时，你只需一个命令就能安装所有这些软件包。

请不要认为构建基础包是一个可以在一个命令中神奇地安装从 Ruby 到 Go 的所有开发工具的超级软件包。它包含一些开发工具，但不是全部。

#### 你为什么要安装构建基础包？

它用来从应用的源代码创建 DEB 包。一个普通用户不会每天都去创建 DEB 包，对吗？

然而，有些用户可能会使用他们的 Ubuntu Linux 系统进行软件开发。如果你想 [在 Ubuntu 中运行 c 程序](https://itsfoss.com/run-c-program-linux/)，你需要 gcc 编译器。如果你想 [在 Ubuntu 中运行 C++ 程序](https://itsfoss.com/c-plus-plus-ubuntu/)，你需要 g++ 编译器。如果你要使用一个不寻常的、只能从源代码中获得的软件，你的系统会抛出 “[make 命令未找到的错误](https://itsfoss.com/make-command-not-found-ubuntu/)”，因为你需要先安装 `make` 工具。

当然，所有这些都可以单独安装。然而，利用构建基础包的优势，一次性安装所有这些开发工具要容易得多。这就是你得到的好处。

这就像 [ubuntu-restricted-extras 包允许你一次安装几个媒体编解码器](https://itsfoss.com/install-media-codecs-ubuntu/)。

现在你知道了这个包的好处，让我们看看如何安装它。

### 在 Ubuntu Linux 中安装构建基础包

在 Ubuntu 中按 `Ctrl+Alt+T` 快捷键打开终端，输入以下命令：

```
sudo apt update

```

使用 `sudo` 命令，你会被要求输入你的账户密码。当你输入时，屏幕上没有任何显示。这没问题。这在大多数 Linux 系统中都是这样的。盲打输入你的密码，然后按回车键。

`apt update` 命令刷新了本地软件包的缓存。这对于一个新安装的 Ubuntu 来说是必不可少的。

之后，运行下面的命令来安装构建基础包：

```
sudo apt install build-essential

```

它应该显示所有要安装的软件包。当要求确认时按 `Y`：

等待安装完成。就好了。

### 从 Ubuntu 中删除构建基础包

保留这些开发工具不会损害你的系统。但如果你的磁盘空间不足，你可以考虑删除它。

在 Ubuntu 中，由于有 `apt remove` 命令，删除软件很容易：

```
sudo apt remove build-essential

```

运行 `autoremove` 命令来删除剩余的依赖包也是一个好主意：

```
sudo apt autoremove

```

你现在知道了所有关于构建基础包的基础（双关语）。请享受它吧~

---

via: <https://itsfoss.com/build-essential-ubuntu/>

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


如何在 Ubuntu Linux 中正确地设置 JAVA_HOME 变量

Summary: 在这篇初学者教程中，我将向你展示在 Ubuntu 上正确地设置 JAVA_HOME 变量的步骤。

# 如何在 Ubuntu Linux 中正确地设置 JAVA_HOME 变量

如果你 [在 Ubuntu 上运行 Java 程序](https://itsfoss.com/run-java-program-ubuntu/) ，使用 Eclipse、[Maven](https://maven.apache.org/) 或 Netbeans 等等，你将需要将 `JAVA_HOME` 环境变量设置为正确的路径。否则，你的系统将会向你控诉 “java\_home 环境变量没有设置”。

在这篇初学者教程中，我将向你展示在 Ubuntu 上正确地设置 `JAVA_HOME` 变量的步骤。这些步骤应该也适用于大多数的其它的 Linux 发行版。

设置过程包含这些步骤：

* 确保已安装 Java 开发工具包（JDK）。
* 查找 JDK 可执行文件的正确的位置。
* 设置 `JAVA_HOME` 环境变量，并永久更改它。

### 步骤 1: 核查 JDK 是否已经安装

核查 Java 开发工具包（JDK）是否已经安装在你的 Linux 系统上的最简单的方法是运行这个命令：

```
javac --version

```

上面的命令将核查 Java 编译器的版本。如果已经安装了 Java 编译器，它将显示 Java 版本：

如果上面的命令显示像这样未找到 `javac` 命令的错误信息，你得先安装 JDK ：

如果在你的系统上并没有安装 Java 编译器，使用这条命令来安装 Java 开发工具包 （JDK）：

```
sudo apt install default-jdk

```

这将在你当前的 Ubuntu 版本中安装默认的 Java 版本。如果你需要一些其它版本的 Java 版本，那么你必须 [在 Ubuntu 中安装 Java 时](https://itsfoss.com/install-java-ubuntu/) 具体指出它的版本。

在你确保 Java 编译器存在于你的系统之中后，接下来就到了查找其位置的时候了。

### 步骤 2: 获取 JDK 可执行文件（Java 编译器）的位置

可执行文件通常位于 `/usr/lib/jvm` 目录之中。但我不会让你来玩一个猜谜游戏，让我们来找出 Java 可执行文件的路径。

[使用 which 命令](https://linuxhandbook.com/which-command/) 来获取 Java 编译器可执行文件的位置：

```
which javac

```

在这里的问题是，它给出的位置实际上是一个 [符号链接](https://linuxhandbook.com/symbolic-link-linux/) 。你将需要按照下图执行几次：

最简单的方法是直接使用下面这条命令跟随符号链接来以获取实际的可执行文件：

```
readlink -f `which java`

```

`readlink` 命令会跟随一个符号链接。我在 `which java` 的外侧使用 `readlink` 将会使用 `which java` 的输出来替换要检查的符号链接，这被称之为命令替换。因此，在这个实例中，上面的命令大体上相当于 `readlink -f /usr/bin/java` 。

在我的示例中，可执行文件的位置是 `/usr/lib/jvm/java-11-openjdk-amd64/bin/java` 。对你来说可能会不一样。在你的系统中，复制上述命令所获取的正确的路径。你知道，你可以 [在 Ubuntu 的终端中复制和粘贴](https://itsfoss.com/copy-paste-linux-terminal/) 。

### 步骤 3: 设置 JAVA\_HOME 变量

现在，你已经获取了位置，使用它来设置 `JAVA_HOME` 环境变量：

```
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/java

```

核查 `JAVA_HOME` 目录的值：

```
echo $JAVA_HOME

```

尝试在同一个终端中运行你的 Java 程序或工程，并查看它是否工作。

这尚未结束。你刚刚声明的 `JAVA_HOME` 环境变量是临时的。如果你关闭这个终端或开始一个新的会话，它将会再次变成空的。

为了“永久地”设置 `JAVA_HOME` 变量，你应该将其添加到你的家目录中的 `.bashrc` 文件中。

你可以 [在 Linux 终端中使用 Nano 编辑器来编辑文件](https://itsfoss.com/nano-editor-guide/)。 如果你不想使用它，并想采取一种简单的复制和粘贴的方法，使用下面的命令：

首先备份你的 `.bashrc` 文件（以防万一你把它弄坏了，你还可以将其再恢复回来）：

```
cp ~/.bashrc ~/.bashrc.bak

```

接下来，[使用 echo 命令来追加](https://linuxhandbook.com/echo-command/) 在这一节开头使用的 `export` 命令。**你应该适当地更改下面的命令，以便其正确地使用你的系统所显示的路径**。

```
echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/java" >> ~/.bashrc

```

验证它已经被正确地添加到文件的结尾处：

```
tail -3 ~/.bashrc

```

上面的 [tail 命令](https://linuxhandbook.com/tail-command/) 将显示所具体指定文件的最后 3 行。

这里是上面的三个命令的全部的输出：

现在，即使你退出会话或重新启动系统，`JAVA_HOME` 环境变量都仍将设置为你所具体指定的值。这就是你所想要的，对吧？

注意，如果你将来更改默认的 Java 版本，你将需要更改 `JAVA_HOME` 环境变量的值并将其指向正确的可执行文件的路径。

我希望这篇教程不仅会帮助你设置 `JAVA_HOME` 环境变量，也会教会你如何完成这项工作。

如果你仍然面临难题或者有一些疑问或建议，请在评论区告诉我。

---

via: <https://itsfoss.com/set-java-home-ubuntu/>

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


Summary: 更多：• 自托管的 GitLab 服务器被利用发动 DDoS 攻击 • 微软为 Excel 增加新的自定义数据类型支持

# 硬核观察 #446 CentOS Stream 结出了第一个果实：RHEL 9 Beta

### CentOS Stream 结出了第一个果实：RHEL 9 Beta

虽然许多 CentOS 用户对 CentOS 成为 RHEL 的上游感到不满，但 RHEL 9 表明新的 CentOS 模式已经实现了红帽公司对它的期望。[RHEL 9 发布了第一个测试版](https://www.zdnet.com/article/the-first-fruits-of-centos-stream-red-hat-enterprise-linux-9-beta/)，它基于 Linux 5.14 内核，支持四种架构：英特尔/AMD 64 位、ARM 64 位等等。红帽公司最近取消了注册 RHEL 测试版的要求。如果你有任何种类的红帽账户（包括免费的红帽开发者计划），你就可以无限制地获得红帽测试订阅。当然，以前的 CentOS 用户现在有 RHEL 克隆的 Rocky Linux 和 AlmaLinux，或者也可以转向 CloudLinux 来支持 CentOS 8。

>
> 老王点评：虽然 CentOS 落幕，CentOS Stream 成了 RHEL 的上游，这给了许多类 CentOS 发行版一个新机会，但是 CentOS Stream/RHEL 的这个新模式也许也能获得成功。
>
>
>

### 自托管的 GitLab 服务器被利用发动 DDoS 攻击

Google 安全工程师发现了 [这次 DDoS 攻击](https://therecord.media/gitlab-servers-are-being-exploited-in-ddos-attacks-in-excess-of-1-tbps/)，攻击流量一度超过 1 Tbps。该漏洞位于 ExifTool 库内，它被用于移除上传到 Web 服务器中的图像元数据。GitLab 已在今年 4 月将其修复，但不是所有自托管服务器打上了补丁。有大约 6 万 GitLab 自托管服务器联网，而其中一半的服务器没有打上该补丁。利用该漏洞的概念验证代码在今年 6 月公布，而攻击也是始于 6 月。

>
> 老王点评：漏洞披露机制虽然推动厂商会加速解决安全问题，但是也给存在潜在缺陷的产品带来了更大的攻击面。
>
>
>

### 微软为 Excel 增加新的自定义数据类型支持

Excel 在历史上一直是用来组织文本和数字的，但几年来，微软一直在努力提高 Excel 支持的数据类型。去年，它推出了动态数组和数组公式，并通过链接数据类型支持股票、地理和 Wolfram 等数据。为此，微软推出了几个新的 JavaScript API，允许开发者使用 [更多的数据类型](https://www.zdnet.com/article/microsoft-wants-to-take-excel-beyond-numbers-and-text/)。

>
> 老王点评：作为世界上使用最多的“编程语言”，Excel 能进一步支持各种丰富的数据类型，这应该是微软在无代码产品方面的重要动作。
>
>
>


多达 5 万美元，谷歌将奖励利用 Linux 内核提权的安全专家

# 多达 5 万美元，谷歌将奖励利用 Linux 内核提权的安全专家

>
> 成功利用内核漏洞以实现提权的安全研究人员将获得 31,337 美元至 50,337 美元的奖金。
>
>
>

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

谷歌的平台大量使用了 Linux，尤其是在安卓及其庞大的服务器方面。多年来，谷歌一直青睐开源项目和计划。

最近，这家科技巨头赞助了 100 万美元，用于资助 Linux 基金会开展的一个以安全为重点的开源项目，更多细节参见我们 [原来的报道](https://news.itsfoss.com/google-sos-sponsor/)。

而现在，谷歌将在未来三个月内将赏金奖励增加两倍，以奖励那些致力于寻找有助于实现提权（即，当攻击者利用一个错误/缺陷获得管理员权限）的内核漏洞的安全研究人员。

毫无疑问，总会有某种形式的错误和缺陷困扰着内核的安全和开发。幸运的是，来自各个组织和个人的数百名安全研究人员致力于改善其安全状态，这就是为什么这些漏洞不一定会在野外被利用。

谷歌在奖励安全研究人员方面有着良好的记录，但它在接下来的三个月里加大了力度，宣布了 \*\*31,377 美元的基本奖励，最高可达 50,377 美元。

### 计划细节和奖励

这些漏洞利用可以针对目前已修补的漏洞和未修补的新漏洞，以及采用新的技术。

**31,337 美元** 的基本奖励用于利用已公开了补丁的漏洞进行提权的技术。如果发现未修补的漏洞或新的利用技术，奖励可高达 **50,337 美元**。

此外，该计划还可以与 Android VRP 和“补丁奖励”计划一起使用。这意味着，如果该漏洞在安卓系统上发挥作用，除了这个计划之外，你还可以获得高达 25 万美元的奖励。

如果你希望了解更多关于安卓系统的信息，你可以在他们的 [官方门户网站](https://bughunters.google.com/about/rules/6171833274204160) 上了解。

增加的奖励将在未来三个月内开放，也就是说，直到 2022 年 1 月 31 日。

安全研究人员可以通过他们的 [官方博文](https://security.googleblog.com/2021/11/trick-treat-paying-leets-and-sweets-for.html) 来设置实验室环境，并在他们的 [GitHub 官方网页](https://google.github.io/kctf/vrp) 上阅读更多关于要求的内容。

### 总结

这项计划是谷歌的一项出色的举措。毫无疑问，它将吸引并惠及许多安全专家和研究人员。

不要忘记，Linux 内核的安全状况将最终受益。

---

via: <https://news.itsfoss.com/google-linux-kernel-bounty/>

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


如何动态生成 Jekyll 配置文件

# 如何动态生成 Jekyll 配置文件

>
> 使用 Python 或 Bash 将动态数据插入 Jekyll 静态网站中，并且避免创建一个 API 后端。
>
>
>

<img src="content_image/album_202111_06_172709dqcv65spvl363fav.jpg" alt="" title="Digital creative of a browser on the internet">

静态网站生成器 [Jekyll](https://opensource.com/article/21/9/build-website-jekyll) 使用 `_config.yml` 进行配置。这些配置都是 Jekyll 特有的。但你也可以在这些文件中 [用我们自己的内容定义变量](https://ayushsharma.in/2021/08/using-variables-in-jekyll-to-define-custom-content)，并在整个网站中使用它们。在本文中，我将重点介绍动态创建 Jekyll 配置文件的一些优势。

在我的本地笔记本电脑上，我使用以下命令来服务我的 Jekyll 网站进行测试：

```
bundle exec jekyll serve --incremental --config _config.yml

```

### 结合多个配置文件

在本地测试中，有时需要覆盖配置选项。我的网站的 [当前 \_config.yml](https://gitlab.com/ayush-sharma/ayushsharma-in/-/blob/2.0/_config.yml) 有以下设置：

```
# Jekyll Configuration

# Site Settings
url: "https://notes.ayushsharma.in"
website_url: "https://notes.ayushsharma.in/"
title: ayush sharma's notes ☕ + ? + ?
email: ayush@ayushsharma.in
images-path: /static/images/
videos-path: /static/videos/
js-path: /static/js/
baseurl: "" # the subpath of your site, e.g. /blog

```

由于本地的 `jekyll serve` URL 是 `http://localhost:4000`，上面定义的 URL 就不能用了。我可以创建一个 `_config.yml` 的副本 `_config-local.yml` 并替换所有的值。但还有一个更简单的选择。

Jekyll 允许[指定多个配置文件](https://jekyllrb.com/docs/configuration/options/#build-command-options)，后面的声明覆盖前面的声明。这意味着我可以用以下代码定义一个新的 `_config-local.yml`：

```
url:""

```

然后我可以把上述文件和我的主 `_config.yml` 结合起来，像这样：

```
bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml

```

通过合并这两个文件，这个 `jekyll serve` 的 `url` 的最终值将是空白。这就把我网站中定义的所有 URL 变成了相对的 URL，并使它们在我的本地笔记本电脑上工作。

### C结合动态配置文件

一个简单的例子，假设你想在你的网站上显示当前日期。它的 bash 命令是：

```
> date '+%A, %d %B %Y'
Saturday, 16 October 2021

```

我知道我也可以 [使用 Jekyll 的 \_config.yml 的自定义内容](https://ayushsharma.in/2021/08/using-variables-in-jekyll-to-define-custom-content)。我将上述日期输出到一个新的 Jekyll 配置文件中。

```
my_date=`date '+%A, %d %B %Y'`; echo 'my_date: "'$my_date'"' > _config-data.yml

```

现在 `_config-data.yml` 包含：

```
my_date: "Saturday, 16 October 2021"

```

我可以把我的新配置文件和其他文件结合起来，在我的网站上使用 `my_date` 变量。

```
bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml,_config-data.yml

```

在运行上述命令时，`{{ site.my_date }}` 输出其配置的值。

### 结论

上面的例子很简单，但可能性是无穷的。Bash、Python 和其他编程语言可以动态地生成 Jekyll 配置文件。然后我可以在 `build` 或 `serve` 过程中结合这些文件。

对于 [findmymastodon.com](https://findmymastodon.com/)，[我使用 Python 来获取 Mastodon 的用户统计数据](https://gitlab.com/ayush-sharma/find-my-mastodon/-/blob/1.0/src/fetch-instance-data/fetch_data.py#L252)。然后我把这些写进一个新的 [\_config-data.yml 文件](https://gitlab.com/ayush-sharma/find-my-mastodon/-/blob/1.0/_config-data.yml)（目前是手动）。最后，[主页和其他页面从配置文件中显示这些](https://gitlab.com/ayush-sharma/find-my-mastodon/-/blob/1.0/index.md#L16)。这样，我就可以利用一个动态的后台，并且仍然保持我所喜欢的所有静态网站的优点。

我希望这能为你自己的静态网站激发一些想法。Jamstack 对于静态网站是很好的，但你可以避免为动态内容创建整个 API 后台。为什么不使用一个构建作业来创建带有更新内容的配置文件呢？这可能不适合每一种情况，但少一个 API 意味着更少的基础设施移动部件。

我希望这能在你的下一个静态网站项目中给你一些帮助。继续阅读，并祝你编码愉快。

这篇文章最初发布在 [作者的网站](https://ayushsharma.in/2021/10/inserting-dynamic-data-into-jekyll-static-sites-using-python-or-bash) 上，并经授权转载。

---

via: <https://opensource.com/article/21/11/jekyll-config-files>

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


硬核观察 #447 黑客正在窃取加密数据，留待量子计算机日后破解

Summary: 更多：• 消费类无人机被用来攻击美国电网 • LXQt 桌面发布 1.0

更多：• 消费类无人机被用来攻击美国电网 • LXQt 桌面发布 1.0

# 硬核观察 #447 黑客正在窃取加密数据，留待量子计算机日后破解

### 黑客正在窃取加密数据，留待量子计算机日后破解

现在很多重要数据是采用加密保护的，黑客窃取之后，利用现有的计算能力很难破解。但是仍有黑客在积极行动窃取这些加密数据，以留待将来的 [量子计算机进行破解](https://www.technologyreview.com/2021/11/03/1039171/hackers-quantum-computers-us-homeland-security-cryptography/)，而这个时间可能只需要 10 年。量子计算机的工作方式与我们今天使用的经典计算机非常不同，使它们能够解决现代计算机几乎不可能解决的问题。虽然现在量子计算机仍处于起步阶段，极其昂贵和充满问题。包括美国国土安全部在内的美国政府部门自 2016 年以来一直在举行竞赛，目的是在 2024 年之前产生第一批抗量子计算机的算法，并提出了一份过渡路线图来应对未来的量子计算机。

>
> 老王点评：随着量子计算机变得实用，一定会出现抗量子加密算法。但是现有加密数据可能在十年后依旧很有价值，因此，部署抗量子的加密算法需要提前。
>
>
>

### 消费类无人机被用来攻击美国电网

根据美国政府部门的 [一份报告](https://www.newscientist.com/article/2296480-drone-used-in-attack-on-us-electrical-grid-last-year-report-reveals/)，去年美国的一个变电站遭到一架改装的消费类无人机的攻击。这是美国第一次已知的使用无人机攻击能源基础设施的事件，它发生在美国宾夕法尼亚州的一个变电站。但该无人机坠毁时没有造成损害，它加装了一个拖曳的系绳，牵引着一段铜线。如果电线接触到高压设备，可能会造成短路、设备故障，甚至可能引起火灾。

>
> 老王点评：新的科技进步带来了各种前所未有的攻击可能。
>
>
>

### LXQt 桌面发布 1.0

经过八年的发展，由 LXDE 和 Razor-qt 开源桌面项目合并而成的 [LXQt 桌面](https://lxqt-project.org/) 正在庆祝其 [V1.0 版本](https://github.com/lxqt/lxqt/releases/tag/1.0.0) 的发布。哦对了，1.0 的上一个版本是半年前发布的 0.17.0。LXQt 1.0 使用的是 Qt 5.15 LTS 工具包，还没有移植到 Qt 6。LXQt 1.0 带来了文件管理器和图像查看器的改进、桌面通知的免打扰模式、两个新的桌面主题、更新的翻译等。

>
> 老王点评：新的里程碑值得庆贺，就是这个飙版本号的风潮什么时候能停一停。
>
>
>


Summary: Trident 项目为我们提供了与操作系统无关的 Lumina 桌面。

Trident 项目为我们提供了与操作系统无关的 Lumina 桌面。

# 从 FreeBSD 转到 Void Linux 后，Trident 项目终于结束了

>
> Trident 项目为我们提供了与操作系统无关的 Lumina 桌面。
>
>
>

令人遗憾，[Trident 项目](https://project-trident.org/) 团队宣布将结束他们的 Linux 发行版的开发。

### 那段故事

你或许没有听说过 Trident 项目，让我来讲点关于它的一点回忆。那是在 2005 年，Kris Moore 推出了 [PC-BSD](https://en.wikipedia.org/wiki/TrueOS)，提供了一种用桌面界面来设置 FreeBSD 的简单方法。次年，它被 [iXsystems](http://ixsystems.com/) 收购。十年后，2016 年 9 月，这个项目被改名为 TrueOS。这个项目也变成了基于 FreeBSD Current 分支的滚动发行版。两年后，TrueOS [宣布](https://itsfoss.com/trueos-plan-change/) 他们将取消其操作系统的桌面版本，而专注于商业和服务器市场。其桌面元素被 [剥离](https://itsfoss.com/project-trident-interview/) 到一个新项目：Trident。

有一段时间，Trident 开发团队尽力在 FreeBSD 之上打造良好的桌面体验。可是，由于 [FreeBSD 的问题](https://project-trident.org/post/os_migration/)，包括 “硬件兼容性、通信标准，或软件包的可用性一直限制着 Trident 项目的用户”，他们决定将其建立在其他基础之上。他们的解决方案是在 2019 年将其项目重新构建在 [Void Linux](https://voidlinux.org/) 之上。有那么一段时间，看起来 Trident 项目似乎有了未来。然后，2020 年来了。

### 项目的终止

10 月 29 号，Trident 项目团队发布了以下 [公告](https://project-trident.org/post/2021-10-29_sunset/)：

>
> 我们非常悲伤地宣布，Trident 项目将从 2021 年 11 月 1 号起进入“夕阳”阶段，并将于 2022 年 3 月关掉商店。项目的核心团队共同做出了这个决定。随着过去两年中，生活、工件和家庭等方面的事情和变故；我们个人的优先事项也发生了改变。
>
>
> 我们将保持 Trident 项目的软件包存储库和网站的运行，直到 2022 年 3 月 1 日的终止期，但是我们强烈推荐用户在即将到来的新年假期中开始寻找其他桌面系统替代。
>
>
> 感谢大家的支持和鼓励！过去几年中，该项目得以良好运转，我们也非常高兴在这些年里结识了你们中的许多人。
>
>
>

### Lumina 项目继续

贯穿 PC-BSD/TrueOS/Trident 项目传奇故事的一个永恒主题是桌面环境。2012 年，[Ken Moore](https://github.com/beanpole135)（Kris 的弟弟）开始开发一个基于 Qt 的桌面环境 [Lumina](https://lumina-desktop.org/)。2014 年，它成为 PC-BSD 的默认桌面环境，并一直保持到 Trident 项目出现。Lumina 不同于其他桌面环境，因为它的设计与操作系统无关。其他桌面系统像 KDE 和 GNOME 都具有 Linux 特定代码，这使得它们难以移植到 BSD。

今年 6 月，Ken 把 [Lumina 的领导权](https://lumina-desktop.org/post/2021-06-23/) 交给了 Trident 的开发者 [JT Pennington](https://github.com/q5sys)（也因 [BSDNow](https://www.bsdnow.tv/) 知名）。

[公告](https://lumina-desktop.org/post/2021-06-23/) 中说：

>
> 经过长达 7 年的工作，我决定是时候让其他人接手 Lumina 桌面项目的开发了。这是个难以置信的任务，推动我进入之前从未考虑过的开发领域。可是，由于工作和生活的变化，我几乎没有为 Lumina 开发新功能的时间了，特别是即将在明年或者晚些时候到来的 Qt5->Qt6 升级。通过把火炬传递给 JT （GitHub 昵称是 q5sys），我希望这个项目能获得更及时的更新，以造福每个人。
>
>
> 感谢大家，我希望 Lumina 桌面项目能继续成功！！
>
>
>

### 总结

我一直对 Trident 项目抱有很高的期望。与我们介绍的许多发行版相比，它很小巧。它不是只增加了一两个新工具的、对 Arch 或 Ubuntu 的翻版。不仅如此，他们还努力改进一个与他们理念相同的发行版 Void Linux。可是，生活会发生变故，即使是我们中最好的人也难以避免遇到变故。我祝愿 Ken、JT 和其他人一切顺利，他们已经在这个项目上花费了很多时间。希望，我们未来能看到他们的更多作品。

---

via: <https://news.itsfoss.com/project-trident-discontinues/>

作者：[John Paul](https://news.itsfoss.com/author/john/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[zd200572](https://github.com/zd200572) 校对：[wxy](https://github.com/wxy)

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


# 只有 4MB？如何修复 Etcher 和 Rufus 创建 Linux USB 后“破坏”的 USB

情况是这样的。你用 Etcher 或者 Rufus 工具在 Windows 或者 Linux 中创建了一个可启动的、Live Linux USB。

你用它来安装 Linux，USB 的目的已经达到了。现在你想格式化这个 USB，用它来进行常规的数据传输或存储。

你把它插入你的 Windows 系统，令你吃惊的是，这个 USB 的磁盘容量只有 4MB。

你试图格式化它，但它可能不会让你这么做。即使你设法格式化它，USB 的大小现在也从通常的 8GB、16GB 或 32GB 缩减到只有 4MB。

你失去了你的 USB 吗？并非如此。你的 USB 并没有完全被破坏。你仍然可以用一个小技巧来格式化它，并舒适地使用它。

让我告诉你如何在 Windows 和 Linux 中把可启动的 USB 恢复到可用的状态。

### 格式化由 Rufus 或 Etcher 创建的 Live Linux USB （在 Windows 下）

你在 Windows 中看到只有 4MB 的磁盘空间。你知道为什么吗？因为在创建 Live Linux USB 时，该工具在 FAT32 文件系统中创建了一个 4MB 的 EFI 分区。其他的分区是在 Linux 的 Ext4 文件系统中，而这是不被 Windows 识别的。

这就是为什么你的 Windows 系统只看到 4MB 的 EFI 分区，并显示 USB 大小为 4MB。

总而言之，你需要做的是删除 USB 盘上的所有分区，用删除现有分区后得到的空闲空间创建一个新的 NTFS 或 FAT32 分区。这就行了。

让我展示一下详细的步骤。

#### 步骤 1：

进入 Windows 菜单，寻找“磁盘管理”工具。

启动这个工具，它将显示你电脑上存在的所有磁盘。当然，这包括插入的 USB。

**选择正确的磁盘是非常重要的**。从 U 盘的大小或“可移动”的标签中辨别出它是哪一个。

#### 步骤 2：

我们的想法是删除 U 盘上的任何现有分区。未分配的空间不能被删除，但这也没关系。

在该分区上点击右键，然后点击“<ruby> 删除卷 <rt>  Delete Volume </rt></ruby>”。

当要求你确认时，按“<ruby> 是 <rt>  Yes </rt></ruby>”。

你的目标是只有一个未分配的空间块。当你看到它时，右击它并点击“<ruby> 新建简单卷…… <rt>  New Simple Volume... </rt></ruby>”来创建一个分区。

接下来的步骤很简单。点击“<ruby> 下一步 <rt>  Next > </rt></ruby>”，选择整个可用空间，给它分配一个字母，选择文件系统（FAT32 或 NTFS），并将其格式化。

完成后，你会看到 USB 已经恢复到正常状态，你可以开始向它复制粘贴数据。

你现在可以像以前一样使用你的 USB 了。

这些步骤是针对 Windows 的。如果你使用 Linux 呢？

### 在 Linux 上格式化 Live USB

我注意到，由 Etcher 和这类工具创建的 Live USB 经常拒绝被文件管理器中的右键格式化选项正确格式化。

除此之外，你可以像在 Windows 中那样做：删除现有的分区，用整个可用空间创建一个新的分区。

这里使用 GNOME “磁盘” 工具。它已经安装在 Ubuntu 和许多其他 Linux 发行版上。

**同样，确保你在这里选择了外部 USB 盘。**

你会看到 U 盘上的各种分区。试着从上面的菜单中格式化该磁盘。

**如果这不起作用，逐个删除分区**，然后把整个 USB 作为自由空间。

当你创建了整个自由空间后，点击 “+” 号，在上面创建一个 NTFS 或 FAT32 文件系统的分区。

用 NTFS（或 FAT32）创建分区，给它起个合适的名字，然后你就可以像以前一样使用这个 USB 了。

### 总结

像 Rufus 和 Etcher 这样的工具并没有真正破坏你的 USB。这就是它们的功能，通过在磁盘上创建一个不同的文件系统。但这样一来，Windows 操作系统就不能正确理解它。

好在只需付出一点努力就可以修复。我希望你也能够修复它。如果没有，请与我分享你的问题，我将尽力帮助你。

---

via: <https://itsfoss.com/format-live-linux-usb/>

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


硬核观察 #448 虽然挣了大部分的钱，但红帽只能雇用更便宜、更低级的工程师

Summary: 更多：• Arm 公司 CEO 称为应对芯片危机，行业每周花费 20 亿美元 • 未来的苹果的硅芯片将使用 3 纳米工艺，最多可有 40 个核

芯片之重

# 硬核观察 #448 虽然挣了大部分的钱，但红帽只能雇用更便宜、更低级的工程师

### 虽然挣了大部分的钱，但红帽只能雇用更便宜、更低级的工程师

明年，为了控制成本，IBM 的红帽公司 [计划削减高级工程师的招聘](https://www.theregister.com/2021/11/05/red_hat_jobs/)。该公司向经理们发送了一封内部邮件，要求招聘资历比平时低的员工，“所有目前的申请和未来的回补都将默认降低一个级别（例如，高级软件工程师到软件工程师）”。红帽公司表示，“红帽今年已经增加了 2200 多名新员工，以帮助我们满足混合云技术的需求”。明年这个数字目前定在 200 人左右。而据另外的消息称，红帽在三季度预订了近 10 亿美元的业务，这约为 IBM 增长目标的 90%。

>
> 老王点评：这是又让马儿跑，又不给马儿吃草。
>
>
>

### Arm 公司 CEO 称为应对芯片危机，行业每周花费 20 亿美元

Arm 公司 CEO 在里斯本举行的 Web 峰会上说，这次芯片供应危机是 [他见过的最严重的一次](https://www.eetimes.com/is-the-chip-shortage-here-to-stay/)。他说，“在接下来的几年里，每周将花费大约 20 亿美元来增加产能和建设新设施。而这将在未来五年内增加约 50% 的额外产能....”但他也对期望持谨慎态度，由于涉及到许多不同的化学品，所以很难扩大晶圆生产，“制造半导体几乎用到整个周期表……你需要的不仅仅是一个芯片工厂来解决这些供应链问题。"

>
> 老王点评：这个世界已经运行在各种大大小小的芯片之上，疫情这种黑天鹅事件第一次让公众普遍认识到芯片的重要性。
>
>
>

### 未来的苹果的硅芯片将使用 3 纳米工艺，最多可有 40 个核

苹果和台积电计划使用台积电 5 纳米工艺的增强版来制造第二代苹果硅芯片，将接替第一代 M1、M1 Pro 和 M1 Max 芯片。这些芯片可能用于下一代 MacBook Pro 和其他 Mac 台式机。[苹果正计划](https://www.theinformation.com/articles/apples-road-map-for-mac-chips-shows-likely-advantage-over-intel) 在第三代芯片上实现更大的飞跃，其中一些芯片将采用台积电的 3 纳米工艺制造，并拥有多达四个模具，这可能让芯片拥有多达 40 个计算核。作为对比，M1 芯片有一个 8 核 CPU，M1 Pro 和 M1 Max 芯片有 10 核CPU，而苹果的高端 Mac Pro 塔式机可以配置多达 28 核的英特尔至强 W 处理器。

>
> 老王点评：苹果硅芯片本来就快得不像话，再升级的话不能想象会怎么改变 Mac 电脑。
>
>
>


Linux 内核的发布时间表是什么？它的支持时间是多久？

Summary: Linux 内核很复杂。我说的甚至不是代码的问题。

linux对新硬件的支持，是通过更新内核实现的？还是添加驱动实现的？

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

我觉得，都可以。

之前手动通过 modprobe 加载自己编译的驱动。

也见到过把驱动直接编译到 kernel 里的。

Linux 内核很复杂。我说的甚至不是代码的问题。

# Linux 内核的发布时间表是什么？它的支持时间是多久？

Linux 内核很复杂。我说的甚至不是代码的问题。

Linux 内核的代码本身很复杂，但你不需要为这个问题而烦恼。我说的是 Linux 内核的发布时间表。

一年内多久发布一个新的内核版本？内核被支持多长时间？还有一些 LTS（长期支持）内核，LTS Linux 内核的支持时间有多长？

问题是，虽然这些问题看起来很简单，但答案却不简单。

这些问题没有一个直接明了的答案，需要做一些解释，这就是我在这篇文章中要做的。

### Linux 内核发布时间表：有吗？

短的回答是，每两到三个月就有一个新的内核版本发布。长的回答是，这不是一个硬性规定。

这个意思是，你经常会看到每两到三个月就有一个新的内核版本发布。这是内核维护者团队的目标，但并没有规定新版本必须在前一个版本的 8 周后准时发布的期限。

新的内核版本（通常）是由 Linus Torvalds 在它准备好的时候发布的。通常是每 2 到 3 个月发布一次。该版本被宣布为“稳定”，一般以 X.Y 的格式编号。

但这并不是 X.Y 开发的结束。稳定版会有更多的小版本以进行错误的修复。这些小版本在稳定版的内核上又增加了一个点，就像是 X.Y.Z。

虽然 X.Y（通常）是由 Linux 创造者 Linus Torvalds 发布的，但是维护稳定的 X.Y 内核、合并错误修复和发布 X.Y.Z 版本的责任是由另外的内核开发者负责的。

### 一个内核版本支持多长时间？

和发布一样，一个内核版本支持多长时间也没有固定的日期和时间表。

一个普通的稳定内核版本通常会被支持两个半月到三个月，这取决于下一个稳定内核版本的发布时间。

例如，稳定版内核 5.14 会在稳定版内核 5.15 发布后的几周内达到 [生命末期](https://itsfoss.com/end-of-life-ubuntu/)。结束支持是由该稳定内核版本的维护者在 Linux 内核邮件列表中宣布的。用户和贡献者会被要求切换到新发布的稳定版本。

但这只适用于正常的稳定内核版本，还有 LTS（长期支持）内核版本，它们的支持期要比 3 个月长得多。

### LTS 内核：它支持多长时间？

LTS 内核也没有固定的发布时间表。通常，每年都有一个 LTS 内核版本，一般是当年的最后一个版本，它至少会被支持两年。但同样，这里也没有固定的规则。

LTS 内核的维护者可以同意某个 LTS 内核的维护时间超过通常的两年。这个协议是根据必要性和参与的人员来达成的。

这种情况经常发生在 Android 项目中。由于两年的时间不足以让制造商结束对他们的硬件和软件功能的支持，你经常会发现一些 LTS 内核会被支持六年之久。

你可以 [在 Linux 内核网站上](https://www.kernel.org/category/releases.html) 找到这个信息。

### 你的发行版可能没有跟随通常的 Linux 内核版本

如果你检查你的 Linux 内核版本，你可能会发现 [你的发行版使用了一个旧的内核](https://itsfoss.com/why-distros-use-old-kernel/)。也有可能该发行版提供的内核已经在内核网站上被标记为到达了生命末期。

不要惊慌。你的发行版会负责修补内核的错误和漏洞。除非你真的在使用一个不知名的 Linux 发行版，否则你可以相信你的发行版会保持它的安全和健全。

如果你有足够的理由，比如为了支持更新的硬件，你可以自由地在你使用的任何发行版或 [Ubuntu 中安装最新的 Linux 内核](https://itsfoss.com/upgrade-linux-kernel-ubuntu/) 。

如果你想了解更多细节，我已经 [在这里解释了为什么你的发行版使用过时的 Linux 内核](https://itsfoss.com/why-distros-use-old-kernel/)。

### 没有直接明了的答案

正如你所看到的，对于 Linux 内核发布时间表的问题，没有直接明了的答案。一切都是暂定的。

在我看来，好的方面是，如果你使用一个常规的 Linux 发行版，你不需要为 Linux 内核版本的发布或终止而烦恼。那是由你的发行版处理的事情。

我希望你对 Linux 内核的发布周期有了更多的了解，或者是我把你搞糊涂了。无论是哪种情况，请在评论区告诉我你的观点。

---

via: <https://itsfoss.com/linux-kernel-release-support/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[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 命令行上编辑照片的 4 种方法

# 在 Linux 命令行上编辑照片的 4 种方法

>
> 这里有一些我最喜欢的 ImageMagick 技巧，以及如何在没有 GUI 的情况下使用它们。
>
>
>

Linux 对摄影师和图形艺术家很有用。它提供了许多工具来编辑包括照片在内的不同类型的图像文件和格式。这表明你甚至不需要一个图形界面来处理你的照片。这里有四种你可以在命令行中编辑图像的方法。

### 给你的图片应用效果

几年前，Seth Kenlon 写过一篇文章，[4 个有趣的（半无用的）Linux 玩具](https://opensource.com/life/16/6/fun-and-semi-useless-toys-linux)，其中包括对 ImageMagick 编辑工具套件的介绍。在 2021 年的今天，ImageMagick 甚至更有意义。

这篇文章让我们了解了 Fred 的 ImageMagick 脚本，这些脚本真的很有用。Fred Weinhaus 维护着 200 多个脚本，用于对你的图像文件应用各种效果。Seth 向我们展示了 Fred 的 `vintage3` 脚本的一个例子，该脚本使图像变得怀旧。

### 创建照片拼贴画

今年，Jim Hall 用他的文章 [从 Linux 命令行创建照片拼贴](https://opensource.com/article/21/9/photo-montage-imagemagick) 向我们展示了如何从照片中创建拼贴画。

拼贴画在小册子和手册中使用得很多。它们是一种在一张照片中展示几张图片的有趣方式。可以应用效果来将它们进一步融合在一起。事实上，我以他的文章为指导，创造了上面的图片拼贴。这是我小时候的样子。以下是我使用的命令：

```
$ montage Screenshot-20211021114012.png \
  Screenshot-20211021114220.png \
  Screenshot-20211021114257.png \
  Screenshot-20211021114530.png \
  Screenshot-20211021114639.png \
  Screenshot-20211021120156.png \
  -tile 3x2 -background black \
  screenshot-montage.png

```

### 调整图像大小

Jim 发表了另一篇文章，[从 Linux 终端调整图像的大小](https://opensource.com/article/21/9/resize-image-linux)。这个教程演示了如何使用 ImageMagick 改变一个图像文件的尺寸并将其保存为一个新的文件。例如，上面的 `montage` 命令所产生的拼贴画没有达到要求的尺寸。学习如何调整尺寸，使我能够调整宽度和高度，从而使它能够被包括在内。这是我用来调整这张图片大小的命令。

```
$ convert screenshot-montage.png -resize 520x292\! alanfd-kid-montage.png

```

### 自动化图像处理

最近，我决定自己看一下 ImageMagick 套件。这一次，我把它的工具组合成一个 Bash 脚本。文章的题目是 [用这个 bash 脚本自动处理图像](https://opensource.com/article/21/10/image-processing-bash-script)。这个例子是一个简单的脚本，可以自动为我的文章制作图片。它是根据 [Opensource.com](http://Opensource.com) 上的要求定制的。如果你想使用这个脚本，我在文章中提供了一个 Git 仓库连接。它很容易修改和扩展，可以满足任何人的需要。

### 总结

我希望你喜欢这些文章并在你的艺术创作中使用 Linux。如果你想看看更多的 Linux 图像软件，可以看看 Fedora [Design Suite](https://labs.fedoraproject.org/en/design-suite/) Spin。它是一个完整的操作系统，包括许多不同的开源多媒体制作和发布工具，例如：

* GIMP
* Inkscape
* Blender
* Darktable
* Krita
* Scribus
* 等等

---

via: <https://opensource.com/article/21/11/edit-photos-linux-command-line>

作者：[Alan Formy-Duval](https://opensource.com/users/alanfdoss) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

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


硬核观察 #449 System76 准备另起炉灶，用 Rust 开发全新桌面

Summary: 更多：• 只有 3% 的企业在使用单一的云服务商 • 微软宣布为其 Azure 云上的 Linux 添加更多安全保护

# 硬核观察 #449 System76 准备另起炉灶，用 Rust 开发全新桌面

### System76 准备另起炉灶，用 Rust 开发全新桌面

System76 的 Pop!\_OS Linux 发行版的 COSMIC 桌面是基于 GNOME 的，但他们正在 [用 Rust 开发自己的桌面](https://www.phoronix.com/scan.php?page=news_item&px=Pop-OS-New-Rust-Desktop)，而不基于 GNOME 或任何现有桌面环境。System76 回应称，开发自己的桌面环境确实是因最近 Pop!\_OS 和 GNOME 开发者之间在主题化和定制化的方法上发生了一些摩擦。Pop!\_OS 维护者 [在评论中说](https://old.reddit.com/r/pop_os/comments/qnvrou/will_pop_os_ever_do_an_officially_kde_flavor_or/hjqpj7y/) “我们的桌面环境是 GNOME Shell 扩展的集合，而这些扩展在每个 GNOME Shell 版本中都会被破坏。要么我们转向维护数以万计的猴子补丁，要么我们用正确的方式，成为与 GNOME Shell 一样的成熟的桌面环境。” 他们的新桌面会 “使用已经存在的工具（mutter、kwin、wlroots 等等），但是会从头开始用 Rust 实现周围的 shell...并尽力遵循 freedesktop 规范。”

>
> 老王点评：虽然自由和开源世界向以轮子众多而著称，也屡屡有人批评贡献者们只知道造轮子，而好用的轮子没几个，但是我觉得，能自由造轮子才是自由和开源世界的基础，不好的轮子自然会进化淘汰。
>
>
>

### 只有 3% 的企业在使用单一的云服务商

[一项研究](https://www.ibm.com/thought-leadership/institute-business-value/report/cloud-transformation) 对 29 个行业的七千余名高管进行了关于他们的云结构的调查。调查发现，只有 3% 的人报告在 2021 年使用单一的私有云或公共云，而在 2019 年这一数据为 29%。至少有 79% 的受访者表示，工作负载完全可移植，没有供应商锁定。

>
> 老王点评：真正摆脱了供应商锁定的云计算才叫云计算，从目前的发展来看，云计算产业已经逐渐达成了其最初的愿景之一。
>
>
>

### 微软宣布为其 Azure 云上的 Linux 添加更多安全保护

几个月前，Linux 服务器上的 Defender for Endpoint 获得了端点检测和响应（EDR）能力，Linux 上的 Defender 可以通用地拦截全新类别的威胁，如赎金勒索、敏感数据收集、加密货币挖掘等等。现在微软为 Azure Defender 客户 [提供了更多的能力](https://www.zdnet.com/article/microsoft-just-expanded-its-malware-protection-for-linux-servers/)，Linux EDR 现在已经进入公开预览阶段，其提供的实时响应允许深入调查和快速遏制威胁，为安全团队提供取证数据、运行脚本的能力、分享可疑实体和猎取可能的威胁。

>
> 老王点评：鉴于 Linux 发行版在 Azure 云的虚拟机操作系统中占主导地位，这并不足为奇。但是我仍然对此感觉有些不安。
>
>
>


openSUSE Leap 与 Tumbleweed，我该选择哪一个

Summary: 如果你是 openSUSE 的新手，很容易把 Tumbleweed 和 Leap 搞混。

# openSUSE Leap 与 Tumbleweed，我该选择哪一个

[openSUSE 是一个非常受欢迎的 Linux 发行版](https://itsfoss.com/why-use-opensuse/)，尤其是在企业界。[SUSE](https://en.wikipedia.org/wiki/SUSE_Linux) 从 1996 年起就以这样或那样的形式出现了。很久以来，他们只有一个分支版本。

然后，在 2015 年，他们改变了现状，决定提供两个分支：Leap 和 Tumbleweed。

如果你是 [openSUSE](https://www.opensuse.org/) 的新手，很容易把 Tumbleweed 和 Leap 搞混。最近有位读者要求我们解释这两者之间的异同，这正是我们今天要做的。

### Leap 和 Tumbleweed 之间有什么区别？

两者之间最重要的区别是发布时间表。openSUSE Leap （LCTT 译注：leap => “飞跃”）每隔几年就会按照固定的时间表发布一个新版本，类似于 Ubuntu 和 Fedora。另一方面，Tumbleweed （LCTT 译注：tumbleweed => “风滚草”）是一个紧密跟随 openSUSE 开发时间表的滚动发布，就像 Arch 或 Void。

你知道 [滚动发行版](https://itsfoss.com/rolling-release/) 的优势吧？它为你提供了最新的软件版本，你不需要为一个重大版本发布而升级你的系统，因为你的系统会定期得到更新。

所以，在 openSUSE Tumbleweed 中，你会得到更新的桌面环境版本、内核版本等等，你会得到一个最先进的、新鲜的系统。

另一方面，openSUSE Leap 坚持使用较早的、LTS 版本的桌面环境和 Linux 内核，给你一个可靠的系统。当然也会有系统和安全的补丁，并且每隔几年会有一个重大版本，为你的系统提供更新的软件和内核。

#### 快速回顾一下 openSUSE 发布模式的变化历史

从提供一个发行版分支到两个似乎是一个很大的飞跃，所以让我给你介绍一下历史背景。Tumblewee 项目是由 [Greg Kroah-Hartman](https://en.wikipedia.org/wiki/Greg_Kroah-Hartman) 在 2010 年 11 月宣布的。其目的是创建一个 “滚动更新版本的 openSUSE 存储库，包含供人们使用的最新‘稳定’版软件包”。这个项目并不是一个新的发行版，而是对现有 openSUSE 系统的附加部分。

这在 2014 年发生了变化，当时 openSUSE 背后的团队决定将下一个版本基于 SUSE Linux Enterprise Server（SLES）开发。他们将这个新版本命名为 “Leap 42”（解释一下，“42” 这个数字来自《<ruby> 银河系漫游指南 <rt>  Hitchhiker’s Guide to the Galaxy </rt></ruby>》，其中 “42” 被认为是生命、宇宙和一切的答案）。（ LCTT 译注：在瞎飙了版本后之后，它们又回到了 15.x 这种按部就班的版本号）目前 openSUSE Leap 的版本是 15.2。

随着这一变化，Tumbleweed 成为 openSUSE 的官方发行版。有趣的是，根据 openSUSE 2020 年底的 [社区调查](https://en.opensuse.org/End-of-year-surveys/2020/Data#Uses_Tumbleweed_as_Desktop_on_a_regular_basis)，越来越多的人选择使用 Tumbleweed。

### 你应该使用 Leap 还是 Tumbleweed？

下一个问题是，“如果底层技术基本相同，那么应该使用这两个中的哪一个？”让我为你分析一下。

openSUSE Leap 是稳定的，经过高度测试的。它应该用于较旧的系统和需要长期无问题运行的计算机。这是因为所提供的软件不是最新和最好的，而是最稳定的。因为新的版本每 3 年才会发布一次，所以你安排的任何工作流程都是相对安全的。（一定要记得备份。）Leap 在其整个发布周期中坚持使用同一个 Linux 内核。

使用 Leap，你不会收到最新版本的软件。你也将以较慢的速度获得硬件支持。你将需要每年至少更新一次你的系统以继续获得更新。Leap 就像 Ubuntu LTS 一样。

另一方面，openSUSE Tumbleweed 拥有所有软件的最新版本，包括内核、驱动程序和桌面环境。由于它是一个滚动发行版，所以你所使用的版本基本上没有寿命结束的可能。

Tumbleweed 不断接受更新的事实也会导致一些问题，比如工作流程或工具的损坏，一般来说，它打磨得比较粗糙。如果发生这种情况，Tumbleweed 确实有工具可以回滚到以前的状态，以避免这些问题。Tumbleweed 非常紧跟 Linux 内核的发布。

让我为你总结一下，以帮助你做出决定。

如果：

* 稳定性对你来说很重要
* 你是 openSUSE 的新手
* 你的硬件较旧
* 你在运行一个生产服务器
* 如果你正在为一个不懂技术的朋友或家人建立一个系统

那么你应该使用 Leap。

如果：

* 你想尝试最新、最棒的软件
* 你的硬件较新
* 你对 Linux 比较有经验
* 你是一个软件开发者
* 你需要专有的硬件驱动，比如 Nvidia 或 Radeon 显卡，或者 Broadcom 的 Wi-Fi 适配器
* 你想要最新的内核版本

那么你应该使用 Tumbleweed。

我希望能为你解开疑惑。如果你已经在使用 Leap 或 Tumbleweed，请在评论区告诉我们你的偏好和建议。

---

via: <https://itsfoss.com/opensuse-leap-vs-tumbleweed/>

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


硬核观察 #450 SCO 诉 IBM 案在近 20 年后终于尘埃落定

Summary: 更多：• REvil 勒索团伙大量成员被捕 • 因域名过期，无法运行受反盗版保护的游戏

# 硬核观察 #450 SCO 诉 IBM 案在近 20 年后终于尘埃落定

### SCO 诉 IBM 案在近 20 年后终于尘埃落定

[早些时候](https://www.zdnet.com/article/last-of-original-sco-v-ibm-linux-lawsuit-settled/)，一直监督 SCO 破产的美国特拉华地区破产法院曾宣布，代表 SCO 债务人的受托方与 IBM 达成和解，IBM 支付 1425 万美元以彻底终结该诉讼，债务人放弃对 IBM 和红帽的所有未决或未来可能提出的 [诉讼](https://practical-tech.com/2003/03/31/cyber-cynic-bye-bye-sco/) 要求的所有权利和利益，以及任何关于 Linux 侵犯 SCO 的 Unix 知识产权的指控。法院接受了这一和解，[裁决](https://www.scribd.com/document/538148598/IBM-1182)“本案中的所有索赔和反索赔，无论是否被指控，是否被申辩，都已经全部解决、妥协和解决，并且有充分的理由。”

>
> 老王点评：终于结束了……或许吧？这个诉讼已经久到很多人都忘记了，SCO 及其“遗产”被收购后，一次次疯狂的版权诉讼，一次次的出尔反尔，曾经有可能将 Linux 扼杀在摇篮中。
>
>
>

### REvil 勒索团伙大量成员被捕

罗马尼亚警方、美国司法部和欧洲刑警组织于周一宣布了针对 REvil 团伙的 [联合行动](https://www.bbc.com/news/technology-59215167)。这次突袭行动抓捕了三名被指控的网络犯罪分子。欧洲刑警组织的行动被命名为 GoldDust，是专门为对付该团伙而设立的。自 2 月以来，该行动在罗马尼亚、乌克兰、韩国和科威特共逮捕了 7 名勒索团伙成员。REvil 影响最大的活动是成功入侵了软件公司 Kaseya，随后感染了全球多达 1500 家企业，支付的赎金超过 2 亿美元。最近几周，REvil 的负责人宣布，来自当局的压力迫使他们关闭了运营。FBI 局长说，“法律的长臂比他们想象的要长很多。”

>
> 老王点评：看来这是打疼了美国了啊。但是我们的企业也要小心被勒索团伙盯上。
>
>
>

### 因域名过期，无法运行受反盗版保护的游戏

昨晚，一个 DRM 反盗版技术使用的一个 [关键域名过期](https://torrentfreak.com/denuvo-protected-games-rendered-unplayable-after-domain-expires-211108/)，导致采用该技术的游戏也无法运行。在续费失败后，该域名进入了宽限期，但当宽限期也过后，它就被从 DNS 记录中删除了，因此整个反盗版系统就停止了工作。Steam 上的一些用户发布了一些教程，让玩家修改他们的 Windows HOSTS 文件来临时规避该问题。

>
> 老王点评：虽然我不喜欢 DRM 系统，但是这个 DRM 系统的 IT 运维也太烂了。
>
>
>


在 FreeDOS 上使用 BAT 文件自动执行任务

Summary: FreeDOS 下批处理文件的实用指南。

FreeDOS 下批处理文件的实用指南。

# 在 FreeDOS 上使用 BAT 文件自动执行任务

>
> FreeDOS 下批处理文件的实用指南。
>
>
>

<img src="content_image/album_202111_10_104345whfjagaahm9nb2j3.jpg" alt="" title="Tips and gears turning">

即使你以前没有使用过 DOS，你也可能知道它的命令行 shell，即 `COMMAND.COM`。它已经成为 DOS 的同义词，FreeDOS 为此也实现了一个类似的 shell，称为 “FreeCOM”，但也命名为 `COMMAND.COM`，就像在其他 DOS 系统上一样。

但是 FreeCOM shell 可以做的不仅仅是为你提供一个命令行提示符让你在其中运行命令，如果你需要在 FreeDOS 上自动执行任务，你可以使用 *批处理文件*，也称为 “BAT 文件”，因为这些脚本使用 `.BAT` 扩展名。

批处理文件可能比你在 Linux 编写的脚本要简单得多。因为在很久以前，这个功能最初被添加到 DOS 时，它是为了让 DOS 用户“批量处理”某些命令。它的条件分支没有太大的灵活性，也不支持更高级的功能，例如算术扩展、标准输出和错误消息的重定向、后台进程、测试、循环（这项支持）和 Linux 脚本中常见的其他结构。

本文是 FreeDOS 下批处理文件的实用指南。记住通过用百分号（`%`）包裹变量名称来引用环境变量，例如 `%PATH%`。但是，请注意，由于历史原因，`FOR` 循环的构造略有不同。

### 打印输出

批处理文件可能需要向用户打印消息，让用户知道发生了什么。使用 `ECHO` 语句打印消息。例如，一个批处理文件可能使用以下语句表明它已完成了任务：

```
ECHO Done

```

`ECHO` 语句不需要引号。FreeCOM `ECHO` 语句不会以任何特殊方式处理引号，它会像普通文本一样打印它们。

通常，FreeDOS 在执行批处理文件时会打印每一行。这在一个非常短的批处理文件中通常不是问题，它只为用户定义了几个环境变量。但是对于执行更多工作的较长批处理文件而言，批处理行的这种一直显示可能会变得很麻烦。要阻止此输出，在 `ECHO` 语句中使用 `OFF` 关键字，如下所示：

```
ECHO OFF

```

使用 `ON` 关键字在 FreeDOS 运行时恢复显示批处理行。

```
ECHO ON

```

大多数批处理文件在第一行包含一个 `ECHO OFF` 语句，以阻止消息，但是 shell 在执行语句时仍然会在屏幕上打印 `ECHO OFF`。为了隐藏该语句，批处理文件通常在前面使用 `@` 符号。这样，任何以这个特殊字符开头的行都不会打印，即使打开了 `ECHO`。

```
@ECHO OFF

```

### 注释

编写较长批处理文件时，大多数程序员都喜欢使用 *注释* 来提醒自己这个批处理文件的用途。在批处理文件中注释，使用 `REM`（remark）关键字。`REM` 之后的任何内容都会被 FreeCOM shell 忽略。

```
@ECHO OFF
REM This is a comment

```

### 执行“辅助”批处理文件

通常，FreeCOM 一次只运行一个批处理文件。但是，你可能需要使用另一个批处理文件来执行其他操作，例如为多个批处理文件设置公共环境变量。

如果你从"正在运行"的批处理文件中直接调用第二个批处理文件，FreeCOM 将完全切换到第二个批处理文件，并停止处理第一个。要改为在第一个批处理文件“内部”运行第二个批处理文件，你需要告诉 FreeDOS shell 使用 `CALL` 关键字去 *调用* 第二个批处理文件。

```
@ECHO OFF
CALL SETENV.BAT

```

### 条件分支

批处理文件确实支持使用 `IF` 语句的简单条件分支。它有三种基本形式：

1. 测试上一条命令的返回状态
2. 测试一个变量是否等于一个值
3. 测试文件是否存在

`IF` 语句的一个常见用途是测试程序是否成功返回。如果它们正常运行，大多数程序将返回零值，或者在出现错误时返回一些其他值。在 DOS 中，这称为 *错误级别*，这是 `IF` 测试的特例。

测试名为 `MYPROG` 的程序是否成功退出，实际上是检查程序是否返回“零”。使用 `ERRORLEVEL` 关键字来测试特定值。例如：

```
@ECHO OFF
MYPROG
IF ERRORLEVEL 0 ECHO Success

```

使用 `ERRORLEVEL` 测试错误级别是检查程序退出状态的笨拙方法。检查 DOS 程序的不同返回值，更有用的方法是使用 FreeDOS 为你定义的特殊变量，称为 `ERRORLEVEL`。它存储了最近执行程序的错误级别，然后你可以使用 `==` 测试不同的值。

你可以使用 `==` 和 `IF` 语句来测试变量是否等于某个值。就像一些编程语言，你可以使用 `==` 直接比较两个值。通常，在一侧引用一个环境变量，在另一侧引用一个值，但你也可以比较两个变量的值以查看它们是否相同。例如，你可以使用此批处理文件重写上面的 `ERRORLEVEL` 代码：

```
@ECHO OFF
MYPROG
IF %ERRORLEVEL%==0 ECHO Success

```

`IF` 语句的另一个常见用途是测试文件是否存在，如果存在则采取操作。你可以使用 `EXIST` 关键字来测试。例如，要删除名为 `TEMP.DAT` 的临时文件，你可以在批处理文件中使用以下行：

```
@ECHO OFF
IF EXIST TEMP.DAT DEL TEMP.DAT

```

对于任何 `IF` 语句，你都可以使用 `NOT` 关键字来 *否定* 测试。在文件 *不* 存在时打印消息，你可以这样写：

```
@ECHO OFF
IF NOT EXIST TEMP.DAT ECHO No file

```

### 分支执行

利用 `IF` 测试的一种方法是跳转到批处理文件中完全不同的部分，这取决于 `IF` 测试的结果。在最简单的情况下，如果一个关键命令失败，你可能希望跳到批处理文件的末尾。或者，如果某些环境变量设置不正确，你可能想要执行其他语句。

你可以使用 `GOTO` 指令跳转到批处理文件的其他部分。它会跳转到批处理文件中称为 *标签* 的特定行。注意，这是一个严格的 “go-to” 跳转：批处理文件执行将在新标签处启动。

假设程序需要一个现有的空文件来存储临时数据，如果文件不存在，则需要在运行程序之前创建一个文件。你可以将这些动作添加到批处理文件中，这样你的程序始终有一个临时文件可供使用：

```
@ECHO OFF
IF EXIST temp.dat GOTO prog
ECHO Creating temp file...
TOUCH temp.dat
:prog
ECHO Running the program...
MYPROG

```

当然，这是一个非常简单的例子。对于这种情况，你可以重写批处理文件，将创建临时文件作为 `IF` 语句的一部分：

```
@ECHO OFF
IF NOT EXIST temp.dat TOUCH temp.dat
ECHO Running the program...
MYPROG

```

### 迭代

如果你需要对一组文件执行相同的任务怎么办？你可以使用 `FOR` 循环 *迭代* 一组文件。这是一个单行循环，每次使用不同的文件运行单个命令。

`FOR` 循环对迭代变量使用一种特殊的语法，它的用法与其他 DOS 环境变量不同。要循环编辑一组文本文件，可以使用以下语句：（LCTT 译注：原文此处写错了，少写了一个 `%`）

```
@ECHO OFF
FOR %%F IN (*.TXT) DO EDIT %%F

```

注意，如果在命令行中运行此循环，而不是在批处理文件中，那么迭代变量仅需要指定一个百分号（`%`）：

```
C:\> FOR %F IN (*.TXT) DO EDIT %F

```

### 命令行处理

在运行批处理文件时，FreeDOS 提供了一种简单的方法来检测用户可能提供的命令行选项。FreeDOS 解析命令行输入，并将前九个选项存储在特殊变量 `%1`、`%2` ..... 等中，直到 `%9`。注意，无法通过这种方式直接访问第十一个（及之后）选项。特殊变量 `%0` 存储批处理文件的名称。

如果你的批处理文件需要处理 9 个以上的选项，你可以使用 `SHIFT` 语句移除第一个选项，并将每个选项向下 *移动* 一个值。所以第二个选项变成了 `%1`，第十个选项变成了 `%9`。

大多数批处理文件只需要移动一个值。但是，如果你需要以其他增量进行移位，可以将参数提供给 `SHIFT` 语句。例如：

```
SHIFT 2

```

下面是一个简单的批处理文件，演示了移位操作：

```
@ECHO OFF
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9
ECHO Shift by one ..
SHIFT 1
ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9

```

执行带有十个选项的批处理文件显示了 `SHIFT` 语句如何重新排列命令行选项，因此批处理文件现在可以用 `%9` 访问第十个参数：

```
C:\SRC>args 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9
Shift by one ..
2 3 4 5 6 7 8 9 10
C:\SRC>

```

---

via: <https://opensource.com/article/21/6/automate-tasks-bat-files-freedos>

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

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