使用 PyHamcrest 执行健壮的单元测试

Summary: 使用此框架编写断言，提高开发测试的准确性。

使用此框架编写断言，提高开发测试的准确性。

>
> 使用此框架编写断言，提高开发测试的准确性。
>
>
>

![](/data/attachment/album/201901/29/003322zr855ene5unu00un.jpg)

在[测试金字塔](https://martinfowler.com/bliki/TestPyramid.html)的底部是单元测试。单元测试每次只测试一个代码单元，通常是一个函数或方法。

通常，设计单个单元测试是为了测试通过一个函数或特定分支的特定执行流程，这使得将失败的单元测试和导致失败的 bug 对应起来变得容易。

理想情况下，单元测试很少使用或不使用外部资源，从而隔离它们并使它们更快。

单元测试套件通过在开发过程的早期发现问题来帮助维护高质量的产品。有效的单元测试可以在代码离开开发人员机器之前捕获 bug，或者至少可以在特定分支上的持续集成环境中捕获 bug。这标志着好的和坏的单元测试之间的区别：*好的*测试通过尽早捕获 bug 并使测试更快来提高开发人员的生产力。*坏的*测试降低了开发人员的工作效率。

当测试*附带的特性*时，生产率通常会降低。当代码更改时测试会失败，即使它仍然是正确的。发生这种情况是因为输出的不同，但在某种程度上是因为它不是<ruby> 函数契约 <rt>  function’s contract </rt></ruby>的一部分。

因此，一个好的单元测试可以帮助执行函数所提交的契约。

如果单元测试中断，那意味着该契约被违反了，应该（通过更改文档和测试）明确修改，或者（通过修复代码并保持测试不变）来修复。

虽然将测试限制为只执行公共契约是一项需要学习的复杂技能，但有一些工具可以提供帮助。

其中一个工具是 [Hamcrest](http://hamcrest.org/)，这是一个用于编写断言的框架。最初是为基于 Java 的单元测试而发明的，但它现在支持多种语言，包括 [Python](https://www.python.org/)。

Hamcrest 旨在使测试断言更容易编写和更精确。

```
def add(a, b):
    return a + b

from hamcrest import assert_that, equal_to

def test_add():
    assert_that(add(2, 2), equal_to(4))
```

这是一个用于简单函数的断言。如果我们想要断言更复杂的函数怎么办？

```
def test_set_removal():
    my_set = {1, 2, 3, 4}
    my_set.remove(3)
    assert_that(my_set, contains_inanyorder([1, 2, 4]))
    assert_that(my_set, is_not(has_item(3)))
```

注意，我们可以简单地断言其结果是任何顺序的 `1`、`2` 和 `4`，因为集合不保证顺序。

我们也可以很容易用 `is_not` 来否定断言。这有助于我们编写*精确的断言*，使我们能够把自己限制在执行函数的公共契约方面。

然而，有时候，内置的功能都不是我们*真正*需要的。在这些情况下，Hamcrest 允许我们编写自己的<ruby> 匹配器 <rt>  matchers </rt></ruby>。

想象一下以下功能：

```
def scale_one(a, b):
    scale = random.randint(0, 5)
    pick = random.choice([a,b])
    return scale * pick
```

我们可以自信地断言其结果均匀地分配到至少一个输入。

匹配器继承自 `hamcrest.core.base_matcher.BaseMatcher`，重写两个方法：

```
class DivisibleBy(hamcrest.core.base_matcher.BaseMatcher):
    def __init__(self, factor):
        self.factor = factor

    def _matches(self, item):
        return (item % self.factor) == 0

    def describe_to(self, description):
        description.append_text('number divisible by')
        description.append_text(repr(self.factor))
```

编写高质量的 `describe_to` 方法很重要，因为这是测试失败时显示的消息的一部分。

```
def divisible_by(num):
    return DivisibleBy(num)
```

按照惯例，我们将匹配器包装在一个函数中。有时这给了我们进一步处理输入的机会，但在这种情况下，我们不需要进一步处理。

```
def test_scale():
    result = scale_one(3, 7)
    assert_that(result,
                any_of(divisible_by(3),
                divisible_by(7)))
```

请注意，我们将 `divisible_by` 匹配器与内置的 `any_of` 匹配器结合起来，以确保我们只测试函数提交的内容。

在编辑这篇文章时，我听到一个传言，取 “Hamcrest” 这个名字是因为它是 “matches” 字母组成的字谜。嗯…

```
>>> assert_that("matches", contains_inanyorder(*"hamcrest")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/moshez/src/devops-python/build/devops/lib/python3.6/site-packages/hamcrest/core/assert_that.py", line 43, in assert_that
    _assert_match(actual=arg1, matcher=arg2, reason=arg3)
  File "/home/moshez/src/devops-python/build/devops/lib/python3.6/site-packages/hamcrest/core/assert_that.py", line 57, in _assert_match
    raise AssertionError(description)
AssertionError:
Expected: a sequence over ['h', 'a', 'm', 'c', 'r', 'e', 's', 't'] in any order
      but: no item matches: 'r' in ['m', 'a', 't', 'c', 'h', 'e', 's']
```

经过进一步的研究，我找到了传言的来源：它是 “matchers” 字母组成的字谜。

```
>>> assert_that("matchers", contains_inanyorder(*"hamcrest"))
>>>
```

如果你还没有为你的 Python 代码编写单元测试，那么现在是开始的好时机。如果你正在为你的 Python 代码编写单元测试，那么使用 Hamcrest 将允许你使你的断言更加*精确*，既不会比你想要测试的多也不会少。这将在修改代码时减少误报，并减少修改工作代码的测试所花费的时间。

---

via: <https://opensource.com/article/18/8/robust-unit-tests-hamcrest>

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


Linux 终端上的漂亮小马

Summary: 将小马宝莉的魔力带到终端

将小马宝莉的魔力带到终端

>
> 将小马宝莉的魔力带到终端
>
>
>

![](/data/attachment/album/201901/29/201901zpa7pb7za4gpazug.png)

欢迎再次来到 Linux 命令行玩具日历。如果这是你第一次访问该系列，你甚至可能会问自己什么是命令行玩具。我们正在思考中，但一般来说，它可能是一个游戏，或任何简单的消遣，可以帮助你在终端玩得开心。

很可能你们中的一些人之前已经看过我们日历中的各种玩具，但我们希望每个人至少见到一件新事物。

读者 [Lori](https://opensource.com/users/n8chz) 在我之前关于 [cowsay](https://opensource.com/article/18/12/linux-toy-cowsay) 的文章的评论中提出了今天玩具的建议：

“嗯，我一直在玩一个叫 ponysay 的东西，它似乎是你的 cowsay 的彩色变种。”

我对此感到好奇，并去看了一下，发现没有让我失望。

简而言之，[ponysay](https://github.com/erkin/ponysay) 的 cowsay 的重写，它包括了来自[小马宝莉](https://en.wikipedia.org/wiki/My_Little_Pony)中的许多全彩色人物，你可以用它在 Linux 命令行输出短句。它实际上是一个非常完善的项目，拥有超过 400 个字符和字符组合，它还有让人难以置信的的 [78 页的 PDF 文档](https://github.com/erkin/ponysay/blob/master/ponysay.pdf?raw=true)涵盖了所有的用法。

要安装 `ponysay`，你需要查看项目的 [README](https://github.com/erkin/ponysay/blob/master/README.md) 来选择最适合你的发行版和情况的安装方法。由于 `ponysay` 似乎没有为我的 Fedora 发行版打包，我选择试用 Docker 容器镜像，但你可以选择最适合你的方法。从源码安装可能也适合你。

作为一个业余容器用户，我很想试试 [podman](https://opensource.com/article/18/10/podman-more-secure-way-run-containers) 来代替 docker。至少对于我而言，它可以正常工作。

```
$ podman run -ti --rm mpepping/ponysay 'Ponytastic'
```

输出很神奇，我建议你也试下，然后告诉我你最喜欢的。这是我其中一个：

![](/data/attachment/album/201901/29/201902lzg02mdr52cfvgmz.png)

它的开发人员选择用 [Pony](https://opensource.com/article/18/5/pony) 来编写代码。（更新：很遗憾我写错了。虽然 Gihutb 根据它的文件扩展名认为它是 Pony，但是它是用 Python 写的。）Ponysay 使用 GPLv3 许可，你可以在 [GitHub](https://github.com/erkin/ponysay) 中获取它的源码。

你有特别喜欢的命令行小玩具需要我介绍的吗？这个系列要介绍的小玩具大部分已经有了落实，但还预留了几个空位置。如果你有特别想了解的可以评论留言，我会查看的。如果还有空位置，我会考虑介绍它的。如果没有，但如果我得到了一些很好的意见，我会在最后做一些有价值的提及。

查看昨天的玩具，[在 Linux 终端中用火焰放松](https://opensource.com/article/18/12/linux-toy-aafire)，记得明天再来！

---

via: <https://opensource.com/article/18/12/linux-toy-ponysay>

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


5 个用于 SOHO 的 Linux 服务器发行版

正在用fedora server 很多软件不用编译，而且很新很好用

>
> Jack Wallen 为 Linux 服务器发行版提供了一些可靠的选择，绝对值回票价。
>
>
>

![](/data/attachment/album/201901/29/215321bzhvvhpcpxxjpjuu.jpg)

啊，这个古老的问题：哪种 Linux 发行版最适合做服务器？通常，问这种问题时，所浮现出来的标准的答复就是：

* RHEL
* SUSE
* Ubuntu 服务器
* Debian
* CentOS

然而，假如你将眼界放得更宽（不将服务器只看做是 IDC 托管的那种互联网服务器时），可能答案会有点不同。我准备稍微来点不同的。我想做出一个满足入选标准的发行版列表，这些发行版不仅是优秀的候选者，而且易于使用，可以为你的业务中的许多功能提供服务。在某些情况下，我选择的是一些替代品，可以取代其它需要一些工作才能达成要求的操作系统。

我的一些选择是企业级服务器的社区版本，它们可以被视为购买更强大平台的入门级产品。你甚至可以在这里找到一两个作为特定任务平台的候选者。然而，最重要的是，你在此列表中找到的并非寻常的泛泛之辈。

### ClearOS

什么是 ClearOS？对于家庭和小型企业用途，你可能找不到比它更好的解决方案。ClearOS 开箱即用，包括了入侵检测、强大的防火墙、带宽管理工具、邮件服务器、域控制器等工具。其目的是将服务器作为一个简单的家庭和 SOHO 服务器，并具有用户友好的基于 Web 的图形化界面，这使得 ClearOS 在某些评比中脱颖而出。从其界面中，你可以找到一个应用程序市场（图 1），其中包含数百个应用程序（其中一些是免费的，而另一些则具有相关费用），这使得扩展 ClearOS 功能集非常容易。换句话说，你可以将 ClearOS 作为你的家庭和小型企业所需的平台。最重要的是，与许多其他替代方案不同，你只需支付所需的软件和支持。

![](/data/attachment/album/201901/29/215442ujojj2kwjzzkwjz7.jpg)

*图 1：ClearOS 应用程序市场*

有三种版本的 ClearOS：

* [ClearOS Community](https://www.clearos.com/clearfoundation/software/clearos-7-community) - 免费版 ClearOS
* [ClearOS Home](https://www.clearos.com/products/clearos-editions/clearos-7-home) - 适于家庭办公
* [ClearOS Business](https://www.clearos.com/products/clearos-editions/clearos-7-business) - 适于小型企业，包括了付费支持。

为了使软件安装更加容易，ClearOS 应用市场允许你通过以下方式进行选择软件：

 \* 按功能（根据任务显示应用程序） \* 按类别（显示相关应用程序组） \* 快速选择文件（允许你按预先配置的模板选择，以帮助你快速启动和运行）

换句话说，如果你正在寻找 Linux 的家庭、SOHO 或 SMB 服务器，ClearOS 是一个出色的选择（特别是如果你没有启动和运行标准的 Linux 服务器的能力时）。

### Fedora 服务器

你肯定听说过 Fedora Linux。它是市场上最好的前沿发行版之一。但是你知道这个出色的 Fedora 桌面发行版的开发者们也开发了服务器版吗？Fedora 服务器平台是一个短生命周期的、社区支持的服务器操作系统。这使得经验丰富的、或对任何类型的 Linux（或任何操作系统）有经验的系统管理员，可以使用开源社区中提供的最新技术。在这段描述中有三个关键词：

* 经验丰富
* 系统
* 管理员

换言之，新用户就不要考虑了。虽然 Fedora 服务器完全能够处理你抛出的任何任务，但它需要一些拥有更多的 Linux 功夫的人来使它工作并且运行良好。Fedora 服务器非常好的一点是，开箱即用，它包括了市场上用于服务器的开源的基于 Web 的最好的界面之一。通过 Cockpit（图 2），你可以快速浏览系统资源、日志、存储、网络以及拥有管理帐户、服务、应用程序和更新的能力。

![Fedora Server](/data/attachment/album/201901/29/215442ewegepwmjtnjn3e0.jpg "Fedora Server")

*图 2：运行在 Fedora 服务器上的 Cockpit*

如果你可以使用最前沿的软件，并想要一个出色的管理仪表板，Fedora 服务器可能就是你要的平台。

### NethServer

正如你所发现的那样，NethServer 是每个人都知道的简单 SMB Linux 服务器。通过 NethServer 的最新版本，你的小型企业将得到：

* 内置 Samba 活动目录控制器 \* 与 Nextcloud 的无缝集成 \* 证书管理 \* HTTPS 透明代理 \* 防火墙 \* 邮件服务器和过滤器 \* Web 服务器和过滤器 \* 群件 \* IPS / IDS 或 VPN

所有包含的功能都可以通过用户友好的基于 Web 的界面轻松配置，包括单击安装模块以扩展 NethServer 功能集（图 3）。NethServer 与 ClearOS 的区别在于它的设计目的是使管理工作更轻松。换句话说，这个平台提供了更多的灵活性和功能。与面向家庭办公室和 SOHO 部署的 ClearOS 不同，NethServer 在小型商业环境中用起来就像在家庭里使用一样方便。

![NethServer](/data/attachment/album/201901/29/215442ken5o46gwwaoargn.jpg "NethServer")

*图 3：给 NethServer 添加模块*

### Rockstor

Rockstor 是采用 Linux 和 Btfrs 的高级网络附加存储（NAS）和云存储服务器，可部署用于家庭、SOHO 以及中小型企业。借助 Rockstor，你可以获得一个完整的 NAS /云解决方案，其中包含一个用户友好的基于 Web 的 GUI 工具，管理员可以像普通用户一样轻松使用它来设置。一旦部署好了 Rockstor，你就可以创建存储池、共享、快照、管理复制和用户、共享文件（借助 Samba、NFS、SFTP 和 AFP），甚至扩展它的功能集，这要归功于附加组件（称为 Rock-ons）。Rock-ons 列表包括：

* CouchPotato（Usenet 和 BitTorrent 用户的下载器）
* Deluge（BitTorrent 用户的电影下载器）
* EmbyServer（Emby 媒体服务器）
* Ghost（专业博主的发布平台）
* GitLab CE（Git 仓库托管和协作）
* Gogs Go Git Service（轻量级 Git 版本控制服务器和前端）
* Headphones（NZB 和 Torrent 的音乐自动下载器）
* 用于 Squeezebox 设备的罗技 Squeezebox 服务器
* MariaDB（关系型数据管理系统）
* NZBGet（高效的 usenet 下载器）
* OwnCloud-Official（安全的文件共享和托管）
* Plexpy（基于 Python 的 Plex 用量跟踪器）
* Rocket.Chat（开源聊天平台）
* SaBnzbd（Usenet 下载器）
* Sickbeard（用于电视节目的互联网个人视频录像机）
* Sickrage（电视节目的自动视频库管理器）
* Sonarr（Usenet 和 BitTorrent 用户的个人视频录像机）
* Symform（备份设备）

Rockstor 还包括了一目了然的仪表板，使管理员可以快速访问他们所需的有关其服务器的所有信息（图 4）。

![Rockstor](/data/attachment/album/201901/29/215443i7gu77pgywfk77kz.jpg "Rockstor")

*图 4： Rockstor 面板*

### Zentyal

Zentyal 是另一个小型企业服务器，可以很好地处理多个任务。如果你正在寻找可以处理以下内容的 Linux 发行版：

* 目录和域服务器
* 邮件服务器
* 网关
* DHCP、DNS 和 NTP 服务器
* 认证机构（CA）
* VPN
* 实时消息（IM）
* FTP 服务器
* 反病毒
* SSO 认证
* 文件共享
* RADIUS 认证
* 虚拟化管理
* 等等

Zentyal 可能是你的新选择。从 2004 年 Zentyal 就存在了，它基于 Ubuntu Server，因此它拥有坚实的基础和丰富的应用程序。在 Zentyal 仪表板的帮助下（图 5），管理员可以轻松管理：

* 系统
* 网络
* 日志
* 软件更新和安装
* 用户/组
* 域
* 文件共享
* 邮件
* DNS
* 防火墙
* 证书
* 等等

![](/data/attachment/album/201901/29/215443dzq2xviwmn92q2u9.jpg)

*图 5：Zentyal 仪表板*

向 Zentyal 服务器添加新组件只需要打开仪表板，单击“软件管理” -> “Zentyal 组件”，选择要添加的组件，然后单击安装。Zentyal 可能会遇到的一个问题是，它提供不了与 Nethserver 和 ClearOS 一样多的插件。但它提供的服务，则做得非常好。

### 更多来自于

这个 Linux 服务器列表显然不是详尽无遗的。然而，这是一种对你可能没有听说过的五大服务器发行版的独特视角。当然，如果你更愿意使用更传统的 Linux 服务器发行版，你可以随时坚持使用 [CentOS](https://www.centos.org/)、[Ubuntu 服务器](https://www.ubuntu.com/download/server)、[SUSE](https://www.suse.com/)、[RHEL](https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux) 或 [Debian](https://www.debian.org/)……它们大多都出现在市场上最好的服务器发行版列表中。但是，如果你正在寻找一些不同的东西，那么试试这五个发行版中的一个。

通过 Linux 基金会和 edX 的免费[“Linux 简介”](https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux)课程了解有关 Linux 的更多信息。

---

via: <https://www.linux.com/blog/learn/2019/1/top-5-linux-server-distributions>

作者：[Jack Wallen](https://www.linux.com/users/jlwallen) 选题：[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/) 荣誉推出


如何开源你的 Python 库

Summary: 这 12 个步骤能确保成功发布。

这 12 个步骤能确保成功发布。

>
> 这 12 个步骤能确保成功发布。
>
>
>

![](/data/attachment/album/201901/30/175230y0spgkegsuu01uwi.jpg)

你写了一个 Python 库。自己觉着这太棒了！如果让人们能够轻松使用它不是很优雅么？这有一个需要考虑的清单，以及在开源 Python 库时要采取的具体步骤。

### 1、源码

将代码放在 [GitHub](https://github.com/) 上，这里有很多开源项目，并且人们很容易提交拉取请求。

### 2、许可证

选择一个开源许可证。一般来说 [MIT 许可证](https://en.wikipedia.org/wiki/MIT_License)是一个挺好的宽容许可证。如果你有特定要求，Creative Common 的[选择许可证](https://choosealicense.com/)可以指导你完成其它选择。最重要的是，在选择许可证时要记住三条规则：

* 不要创建自己的许可证。
* 不要创建自己的许可证。
* 不要创建自己的许可证。

### 3、README

将一个名为 `README.rst` 的文件（使用 ReStructured Text 格式化）放在项目树的顶层。

GitHub 将像 Markdown 一样渲染 ReStructured Text，而 ReST 在 Python 的文档生态系统中的表现更好。

### 4、测试

写测试。这对你来说没有用处。但对于想要编写避免破坏相关功能的补丁的人来说，它非常有用。

测试可帮助协作者进行协作。

通常情况下，如果可以用 [pytest](https://docs.pytest.org/en/latest/) 运行就最好了。还有其他测试工具 —— 但很少有理由去使用它们。

### 5、样式

使用 linter 制定样式：PyLint、Flake8 或者带上 `--check` 的 Black 。除非你使用 Black，否则请确保在一个文件中指定配置选项，并签入到版本控制系统中。

### 6、API 文档

使用 docstrings 来记录模块、函数、类和方法。

你可以使用几种样式。我更喜欢 [Google 风格的 docstrings](https://github.com/google/styleguide/blob/gh-pages/pyguide.md)，但 [ReST docstrings](https://www.python.org/dev/peps/pep-0287/) 也是一种选择。

Sphinx 可以同时处理 Google 风格和 ReST 的 docstrings，以将零散的文档集成为 API 文档。

### 7、零散文档

使用 [Sphinx](http://www.sphinx-doc.org/en/master/)。（阅读[我们这篇文章](https://opensource.com/article/18/11/building-custom-workflows-sphinx)。）教程很有用，但同样重要的是要指明这是什么、它有什么好处、它有什么坏处、以及任何特殊的考虑因素。

### 8、构建

使用 tox 或 nox 自动运行测试和 linter，并构建文档。这些工具支持“依赖矩阵”。这些矩阵往往会快速增长，但你可以尝试针对合理的样本进行测试，例如 Python 版本、依赖项版本以及可能安装的可选依赖项。

### 9、打包

使用 [setuptools](https://pypi.org/project/setuptools/) 工具。写一个 `setup.py` 和一个 `setup.cfg`。如果同时支持 Python 2 和 3，请在 `setup.cfg` 中指定 universal 格式的 wheel。

tox 或 nox 应该做的一件事是构建 wheel 并对已安装的 wheel 进行测试。

避免使用 C 扩展。如果出于性能或绑定的原因一定需要它们，请将它们放在单独的包中。正确打包 C 扩展可以写一篇新的文章。这里有很多问题！

### 10、持续集成

使用公共持续工具。[TravisCI](https://travis-ci.org/) 和 [CircleCI](https://circleci.com/) 为开源项目提供免费套餐。将 GitHub 或其他仓库配置为在合并拉请求之前需要先通过检查，那么你就不必担心在代码评审中告知用户修复测试或样式。

### 11、版本

使用 [SemVer](https://semver.org/) 或 [CalVer](https://calver.org/)。有许多工具可以帮助你管理版本：[incremental](https://pypi.org/project/incremental/)、[bumpversion](https://pypi.org/project/bumpversion/) 和 [setuptools\_scm](https://pypi.org/project/setuptools_scm/) 等都是 PyPI 上的包，都可以帮助你管理版本。

### 12、发布

通过运行 tox 或 nox 并使用 twine 将文件上传到 PyPI 上发布。你可以通过在 [DevPI](https://opensource.com/article/18/7/setting-devpi) 中“测试上传”。

---

via: <https://opensource.com/article/18/12/tips-open-sourcing-python-libraries>

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


5 款开源的 Linux 策略模拟游戏

Summary: 用这些开源游戏来挑战你的战略技能，探索新世界。

用这些开源游戏来挑战你的战略技能，探索新世界。

>
> 用这些开源游戏来挑战你的战略技能，探索新世界。
>
>
>

![](/data/attachment/album/201901/30/184016b3w65xynxxzxx63r.jpg)

长久以来，游戏都是 Linux 的软肋。近些年，Steam、GOG 等游戏发布平台上不少商业游戏都开始支持 Linux，这对于 Linux 的游戏生态来说是件好事，但是我们能在这些平台上玩到的游戏通常是不开源的商业作品。当然，这些游戏在一个开源的操作系统上运行，但对于一个开源提倡者来说这似乎还不够纯粹。

那么，我们能找到既自由开源又能给玩家带来完整游戏体验的优质游戏吗？当然！虽然绝大多数的开源游戏很难和 3A 商业游戏大作竞争，但仍然有不少各种类型的开源游戏，不仅内容有趣而且直接可以通过几大 Linux 发行版本库中直接安装。就算某个游戏在不在某个发行版本的库中，我们也可以在这个游戏项目的网站上找到直接的安装方法。

本篇文章将会介绍策略和模拟类游戏。我已经写了[街机游戏](/article-10433-1.html)、[桌面卡牌游戏](https://opensource.com/article/18/3/card-board-games-linux)、[解谜游戏](https://opensource.com/article/18/6/puzzle-games-linux)、[竞速飞行游戏](https://opensource.com/article/18/7/racing-flying-games-linux)以及[角色扮演游戏](https://opensource.com/article/18/8/role-playing-games-linux)。

### 开源版“文明”（Freeciv）

![](/data/attachment/album/201901/30/184017ov8f411wwciilwac.png)

[Freeciv](http://www.freeciv.org/) 可以被视为是[文明系列](https://en.wikipedia.org/wiki/Civilization_(series))游戏的开源版本。游戏玩法和文明系列最早期的游戏十分类似，Freeciv 可以让玩家选择选用文明 1 或者文明 2 中的游戏规则设置。Freeciv 中包含了很多元素，例如建造城市、探索世界地图、发展科技以及和其他扩张中的文明竞争。胜利条件包括打败所有其他的文明或建立一个外星殖民地，如果在前两者都没有达成的话，在游戏时间期限前存活下来也可以算作胜利。这个游戏可以和其他玩家联机也可以和 AI 对战，不同的地图集可以改变游戏的外观。

安装 Freeciv，你只需要在终端下运行以下指令。

* Fedora 用户： `dnf install freeciv`
* Debian/Ubuntu 用户：`apt install freeciv`

### MegaGlest

![](/data/attachment/album/201901/30/184504krxzf111orxo1ogj.jpg)

[MegaGlest](https://megaglest.org/) 是一个开源的实时战略游戏，类似暴雪公司制作的游戏[魔兽世界](https://en.wikipedia.org/wiki/Warcraft)和[星际争霸](https://en.wikipedia.org/wiki/StarCraft)。玩家控制不同派别的人员、建造新建筑、招募士兵、拓展领土并与敌人作战。在游戏比赛的最开始，玩家仅能建造最基础的建筑和招募最基础的士兵。为了建造更高级的建筑并招募级别更高的人员，玩家必须通过增加建筑和人员从而一路提高科技树、解锁更加高级的选项。当敌人进入国土领域之中，战斗单元将会迎战。但是最好的应对策略是，通过控制战斗单元直接操控每一场战斗。在管理新建筑的建立，新人员的招募的同时控制战斗局势听上去十分困难，但是这就是 RTS（实时战略游戏）游戏的精华所在。MegaGlest 这个游戏提供了大量的人员派别，玩家可以不断尝试这些不同的技巧。

安装 MegaGlest，你只需要在终端下运行以下指令：

* Fedora 用户： `dnf install megaglest`
* Debian/Ubuntu 用户：`apt install megaglest`

### 开源版“运输大亨”（OpenTTD）

![](/data/attachment/album/201901/30/184534mugguh5ut4ftm55q.jpg)

[OpenTTD](https://www.openttd.org/)（见我们的 [评测](https://opensource.com/life/15/7/linux-game-review-openttd) ）是一个开源实现的 [运输大亨](https://en.wikipedia.org/wiki/Transport_Tycoon#Transport_Tycoon_Deluxe) 。该游戏的目的在于创建一个交通运输网络并获得金钱，从而建立更加复杂的运输网络。这个运输网络包括了船只、巴士、火车、货车和飞机。默认的游戏时间在 1950 和 2050 之间，玩家的目标就是在规定时间内拿到最高的游戏分数。游戏的最终分数基于很多因素，例如货物运输的数量、玩家所拥有的汽车数量以及他们赚到的钱。

安装 OpenTTD，你只需要在终端运行以下指令：

* Fedora 用户： `dnf install openttd`
* Debian/Ubuntu 用户 `apt install openttd`

### <ruby> 韦诺之战 <rt>  The Battle for Wesnoth </rt></ruby>

![](/data/attachment/album/201901/30/184555zml598m9uvzol75c.jpg)

[韦诺之战](https://www.wesnoth.org/) 是目前最完善的开源游戏之一。这个回合制游戏在一个奇幻的故事设定下。游戏在一个六角形网格中进行，各个单元可以互相操作进行战斗。每个类型的单元都有它独特的能力和弱点，因此玩家需要根据这些特点来设计不同的行动。韦诺之战中有很多不同的行动分支，每个行动分支都有它特别的故事线和目标。韦诺之战同时也有一个地图编辑器，感兴趣的玩家可以创作自己的地图以及行动分支。

安装韦诺之战，你只需要在终端运行以下指令：

* Fedora 用户： `dnf install wesnoth`
* Debian/Ubuntu 用户： `apt install wesnoth`

### <ruby> UFO：外星入侵 <rt>  UFO: Alien Invasion </rt></ruby>

![](/data/attachment/album/201901/30/184607d4z0k0di0kssz3lz.jpg)

[UFO: Alien Invasion](https://ufoai.org/) 是一个开源策略游戏，基于 <ruby> <a href="https://en.wikipedia.org/wiki/X-COM">  幽浮系列 </a> <rt>  X-COM </rt></ruby>。 有两个不同的游戏模式： geoscape 和 tactical。在 geoscape 模式下，玩家控制大局、管理基地、开发新技术以及掌控整体策略。 在 tactical 游戏模式下，玩家控制一群士兵并且以回合制的形式直接迎战外星侵略者。两个游戏模式提供了不同的游戏玩法，两者都需要相当复杂的策略和战术。

安装这个游戏，你只需要在终端下运行以下指令：

* Debian/Ubuntu 用户： `apt install ufoai`

遗憾的是，UFO: 外星入寝不支持 Fedora 发行版。

如果你知道除了这些以外的开源策略模拟游戏的话，欢迎在评论中分享。

---

via: <https://opensource.com/article/18/8/strategy-simulation-games-linux>

作者：[Joshua Allen Holm](https://opensource.com/users/holmja) 选题：[lujun9972](https://github.com/lujun9972) 译者：[Scoutydren](https://github.com/Scoutydren) 校对：[wxy](https://github.com/wxy)

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


开始使用 Isotope 吧，一款开源的 Web 邮件客户端

>
> 使用轻量级的电子邮件客户端 Isotope 阅读富文本电子邮件，这个开源工具系列的第十一个工具将使你在 2019 年更高效。
>
>
>

![](/data/attachment/album/201901/31/214235lx1d0660ff18h0d0.jpg)

在每年的年初，似乎都有一股疯狂的寻找提高工作效率方法的冲动。新年决心，渴望以正确的方式开始新的一年。当然，“旧不去的，新的不来”的态度都会导致这种情况。一般的建议都偏向于闭源和专有软件，然而并不是必须这样。

以下是我挑选的 19 个新的（或者对你来说是新的）开源工具中的第 11 个，它将帮助你在 2019 年提高工作效率。

### Isotope

正如我们在[本系列的第四篇文章](https://opensource.com/article/19/1/productivity-tool-cypht-email)（Cypht）中所讨论的那样，我们花了很多时间来处理电子邮件。有很多方法可以解决它，我已经花了很多时间来寻找最适合我的电子邮件客户端。我认为这是一个重要的区别：对我有效的方法并不总是对其它人有效。有时对我有用的是像 [Thunderbird](https://www.thunderbird.net/) 这样的完整客户端，有时是像 [Mutt](http://www.mutt.org/) 这样的控制台客户端，有时是像 [Gmail](https://mail.google.com/) 和 [RoundCube](https://roundcube.net/) 这样基于 Web 的界面。

![](/data/attachment/album/201901/31/214238mg46e6g99es0dsyn.png)

[Isotope](https://blog.marcnuri.com/isotope-mail-client-introduction/) 是一个本地托管的、基于 Web 的电子邮件客户端。它非常轻巧，只使用 IMAP 协议，占用的磁盘空间非常小。与 Cypht 不同，Isotope 具有完整的 HTML 邮件支持，这意味着显示富文本电子邮件没有问题。

![](/data/attachment/album/201901/31/214241qdgj94aqp4mg35ds.png)

如果你安装了 [Docker](https://www.docker.com/)，那么安装 Isotope 非常容易。你只需将文档中的命令复制到控制台中，然后按下回车键。在浏览器中输入 `localhost` 来访问 Isotope 登录界面，输入你的 IMAP 服务器，登录名和密码将打开收件箱视图。

![](/data/attachment/album/201901/31/214241k2xf8o7fzqxqfzrv.png)

在这一点上，Isotope 的功能和你想象的差不多。单击消息进行查看，单击铅笔图标以创建新邮件等。你会注意到用户界面（UI）非常简单，没有“移动到文件夹”、“复制到文件夹”和“存档”等常规按钮。你可以通过拖动来移动消息，因此其实你并不太需要这些按钮。

![](/data/attachment/album/201901/31/214243mzh3h2udgggs3gz2.png)

总的来说，Isotope 干净、速度快、工作得非常好。更棒的是，它正在积极开发中（最近一次的提交是在我撰写本文的两小时之前），所以它正在不断得到改进。你可以查看代码并在 [GitHub](https://github.com/manusa/isotope-mail) 上为它做出贡献。

---

via: <https://opensource.com/article/19/1/productivity-tool-isotope>

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


在 Linux 命令行中规划你的假期日历

Summary: 将命令链接在一起，构建一个彩色日历，然后在暴风雪中将其拂去。

将命令链接在一起，构建一个彩色日历，然后在暴风雪中将其拂去。

>
> 将命令链接在一起，构建一个彩色日历，然后在暴风雪中将其拂去。
>
>
>

![](/data/attachment/album/201901/31/215315p9m5ohpmdzrczbf1.png)

欢迎阅读今天推出的 Linux 命令行玩具降临日历。如果这是你第一次访问本系列，你可能会问：什么是命令行玩具。即使我不太确定，但一般来说，它可以是一个游戏或任何简单的娱乐，可以帮助你在终端玩得开心。

很可能你们中的一些人之前已经看过我们日历上的各种选择，但我们希望给每个人至少一件新东西。

我们在没有创建实际日历的情况下完成了本系列的第 7 天，所以今天让我们使用命令行工具来做到这一点：`cal`。就其本身而言，`cal` 可能不是最令人惊奇的工具，但我们可以使用其它一些实用程序来为它增添一些趣味。

很可能，你的系统上已经安装了 `cal`。要使用它，只需要输入 `cal` 即可。

```
$ cal
    December 2018
Su Mo Tu We Th Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
```

我们不打算在本文中深入介绍高级用法，因此如果你想了解有关 `cal` 的更多信息，查看 Opensouce.com 社区版主 Don Watkin 的优秀文章 [date 和 cal 命令概述](https://opensource.com/article/16/12/using-calendar-function-linux)。

现在，让我们用一个漂亮的盒子来为它增添趣味，就像我们在上一篇 Linux 玩具文章中介绍的那样。我将使用钻石块，用一点内边距来对齐。

```
$ cal | boxes -d diamonds -p a1l4t2
       /\          /\          /\
    /\//\\/\    /\//\\/\    /\//\\/\
 /\//\\\///\\/\//\\\///\\/\//\\\///\\/\
//\\\//\/\\///\\\//\/\\///\\\//\/\\///\\
\\//\/                            \/\\//
 \/                                  \/
 /\           December 2018          /\
//\\      Su Mo Tu We Th Fr Sa      //\\
\\//                         1      \\//
 \/        2  3  4  5  6  7  8       \/
 /\        9 10 11 12 13 14 15       /\
//\\      16 17 18 19 20 21 22      //\\
\\//      23 24 25 26 27 28 29      \\//
 \/       30 31                      \/
 /\                                  /\
//\\/\                            /\//\\
\\///\\/\//\\\///\\/\//\\\///\\/\//\\\//
 \/\\///\\\//\/\\///\\\//\/\\///\\\//\/
    \/\\//\/    \/\\//\/    \/\\//\/
       \/          \/          \/
```

看起来很不错，但是为了更规整，让我们把整个东西放到另一个盒子里，为了好玩，这次我们将使用卷轴式设计。

```
cal | boxes -d diamonds -p a1t2l3 | boxes -a c -d scroll
 / ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \
|  /~~\                                              /~~\  |
|\ \   |         /\          /\          /\         |   / /|
| \   /|      /\//\\/\    /\//\\/\    /\//\\/\      |\   / |
|  ~~  |   /\//\\\///\\/\//\\\///\\/\//\\\///\\/\   |  ~~  |
|      |  //\\\//\/\\///\\\//\/\\///\\\//\/\\///\\  |      |
|      |  \\//\/                            \/\\//  |      |
|      |   \/                                  \/   |      |
|      |   /\          December 2018           /\   |      |
|      |  //\\     Su Mo Tu We Th Fr Sa       //\\  |      |
|      |  \\//                        1       \\//  |      |
|      |   \/       2  3  4  5  6  7  8        \/   |      |
|      |   /\       9 10 11 12 13 14 15        /\   |      |
|      |  //\\     16 17 18 19 20 21 22       //\\  |      |
|      |  \\//     23 24 25 26 27 28 29       \\//  |      |
|      |   \/      30 31                       \/   |      |
|      |   /\                                  /\   |      |
|      |  //\\/\                            /\//\\  |      |
|      |  \\///\\/\//\\\///\\/\//\\\///\\/\//\\\//  |      |
|      |   \/\\///\\\//\/\\///\\\//\/\\///\\\//\/   |      |
|      |      \/\\//\/    \/\\//\/    \/\\//\/      |      |
|      |         \/          \/          \/         |      |
|      |                                            |      |
 \     |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|     /
  \   /                                              \   /
   ~~~                                                ~~~
```

完美。现在，这事有点小激动了。我喜欢我们的设计，但我想更妙一些，所以我要给它上色。但是 Opensource.com 员工所在的北卡罗来版纳州罗利办公室，本周末很有可能下雪。所以，让我们享受彩色降临日历，然后用雪擦掉它。

关于雪，我抓取了一些 Bash 和 Gawk 的漂亮[代码片段](http://climagic.org/coolstuff/let-it-snow.html)，幸亏我发现了 CLIMagic。如果你不熟悉 CLIMagic，去查看他们的[网站](http://climagic.org/)，在 [Twitter](https://twitter.com/climagic) 上关注他们。你会满意的。

我们开始吧。让我们清除屏幕，扔掉四四方方的日历，给它上色，等几秒钟，然后用暴风雪把它吹走。这些在终端可以用一行命令完成。

```
$ clear;cal|boxes -d diamonds -p a1t2l3|boxes -a c -d scroll|lolcat;sleep 3;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf "\u2744\n");sleep 0.1;done|gawk '{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf "\033[%s;%sH ",o,x;printf "\033[%s;%sH%s \033[0;0H",a[x],x,$4;}}'
```

大功告成。

![](/data/attachment/album/201901/31/215335x0lh9z90nr9hyr9n.gif)

要使它在你的系统上工作，你需要所有它引用的实用程序（`box`、`lolcat`、`gawk` 等），还需要使用支持 Unicode 的终端仿真器。

你有特别喜欢的命令行小玩具需要我介绍的吗？这个系列要介绍的小玩具大部分已经有了落实，但还预留了几个空位置。请在评论区留言，我会查看的。如果还有空位置，我会考虑介绍它的。如果没有，但如果我得到了一些很好的意见，我会在最后做一些有价值的提及。

看看昨天的玩具：[使用 Nyan Cat 在 Linux 命令行休息](https://opensource.com/article/18/12/linux-toy-nyancat)。记得明天再来！

---

via: <https://opensource.com/article/18/12/linux-toy-cal>

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


快速开发游戏的十个关键

![](/data/attachment/album/201901/31/232811ii06eflwif0u6lm9.png)

十月初，由 Opensource.com 赞助的首届 [Open Jam](https://itch.io/jam/open-jam-1) 吸引了来自世界各地的团队的 45 个参赛项目。这些队伍只用了三天时间就用开源软件制作出一个游戏来参与角逐，[有三支队伍取得了胜利](https://opensource.com/article/17/11/open-jam)。

我们在我们的大学为每一位愿意参与的人举办了我们自己的 Open Jam 活动。我们预留了周末的计算机实验室，并教大家使用开源软件来创建游戏和游戏素材：游戏引擎：[Godot](https://godotengine.org/)、音乐：[LMMS](https://lmms.io/)、2D 素材：[GIMP](https://www.gimp.org/)、3D 素材：[Blender](https://www.blender.org/)。我们的活动产出了三个游戏：[Loathsome](https://astropippin.itch.io/loathsome)、[Lost Artist](https://masonraus.itch.io/lost-artist) 和 [Paint Rider](https://figytuna.itch.io/paint-rider)（我做的）。

根据我在游戏开发和游戏开发方面的经验，这里有 10 条关于游戏引擎、编码和快速游戏开发的经验教训。

### 1、限定规模

很容易想要去做一个规模宏大的冒险游戏或者可以比拟你最喜欢的游戏的东西。如果你有一些经验，追求超乎游戏 Jam 活动的东西可能很酷，但不要高估自己拥有的时间。我欣赏游戏 Jam 活动的一点是它强制你快速将一个游戏从概念阶段变成最终产品，因为你的时间非常有限。这也就是限定规模如此重要的原因。

这个 Open Jam 的主题是“留下痕迹”，题目一出来，我和朋友就开始讨论什么样的游戏适合该主题。一个想法就是做玩家能在敌人身上留下伤痕的 3D 拳击游戏。我几乎没有做 3D 游戏的经验，我想做好的话，在我甚至还没发掘出可玩性之前，就得花太多时间在学习如何让痕迹合理和打击有效。

### 2、尽早可玩

这是我对游戏 Jam 活动最中肯的建议。试着做出核心机制，快速写出代码，这样你就可以测试并决定它是否值得做成一个完整的游戏。不应该只剩几个小时截止了，你的游戏才可玩。像 Open Jam 这样的三天的活动，不应该花费几个小时以上来做一个可以运行的演示。

### 3、保持简单

你想加入的每个特性都会延长整个开发时间。因为你不能迅速使之运行，所以无从得知提交一个新特性是否会消耗大量时间。街机风格的高分作品往往会在游戏 Jam 活动中表现良好，它们天生就很简单。一旦核心部分完成，你可以开始加入特性并润色，无需担心最后游戏是否功能正常。

### 4、从其他游戏获取灵感

可能你想做出完全原创的作品，但有个可以基于它开发的原型极其有用。这将节省重复劳动的时间，因为你已经知道什么有趣。告诉自己实践的经验越多，越容易做出包含自己想法的大型游戏，所以你也能从再创作其他人的作品中得到很好地练习。

考虑到 Open Jam 的“留下痕迹”主题，我觉得创作一个玩的时候可以留下颜料痕迹的游戏会很有趣，这样也可以看到你留下的标记。我记得有款老式动画游戏 [Line Rider 2 Beta](http://www.andkon.com/arcade/racing/lineriderbeta2/) （后来叫 Paint Rider），而且知道玩的时候按住 Control 键可以画出痕迹的彩蛋。我简化了这个概念，甚至只需要一个按键来垂直移动。（更像老式飞机游戏）。进入到 Jam 活动大概一两个小时后，我就有了基本模型，可以用一个按钮上下移动和留下小黑圈的痕迹。

### 5、不要忽视可得性

确保尽可能多的人能玩你的游戏。某个提交到 Open Jam 的游戏是虚拟现实游戏。尽管那很酷，但几乎没有人可以玩，因为拥有 VR 设备的人不多。所幸它的开发者并不期望取得好名次，只是想练手。但如果你想和人们分享你的游戏（或者赢得游戏 Jam 活动），注意可得性是很重要的。

Godot （和其他大多数游戏引擎）允许你在所有主流平台发布游戏。提交游戏时，特别是在 [Itch.io](https://itch.io/)，有个浏览器版本就可以支持大多数人玩。但尽你所能去发布在更多的平台和操作系统上。我甚至试着在移动端发布 Paint Rider，但技术有限。

### 6、不要做得太难

如果游戏需要花费过多精力去学或者玩，你将失去一部分玩家。要保持简单和限定规模，这在游戏计划阶段非常重要。再次重申，想出一个需要花上十天半个月开发的宏大的游戏创意很容易；难的是做出好玩、简单的游戏。

给我的妈妈介绍了 Paint Rider 之后，她很快开始玩起来，我认为不需要跟她说明更多。

### 7、不用太整洁

如果你习惯于花时间在设计模式上和确保代码可复用、可适应，试着放松一点。如果你花太多时间考虑设计，当你最后到了可以玩游戏的时候，你可能发现游戏不是很有趣，那时候就来不及修改了。

这过程也适用于简化更严格的游戏：快速码出验证概念性展示模型，直到找出值得做成完整游戏的，然后你可以潜心建立完美的代码来支持它。为游戏 Jame 活动创作的游戏就像是个快速开发一个可验证的模型一样。

### 8、但也不要太随意

另一方面， [意大利面式代码](https://en.wikipedia.org/wiki/Spaghetti_code) 容易失控，即使游戏开发没有大量代码。还好大多是游戏引擎都考虑到了设计模式。就拿 Godot 的[信号](http://kidscancode.org/blog/2017/03/godot_101_07/) 功能来说，节点可以发送数据信息给它们“连上了”的节点 —— 这是你的设计自动成型的[观察者模式](https://en.wikipedia.org/wiki/Observer_pattern)。只要你知道如何利用这种游戏引擎的特性的优势，就可以快速写代码，你的代码也不会特别难读。

### 9、取得反馈

向人们展示你正在做的。让他们试一试并看看他们说些啥。看看他们如何玩你的游戏，找找他们有没有发现你预料之外的事。如果游戏 Jam 活动有 [Discord](https://discordapp.com/) 频道或者类似的，把你的游戏放上去，人们会反馈给你想法。Paint Rider 的一个确定的功能是画布循环，所以你可以看到之前留下来的画。在有人问我为什么这个游戏没有之前，我甚至没有考虑那个机制。

团队协作的话，确保有可以传递周围反馈的人参与这个开发。

而且不要忘了用相同的方式帮助其他人；如果你在玩其他人游戏的时候发现了有助于你游戏的东西，这就是双赢。

### 10、哪里找资源

做出所有你自己的资源真的会拖你后腿。Open Jam 期间，当我忙于组装新特性和修漏洞时，我注意到 Loathsome 的开发者花了大量时间在绘制主要角色上。你可以简化游戏的艺术风格创作并且用一些视听效果尚可的东西，但这里还有其他选择。试着寻找 [Creative Commons](https://creativecommons.org/) 许可的或免费音乐站点（比如 [Anttis Instrumentals](http://www.soundclick.com/bands/default.cfm?bandID=1277008)）的资源。或者，可行的话，组建一个有专门艺术家、作家或者音乐家的团队。

其他你可能觉得有用的软件有 [Krita](https://krita.org/en/)，这是一款适合数字绘画的开源 2D 图像生成软件，特别是如果你有一块绘图板的话；还有 [sfxr](http://www.drpetter.se/project_sfxr.html)，这是一款游戏音效生成软件，很多参数可以调，但正如它的开发者所说：“它的基本用法包括了按下随机按钮。”（Paint Rider 的所有音效都是用 Sfxr 做的。）你也可以试试 [Calinou](https://notabug.org/Calinou/awesome-gamedev/src/master/README.md) 的众多但有序的开源游戏开发软件列表。

你参加 Open Jam 或者其他游戏 Jam 并有别的建议吗？对我未提及的有问题吗？有的话，请在评论中分享。

---

via: <https://opensource.com/article/17/12/10-keys-rapid-open-source-game-development>

作者：[Ryan Estes](https://opensource.com/users/figytuna) 译者：[XYenChi](https://github.com/XYenChi) 校对：[wxy](https://github.com/wxy)

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


五大最流行的配置管理工具

Summary: 了解一下配置管理工具，以找出哪个最适合你的 DevOps 组织。

了解一下配置管理工具，以找出哪个最适合你的 DevOps 组织。

>
> 了解一下配置管理工具，以找出哪个最适合你的 DevOps 组织。
>
>
>

![](/data/attachment/album/201902/01/175302l6s6mawkikjtwuj9.png)

DevOps 正因为有提高产品质量、缩短产品开发时间等优势，目前备受业界关注，同时也在长足发展当中。

[DevOps 的核心价值观](https://www.oreilly.com/learning/why-use-terraform)是<ruby> 团队文化 <rt>  Culture </rt></ruby>、<ruby> 自动化 <rt>  Automation </rt></ruby>、<ruby> 评估 <rt>  Measurement </rt></ruby>和<ruby> 分享 <rt>  Sharing </rt></ruby>（CAMS），同时，团队对 DevOps 的执行力也是 DevOps 能否成功的重要因素。

* **团队文化**让大家团结一致；
* **自动化**是 DevOps 的基础；
* **评估**保证了及时的改进；
* **分享**让 CAMS 成为一个完整的循环过程。

DevOps 的另一个思想是任何东西，包括服务器、数据库、网络、日志文件、应用配置、文档、自动化测试、部署流程等，都可以通过代码来管理。

在本文中，我主要介绍配置管理的自动化。配置管理工具作为[<ruby> 基础架构即代码 <rt>  Infrastructure as Code </rt></ruby>](https://www.oreilly.com/library/view/infrastructure-as-code/9781491924334/ch04.html)（IaC）的一部分，支持使用经过测试和验证的软件开发实践，通过明文定义文件管理和配置数据中心。

DevOps 团队只需要通过操作简单的配置文件，就可以实现应用开发中包括版本控制、测试、小型部署、设计模式在内的这些最佳实践。总而言之，配置管理工具实现了通过编写代码来使基础架构的配置和管理变得自动化。

### 为什么要使用配置管理工具？

配置管理工具可以提高应用部署和变更的效率，还可以让这些流程变得可重用、可扩展、可预测，甚至让它们维持在期望的状态，从而让资产的可控性提高。

使用配置管理工具的优势还包括：

* 让代码遵守编码规范，提高代码可读性；
* 具有<ruby> 幂等性 <rt>  Idempotency </rt></ruby>，也就是说，无论执行多少次重复的配置管理操作，得到的结果都是一致的；
* 分布式的设计可以方便地管理大量的远程服务器。

配置管理工具主要分为<ruby> 拉取 <rt>  pull </rt></ruby>模式和<ruby> 推送 <rt>  push </rt></ruby>模式。拉取模式是指安装在各台服务器上的<ruby> 代理 <rt>  agent </rt></ruby>定期从<ruby> 中央存储库 <rt>  central repository </rt></ruby>拉取最新的配置并应用到对应的服务器上；而推送模式则由<ruby> 中央服务器 <rt>  central server </rt></ruby>的中央服务器会触发其它受管服务器的更新。

### 五大最流行的配置管理工具

目前配置管理工具有很多，不同的配置管理工具都有自己最适合的使用场景。而对于下面五个我按照字母顺序列出的配置管理工具，都对 DevOps 有明显的帮助：全都具有开源许可证、使用外部配置文件、支持无人值守运行、可以通过脚本自定义运行。下面对它们的介绍都来源于它们的软件库和官网内容。

#### Ansible

“Ansible 是一个极其简洁的 IT 自动化平台，可以让你的应用和系统以更简单的方式部署。不需要安装任何代理，只需要使用 SSH 的方式和简单的语言，就可以免去脚本或代码部署应用的过程。”——[GitHub Ansible 代码库](https://github.com/ansible/ansible)

* [官网](https://www.ansible.com/)
* [文档](https://docs.ansible.com/ansible/)
* [社区](https://www.ansible.com/community)

Ansible 是我最喜欢的工具之一，我在几年前就开始使用了。你可以使用 Ansible 在命令行中让多个服务器执行同一个命令，也可以使用 YAML 格式的<ruby> 剧本 <rt>  playbook </rt></ruby>来让它自动执行特定的操作，这促进了技术团队和非技术团队之间的沟通。简洁、无代理、配置文件对非技术人员友好是它的几个主要优点。

由于 Ansible 不需要代理，因此对服务器的资源消耗会很少。Ansible 默认使用的推送模式需要借助 SSH 连接，但 Ansible 也支持拉取模式。[剧本](https://opensource.com/article/18/8/ansible-playbooks-you-should-try) 可以使用最少的命令集编写，当然也可以扩展为更加精细的自动化任务，包括引入角色、变量和其它人写的模块。

你可以将 Ansible 和其它工具（包括 Ansible Works、Jenkins、RunDeck、[ARA](https://github.com/openstack/ara) 等）结合起来使用，因为这些工具 [提供了运行剧本时的可追溯性](https://opensource.com/article/18/5/analyzing-ansible-runs-using-ara)，这样就可以创建控制流程的中央控制台。

### CFEngine

“CFEngine 3 是一个流行的开源配置管理系统，它主要用于为大规模的系统提供自动化配置和维护。”——[GitHub CFEngine 代码库](https://github.com/cfengine/core)

* [官网](https://cfengine.com/)
* [文档](https://docs.cfengine.com/docs/3.12/)
* [社区](https://cfengine.com/community/)

CFEngine 最早在 1993 年由 Mark Burgess 作为自动配置管理的科学方法提出，目的是降低计算机系统配置中的熵，最终收敛到期望的配置状态，同时还阐述了幂等性是让系统达到期望状态的能力。Burgess 在 2004 年又提出了<ruby> <a href="https://en.wikipedia.org/wiki/Promise_theory">  承诺理论 </a> <rt>  Promise Theory </rt></ruby>，这个理论描述了代理之间自发合作的模型。

CFEngine 的最新版本已经用到了承诺理论，在各个服务器上的代理程序会从中央存储库拉取配置。CFEngine 的配置对专业技能要求较高，因此它比较适合技术团队使用。

### Chef

“为整个基础架构在配置管理上带来便利的一个系统集成框架。”——[GitHub Chef 代码库](https://github.com/chef/chef)

* [官网](http://www.chef.io/chef/)
* [文档](https://docs.chef.io/)
* [社区](https://www.chef.io/community/)

Chef 通过由 Ruby 编写的“<ruby> 菜谱 <rt>  recipe </rt></ruby>”来让你的基础架构保持在最新、最兼容的状态，这些“菜谱”描述了一系列应处于某种状态的资源。Chef 既可以通过客户端-服务端的模式运行，也可以在 [chef-solo](https://docs.chef.io/chef_solo.html) 这种独立配置的模式下运行。大部分云提供商都很好地集成了 Chef，因此可以使用它为新机器做自动配置。

Chef 有广泛的用户基础，同时也提供了完备的工具包，让不同技术背景的团队可以通过“菜谱”进行沟通。尽管如此，它仍然算是一个技术导向的工具。

### Puppet

“Puppet 是一个可以在 Linux、Unix 和 Windows 系统上运行的自动化管理引擎，它可以根据集中的规范来执行诸如添加用户、安装软件包、更新服务器配置等等管理任务。”——[GitHub Puppet 代码库](https://github.com/puppetlabs/puppet)

* [官网](https://puppet.com/)
* [文档](https://puppet.com/docs)
* [社区](https://puppet.com/community)

Puppet 作为一款面向运维工程师和系统管理员的工具，在更多情况下是作为配置管理工具来使用。它通过客户端-服务端的模式工作，使用代理从主服务器获取配置指令。

Puppet 使用<ruby> 声明式语言 <rt>  declarative language </rt></ruby>或 Ruby 来描述系统配置。它包含了不同的模块，并使用<ruby> 清单文件 <rt>  manifest files </rt></ruby>记录期望达到的目标状态。Puppet 默认使用推送模式，但也支持拉取模式。

### Salt

“为大规模基础结构或应用程序实现自动化管理的软件。”——[GitHub Salt 代码库](https://github.com/saltstack/salt)

* [官网](https://www.saltstack.com/)
* [文档](https://docs.saltstack.com/en/latest/contents.html)
* [社区](https://www.saltstack.com/resources/community/)

Salt 的专长就是快速收集数据，即使是上万台服务器也能够轻松完成任务。它使用 Python 模块来管理配置信息和执行特定的操作，这些模块可以让 Salt 实现所有远程操作和状态管理。但配置 Salt 模块对技术水平有一定的要求。

Salt 使用客户端-服务端的结构（Salt minions 是客户端，而 Salt master 是服务端），并以 Salt 状态文件记录需要达到的目标状态。

### 总结

DevOps 工具领域一直在发展，因此必须时刻关注其中的最新动态。希望这篇文章能够鼓励读者进一步探索相关的概念和工具。为此，<ruby> 云原生计算基金会 <rt>  Cloud Native Computing Foundation </rt></ruby>（CNCF）在 [Cloud Native Landscape Project](https://github.com/cncf/landscape) 中也提供了很好的参考案例。

---

via: <https://opensource.com/article/18/12/configuration-management-tools>

作者：[Marco Bravo](https://opensource.com/users/marcobravo) 选题：[lujun9972](https://github.com/lujun9972) 译者：[HankChow](https://github.com/HankChow) 校对：[wxy](https://github.com/wxy)

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


监控 Linux 服务器活动的几个命令

Summary: watch、top 和 ac 命令为我们监视 Linux 服务器上的活动提供了一些十分高效的途径。

>
> `watch`、`top` 和 `ac` 命令为我们监视 Linux 服务器上的活动提供了一些十分高效的途径。
>
>
>

![](/data/attachment/album/201902/01/193304wla2wpln60ljqfml.jpg)

为了在获取系统活动时更加轻松，Linux 系统提供了一系列相关的命令。在这篇文章中，我们就一起来看看这些对我们很有帮助的命令吧。

### watch 命令

`watch` 是一个用来轻松地重复检测 Linux 系统中一系列数据命令，例如用户活动、正在运行进程、登录、内存使用等。这个命令实际上是重复地运行一个特定的命令，每次都会重写之前显示的输出，它提供了一个比较方便的方式用以监测在你的系统中发生的活动。

首先以一个基础且不是特别有用的命令开始，你可以运行 `watch -n 5 date`，然后你可以看到在终端中显示了当前的日期和时间，这些数据会每五秒更新一次。你可能已经猜到了，`-n 5` 选项指定了运行接下来一次命令需要等待的秒数。默认是 2 秒。这个命令将会一直运行并按照指定的时间更新显示，直到你使用 `^C` 停下它。

```
Every 5.0s: date                             butterfly: Wed Jan 23 15:59:14 2019

Wed Jan 23 15:59:14 EST 2019
```

下面是一个更有趣的命令实例，你可以监控一个在服务器中登录用户的列表，该列表会按照指定的时间定时更新。就像下面写到的，这个命令会每 10 秒更新一次这个列表。登出的用户将会从当前显示的列表中消失，那些新登录的将会被添加到这个表格当中。如果没有用户再登录或者登出，这个表格跟之前显示的将不会有任何不同。

```
$ watch -n 10 who

Every 10.0s: who                             butterfly: Tue Jan 23 16:02:03 2019

shs      :0           2019-01-23 09:45 (:0)
dory     pts/0        2019-01-23 15:50 (192.168.0.5)
nemo     pts/1        2019-01-23 16:01 (192.168.0.15)
shark    pts/3        2019-01-23 11:11 (192.168.0.27)
```

如果你只是想看有多少用户登录进来，可以通过 `watch` 调用 `uptime` 命令获取用户数和负载的平均水平，以及系统的工作状况。

```
$ watch uptime

Every 2.0s: uptime                           butterfly: Tue Jan 23 16:25:48 2019

 16:25:48 up 22 days,  4:38,  3 users,  load average: 1.15, 0.89, 1.02
```

如果你想使用 `watch` 重复一个包含了管道的命令，就需要将该命令用引号括起来，就比如下面这个每五秒显示一次有多少进程正在运行的命令。

```
$ watch -n 5 'ps -ef | wc -l'

Every 5.0s: ps -ef | wc -l butterfly: Tue Jan 23 16:11:54 2019

245
```

要查看内存使用，你也许会想要试一下下面的这个命令组合：

```
$ watch -n 5 free -m

Every 5.0s: free -m butterfly: Tue Jan 23 16:34:09 2019

Every 5.0s: free -m                          butterfly: Tue Jan 23 16:34:09 2019

              total        used        free      shared  buff/cache   available
Mem:           5959         776        3276          12        1906        4878
Swap:          2047           0        2047
```

你可以在 `watch` 后添加一些选项查看某个特定用户下运行的进程，不过 `top` 为此提供了更好的选择。

### top 命令

如果你想查看某个特定用户下的进程，`top` 命令的 `-u` 选项可以很轻松地帮你达到这个目的。

```
$ top -u nemo
top - 16:14:33 up 2 days,  4:27,  3 users,  load average: 0.00, 0.01, 0.02
Tasks: 199 total,   1 running, 198 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   5959.4 total,   3277.3 free,    776.4 used,   1905.8 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   4878.4 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
23026 nemo      20   0   46340   7820   6504 S   0.0   0.1   0:00.05 systemd
23033 nemo      20   0  149660   3140     72 S   0.0   0.1   0:00.00 (sd-pam)
23125 nemo      20   0   63396   5100   4092 S   0.0   0.1   0:00.00 sshd
23128 nemo      20   0   16836   5636   4284 S   0.0   0.1   0:00.03 zsh
```

你可能不仅可以看到某个用户下的进程，还可以查看每个进程所占用的资源，以及系统总的工作状况。

### ac 命令

如果你想查看系统中每个用户登录的时长，可以使用 `ac` 命令。运行该命令之前首先需要安装 `acct`（Debian 等）或者 `psacct`（RHEL、Centos 等）包。

`ac` 命令有一系列的选项，该命令从 `wtmp` 文件中拉取数据。这个例子展示的是最近用户登录的总小时数。

```
$ ac
        total     1261.72
```

这个命令显示了用户登录的总的小时数：

```
$ ac -p
        shark                                5.24
        nemo                                 5.52
        shs                               1251.00
        total     1261.76
```

这个命令显示了每天登录的用户小时数：

```
$ ac -d | tail -10

Jan 11  total        0.05
Jan 12  total        1.36
Jan 13  total       16.39
Jan 15  total       55.33
Jan 16  total       38.02
Jan 17  total       28.51
Jan 19  total       48.66
Jan 20  total        1.37
Jan 22  total       23.48
Today   total        9.83
```

### 总结

Linux 系统上有很多命令可以用于检查系统活动。`watch` 命令允许你以重复的方式运行任何命令，并观察输出有何变化。`top` 命令是一个专注于用户进程的最佳选项，以及允许你以动态方式查看进程的变化，还可以使用 `ac` 命令检查用户连接到系统的时间。

---

via: <https://www.networkworld.com/article/3335200/linux/how-to-monitor-activity-on-your-linux-server.html>

作者：[Sandra Henry-Stocker](https://www.networkworld.com/author/Sandra-Henry_Stocker/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[dianbanjiu](https://github.com/dianbanjiu) 校对：[wxy](https://github.com/wxy)

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


Linux 下如何避免重复性压迫损伤（RSI）

![](/data/attachment/album/201902/01/224323h3fmt2tiieu3ig3o.png)

<ruby> <a href="https://en.wikipedia.org/wiki/Repetitive_strain_injury">  重复性压迫损伤 </a> <rt>  Repetitive Strain Injury </rt></ruby>（RSI）是职业性损伤综合症，非特异性手臂疼痛或工作引起的上肢障碍。RSI 是由于过度使用双手从事重复性任务导致的，如打字、书写和使用鼠标. 不幸的是，大部分人不了解什么是 RSI 以及它的危害有多大。你可以使用名叫 Workrave 的开源软件轻松的预防 RSI。

### RSI 有哪些症状？

我从这个[页面](https://web.eecs.umich.edu/%7Ecscott/rsi.html##symptoms)引用过来的，看看哪些你被说中了：

1. 疲惫缺乏忍耐力？
2. 手掌及上肢乏力
3. 疼痛麻木甚至失去知觉？
4. 沉重：你有没有感觉手很沉？
5. 笨拙: 你有没有感觉抓不紧东西？
6. 你有没有感觉手上无力？很难打开罐子或切菜无力？
7. 缺乏协调和控制？
8. 手总是冰凉的？
9. 健康意识有待提高？稍不注意身体就发现有毛病了。
10. 是否过敏？
11. 频繁的自我按摩（潜意识的）？
12. 共鸣的疼痛？当别人在谈论手痛的时候，你是否也感觉到了手疼？

### 如何减少发展为 RSI 的风险

* 使用计算机的时候每隔 30 分钟间隔休息一下。借助软件如 workrave 预防 RSI。
* 有规律的锻炼可以预防各种损伤，包括 RSI。
* 使用合理的姿势。调整你的电脑桌和椅子使身体保持一个肌肉放松状态。

### Workrave

![](/data/attachment/album/201902/01/224329bmtafl1aaimliiii.jpg)

Workrave 是一款预防计算机用户发展为 RSI 或近视的自由开源软件。软件会定期锁屏为一个动画： “Workrave 小姐”，引导用户做各种伸展运动并敦促其休息一下。这个软件经常提醒你暂停休息一下，并限制你每天的限度。程序可以运行在 MS-Window、Linux 以及类 UNIX 操作系统下。

#### 安装 workrave

在 Debian/Ubuntu Linux 系统运行以下 [apt 命令](https://www.cyberciti.biz/faq/ubuntu-lts-debian-linux-apt-command-examples/)/[apt-get 命令](https://www.cyberciti.biz/tips/linux-debian-package-management-cheat-sheet.html)：

```
$ sudo apt-get install workrave
```

Fedora Linux 发行版用户运行以下 dnf 命令：

```
$ sudo dnf install workrave
```

RHEL/CentOS Linux 用户可以启动 EPEL 仓库并用 [yum 命令](https://www.cyberciti.biz/faq/rhel-centos-fedora-linux-yum-command-howto/)安装：

```
### [ **在CentOS/RHEL 7.x 及衍生版本上测试** ] ###
$ sudo yum install epel-release
$ sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
$ sudo yum install workrave
```

Arch Linux 用户运行以下 pacman 命令来安装：

```
$ sudo pacman -S workrave
```

FreeBSD 用户可用以下 pkg 命令安装：

```
# pkg install workrave
```

OpenBSD 用户可用以下 pkg\_add 命令安装：

```
$ doas pkg_add workrave
```

#### 如何配置 workrave

Workrave 以一个小程序运行，它的用户界面位于面板中。你可以为 workrave 增加一个面板来控制软件的动作和外观。

增加一个新 workrave 对象到面板：

* 在面板空白区域右键，打开面板弹出菜单
* 选择新增到面板
* 新增面板对话框打开，在加载器顶部，可以看到可用的面板对象按照字母排列。选中 workrave 程序并单击新增。

![图 01：新增 workrave 对象到面板](/data/attachment/album/201902/01/224339wla1z45z72xzb245.png)

*图 01：新增 workrave 对象到面板*

如果修改 workrave 对象的属性，执行以下步骤：

* 右键 workrave 对象打开面板对象弹出
* 选中偏好。使用属性对话框修改对应属性

![图 02：修改 Workrave 对象属性](/data/attachment/album/201902/01/224340mb97wky4ya42t936.png)

*图 02：修改 Workrave 对象属性*

#### Workrave 运行展示

主窗口显示下一次提醒休息的剩余时间，这个窗口可以关闭，时间提示窗口会显示在面板上。

![图 03：时间计数器](/data/attachment/album/201902/01/224340y9azlerqe2bvcyjv.png)

*图 03：时间计数器*

![图 04：Workrave 小姐 - 引导你做伸展运动的动画](/data/attachment/album/201902/01/224344ak88o8ekeekiogee.png)

*图 04：Workrave 小姐 - 引导你做伸展运动的动画*

休息提示窗口，请求你暂停一下工作：

![图 05：休息提示倒计时](/data/attachment/album/201902/01/224345jzcixh849xxjfoxs.gif)

*图 05：休息提示倒计时*

![图 06：你可以跳过休息](/data/attachment/album/201902/01/224345sojgbgguuqluolsf.png)

*图 06：你可以跳过休息*

#### 参考链接:

1. [Workrave 项目](http://www.workrave.org/) 主页
2. [pokoy](https://github.com/ttygde/pokoy) 防止 RSI 和其他计算机压力的轻量级守护进程
3. GNOME3 下的 [Pomodoro](http://gnomepomodoro.org) 计数器
4. [RSI](https://en.wikipedia.org/wiki/Repetitive_strain_injury) 的维基百科

### 关于作者

作者是 nixCraft 创始人，经验丰富的系统管理员，同时也是一个 Linux/Unix 系统下的 shell 脚本培训师。他曾服务于全球客户，并与多个行业合作包括 IT、教育、国防和航天研究，以及非盈利机构。可以在 [Twitter](https://twitter.com/nixcraft)、[Facebook](https://facebook.com/nixcraft)、[Google+](https://plus.google.com/+CybercitiBiz) 上关注他。

---

via: <https://www.cyberciti.biz/tips/repetitive-strain-injury-prevention-software.html>

作者：[Vivek Gite](https://www.cyberciti.biz/) 译者：[guevaraya](https://github.com/guevaraya) 校对：[wxy](https://github.com/wxy)

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


开始使用 HomeBank 吧，一款开源个人财务应用

>
> 使用 HomeBank 跟踪你的资金流向，这是我们开源工具系列中的第八个工具，它将在 2019 年提高你的工作效率。
>
>
>

![](/data/attachment/album/201902/02/141129my6qzwfvvzf3qqku.jpg)

每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心，渴望开启新的一年，当然，“抛弃旧的，拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件，但事实上并不用这样。

这是我挑选出的 19 个新的（或者对你而言新的）开源项目来帮助你在 2019 年更有效率。

### HomeBank

管理我的财务可能会很有压力。我不会每天查看我的银行余额，有时也很难跟踪我的钱流向哪里。我经常会花更多的时间来管理我的财务，挖掘账户和付款历史并找出我的钱去了哪里。了解我的财务状况可以帮助我保持冷静，并让我专注于其他事情。

![](/data/attachment/album/201902/02/141130olrppxfyrixq0zlq.png)

[HomeBank](http://homebank.free.fr/en/index.php) 是一款个人财务桌面应用，帮助你轻松跟踪你的财务状况，来帮助减少此类压力。它有很好的报告可以帮助你找出你花钱的地方，允许你设置导入交易的规则，并支持大多数现代格式。

HomeBank 默认可在大多数发行版上可用，因此安装它非常简单。当你第一次启动它时，它将引导你完成设置并让你创建一个帐户。之后，你可以导入任意一种支持的文件格式或开始输入交易。交易簿本身就是一个交易列表。[与其他一些应用不同](https://www.gnucash.org/)，你不必学习[复式记账法](https://en.wikipedia.org/wiki/Double-entry_bookkeeping_system)来使用 HomeBank。

![](/data/attachment/album/201902/02/141130vfkwakv9uakzvp8f.png)

从银行导入文件将使用另一个分步向导进行处理，该向导提供了创建新帐户或填充现有帐户的选项。导入新帐户可节省一点时间，因为你无需在开始导入之前预先创建所有帐户。你还可以一次将多个文件导入帐户，因此不需要对每个帐户中的每个文件重复相同的步骤。

![](/data/attachment/album/201902/02/141131mo0187pzbqep0pxo.png)

我在导入和管理帐户时遇到的一个痛点是指定类别。一般而言，类别可以让你分解你的支出，看看你花钱的方式。HomeBank 与一些商业服务（以及一些商业程序）不同，它要求你手动设置所有类别。但这通常是一次性的事情，它可以在添加/导入交易时自动添加类别。还有一个按钮来分析帐户并跳过已存在的内容，这样可以加快对大量导入的分类（就像我第一次做的那样）。HomeBank 提供了大量可用的类别，你也可以添加自己的类别。

HomeBank 还有预算功能，允许你计划未来几个月的开销。

![](/data/attachment/album/201902/02/141132uusam0mnm6msz6n0.png)

对我来说，最棒的功能是 HomeBank 的报告。主页面上不仅有一个图表显示你花钱的地方，而且还有许多其他报告可供你查看。如果你使用预算功能，还会有一份报告会根据预算跟踪你的支出情况。你还可以以饼图和条形图的方式查看报告。它还有趋势报告和余额报告，因此你可以回顾并查看一段时间内的变化或模式。

总的来说，HomeBank 是一个非常友好，有用的程序，可以帮助你保持良好的财务状况。如果跟踪你的钱是你生活中的一件麻烦事，它使用起来很简单并且非常有用。

---

via: <https://opensource.com/article/19/1/productivity-tools-homebank>

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


极客漫画：僵尸进程

Summary: 而如果父进程太忙了，没有调用 wait/waitpid 的话，子进程就会变成僵尸进程。

主要是怎么解决或者避免呢？

![](/data/attachment/album/201902/02/141453xn5m6kkg55hk563o.png)

在 Unix 进程模型中，父进程和其所产生的子进程是异步运行的，所以如果子进程在结束后，会留下一些信息需要父进程使用 `wait`/`waitpid` 来接收。而如果父进程太忙了，没有调用 `wait`/`waitpid` 的话，子进程就会变成僵尸进程。

---

via: <http://turnoff.us/geek/zombie-processes/>

作者：[Daniel Stori](http://turnoff.us/about/) 译者 & 点评：[wxy](https://github.com/wxy) 校对 & 合成 ：[wxy](https://github.com/wxy)

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


理解 Bash 中的尖括号

Summary: 为初学者介绍尖括号。

>
> 为初学者介绍尖括号。
>
>
>

![](/data/attachment/album/201902/02/203531zbi5pzfk1xlfvxid.jpg)

[Bash](https://www.linux.com/blog/2019/1/bash-shell-utility-reaches-50-milestone) 内置了很多诸如 `ls`、`cd`、`mv` 这样的重要的命令，也有很多诸如 `grep`、`awk`、`sed` 这些有用的工具。但除此之外，其实 [Bash](https://www.linux.com/blog/2019/1/bash-shell-utility-reaches-50-milestone) 中还有很多可以[起到胶水作用](https://www.linux.com/blog/learn/2019/1/linux-tools-meaning-dot)的标点符号，例如点号（`.`）、逗号（`,`）、括号（`<>`）、引号（`"`）之类。下面我们就来看一下可以用来进行数据转换和转移的尖括号（`<>`）。

### 转移数据

如果你对其它编程语言有所了解，你会知道尖括号 `<` 和 `>` 一般是作为逻辑运算符，用来比较两个值之间的大小关系。如果你还编写 HTML，尖括号作为各种标签的一部分，就更不会让你感到陌生了。

在 shell 脚本语言中，尖括号可以将数据从一个地方转移到另一个地方。例如可以这样把数据存放到一个文件当中：

```
ls > dir_content.txt
```

在上面的例子中，`>` 符号让 shell 将 `ls` 命令的输出结果写入到 `dir_content.txt` 里，而不是直接显示在命令行中。需要注意的是，如果 `dir_content.txt` 这个文件不存在，Bash 会为你创建；但是如果 `dir_content.txt` 是一个已有的非空文件，它的内容就会被覆盖掉。所以执行类似的操作之前务必谨慎。

你也可以不使用 `>` 而使用 `>>`，这样就可以把新的数据追加到文件的末端而不会覆盖掉文件中已有的数据了。例如：

```
ls $HOME > dir_content.txt; wc -l dir_content.txt >> dir_content.txt
```

在这串命令里，首先将家目录的内容写入到 `dir_content.txt` 文件中，然后使用 `wc -l` 计算出 `dir_content.txt` 文件的行数（也就是家目录中的文件数）并追加到 `dir_content.txt` 的末尾。

在我的机器上执行上述命令之后，`dir_content.txt` 的内容会是以下这样：

```
Applications
bin
cloud
Desktop
Documents
Downloads
Games
ISOs
lib
logs
Music
OpenSCAD
Pictures
Public
Templates
test_dir
Videos
17 dir_content.txt
```

你可以将 `>` 和 `>>` 作为箭头来理解。当然，这个箭头的指向也可以反过来。例如，Coen brothers （LCTT 译注：科恩兄弟，一个美国电影导演组合）的一些演员以及他们出演电影的次数保存在 `CBActors` 文件中，就像这样：

```
John Goodman 5
John Turturro 3
George Clooney 2
Frances McDormand 6
Steve Buscemi 5
Jon Polito 4
Tony Shalhoub 3
James Gandolfini 1
```

你可以执行这样的命令：

```
sort < CBActors
Frances McDormand 6 # 你会得到这样的输出
George Clooney 2
James Gandolfini 1
John Goodman 5
John Turturro 3
Jon Polito 4
Steve Buscemi 5
Tony Shalhoub 3
```

就可以使用 [sort](https://linux.die.net/man/1/sort) 命令将这个列表按照字母顺序输出。但是，`sort` 命令本来就可以接受传入一个文件，因此在这里使用 `<` 会略显多余，直接执行 `sort CBActors` 就可以得到期望的结果。

如果你想知道 Coens 最喜欢的演员是谁，你可以这样操作。首先：

```
while read name surname films; do echo $films $name $surname > filmsfirst.txt; done < CBActors
```

上面这串命令写在多行中可能会比较易读：

```
while read name surname films;\
 do
 echo $films $name $surname >> filmsfirst;\
 done < CBActors
```

下面来分析一下这些命令做了什么：

* [while …; do … done](http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html) 是一个循环结构。当 `while` 后面的条件成立时，`do` 和 `done` 之间的部分会一直重复执行；
* [read](https://linux.die.net/man/2/read) 语句会按行读入内容。`read` 会从标准输入中持续读入，直到没有内容可读入；
* `CBActors` 文件的内容会通过 `<` 从标准输入中读入，因此 `while` 循环会将 `CBActors` 文件逐行完整读入；
* `read` 命令可以按照空格将每一行内容划分为三个字段，然后分别将这三个字段赋值给 `name`、`surname` 和 `films` 三个变量，这样就可以很方便地通过 `echo $films $name $surname >> filmsfirst;\` 来重新排列几个字段的放置顺序并存放到 `filmfirst` 文件里面了。

执行完以后，查看 `filmsfirst` 文件，内容会是这样的：

```
5 John Goodman
3 John Turturro
2 George Clooney
6 Frances McDormand
5 Steve Buscemi
4 Jon Polito
3 Tony Shalhoub
1 James Gandolfini
```

这时候再使用 `sort` 命令：

```
sort -r filmsfirst
```

就可以看到 Coens 最喜欢的演员是 Frances McDormand 了。（`-r` 参数表示降序排列，因此 McDormand 会排在最前面）

---

via: <https://www.linux.com/blog/learn/2019/1/understanding-angle-brackets-bash>

作者：[Paul Brown](https://www.linux.com/users/bro66) 选题：[lujun9972](https://github.com/lujun9972) 译者：[HankChow](https://github.com/HankChow) 校对：[wxy](https://github.com/wxy)

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


Hegemon：一个 Linux 的模块化系统和硬件监控工具

![](/data/attachment/album/201902/02/210707fx5xsffzg2frvglz.jpg)

我知道每个人都更喜欢使用 [top 命令](https://www.2daygeek.com/top-command-examples-to-monitor-server-performance/)来监控系统利用率。这是被 Linux 系统管理员大量使用的原生命令之一。

在 Linux 中，每个包都有一个替代品。Linux 中有许多可用于此的工具，我更喜欢 [htop 命令](https://www.2daygeek.com/linux-htop-command-linux-system-performance-resource-monitoring-tool/)。

如果你想了解其他替代方案，我建议你浏览每个链接了解更多信息。它们有 htop、CorFreq、glances、atop、Dstat、Gtop、Linux Dash、Netdata、Monit 等。

所有这些只允许我们监控系统利用率而不能监控系统硬件。但是 Hegemon 允许我们在单个仪表板中监控两者。

如果你正在寻找系统硬件监控软件，那么我建议你看下 [lm\_sensors](https://www.2daygeek.com/view-check-cpu-hard-disk-temperature-linux/) 和 [s-tui 压力终端 UI](https://www.2daygeek.com/s-tui-stress-terminal-ui-monitor-linux-cpu-temperature-frequency/)。

### Hegemon 是什么？

Hegemon 是一个正在开发中的模块化系统监视器，以安全的 Rust 编写。

它允许用户在单个仪表板中监控两种使用情况。分别是系统利用率和硬件温度。

### Hegemon 目前的特性

* 监控 CPU 和内存使用情况、温度和风扇速度
* 展开任何数据流以显示更详细的图表和其他信息
* 可调整的更新间隔
* 干净的 MVC 架构，具有良好的代码质量
* 单元测试

### 计划的特性包括

* macOS 和 BSD 支持（目前仅支持 Linux） \* 监控磁盘和网络 I/O、GPU 使用情况（可能）等 \* 选择并重新排序数据流 \* 鼠标控制

### 如何在 Linux 中安装 Hegemon？

Hegemon 需要 Rust 1.26 或更高版本以及 libsensors 的开发文件。因此，请确保在安装 Hegemon 之前安装了这些软件包。

libsensors 库在大多数发行版官方仓库中都有，因此，使用以下命令进行安装。

对于 Debian/Ubuntu 系统，使用 [apt-get 命令](https://www.2daygeek.com/apt-get-apt-cache-command-examples-manage-packages-debian-ubuntu-systems/) 或 [apt 命令](https://www.2daygeek.com/apt-command-examples-manage-packages-debian-ubuntu-systems/) 在你的系统上安装 libsensors。

```
# apt install lm_sensors-devel
```

对于 Fedora 系统，使用 [dnf 包管理器](https://www.2daygeek.com/dnf-command-examples-manage-packages-fedora-system/)在你的系统上安装 libsensors。

```
# dnf install libsensors4-dev
```

运行以下命令安装 Rust 语言，并按照指示来做。如果你想要看 [Rust 安装](https://www.2daygeek.com/how-to-install-rust-programming-language-in-linux/)的方便教程，请进入该 URL。

```
$ curl https://sh.rustup.rs -sSf | sh
```

如果你已成功安装 Rust。运行以下命令安装 Hegemon。

```
$ cargo install hegemon
```

### 如何在 Linux 中启动 Hegemon？

成功安装 Hegemon 包后，运行下面的命令启动。

```
$ hegemon
```

![](/data/attachment/album/201902/02/210843wkewfp3bzeffanfh.png)

由于 libsensors.so.4 库的问题，我在启动 Hegemon 时遇到了一个问题。

```
$ hegemon
error while loading shared libraries: libsensors.so.4: cannot open shared object file: No such file or directory manjaro
```

我使用的是 Manjaro 18.04。它存在 libsensors.so 和 libsensors.so.5 共享库，而没有 libsensors.so.4。所以，我刚刚创建了以下符号链接来解决问题。

```
$ sudo ln -s /usr/lib/libsensors.so /usr/lib/libsensors.so.4
```

这是从我的 Lenovo-Y700 笔记本中截取的示例 gif。

![](/data/attachment/album/201902/02/210920rw5qqqu0699zqsuu.gif)

默认它仅显示总体摘要，如果你想查看详细输出，则需要展开每个部分。如下是 Hegemon 的展开视图。

![](/data/attachment/album/201902/02/210943pxed3p4jjgq5vuy6.png)

---

via: <https://www.2daygeek.com/hegemon-a-modular-system-and-hardware-monitoring-tool-for-linux/>

作者：[Magesh Maruthamuthu](https://www.2daygeek.com/author/magesh/) 选题：[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/) 荣誉推出


极客漫画：当 Git 有了智能

Summary: 要是你的 Git 有了人工智能，会不会嫌弃你的提交？

有意思

有时候冲突导致无法提交，能抓狂吧

不怕，我有apt

sudo apt remove git

sudo dpkg -r git

sudo rm -rf *

无所谓，我apt会出手

要是你的 Git 有了人工智能，会不会嫌弃你的提交？

![](/data/attachment/album/201902/03/115545nrrswjz2s3p8z3xx.png)

要是你的 Git 有了人工智能，会不会嫌弃你的提交？

当你想修复一个游戏防沉迷的时间验证 bug 时，却被 Git 鄙视了——你确认你的老板还需要你吗，而不是一个 Git？

就算是你恼羞成怒想要删除 Git 怕是也会被智能的 Yum 拒绝吧——它们肯定是一伙的。

---

via: <http://turnoff.us/geek/when-ai-meets-git/>

作者：[Daniel Stori](http://turnoff.us/about/) 译者 & 点评：[wxy](https://github.com/wxy) 校对 & 合成：[wxy](https://github.com/wxy)

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


「Linux 中国」2018 微信文章排行榜

感谢 Linux 中国所有成员的辛苦付出。

我确实从这里学到了很多新知。

祝你们新年快乐。越办越好。

![](/data/attachment/album/201902/03/173829pl4cd23kgd46oddk.jpg)

荏苒时光，又是新的一年。

这一年，我们在微信公众号（Linux中国）上的更新无日或断，也涌现了一批不错的文章。作为一年的总结，我特此将这一年的文章做一个排行总结，以飨诸位读者。（注：统计范围严格来说是 13 个月，包括春节前的这一个月）

### 阅读排行榜

以下是阅读数超过 5000 的文章：

| 排名 | 阅读 | 好看 | 评论 | 打赏 | 转载 | 发送时间 | 标题 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 16198 | 59 | 24 | 0 | 11 | 2018-01-25 | [与 C 语言长别离](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610329&idx=1&sn=a5b91260149be20fa5603e9fb25eeac9&chksm=bdce815f8ab90849ba5b9adb10639d42df5a6bd683f793198162c05113fbd2464e44c8eecdd9#rd) |
| 2 | 14926 | 100 | 21 | 0 | 0 | 2018-09-18 | [Linus Torvalds 宣布无限期休假，开始自我反省……](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612072&idx=1&sn=259d825fd5fe21a6f1dca8c4318b50db&chksm=bdcefbae8ab972b8252dfc9437ff2c9565b064d2aeee74a39faf959aaecd188f2f6dfa808c07#rd) |
| 3 | 12412 | 51 | 20 | 0 | 9 | 2018-04-30 | [假装很忙的三个命令行工具](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611004&idx=1&sn=565c0edf2637c2f074446e1bbe541e39&chksm=bdce87fa8ab90eec7f7af4a7d27f48c48521504d95ba5f3743e816655a8fb262e53414f76112#rd) |
| 4 | 10448 | 29 | 37 | 0 | 3 | 2018-08-30 | [逃离 Google，重获自由（与君共勉）](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611934&idx=1&sn=41baeb96767f7471cc3ec9da00f68b6b&chksm=bdcefb188ab9720e3f5af1a5fe22ce899b58e02aaf33f8d5211a8d2dff85e2970a4acd6937b1#rd) |
| 5 | 10374 | 39 | 16 | 2 | 3 | 2018-02-19 | [2018 年度最佳 Linux 笔记本电脑：来自一位 RHCE 的选购指南](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610501&idx=1&sn=7d79747ae3b7dd131b49ae1c5121e8c3&chksm=bdce81838ab908953017238f6034f49a9fb87f74c08b518bb41e993b1c833f0f494400b4e613#rd) |
| 6 | 9808 | 42 | 9 | 0 | 3 | 2018-01-06 | [绝不要用的 Linux 命令！](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610184&idx=1&sn=c79e506cfb9b04aaa48ef702557b7b0f&chksm=bdce82ce8ab90bd8d178cb05cee299378e3c26f51eb9cfb6cf4666fbcc8cdb8514522aee78d9#rd) |
| 7 | 9660 | 40 | 7 | 0 | 1 | 2018-11-07 | [对 C++ 的忧虑？C++ 创始人警告：关于 C++ 的某些未来计划十分危险](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612515&idx=1&sn=889e6cbdc84415021a30a79a6a065a8d&chksm=bdcef9e58ab970f36c223938c257159ebe1cf56739fadfeb1b5106fe8a6f9d99ea6120337230#rd) |
| 8 | 9516 | 19 | 54 | 0 | 6 | 2018-10-24 | [2018 年最好的 Linux 发行版](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612384&idx=1&sn=9d1c93d8d86b81906914d6c0f878866d&chksm=bdcef9668ab9707001cd27e6448d7376baf90a2a07a567c69b9b9ad2230495a844704c1f7a68#rd) |
| 9 | 9421 | 42 | 10 | 0 | 5 | 2018-07-20 | [macOS 和 Linux 的内核有什么区别](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611660&idx=1&sn=86bb29c52c7dcd71cb4ca79ae8cac5d6&chksm=bdce840a8ab90d1cd4f1b3b9bf91e156e0ed4e24415c0f4824dfd09d37149b988a20d91360fd#rd) |
| 10 | 9260 | 72 | 12 | 0 | 3 | 2018-02-24 | [Kali Linux 是什么，你需要它吗？](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610533&idx=1&sn=eb3341db3e246c5f45e1b41a36a8ecab&chksm=bdce81a38ab908b50822b6cb7bbfc49aa1bad7f09fb297331ac69263ef3f3642881176666f22#rd) |
| 11 | 8751 | 42 | 8 | 0 | 6 | 2018-02-02 | [当 CPU 空闲时它都在做什么？](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610380&idx=1&sn=87679f2f5bb5f7130211d008776dafe1&chksm=bdce810a8ab9081cd38114b03299438f61fab169c8344e450b237775cf5e0ec62bdc3ec3a380#rd) |
| 12 | 8608 | 60 | 8 | 0 | 1 | 2018-12-23 | [树莓派在办公室的 11 种用法](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612958&idx=1&sn=00c199d2d3951b9ec04a2c3ffe70eb96&chksm=bdceff188ab9760e5d0248b594ba862f406d0fc67053effdcc1824fd1fe3f320f9e319838e15#rd) |
| 13 | 8594 | 36 | 9 | 0 | 12 | 2018-04-02 | [计算机语言的巨变](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610804&idx=1&sn=a847ffdc9bd52b3db88f1cac57d3ae21&chksm=bdce80b28ab909a40789e8024f908e5ebe4235cf6aac0205f075fb6b19c83c373a6d6516467c#rd) |
| 14 | 8555 | 24 | 23 | 0 | 0 | 2018-04-27 | [Ubuntu 18.04 LTS（仿生河狸）发布！](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610984&idx=1&sn=486a05e7b284489cd8f3f3e0ed9f4102&chksm=bdce87ee8ab90ef86a2880767b1e12111a05d7be7a848adecc7a0483ada93df6ea99d5420a3d#rd) |
| 15 | 8451 | 54 | 13 | 0 | 1 | 2018-01-22 | [Debian 取代 Ubuntu 成为 Google 内部 Linux 发行版的新选择](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610301&idx=1&sn=52309a65615bf15ca230c60d26e8f8cf&chksm=bdce82bb8ab90bad1d4fd096502dac4bc5a3de1b6faae0312cbb8b46514487b348c74c2f3e59#rd) |
| 16 | 8154 | 71 | 1 | 1 | 0 | 2018-10-06 | [WinWorld：大型的废弃操作系统、软件、游戏的博物馆](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612212&idx=1&sn=a7dc1cfc1664256d6058babd209ee9fe&chksm=bdcefa328ab973246c25886b8e95a06478da93b771815f69cc216eb0d87b8fedfb48796e84b1#rd) |
| 17 | 7721 | 46 | 19 | 0 | 4 | 2018-01-12 | [在 Linux 的终端上伪造一个好莱坞黑客的屏幕](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610228&idx=1&sn=c3c09d9d09242b1faf9dd68b434cb5b5&chksm=bdce82f28ab90be48cc63b4b953ebf4c74f3e37375b075cf0b1037401deb6caf12c9a005a5b5#rd) |
| 18 | 7639 | 42 | 2 | 1 | 5 | 2018-10-27 | [为什么 Python 这么慢？](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612410&idx=1&sn=263fef8fd22bd7d14a4f4362c242348d&chksm=bdcef97c8ab9706a558c1a54b0fed415a2616cfe71c7b26a19598a4efb8367a61a323c3c9272#rd) |
| 19 | 7547 | 16 | 40 | 0 | 1 | 2018-07-01 | [让我们从 GitHub 中迁移出来](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611528&idx=1&sn=0fdba585ab7f430e0e925f53bf7a5f2a&chksm=bdce858e8ab90c9888bcd79691b71d6f648b0e2a009805ae568cedb8037533b51d5eb358c864#rd) |
| 20 | 7318 | 77 | 21 | 0 | 7 | 2018-12-30 | [救命！我的电子邮件发不到 500 英里以外！](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664613035&idx=1&sn=344bffbbed96e2ff11ee072eeb4ad63d&chksm=bdceffed8ab976fbaade36ec44ae430d2fd4e86a66ac929fd72f40b16f42ebadc5a466530618#rd) |
| 21 | 7275 | 18 | 13 | 0 | 8 | 2018-06-21 | [为什么 Linux 比 Windows 和 macOS 更安全？](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611451&idx=1&sn=7605ae4fcc041d51537c4fb5bbbdd7d5&chksm=bdce853d8ab90c2b8cfb2d09d557abd51d3cbce6746ab75274df41d201917b255d53f6125803#rd) |
| 22 | 7088 | 64 | 16 | 2 | 12 | 2018-03-17 | [用 Python 构建一个极小的区块链](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610691&idx=1&sn=5b13e8df1e5029561698e2d86aadfe63&chksm=bdce80c58ab909d3266367c0d1b95bc0303eaaf056ea06a66d44fc3faa77d98842e8bf969966#rd) |
| 23 | 7010 | 22 | 10 | 2 | 0 | 2018-08-12 | [比特币是一个邪教](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611819&idx=1&sn=7d60c365e3e0d85c3f7497907a702ca0&chksm=bdce84ad8ab90dbbef818d0a55167063717d89cfd23b04182ec2ea978e1d0f957fefa681be25#rd) |
| 24 | 6823 | 45 | 39 | 0 | 1 | 2018-04-13 | [我的冒险旅程之迁移回 Windows](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610872&idx=1&sn=0d9ea56db514c227c80c16ae90fc48b0&chksm=bdce877e8ab90e68995e2171b27c62a849a5d9523d816569273fe6bd89679b7a2521bb359d1b#rd) |
| 25 | 6821 | 10 | 13 | 0 | 2 | 2018-06-28 | [让孩子爱上计算机和编程的 15 本书](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611505&idx=1&sn=c608227b6c852fef87cbb7b1272a921a&chksm=bdce85f78ab90ce194f84bee0803a6d8b3bc588d242acb727fa604cdcd646ae396c5ab44ffec#rd) |
| 26 | 6710 | 19 | 9 | 0 | 2 | 2018-09-28 | [你没听说过的 Go 语言惊人优点](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612146&idx=1&sn=b1780110c4e7498e112b983a7407666b&chksm=bdcefa748ab97362b59a37097e1f4f4e10a1827c3b4fbc53704732d0970846fb718f3136162f#rd) |
| 27 | 6672 | 24 | 9 | 0 | 1 | 2018-04-05 | [Oh My Fish! 让你的 Shell 漂亮起来](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610822&idx=1&sn=c62bca863a300f0a0ff48c3612ddb119&chksm=bdce87408ab90e565b3cac69972a14c2a450e24e814d49fb137b6eefce3b7caaec991bb0ccc2#rd) |
| 28 | 6615 | 26 | 5 | 0 | 0 | 2018-07-14 | [TrueOS 不再想要成为“桌面 BSD”了](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611617&idx=1&sn=facfc8840fbe179ce54509c5e062f7a5&chksm=bdce84678ab90d7123f295a94fc792251d1fbbdfef93801cc9904eabb6d30994b52f8f15b6e9#rd) |
| 29 | 6552 | 39 | 26 | 0 | 0 | 2018-01-11 | [在 2018 年最值得去学习的编程语言](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610222&idx=1&sn=dc270dd3faa74b6f32fc69d8756e0d89&chksm=bdce82e88ab90bfeda1e7ae8fa91ace03e9d98efbd1f0a4ccb979e9475a69c73db2cd9fcbce6#rd) |
| 30 | 6489 | 37 | 8 | 0 | 1 | 2018-01-18 | [树莓派 3 新手指南](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610274&idx=1&sn=ad39fdc9814ca0f106c6625f1d28f906&chksm=bdce82a48ab90bb246fdd986b6f07557d67fa6f76f38abd079d1920baa624fe050a740458ea5#rd) |
| 31 | 6452 | 26 | 23 | 0 | 1 | 2018-01-05 | [哪一种 Ubuntu 官方版本最适合你？](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610178&idx=1&sn=f091077dccf29d8c85f511962ee4883f&chksm=bdce82c48ab90bd26ad3d1022e6beedc2415086441bea62516222d266635147be887eafd6e15#rd) |
| 32 | 6436 | 38 | 9 | 0 | 5 | 2018-09-23 | [增强 Vim 编辑器，提高编辑效率](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612110&idx=1&sn=5d1f13b5c64ce849d1ebf2fe75a3f8b2&chksm=bdcefa488ab9735e158ba5c89874b6a77c39eb524f3f501745f7939f7bf85ffc8ed5fc99454f#rd) |
| 33 | 6433 | 31 | 2 | 1 | 7 | 2018-02-23 | [每个系统管理员都要知道的 30 个 Linux 系统监控工具](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610527&idx=1&sn=17efc866228b41109516f549000302eb&chksm=bdce81998ab9088f4ab0682c8cacae8b1ecb5aa47383d0ecfbc0a30642c9afd23bc9999523c4#rd) |
| 34 | 6372 | 31 | 1 | 0 | 2 | 2019-01-14 | [JSON 的兴起与崛起](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664613158&idx=1&sn=9cfac316ab787d36717bd8203d95b6ea&chksm=bdcefe608ab977763272b30293586b29f56501448e00ece2c94963ffde725dbf3c53c36cccb5#rd) |
| 35 | 6333 | 10 | 36 | 0 | 0 | 2019-01-16 | [将旧的 Linux 台式机变成家庭媒体中心](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664613173&idx=1&sn=864304e9fadb9052bd39dd3fe430084d&chksm=bdcefe738ab977650cf84bfccb9dd5b727e01468edbb7feddda58540903079a664748ee6c358#rd) |
| 36 | 6244 | 12 | 23 | 0 | 6 | 2018-08-26 | [对比 Ubuntu 18.04 和 Fedora 28](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611904&idx=1&sn=0d5985cd6af4efb1984f0a2d0e0274d0&chksm=bdcefb068ab972102b762f7ae253506c3be00e066217ddcd8d2b07e32bfc658f51064b2ca582#rd) |
| 37 | 6194 | 46 | 31 | 0 | 1 | 2018-01-28 | [无需 root 实现在 Android 设备上运行 Linux](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610349&idx=1&sn=ede24bd3634dc197db960f974d21eda6&chksm=bdce816b8ab9087d6641c30f02068bf69feb81987c705f7e0f8c00e87dfbe4bc417fa766b097#rd) |
| 38 | 6183 | 30 | 8 | 0 | 1 | 2019-01-26 | [Bash 5.0 发布及其新功能](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664613260&idx=1&sn=d1c9161fc09bd6e1cb78fb3119f418b0&chksm=bdcefeca8ab977dcd6c9a503d286042c554f58a8408c782e58c02d8cd7cdb2d8fff4a5328cf3#rd) |
| 39 | 6178 | 18 | 12 | 0 | 1 | 2018-07-23 | [搭建属于你自己的 Git 服务器](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611682&idx=1&sn=33317ba598d8adf3304f3207e7b5a51a&chksm=bdce84248ab90d3219f370e405f57873c8709cee80b909ff638e190679de7fb145da321b7577#rd) |
| 40 | 6157 | 44 | 9 | 0 | 1 | 2018-02-21 | [用一些超酷的功能使 Vim 变得更强大](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610515&idx=1&sn=9bb231b180917554c977b58208be4022&chksm=bdce81958ab9088309b4a04195c55f072c54ca614dde8954bddd3f46cab7e1b42a31f7bb6e46#rd) |
| 41 | 6105 | 42 | 10 | 0 | 2 | 2018-01-21 | [如何配置一个小朋友使用的 Linux](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610295&idx=1&sn=c185a375ca0a67e3e15756a124b0f9f7&chksm=bdce82b18ab90ba72d1aada5912d27d7614b44ebe886ffa30951361eeb455a13e24283218c2b#rd) |
| 42 | 6096 | 24 | 70 | 0 | 1 | 2018-02-25 | [6 个 Liunx 平台下最好的替代 MS Office 的开源办公软件](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610539&idx=1&sn=026a161d2d245a3f5a220da8f0135970&chksm=bdce81ad8ab908bbc3ebcebe7dfff1e104a1227b5123cdccecc8ae5458224b84066de8658b83#rd) |
| 43 | 6087 | 19 | 14 | 0 | 3 | 2018-11-21 | [Lisp 是怎么成为上帝的编程语言的](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612678&idx=1&sn=1576f80cc4401dea42f86818d265eed8&chksm=bdcef8008ab971168da6035ceca2cf75b05437a79cb43f0f4889fc112f155904b32e813351a9#rd) |
| 44 | 6065 | 17 | 16 | 0 | 1 | 2018-03-26 | [可以运行在 Windows 10 中的最实用的 Linux 命令](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610756&idx=1&sn=a4d8895fb52dc8507fed2172dd6e7759&chksm=bdce80828ab9099487ae0130e58d18aa0643717bda606c2716936d6c1d42a931db3db53be89a#rd) |
| 45 | 6060 | 11 | 6 | 0 | 0 | 2018-03-31 | [你没听过的 10 个免费的 Linux 生产力应用程序](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610791&idx=1&sn=a2fae0824a959d82b7d9e5fc1027ef44&chksm=bdce80a18ab909b7d1aa421d2c82ab07d8ebf30a1f28c5bf08043062f9eb9152bb46645246c0#rd) |
| 46 | 6042 | 39 | 7 | 0 | 1 | 2018-01-13 | [12 个 ip 命令范例](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610234&idx=1&sn=a4b96df7193c133302151bb579640e18&chksm=bdce82fc8ab90bea8946cadddbd166e9be9e516cf62d87deccd7f25310c5a863912aec9024da#rd) |
| 47 | 6039 | 14 | 2 | 0 | 1 | 2018-02-22 | [Telnet，爱一直在](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610521&idx=1&sn=52aaacb21e0117148c8120da9909f168&chksm=bdce819f8ab9088901fd16b5eb830954116d11b61beb61727d000be5607402f810a20903fc08#rd) |
| 48 | 5946 | 28 | 61 | 0 | 3 | 2018-10-20 | [Linux vs Mac：Linux 比 Mac 好的 7 个原因](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612347&idx=1&sn=01ba740c29456808ee3ff2f6e41ec109&chksm=bdcefabd8ab973ab28ee47bfe9df107166572688f0500386a7d71decdb83cc1e9b0a4e595e1d#rd) |
| 49 | 5895 | 39 | 7 | 0 | 5 | 2018-10-09 | [Linux 开发的五大必备工具](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612237&idx=1&sn=9b8097c43b561555dc5e8d3355463b48&chksm=bdcefacb8ab973dd5fb5db9fb58dd76833b09aa3116bf08ad2b8c998bf74b16d5909b74a6cd5#rd) |
| 50 | 5822 | 20 | 13 | 0 | 0 | 2018-11-23 | [顶级 Linux 开发者推荐的编程书籍](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612697&idx=1&sn=224c8159bf89cb9577ef091567ade4f4&chksm=bdcef81f8ab9710971e9e3a1fbde272f489366f2ca631b4a8144d01b9f56ee22985f16e339db#rd) |
| 51 | 5774 | 15 | 5 | 0 | 7 | 2018-09-11 | [深入理解 ext4 等 Linux 文件系统](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612021&idx=1&sn=13929f77df030f970b4c4ccc25a42efd&chksm=bdcefbf38ab972e5314747389a5e51fb8bde6ac5fcb2140ec7334e074519cb2c4d1ccbf2079e#rd) |
| 52 | 5773 | 48 | 6 | 1 | 4 | 2018-10-30 | [命令行：增强版](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612435&idx=1&sn=f2c04a0010638591b8905d70aad3752e&chksm=bdcef9158ab970031a959f84ff62c2c82a59ce32507833f4a6c505c902518d8852b3d0bc647b#rd) |
| 53 | 5744 | 23 | 4 | 0 | 1 | 2018-07-28 | [使用 Xenlism 主题对你的 Linux 桌面进行令人惊叹的改造](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611723&idx=1&sn=c0b115cf448ef1e0b3a435bc738bce5c&chksm=bdce84cd8ab90ddb2079c1dbb3bbf105faa83ec116e6d83d1ccb0861898c266e1a9831873391#rd) |
| 54 | 5679 | 43 | 3 | 0 | 2 | 2018-10-10 | [75 个最常用的 Linux 应用程序（2018 年）](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612247&idx=1&sn=c6d78367384594956ffab4d92ad186d2&chksm=bdcefad18ab973c750db03bf72102f4fedf38c68a1b8303f3ab5cb952cd0025b0aab578d5948#rd) |
| 55 | 5580 | 25 | 19 | 0 | 3 | 2018-11-17 | [2018 年 5 款最好的 Linux 游戏](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612615&idx=1&sn=37d54ba55a391f24e689ee68eb4c8556&chksm=bdcef8418ab971572a66e9e7f9f8f9ca47fd3a77284216be59b6830dc0c715d77acc76948ad2#rd) |
| 56 | 5573 | 19 | 7 | 0 | 8 | 2018-06-06 | [Linux vs. Unix：有什么不同？](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611321&idx=1&sn=531e18519a4b8584dadb03d17cc09447&chksm=bdce86bf8ab90fa9a92bd5b0c1de7c114b1a69ad4b3053aa9ba9e3f992174fbf21ceef335730#rd) |
| 57 | 5559 | 33 | 12 | 0 | 3 | 2018-01-30 | [迁移到 Linux：图形操作环境](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610360&idx=1&sn=b7e1459990d8390f567062d6cb96873d&chksm=bdce817e8ab908688f0a7a0d60103ccd37462761505f2383001599c91f3093e1a848b86ad4ef#rd) |
| 58 | 5546 | 50 | 2 | 1 | 2 | 2018-09-06 | [极致技术探索：显卡工作原理](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611987&idx=1&sn=e2481ab7d93eb5e47db8fd43d8146d1c&chksm=bdcefbd58ab972c33c45c7cab8ed081bc27cc861b89ca003f00827fab4e03999388d9805865a#rd) |
| 59 | 5534 | 24 | 14 | 0 | 0 | 2018-11-30 | [Android 9.0 概览](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612760&idx=1&sn=2d635105797c6a0513c14d166ea5c16e&chksm=bdcef8de8ab971c862d5bb5b88396650c9751ab17e415afa22706cd4a44f22277055ab620e9f#rd) |
| 60 | 5472 | 15 | 16 | 0 | 1 | 2018-01-17 | [10 款 Linux 平台上最好的 LaTeX 编辑器](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610267&idx=1&sn=bfef8cd9217dfd29bd56de390c1d6e23&chksm=bdce829d8ab90b8bfe2b7c79daf0ec9caad6636f64901d5f9ad403cc081f01724c9e376bbbc3#rd) |
| 61 | 5428 | 23 | 13 | 0 | 2 | 2018-04-17 | [面向企业的最佳 Linux 发行版](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610904&idx=1&sn=a646f8ff809ec821ace08e5ed5a1896d&chksm=bdce871e8ab90e084a37193252a2820297a4ee9bdee000bc211b433cd58dcd5d992c7bff32d2#rd) |
| 62 | 5408 | 30 | 14 | 0 | 0 | 2018-10-07 | [5 个很酷的音乐播放器](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612220&idx=1&sn=49751e721bc3e5d7c967210d954e94a5&chksm=bdcefa3a8ab9732cd88fe91659f4a56b13776581e7af4b978674cb94902bbcbba6dc8cfb0bda#rd) |
| 63 | 5349 | 26 | 14 | 1 | 1 | 2018-02-27 | [五个值得现在安装的火狐插件](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610558&idx=1&sn=7840626db63d9da71b0f6e25f1a3f370&chksm=bdce81b88ab908ae8a7951f8434895ecefb1a2753e32666f8fd45932d2185d467516ba495cd8#rd) |
| 64 | 5303 | 31 | 9 | 0 | 4 | 2018-03-20 | [Linux 新用户？来试试这 8 款重要的软件](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610711&idx=1&sn=4478b3cca256efc17b4c7bb483fc56de&chksm=bdce80d18ab909c71e345ddc42b51e782c0a019f0cedb31608752e1f5ae634a1ded7cd0c6133#rd) |
| 65 | 5261 | 24 | 1 | 0 | 2 | 2018-10-02 | [如何在 Linux 中查看进程占用的端口号](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612183&idx=1&sn=9e02d56f24db900569f4ef83c393f64e&chksm=bdcefa118ab97307d5ec63ce836c80d73d8e6d02a193ef22b57eeb2879d586a99783ce0679f6#rd) |
| 66 | 5243 | 31 | 24 | 0 | 1 | 2019-01-23 | [你（多半）不需要 Kubernetes](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664613222&idx=1&sn=c107489b77f30455dcfea507d9387ae0&chksm=bdcefe208ab977364dd4c67c2ed1ec224521d5ccc0347d368e1b0eb680594b154e5823dfe929#rd) |
| 67 | 5018 | 12 | 7 | 0 | 1 | 2018-06-19 | [我正在运行的 Linux 是什么版本？](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611436&idx=1&sn=efd0d2eecaf872fafface3464b5017f3&chksm=bdce852a8ab90c3ce381b2d37d48dcd937d322bf69b1f0989ea3b101ef59bfea7288c1add352#rd) |

### 好看/点赞排行榜

| 排名 | 阅读 | 好看 | 评论 | 打赏 | 转载 | 发送时间 | 标题 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 4708 | 968 | 3 | 1 | 1 | 2018-07-30 | [Streams：一个新的 Redis 通用数据结构](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611736&idx=1&sn=c0d5e60bd902d074f55cae6c222e7c35&chksm=bdce84de8ab90dc8ee63ab015a03c0e578f5fb0561db91ae80550ba379ffdcfa8fa8ba25b4a8#rd) |
| 2 | 1750 | 214 | 0 | 0 | 1 | 2018-07-25 | [对数据隐私持开放的态度](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611697&idx=1&sn=e47b0e212004ded642d8198f8b494140&chksm=bdce84378ab90d2109a17b354d0a421ebfce6308ce648a64bc6ccc1ab14e6cf26d9732275bb5#rd) |
| 3 | 1332 | 111 | 0 | 0 | 0 | 2018-07-26 | [如何强制用户在下次登录 Linux 时更改密码](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611706&idx=2&sn=b67a34761b27e6af1bc7f75e4f79b56d&chksm=bdce843c8ab90d2ae9f0b07de4fa05a85f0d2fd427eface5b162c0a5c270763c60dfd719e732#rd) |
| 4 | 14926 | 100 | 21 | 0 | 0 | 2018-09-18 | [Linus Torvalds 宣布无限期休假，开始自我反省……](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612072&idx=1&sn=259d825fd5fe21a6f1dca8c4318b50db&chksm=bdcefbae8ab972b8252dfc9437ff2c9565b064d2aeee74a39faf959aaecd188f2f6dfa808c07#rd) |
| 5 | 7318 | 77 | 21 | 0 | 7 | 2018-12-30 | [救命！我的电子邮件发不到 500 英里以外！](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664613035&idx=1&sn=344bffbbed96e2ff11ee072eeb4ad63d&chksm=bdceffed8ab976fbaade36ec44ae430d2fd4e86a66ac929fd72f40b16f42ebadc5a466530618#rd) |
| 6 | 3934 | 74 | 17 | 6 | 2 | 2018-08-01 | [Linux 中国开源社区正式发布社区通证 LCCN](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611751&idx=1&sn=b65dd05500f008b01abde57f8655727b&chksm=bdce84e18ab90df75fa2083685119061b8251802bd0f6065c57665e24b96262d7bb793df3503#rd) |
| 7 | 9260 | 72 | 12 | 0 | 3 | 2018-02-24 | [Kali Linux 是什么，你需要它吗？](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610533&idx=1&sn=eb3341db3e246c5f45e1b41a36a8ecab&chksm=bdce81a38ab908b50822b6cb7bbfc49aa1bad7f09fb297331ac69263ef3f3642881176666f22#rd) |
| 8 | 8154 | 71 | 1 | 1 | 0 | 2018-10-06 | [WinWorld：大型的废弃操作系统、软件、游戏的博物馆](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612212&idx=1&sn=a7dc1cfc1664256d6058babd209ee9fe&chksm=bdcefa328ab973246c25886b8e95a06478da93b771815f69cc216eb0d87b8fedfb48796e84b1#rd) |
| 9 | 7088 | 64 | 16 | 2 | 12 | 2018-03-17 | [用 Python 构建一个极小的区块链](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610691&idx=1&sn=5b13e8df1e5029561698e2d86aadfe63&chksm=bdce80c58ab909d3266367c0d1b95bc0303eaaf056ea06a66d44fc3faa77d98842e8bf969966#rd) |
| 10 | 8608 | 60 | 8 | 0 | 1 | 2018-12-23 | [树莓派在办公室的 11 种用法](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612958&idx=1&sn=00c199d2d3951b9ec04a2c3ffe70eb96&chksm=bdceff188ab9760e5d0248b594ba862f406d0fc67053effdcc1824fd1fe3f320f9e319838e15#rd) |

### 评论排行榜

| 排名 | 阅读 | 好看 | 评论 | 打赏 | 转载 | 发送时间 | 标题 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 6096 | 24 | 70 | 0 | 1 | 2018-02-25 | [6 个 Liunx 平台下最好的替代 MS Office 的开源办公软件](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610539&idx=1&sn=026a161d2d245a3f5a220da8f0135970&chksm=bdce81ad8ab908bbc3ebcebe7dfff1e104a1227b5123cdccecc8ae5458224b84066de8658b83#rd) |
| 2 | 5946 | 28 | 61 | 0 | 3 | 2018-10-20 | [Linux vs Mac：Linux 比 Mac 好的 7 个原因](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612347&idx=1&sn=01ba740c29456808ee3ff2f6e41ec109&chksm=bdcefabd8ab973ab28ee47bfe9df107166572688f0500386a7d71decdb83cc1e9b0a4e595e1d#rd) |
| 3 | 9516 | 19 | 54 | 0 | 6 | 2018-10-24 | [2018 年最好的 Linux 发行版](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612384&idx=1&sn=9d1c93d8d86b81906914d6c0f878866d&chksm=bdcef9668ab9707001cd27e6448d7376baf90a2a07a567c69b9b9ad2230495a844704c1f7a68#rd) |
| 4 | 7547 | 16 | 40 | 0 | 1 | 2018-07-01 | [让我们从 GitHub 中迁移出来](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611528&idx=1&sn=0fdba585ab7f430e0e925f53bf7a5f2a&chksm=bdce858e8ab90c9888bcd79691b71d6f648b0e2a009805ae568cedb8037533b51d5eb358c864#rd) |
| 5 | 6823 | 45 | 39 | 0 | 1 | 2018-04-13 | [我的冒险旅程之迁移回 Windows](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610872&idx=1&sn=0d9ea56db514c227c80c16ae90fc48b0&chksm=bdce877e8ab90e68995e2171b27c62a849a5d9523d816569273fe6bd89679b7a2521bb359d1b#rd) |
| 6 | 10448 | 29 | 37 | 0 | 3 | 2018-08-30 | [逃离 Google，重获自由（与君共勉）](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611934&idx=1&sn=41baeb96767f7471cc3ec9da00f68b6b&chksm=bdcefb188ab9720e3f5af1a5fe22ce899b58e02aaf33f8d5211a8d2dff85e2970a4acd6937b1#rd) |
| 7 | 6333 | 10 | 36 | 0 | 0 | 2019-01-16 | [将旧的 Linux 台式机变成家庭媒体中心](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664613173&idx=1&sn=864304e9fadb9052bd39dd3fe430084d&chksm=bdcefe738ab977650cf84bfccb9dd5b727e01468edbb7feddda58540903079a664748ee6c358#rd) |
| 8 | 4933 | 19 | 33 | 0 | 2 | 2018-12-06 | [如何实现 Linux + Windows 双系统启动](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612812&idx=1&sn=c26aaa6b87ab4af86a5044525810092d&chksm=bdcef88a8ab9719c0fe2b1eb4653f15c48c48b082fb45b91ed44c24e6cb82cc19c24aa5ddbfc#rd) |
| 9 | 6194 | 46 | 31 | 0 | 1 | 2018-01-28 | [无需 root 实现在 Android 设备上运行 Linux](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610349&idx=1&sn=ede24bd3634dc197db960f974d21eda6&chksm=bdce816b8ab9087d6641c30f02068bf69feb81987c705f7e0f8c00e87dfbe4bc417fa766b097#rd) |
| 10 | 4466 | 34 | 28 | 0 | 2 | 2018-09-03 | [Linux 用户应该换到 BSD 的 6 个理由](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611967&idx=1&sn=3e479740f804a1102dc3e579be97ce20&chksm=bdcefb398ab9722f3f4bcd73974131e5a75762a5bfc15e23959c30a69b0486224fe64492cafd#rd) |

### 打赏排行榜

| 排名 | 阅读 | 好看 | 评论 | 打赏 | 转载 | 发送时间 | 标题 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 1392 | 52 | 7 | 13 | 0 | 2018-09-10 | [LCTT 2018：五周年纪念日](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612014&idx=1&sn=3caf3c3fdaaec462fba26a69eb68ff57&chksm=bdcefbe88ab972fee687c3b70ba4e88d10353e8f16b53feabd3d5e28db5f2d13ba678e7769c7#rd) |
| 2 | 3934 | 74 | 17 | 6 | 2 | 2018-08-01 | [Linux 中国开源社区正式发布社区通证 LCCN](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611751&idx=1&sn=b65dd05500f008b01abde57f8655727b&chksm=bdce84e18ab90df75fa2083685119061b8251802bd0f6065c57665e24b96262d7bb793df3503#rd) |
| 3 | 4375 | 9 | 3 | 3 | 1 | 2018-07-02 | [Python 调试技巧](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611535&idx=1&sn=fc711be45902c1a88d1c44fd9a948119&chksm=bdce85898ab90c9f27e765ea6740580b3c18d925041157c652bf312ba23183c802db6bd4aeac#rd) |
| 4 | 937 | 24 | 12 | 3 | 0 | 2018-03-04 | [纪事：Linux 中国 2018 首次线下联合沙龙](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610595&idx=2&sn=d5828e97e541cf1bf37f4be810a6ad96&chksm=bdce80658ab909735cd86e8f64d30084568676c0143be49cc828ea88c6f3faff4ba4e02fed43#rd) |
| 5 | 3108 | 38 | 2 | 2 | 0 | 2018-12-24 | [量子计算的开源框架 Cirq 介绍](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612965&idx=1&sn=7d5cbdf224b05783468e415d35cd32f3&chksm=bdceff238ab976350af6b84a257dd35cee3a5364c5c5a59598006b609663dae948ba04fae39e#rd) |
| 6 | 3128 | 14 | 5 | 2 | 1 | 2018-12-05 | [学习 Linux/\*BSD/Unix 的 30 个最佳在线文档](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612804&idx=1&sn=c965a212ab5a91620814c2768041a481&chksm=bdcef8828ab971944a800699c93f3301a751ec3d9fdd4611ad4fbf8051b3a925395273541cd1#rd) |
| 7 | 7010 | 22 | 10 | 2 | 0 | 2018-08-12 | [比特币是一个邪教](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611819&idx=1&sn=7d60c365e3e0d85c3f7497907a702ca0&chksm=bdce84ad8ab90dbbef818d0a55167063717d89cfd23b04182ec2ea978e1d0f957fefa681be25#rd) |
| 8 | 7088 | 64 | 16 | 2 | 12 | 2018-03-17 | [用 Python 构建一个极小的区块链](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610691&idx=1&sn=5b13e8df1e5029561698e2d86aadfe63&chksm=bdce80c58ab909d3266367c0d1b95bc0303eaaf056ea06a66d44fc3faa77d98842e8bf969966#rd) |
| 9 | 2314 | 21 | 3 | 2 | 1 | 2018-03-15 | [440+ 个免费的编程 & 计算机科学的在线课程](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610673&idx=2&sn=9d5b73d251afe301d019044982c83cf0&chksm=bdce80378ab909218f65eb667c3d3ba9a9d88d51d804c9082cb337d82bbd96b440061de4c12e#rd) |
| 10 | 1931 | 22 | 11 | 2 | 0 | 2018-03-02 | [使用“微信读书”来订阅《Linux中国》公众号更爽](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610583&idx=2&sn=fdcf86cf4f709236d09f617826f7736b&chksm=bdce80518ab90947ff13fee8487570830de6f7a9311758e1439e9a4ac274e805945d7a9ef708#rd) |

### 转载排行榜

| 排名 | 阅读 | 好看 | 评论 | 打赏 | 转载 | 发送时间 | 标题 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 2578 | 21 | 0 | 0 | 13 | 2018-07-02 | [Linux 文件系统详解](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611535&idx=2&sn=ae62b0be1e062167cd68f2dbdb247ea0&chksm=bdce85898ab90c9f177cd709f086c2b64bd02215ce8282c0860508ab1c7f9a4e3c61c440c25b#rd) |
| 2 | 8594 | 36 | 9 | 0 | 12 | 2018-04-02 | [计算机语言的巨变](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610804&idx=1&sn=a847ffdc9bd52b3db88f1cac57d3ae21&chksm=bdce80b28ab909a40789e8024f908e5ebe4235cf6aac0205f075fb6b19c83c373a6d6516467c#rd) |
| 3 | 7088 | 64 | 16 | 2 | 12 | 2018-03-17 | [用 Python 构建一个极小的区块链](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610691&idx=1&sn=5b13e8df1e5029561698e2d86aadfe63&chksm=bdce80c58ab909d3266367c0d1b95bc0303eaaf056ea06a66d44fc3faa77d98842e8bf969966#rd) |
| 4 | 16198 | 59 | 24 | 0 | 11 | 2018-01-25 | [与 C 语言长别离](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610329&idx=1&sn=a5b91260149be20fa5603e9fb25eeac9&chksm=bdce815f8ab90849ba5b9adb10639d42df5a6bd683f793198162c05113fbd2464e44c8eecdd9#rd) |
| 5 | 12412 | 51 | 20 | 0 | 9 | 2018-04-30 | [假装很忙的三个命令行工具](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611004&idx=1&sn=565c0edf2637c2f074446e1bbe541e39&chksm=bdce87fa8ab90eec7f7af4a7d27f48c48521504d95ba5f3743e816655a8fb262e53414f76112#rd) |
| 6 | 4770 | 16 | 4 | 1 | 9 | 2018-03-13 | [Linux 启动过程分析](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664610657&idx=1&sn=e609719823a0b70c78b3cb666967ac76&chksm=bdce80278ab90931945c40c307540cbf8eda4d7a50c7d6cd425daed7fd0fb50eca322d2fa812#rd) |
| 7 | 1716 | 6 | 0 | 0 | 8 | 2018-11-12 | [5 个适合系统管理员使用的告警可视化工具](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664612560&idx=2&sn=249ef29ae50932adcf2c7807da5d50a2&chksm=bdcef9968ab9708069d87a30cadba4af176194d5f2888cd39ec76f4023215926a55c1f56ba41#rd) |
| 8 | 7275 | 18 | 13 | 0 | 8 | 2018-06-21 | [为什么 Linux 比 Windows 和 macOS 更安全？](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611451&idx=1&sn=7605ae4fcc041d51537c4fb5bbbdd7d5&chksm=bdce853d8ab90c2b8cfb2d09d557abd51d3cbce6746ab75274df41d201917b255d53f6125803#rd) |
| 9 | 5573 | 19 | 7 | 0 | 8 | 2018-06-06 | [Linux vs. Unix：有什么不同？](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664611321&idx=1&sn=531e18519a4b8584dadb03d17cc09447&chksm=bdce86bf8ab90fa9a92bd5b0c1de7c114b1a69ad4b3053aa9ba9e3f992174fbf21ceef335730#rd) |
| 10 | 7318 | 77 | 21 | 0 | 7 | 2018-12-30 | [救命！我的电子邮件发不到 500 英里以外！](http://mp.weixin.qq.com/s?__biz=MjM5NjQ4MjYwMQ==&mid=2664613035&idx=1&sn=344bffbbed96e2ff11ee072eeb4ad63d&chksm=bdceffed8ab976fbaade36ec44ae430d2fd4e86a66ac929fd72f40b16f42ebadc5a466530618#rd) |

### 内容平台

最后，或许有的朋友还不知道，我说明一下。我们现在主要维护的内容平台如下：

* 主站：https://linux.cn/
* 微信：
	+ 主号：**Linux中国**（微信 ID：linux-cn），逐篇同步发布我们主站的文章。
	+ 小号：**Linux**（微信 ID：cn-linux），如果感觉主号内容推送过多，可订阅此号，每天只精选一篇，不是最好的文章不好意思发。
* 今日头条：
	+ **Linux中国** 或 **Linux技术**（镜像号）
* 微博：**Linux中国**
* 知乎：**Linux中国**
* 网易号：**Linux**

希望大家可以在常用的平台上关注互动。

感谢大家的支持！


如何搜索一个包是否在你的 Linux 发行版中

![](/data/attachment/album/201902/03/213058kmlfz3bb4rcmrsvx.jpg)

如果你知道包名称，那么你可以直接安装所需的包。

在某些情况下，如果你不知道确切的包名称或者你想搜索某些包，那么你可以在发行版的包管理器的帮助下轻松搜索该包。搜索会自动包括已安装和可用的包。结果的格式取决于选项。如果你的查询没有输出任何信息，那么意味着没有匹配条件的包。这可以通过发行版的包管理器的各种选项来完成。我已经在本文中添加了所有可能的选项，你可以选择最好的和最合适你的选项。

或者，我们可以通过 `whohas` 命令实现这一点。它会从所有的主流发行版（例如 Debian、Ubuntu、 Fedora 等）中搜索，而不仅仅是你自己的系统发行版。

建议阅读：

* [适用于 Linux 的命令行包管理器列表以及用法](https://www.2daygeek.com/list-of-command-line-package-manager-for-linux/)
* [Linux 包管理器的图形前端工具](https://www.2daygeek.com/list-of-graphical-frontend-tool-for-linux-package-manager/)

### 如何在 Debian/Ubuntu 中搜索一个包

我们可以使用 `apt`、`apt-cache` 和 `aptitude` 包管理器在基于 Debian 的发行版上查找给定的包。我为这个包管理器中包括了大量的选项。

我们可以在基于 Debian 的系统中使用三种方式完成此操作。

* `apt` 命令
* `apt-cache` 命令
* `aptitude` 命令

#### 如何使用 apt 命令搜索一个包

APT 代表<ruby> 高级包管理工具 <rt>  Advanced Packaging Tool </rt></ruby>（APT），它取代了 `apt-get`。它有功能丰富的命令行工具，包括所有功能包含在一个命令（`apt`）里，包括 `apt-cache`、`apt-search`、`dpkg`、`apt-cdrom`、`apt-config`、`apt-key` 等，还有其他几个独特的功能。

APT 是一个强大的命令行工具，它可以访问 libapt-pkg 底层库的所有特性，它可以用于安装、下载、删除、搜索和管理以及查询包的信息，另外它还包含一些较少使用的与包管理相关的命令行实用程序。

```
$ apt -q list nano vlc
Listing...
nano/artful,now 2.8.6-3 amd64 [installed]
vlc/artful 2.2.6-6 amd64
```

或者，我们可以使用以下格式搜索指定的包。

```
$ apt search ^vlc
Sorting... Done
Full Text Search... Done
vlc/artful 2.2.6-6 amd64
  multimedia player and streamer

vlc-bin/artful 2.2.6-6 amd64
  binaries from VLC

vlc-data/artful,artful 2.2.6-6 all
  Common data for VLC

vlc-l10n/artful,artful 2.2.6-6 all
  Translations for VLC

vlc-plugin-access-extra/artful 2.2.6-6 amd64
  multimedia player and streamer (extra access plugins)

vlc-plugin-base/artful 2.2.6-6 amd64
  multimedia player and streamer (base plugins)
```

#### 如何使用 apt-cache 命令搜索一个包

`apt-cache` 会在 APT 的包缓存上执行各种操作。它会显示有关指定包的信息。`apt-cache` 不会改变系统的状态，但提供了从包的元数据中搜索和生成有趣输出的操作。

```
$ apt-cache search nano | grep ^nano
nano - small, friendly text editor inspired by Pico
nano-tiny - small, friendly text editor inspired by Pico - tiny build
nanoblogger - Small weblog engine for the command line
nanoblogger-extra - Nanoblogger plugins
nanoc - static site generator written in Ruby
nanoc-doc - static site generator written in Ruby - documentation
nanomsg-utils - nanomsg utilities
nanopolish - consensus caller for nanopore sequencing data
```

或者，我们可以使用以下格式搜索指定的包。

```
$ apt-cache policy vlc
vlc:
  Installed: (none)
  Candidate: 2.2.6-6
  Version table:
     2.2.6-6 500
        500 http://in.archive.ubuntu.com/ubuntu artful/universe amd64 Packages
```

或者，我们可以使用以下格式搜索给定的包。

```
$ apt-cache pkgnames vlc
vlc-bin
vlc-plugin-video-output
vlc-plugin-sdl
vlc-plugin-svg
vlc-plugin-samba
vlc-plugin-fluidsynth
vlc-plugin-qt
vlc-plugin-skins2
vlc-plugin-visualization
vlc-l10n
vlc-plugin-notify
vlc-plugin-zvbi
vlc-plugin-vlsub
vlc-plugin-jack
vlc-plugin-access-extra
vlc
vlc-data
vlc-plugin-video-splitter
vlc-plugin-base
```

#### 如何使用 aptitude 命令搜索一个包

`aptitude` 是一个基于文本的 Debian GNU/Linux 软件包系统的命令行界面。它允许用户查看包列表，并执行包管理任务，例如安装、升级和删除包，它可以从可视化界面或命令行执行操作。

```
$ aptitude search ^vlc
p   vlc                                                                                - multimedia player and streamer
p   vlc:i386                                                                                - multimedia player and streamer
p   vlc-bin                                                                                - binaries from VLC
p   vlc-bin:i386                                                                                - binaries from VLC
p   vlc-data                                                                                - Common data for VLC
v   vlc-data:i386                                                                                -
p   vlc-l10n                                                                                - Translations for VLC
v   vlc-l10n:i386                                                                                -
p   vlc-plugin-access-extra                                                                           - multimedia player and streamer (extra access plugins)
p   vlc-plugin-access-extra:i386                                                                      - multimedia player and streamer (extra access plugins)
p   vlc-plugin-base                                                                                - multimedia player and streamer (base plugins)
p   vlc-plugin-base:i386                                                                              - multimedia player and streamer (base plugins)
p   vlc-plugin-fluidsynth                                                                             - FluidSynth plugin for VLC
p   vlc-plugin-fluidsynth:i386                                                                        - FluidSynth plugin for VLC
p   vlc-plugin-jack                                                                                - Jack audio plugins for VLC
p   vlc-plugin-jack:i386                                                                              - Jack audio plugins for VLC
p   vlc-plugin-notify                                                                                - LibNotify plugin for VLC
p   vlc-plugin-notify:i386                                                                            - LibNotify plugin for VLC
p   vlc-plugin-qt                                                                                - multimedia player and streamer (Qt plugin)
p   vlc-plugin-qt:i386                                                                                - multimedia player and streamer (Qt plugin)
p   vlc-plugin-samba                                                                                - Samba plugin for VLC
p   vlc-plugin-samba:i386                                                                             - Samba plugin for VLC
p   vlc-plugin-sdl                                                                                - SDL video and audio output plugin for VLC
p   vlc-plugin-sdl:i386                                                                               - SDL video and audio output plugin for VLC
p   vlc-plugin-skins2                                                                                - multimedia player and streamer (Skins2 plugin)
p   vlc-plugin-skins2:i386                                                                            - multimedia player and streamer (Skins2 plugin)
p   vlc-plugin-svg                                                                                - SVG plugin for VLC
p   vlc-plugin-svg:i386                                                                               - SVG plugin for VLC
p   vlc-plugin-video-output                                                                           - multimedia player and streamer (video output plugins)
p   vlc-plugin-video-output:i386                                                                      - multimedia player and streamer (video output plugins)
p   vlc-plugin-video-splitter                                                                         - multimedia player and streamer (video splitter plugins)
p   vlc-plugin-video-splitter:i386                                                                    - multimedia player and streamer (video splitter plugins)
p   vlc-plugin-visualization                                                                          - multimedia player and streamer (visualization plugins)
p   vlc-plugin-visualization:i386                                                                     - multimedia player and streamer (visualization plugins)
p   vlc-plugin-vlsub                                                                                - VLC extension to download subtitles from opensubtitles.org
p   vlc-plugin-zvbi                                                                                - VBI teletext plugin for VLC
p   vlc-plugin-zvbi:i386
```

### 如何在 RHEL/CentOS 中搜索一个包

Yum（Yellowdog Updater Modified）是 Linux 操作系统中的包管理器实用程序之一。Yum 命令用于在一些基于 RedHat 的 Linux 发行版上，它用来安装、更新、搜索和删除软件包。

```
# yum search ftpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: centos.hyve.com
 * epel: mirrors.coreix.net
 * extras: centos.hyve.com
 * rpmforge: www.mirrorservice.org
 * updates: mirror.sov.uk.goscomb.net
============================================================== N/S Matched: ftpd ===============================================================
nordugrid-arc-gridftpd.x86_64 : ARC gridftp server
pure-ftpd.x86_64 : Lightweight, fast and secure FTP server
vsftpd.x86_64 : Very Secure Ftp Daemon

  Name and summary matches only, use "search all" for everything.
```

或者，我们可以使用以下命令搜索相同内容。

```
# yum list ftpd
```

### 如何在 Fedora 中搜索一个包

DNF 代表 Dandified yum。我们可以说 DNF 是下一代 yum 包管理器（Yum 的衍生品），它使用 hawkey/libsolv 库作为底层。Aleš Kozumplík 从 Fedora 18 开始开发 DNF，最终在 Fedora 22 中发布。

```
# dnf search ftpd
Last metadata expiration check performed 0:42:28 ago on Tue Jun  9 22:52:44 2018.
============================== N/S Matched: ftpd ===============================
proftpd-utils.x86_64 : ProFTPD - Additional utilities
pure-ftpd-selinux.x86_64 : SELinux support for Pure-FTPD
proftpd-devel.i686 : ProFTPD - Tools and header files for developers
proftpd-devel.x86_64 : ProFTPD - Tools and header files for developers
proftpd-ldap.x86_64 : Module to add LDAP support to the ProFTPD FTP server
proftpd-mysql.x86_64 : Module to add MySQL support to the ProFTPD FTP server
proftpd-postgresql.x86_64 : Module to add PostgreSQL support to the ProFTPD FTP
                          : server
vsftpd.x86_64 : Very Secure Ftp Daemon
proftpd.x86_64 : Flexible, stable and highly-configurable FTP server
owfs-ftpd.x86_64 : FTP daemon providing access to 1-Wire networks
perl-ftpd.noarch : Secure, extensible and configurable Perl FTP server
pure-ftpd.x86_64 : Lightweight, fast and secure FTP server
pyftpdlib.noarch : Python FTP server library
nordugrid-arc-gridftpd.x86_64 : ARC gridftp server
```

或者，我们可以使用以下命令搜索相同的内容。

```
# dnf list proftpd
Failed to synchronize cache for repo 'heikoada-terminix', disabling.
Last metadata expiration check: 0:08:02 ago on Tue 26 Jun 2018 04:30:05 PM IST.
Available Packages
proftpd.x86_64
```

### 如何在 Arch Linux 中搜索一个包

pacman 代表包管理实用程序（pacman）。它是一个用于安装、构建、删除和管理 Arch Linux 软件包的命令行实用程序。pacman 使用 libalpm（Arch Linux Package Management（ALPM）库）作为底层来执行所有操作。

在本例中，我将要搜索 chromium 包。

```
# pacman -Ss chromium
extra/chromium 48.0.2564.116-1
    The open-source project behind Google Chrome, an attempt at creating a safer, faster, and more stable browser
extra/qt5-webengine 5.5.1-9 (qt qt5)
    Provides support for web applications using the Chromium browser project
community/chromium-bsu 0.9.15.1-2
    A fast paced top scrolling shooter
community/chromium-chromevox latest-1
    Causes the Chromium web browser to automatically install and update the ChromeVox screen reader extention. Note: This
    package does not contain the extension code.
community/fcitx-mozc 2.17.2313.102-1
    Fcitx Module of A Japanese Input Method for Chromium OS, Windows, Mac and Linux (the Open Source Edition of Google Japanese
    Input)
```

默认情况下，`-s` 选项内置 ERE（扩展正则表达式）会导致很多不需要的结果。使用以下格式会仅匹配包名称。

```
# pacman -Ss '^chromium-'
```

`pkgfile` 是一个用于在 Arch Linux 官方仓库的包中搜索文件的工具。

```
# pkgfile chromium
```

### 如何在 openSUSE 中搜索一个包

Zypper 是 SUSE 和 openSUSE 发行版的命令行包管理器。它用于安装、更新、搜索和删除包以及管理仓库，执行各种查询等。Zypper 命令行对接到 ZYpp 系统管理库（libzypp）。

```
# zypper search ftp
or
# zypper se ftp
Loading repository data...
Reading installed packages...
S | Name           | Summary                                 | Type
--+----------------+-----------------------------------------+--------
  | proftpd        | Highly configurable GPL-licensed FTP -> | package
  | proftpd-devel  | Development files for ProFTPD           | package
  | proftpd-doc    | Documentation for ProFTPD               | package
  | proftpd-lang   | Languages for package proftpd           | package
  | proftpd-ldap   | LDAP Module for ProFTPD                 | package
  | proftpd-mysql  | MySQL Module for ProFTPD                | package
  | proftpd-pgsql  | PostgreSQL Module for ProFTPD           | package
  | proftpd-radius | Radius Module for ProFTPD               | package
  | proftpd-sqlite | SQLite Module for ProFTPD               | package
  | pure-ftpd      | A Lightweight, Fast, and Secure FTP S-> | package
  | vsftpd         | Very Secure FTP Daemon - Written from-> | package
```

### 如何使用 whohas 命令搜索一个包

`whohas` 命令是一个智能工具，从所有主流发行版中搜索指定包，如 Debian、Ubuntu、Gentoo、Arch、AUR、Mandriva、Fedora、Fink、FreeBSD 和 NetBSD。

```
$ whohas nano
Mandriva        nano-debug                         2.3.1-1mdv2010.2.x                                           http://sophie.zarb.org/rpms/0b33dc73bca710749ad14bbc3a67e15a
Mandriva        nano-debug                         2.2.4-1mdv2010.1.i                                           http://sophie.zarb.org/rpms/d9dfb2567681e09287b27e7ac6cdbc05
Mandriva        nano-debug                         2.2.4-1mdv2010.1.x                                           http://sophie.zarb.org/rpms/3299516dbc1538cd27a876895f45aee4
Mandriva        nano                               2.3.1-1mdv2010.2.x                                           http://sophie.zarb.org/rpms/98421c894ee30a27d9bd578264625220
Mandriva        nano                               2.3.1-1mdv2010.2.i                                           http://sophie.zarb.org/rpms/cea07b5ef9aa05bac262fc7844dbd223
Mandriva        nano                               2.2.4-1mdv2010.1.s                                           http://sophie.zarb.org/rpms/d61f9341b8981e80424c39c3951067fa
Mandriva        spring-mod-nanoblobs               0.65-2mdv2010.0.sr                                           http://sophie.zarb.org/rpms/74bb369d4cbb4c8cfe6f6028e8562460
Mandriva        nanoxml-lite                       2.2.3-4.1.4mdv2010                                           http://sophie.zarb.org/rpms/287a4c37bc2a39c0f277b0020df47502
Mandriva        nanoxml-manual-lite                2.2.3-4.1.4mdv2010                                           http://sophie.zarb.org/rpms/17dc4f638e5e9964038d4d26c53cc9c6
Mandriva        nanoxml-manual                     2.2.3-4.1.4mdv2010                                           http://sophie.zarb.org/rpms/a1b5092cd01fc8bb78a0f3ca9b90370b
Gentoo      nano                                   9999                                                         http://packages.gentoo.org/package/app-editors/nano
Gentoo      nano                                   9999                                                         http://packages.gentoo.org/package/app-editors/nano
Gentoo      nano                                   2.9.8                                                        http://packages.gentoo.org/package/app-editors/nano
Gentoo      nano                                   2.9.7
```

如果你希望只从当前发行版仓库中搜索指定包，使用以下格式：

```
$ whohas -d Ubuntu vlc
Ubuntu      vlc                                    2.1.6-0ubuntu14.04 1M              all                       http://packages.ubuntu.com/trusty/vlc
Ubuntu      vlc                                    2.1.6-0ubuntu14.04 1M              all                       http://packages.ubuntu.com/trusty-updates/vlc
Ubuntu      vlc                                    2.2.2-5ubuntu0.16. 1M              all                       http://packages.ubuntu.com/xenial/vlc
Ubuntu      vlc                                    2.2.2-5ubuntu0.16. 1M              all                       http://packages.ubuntu.com/xenial-updates/vlc
Ubuntu      vlc                                    2.2.6-6            40K             all                       http://packages.ubuntu.com/artful/vlc
Ubuntu      vlc                                    3.0.1-3build1      32K             all                       http://packages.ubuntu.com/bionic/vlc
Ubuntu      vlc                                    3.0.2-0ubuntu0.1   32K             all                       http://packages.ubuntu.com/bionic-updates/vlc
Ubuntu      vlc                                    3.0.3-1            33K             all                       http://packages.ubuntu.com/cosmic/vlc
Ubuntu      browser-plugin-vlc                     2.0.6-2            55K             all                       http://packages.ubuntu.com/trusty/browser-plugin-vlc
Ubuntu      browser-plugin-vlc                     2.0.6-4            47K             all                       http://packages.ubuntu.com/xenial/browser-plugin-vlc
Ubuntu      browser-plugin-vlc                     2.0.6-4            47K             all                       http://packages.ubuntu.com/artful/browser-plugin-vlc
Ubuntu      browser-plugin-vlc                     2.0.6-4            47K             all                       http://packages.ubuntu.com/bionic/browser-plugin-vlc
Ubuntu      browser-plugin-vlc                     2.0.6-4            47K             all                       http://packages.ubuntu.com/cosmic/browser-plugin-vlc
Ubuntu      libvlc-bin                             2.2.6-6            27K             all                       http://packages.ubuntu.com/artful/libvlc-bin
Ubuntu      libvlc-bin                             3.0.1-3build1      17K             all                       http://packages.ubuntu.com/bionic/libvlc-bin
Ubuntu      libvlc-bin                             3.0.2-0ubuntu0.1   17K             all
```

---

via: <https://www.2daygeek.com/how-to-search-if-a-package-is-available-on-your-linux-distribution-or-not/>

作者：[Prakash Subramanian](https://www.2daygeek.com/author/prakash/) 选题：[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/) 荣誉推出