2022年5月

在本教程中,你将学习如何在一个“吊舱”中运行两个容器来托管一个 WordPress 站点。

 title=

无论你是将其作为工作的一部分、未来的工作机会或者仅仅是出于对新技术的兴趣,容器对很多人,即使是经验丰富的系统管理员,可能是非常难以应付的。那么如何真正开始使用容器呢?从容器到 Kubernetes 的成长路径是什么?另外,为什么有不止一条路径?如你所料,最好的起点就是现在。

1、了解容器

略一回忆,容器的开端可以追溯到早期 BSD 及其特殊的 chroot 监狱,但让我们直接跳到发展中期讲起。

之前,Linux 内核引入了 “ 控制组 cgroup ”,允许你能够使用 “ 命名空间 namespace ” 来“标记”进程。当你将进程分组到一个命名空间时,这些进程的行为就像在命名空间之外的东西不存在一样,这就像你把这些进程放入某种容器中。当然,这种容器是虚拟的,它位于计算机内部,它和你操作系统的其余进程使用相同的内核、内存和 CPU,但你用容器包含了这些进程。

分发的预制容器仅包含运行它所包含的应用程序必须的内容。使用容器引擎,如 Podman、Docker 或 CRI-O,你可以运行一个容器化应用程序,而无需进行传统意义上的安装。容器引擎通常是跨平台的,因此即使容器运行在 Linux 上,你也可以在其他 Linux、MacOS 或 Windows 上启动容器。

更重要的是,当需求量很大时,你可以运行同一应用程序的多个容器。

现在你知道了什么是容器,下一步是运行一个容器。

2、运行一个容器

在运行容器之前,你应该有一个想要运行它的理由。你可以编一个,这有助于你对让容器创建过程感兴趣,这样你就会受到鼓舞,真正去使用你所运行的容器。毕竟,运行容器但不使用它提供的应用程序,只能证明你没有注意到任何故障,但使用容器证明它可以工作。

我推荐从 WordPress 开始,它是一个很流行的 Web 应用程序,容易使用,所以一旦容器运行起来,你就可以测试使用它。虽然你可以轻松地配置一个 WordPress 容器,但还是有很多配置选项可以引导你发现更多运行容器的方式(例如运行数据库容器)以及容器如何通信。

我使用 Podman,它是一个友好、方便且无守护进程的容器引擎。如果你没有安装 Podman,可以改用 Docker 命令。它们都是很棒的开源容器引擎,而且它们的语法是相同的(只需输入 docker 而不是 podman)。因为 Podman 没有守护进程,所以它需要更多的配置,但为了这种运行免 root、无守护进程的容器的能力是值得的。

如果你使用 Docker,可以跳到下面的 运行 WordPress 容器 小节,否则,打开终端安装并配置 Podman:

$ sudo dnf install podman

容器会产生许多进程,通常只有 root 用户有权创建数千个进程 ID。创建一个名为 /etc/subuid 的文件,定义一个适当的起始 UID 和大量合法的 PID,这样就可以为你添加一些额外的进程 ID:

seth:200000:165536

在名为 /etc/subgid 的文件中对你的组执行相同的操作。在这个例子中,我的主要组是 staff(对你来说可能是 users,或者和你的用户名一样,这取决于你的系统)。

staff:200000:165536

最后,确认你的用户可以管理很多命名空间:

$ sysctl --all --pattern user_namespaces
user.max_user_namespaces = 28633

如果你的用户无权管理超过 28,000 个命名空间,创建 /etc/sysctl.d/userns.conf 文件来增加数量并输入:

user.max_user_namespaces=28633

运行 WordPress 容器

现在,无论你使用的是 Podman 还是 Docker,你都可以从在线容器仓库中下载 WordPress 容器并运行它。你可以使用以下 Podman 命令完成所有这些操作:

$ podman run --name mypress \
    -p 8080:80 -d wordpress

给 Podman 一会时间来找到容器、从互联网下载它,然后启动。

在收到终端返回提示符后,启动 Web 浏览器,打开 localhost:8080。WordPress 正在运行,等待你进行设置。

 title=

不过,你很快就会遇到障碍,因为 WordPress 使用数据库来存储数据,因此你需要为其提供一个数据库。

在继续之前,停止并删除 WordPress 容器:

$ podman stop mypress
$ podman rm mypress

3、在吊舱中运行容器

正如名字所暗示的那样,容器在设计上是独立的。在容器中运行的应用程序不应该与在容器外的应用程序或基础设施进行交互。因此,当一个容器需要另一个容器才能运行时,一种解决方案是将这两个容器放在一个更大的容器中,称为 “ 吊舱 pod ”。吊舱确保其容器可以共享重要的命名空间以便相互通信。

创建一个新的吊舱,为它提供一个名称,以及希望能够访问的端口:

$ podman pod create \
    --name wp_pod \
    --publish 8080:80

确认吊舱存在:

$ podman pod list
POD ID        NAME     STATUS    INFRA ID      # OF CONTAINERS
100e138a29bd  wp_pod   Created   22ace92df3ef   1

将容器添加到吊舱

现在你已经为相互依赖的容器创建了一个吊舱,你可以通过指定一个运行的吊舱来启动每个容器。

首先,启动一个数据库容器。你可以创建自己的凭据,只要在 WordPress 连接到数据库时使用相同的凭据。

$ podman run --detach \
    --pod wp_pod \
    --restart=always \
    -e MYSQL_ROOT_PASSWORD="badpassword0" \
    -e MYSQL_DATABASE="wp_db" \
    -e MYSQL_USER="tux" \
    -e MYSQL_PASSWORD="badpassword1" \
    --name=wp_db mariadb

接下来,在同一个吊舱中启动 WordPress 容器:

$ podman run --detach \
    --restart=always --pod=wp_pod \
    -e WORDPRESS_DB_NAME="wp_db" \
    -e WORDPRESS_DB_USER="tux" \
    -e WORDPRESS_DB_PASSWORD="badpassword1" \
    -e WORDPRESS_DB_HOST="127.0.0.1" \
    --name mypress wordpress

现在启动你最喜欢的网络浏览器并打开 localhost:8080

这一次,设置会正常进行。WordPress 会连接到数据库,因为你在启动容器时传递了这些环境变量。

 title=

创建用户账户后,你可以登录查看 WordPress 仪表板。

 title=

下一步

你已经创建了两个容器,并在一个吊舱中运行了它们。你现在已经了解了如何在自己的服务器上运行容器及服务。如果你想迁移到云,容器非常适合你。使用像 Kubernetes 和 OpenShift 这样的工具,你可以自动化启动 集群上的容器和吊舱。如果你正在考虑采取下一步行动,阅读 Kevin Casey 的 3 个开始使用 Kubernetes 的方法,并尝试他提到的 Minikube 教程。


via: https://opensource.com/article/22/2/start-running-containers

作者:Seth Kenlon 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

当你开始使用 新安装的 Ubuntu 系统 并尝试打开一个 MP4 文件进行播放时,它可能会显示一个错误,即:

播放这个文件要求 H.264(高清)解码器 ,但是没有安装。

当播放特定媒体文件时,Ubuntu 的默认视频播放器会显示错误

你可能会猜到原因:系统没有安装所需的多媒体解码器,导致视频播放器播放该视频文件。

所以,解决方案是什么?安装所需的解码器。怎么做呢?

我将讨论解决这个问题的三种方法:

  1. 只安装所需的解码器:它能解决所需的文件播放,但是一些其它格式的文件仍然会处在无解码器可用的状态。
  2. 一次安装多种多媒体解码器:它会安装解码器之外,还会安装你不需要的其它软件包,类似微软的字体库一样。
  3. 安装一个不同的视频播放器:像 VLC 和 MPV 视频播放器默认状态下对解码器有更好的支持。对大多数常规视频文件来说,你不必分别安装它们。

如果你遵从我的建议,我建议你采用第二种和第三种方法。为什么?一会你就知道了。

在 Ubuntu Linux 获取 H.264 解码器

这里我使用 Ubuntu Linux。第一和第三种方法应该也适用于其它发行版,但是第二种方法不适用,因为所提到的包(常常)是 Ubuntu 所独有的。

方法 1: 只安装所需的解码器(不推荐)

当你看到这个错误时,它给你一个叫做 “在 Ubuntu 软件中心查找” 的按钮。点击这个按钮打开软件中心,可能显示(或不显示)一些将在你的系统上安装 H.264 解码器的软件包。

在 Ubuntu 软件中心可能提供 H.264 解码器软件包

软件包名可能听起来很相似,但是你需要安装来自 “不良”组合 "bad" set 的 GStreamer 多媒体解码器。注意检查软件包的描述。

或者,你可以使用如下命令在终端来安装软件包:

sudo apt install gstreamer1.0-plugins-bad

如果你对终端不了解,请注意要求使用你的账户密码的提示。当你输入你的密码时,屏幕什么都不显示。这是 Linux 的方式。你盲输密码然后按回车键。

一旦软件包安装完成,再次打开文件看看是否能够正常播放。

这可能对你有用,但是解决方案并未结束。你可能有其它格式的一些视频文件要求一些其它的 H.264 解码器或者其它解码器。

其它的解码器播放视频你可能仍然有问题

你可以通过如下命令安装更多的解码器:

sudo apt install libavcodec-extra gstreamer1.0-plugins-ugly gstreamer1.0-libav

然而,在 Ubuntu 有一个 安装多媒体解码器更加方便的方法,我会在下一节展示给你。

方法 2: 安装所有多媒体解码器(推荐)

Ubuntu 系统提供了一个名字叫做 ubuntu-restricted-extras 的基础软件包,由许多常规的音频和视频解码器以及像类似微软字体库那样多余的一些软件包组成。

安装这个软件包你将不用再担心多媒体解码器的问题了。

在 Ubuntu 打开终端并键入以下命令:

sudo apt install ubuntu-restricted-extras

由于这个基础软件包包含类似微软字库那样用不到的一些多余的软件,你必须得接受最终用户许可协议(EULA)才行。

按下 tab 键 然后点击回车接受 EULA 协议

下一屏类似如下。按下 tab 键会高亮显示选项。当正确的选项高亮显示时,按下回车键来确认你的选择。

当高亮显示你正确的选项时,按下 tab 键,按回车键确认

当多媒体解码器安装完成后,你应该能够播放绝大多数媒体文件了。你的音乐播放器能播放 MP3 文件,你的视频播放器能播放 MP4,MKV 等等格式。

然而,这也不是解决方案的终点,至少对某些人来说。

为什么我要那样说?因为我已经注意到 Ubuntu 系统下的默认视频播放器 Totem 在播放某些视频格式文件时常常遇到问题。你会注意到突然你的系统主机发热,风扇狂转并且鼠标指针停止运行。

为什么?因为 Totem 播放器在视频解码方面占用了大量的处理器资源。

当你播放视频的时候你可以通过 top 命令尝试查看名称为 totem 这个进程(那是默认视频播放器的名字)。

Ubuntu 默认的视频播放器 Totem 可能消耗过多的必要的 CPU 资源

你现在能够做什么?你的麻烦看起来永无止境,别担心。在 Linux 上有更好的视频播放器 并且它们能帮助你解决问题。

方法 3: 安装一个更优秀的视频播放器(推荐)

在 Linux 上有很多优秀的视频播放器。我发现它们优于默认的 Totem 视频播放器。

就我个人来说,那么多个我只喜欢这两个:VLCMPV

VLC 是一个功能丰富且超级流行的视频播放器。很可能你已经使用过 VLC 。

MPV 媒体播放器不是那么流行,但使用这个轻量级的程序播放视频文件是再合适不过了。

VLC 和 MPV 播放器都擅长处理多媒体解码器。你甚至不必分开来安装多媒体解码器。只需要 安装 VLC 或者 MPV ,你就能够播放各种格式的视频文件。

在软件中心也可以找到它:

在 Ubuntu 软件中心 MPV 可用

或者 使用命令行 在 Ubuntu 安装 MPV

sudo apt install mpv

现在你已经有了一个新的视频播放器,你应该右键点击视频文件,选择新的视频播放器来打开。

或者,你可以使其作为默认程序 双击来播放视频文件。

对你有用吗?

我在这里没有说太多细节。我想阐述各种方法以及对应的优缺点。

你在 Ubuntu 处理好 H.264 解码器的问题了吗?哪种方法对你有用?


via: https://itsfoss.com/install-h-264-decoder-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:hwlife 校对:turbokernel

本文由 LCTT 原创编译,Linux中国 荣誉推出

Memray 是一个由彭博社开发的 内存剖析器 memory profiler ,现在已经开源。它可以跟踪 Python 代码中的内存分配,包括本地扩展和 Python 解释器本身。内存剖析是了解程序如何利用内存的有力工具,因此可以检测内存泄漏或确定程序中哪些区域消耗的内存最多。

与 py-spy 等抽样内存剖析器相比,Memray 可以跟踪每个函数调用,包括对 C/C++ 库的调用,并详细显示调用栈。彭博社称,这并不以牺牲性能为代价,剖析只使解释代码的速度变慢一点。然而,原生代码剖析的速度较慢,因此需要直接启用。

Memray 可以根据获得的内存消耗数据生成各种报告,包括火焰图,这对快速、准确地识别最常见的代码路径很有价值。

据 EgdeDB 的联合创始人兼 CEO Yury Selivanov 称,该工具提供了以前无法获得的对 Python 应用的洞察力。Memray 可以用来从命令行中执行和剖析 Python 应用。

$ python3 -m memray run -o output.bin my_script.py
$ python3 -m memray flamegraph output.bin

另外,你可以使用 pytest-memray 将 Memray 集成到你的测试套件中。你也可以用 -native 命令行选项对所有的 C/C++ 调用进行剖析,或者用 -live 命令行选项在程序执行过程中实时分析内存分配。Memray 可以在 Linux x86/64 系统上用 python3 -m pip install memray 来安装。

(题图由 Frantisek KrejciPixabay 上发布 )


via: https://www.opensourceforu.com/2022/04/bloomberg-open-sources-memray-a-python-memory-profiler/

作者:Laveesh Kocher 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你有时候会感觉大脑处于停滞状态,那么你可能正在遭受一心多用和决策疲劳。

想象一下,你刚完成了日常工作,坐在电脑前,手里拿着晨间咖啡,正准备开始新的一天。突然,一条 Slack 消息弹了出来,你扫了一眼邮件,然后切回 Slack。你打开日历,看看下一次会议是什么时候,令你惊讶的是,它 15 分钟后就要开始了!你回到办公桌前,开始检查待办事项,想看看在这短短 15 分钟内还能给自己安排什么任务,但不巧的是,这时你的一个同事请求你帮他解决一个问题。大半天就这样过去了,而你根本没有意识到……

我的许多日子都是这样度过的,不断地多个任务之间徘徊。有些时候,我发现自己盯着电脑,大脑完全停滞。如果你也发现自己处于这种情况,这可能是你的大脑发出的信号,提醒你休息一下。你可能正在遭受一心多用和决策疲劳。

平均而言,成年人每天要做大约 35000 个决定!它们可能是简单的决定,如吃什么或穿什么,也可能是需要更多思考的决定,如下一个假期去哪里或从事哪个职业。每天你都面临着大量的选择,它们占据了你的头脑。

分散注意力的一心多用

不只有你一个人每天面临着数以千计的决定,事实上,一心多用早已成为忙碌的、工作中的专业人士的常态。问题是,一心多用的伤害比它的帮助更大。你越是为了处理多任务而分散注意力,你的生产力就越是下降。

在一项研究中,自称是一心多用者的人,被要求以他们感觉自然的速度,在各种任务之间来回切换。同时,研究的对照组,被要求按顺序,一次完成一项工作。研究表明,多任务组的效率要低得多。每次他们切换任务时,都会出现速度减慢的情况,因为他们需要时间来回忆到目前为止所做的细节和步骤。这最终 额外花费了大约 40% 的时间,并导致整体准确度降低。每次专注于一项任务的人,总体上花费的时间更少,并且完成了所有的任务。

选择专注

当大脑集中在一项活动上时,它的功能是最理想的。选择专注而不是一心多用,将使你在一天中获得更好的感受,并帮助你完成更好的工作。

“专注”可以被定义为有意识和察觉的。它实际上是指活在当下,并将注意力集中于眼前的事情上。在工作场所,专注有很多好处。它的诀窍在于建立边界和习惯,使你能够对每项任务给予充分的关注。

保持积极主动,为每天必须完成的项目排好优先级,并制定一个完成计划。这将使你能够在一些重要的事情上取得真正的进展,而不是被动应付。你的待办事项清单上的每个项目,都应该是独立、明确、可操作的。每天专注于三到五项任务,不要太多。

三种在工作日休息的方法

不要忘记把“休息”也放进一天的计划中。大脑每小时需要几分钟的休息,以休养生息,避免倦怠。休息一下对你的心理健康也有好处,最终 有助于生产力的提高

这里有三种简单的“休息”方法,请把它们融入到你忙碌的一天中吧!

1、移动身体

花 10 分钟时间,离开你的椅子,站起来走一走。如果你的时间很紧张,可以站起来伸展两分钟。改变身体所处的位置,并专注于当下,将有助于缓解积聚在你心中的精神紧张。

2、多笑

休息一下,与你的朋友和工作中的同事交谈。笑声可以减少压力荷尔蒙,并引发内啡肽的释放,内啡肽是人体天然的的化学物质,它会使人感觉良好。欢声笑语的小憩有助于放松你的头脑,对你的灵魂也有好处。

3、深呼吸

用两分钟的休息时间来重置你的身心,使用腹部深呼吸。它可以使你的身心平静下来,改善氧气流动,并给你带来自然的能量提升。

  1. 挺直坐正,将注意力放在腹部,感受它的柔软和放松。
  2. 从缓慢的深吸气开始,数三下,让氧气依次充满你的腹部、肋骨和上胸。
  3. 停顿一秒钟,然后与深吸气相反,从上胸、肋骨和腹部呼气,最后将腹部拉向脊柱。
  4. 再次停顿,然后重复。

重置自己

下次当你发现自己处于停滞状态,或是正在强迫状态不佳的自己完成一项任务时,请尝试上面的一些提示。最好是短暂休息一下,重置身心,而不要试图强行完成任务。相信我,你的身体和大脑会感谢你的!

本文改编自《BodyMindSpirit》上的 让自己休息一下 和 ImageX 的博文 专注而不是一心多用


via: https://opensource.com/article/19/4/mindfulness-over-multitasking

作者:Sarah Wall 选题:lkxed 译者:lkxed 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

毅力号火星车等回了机智号直升机的消息

机智号直升机在火星表面完成了 28 次飞行,飞行距离约为 7 公里。但它的太阳能电池板上堆满了灰尘,难以为电池充电。NASA 最近失去了和直升机的联系,认为电池已耗尽。为了找回直升机,毅力号火星车停止了所有正在进行的科学活动一整天,呆在原地专心聆听机智号直升机的呼叫。令人高兴的是,机智号在大约 24 小时后“打电话回家”了。NASA 透露联络很稳定,它可能在未来几天内电池完全充满后恢复飞行活动。

消息来源:arstechnica
老王点评:火星探险这种事情,才是人类该使劲的地方啊。

国家药监局回应网友建议,将 Flash 插件替换为 pdf.js

Flash 组件从 2020 年底开始在 Windows 10 中删除。Adobe 官方也逐步结束了对 Flash 的支持。最近有网友反映:“在中国食品药品检定研究院官网数据查询板块,想要查看原文的话必须下载 Adobe Flash 软件”,并建议“能尽快改进文件格式,采用通用的 PDF 等方便阅读和下载使用的格式”。国家药监局回应,“我单位第一时间对问题进行核实,……将 Flash 插件换成 pdf.js 的方式解决此类问题,目前该项工作已完成。”

消息来源:中国政府网
老王点评:这次行动非常果决,一改我对公共网站的守旧印象。

通用和红帽合作开发基于 Linux 的全新开源车载系统

通用汽车公司宣布,红帽公司将牵头开发一个新的、基于 Linux 的开源操作系统,该系统将支撑通用汽车在 2021 年宣布的基于云的客户服务平台 Ultifi 计划。该平台将监督从未来的信息娱乐系统操作和电池管理,到该公司的汽车与其他车辆、智能基础设施甚至家庭的通信方式等一切。

消息来源:GM
老王点评:虽然已经有 AGL,但是我更看好红帽和通用汽车的这个合作。

今天,我很高兴与大家分享一个消息,它是成千上万的 Fedora 项目贡献者辛勤工作的成果:我们的最新版本 —— Fedora Linux 36,和大家见面了!

由社区开发,为社区服务

通常当我写这些公告时,我会谈论版本中的一些很棒的技术变化。但这一次,我想把重点放在实现这些变化的社区上。Fedora 社区不是一群孤立地工作的人 —— 我们是朋友。事实上,这也是我们的“ 四个理念 Four Foundations ”之一。

我们最新的“Fedora 朋友”之一,Juan Carlos Araujo 在一篇 Fedora 讨论帖子 中说得很好:

除了功能、稳定性、特性、工作方式以及前沿性外,我认为决定一个发行版成败的还有那些无形的东西,比如文档和社区。而 Fedora 拥有这一切……尤其是无形的东西。

多年来,我们一直努力使 Fedora 成为一个包容和欢迎的社区。我们希望它成为经验丰富的贡献者和新手能一起工作的地方。就像我们希望 Fedora Linux 是一个既能吸引资深用户又能吸引新手的发行版一样。

说到 Fedora Linux,让我们看看新版本的一些亮点。像往常一样,在从旧版本升级之前,请确保你的系统是最新的。这次尤其需要注意,因为我们在 F34/F35 更新中修复了一些非常重要的与升级有关的错误。如果不先应用这些更新,系统升级可能会失败。

桌面改进

Fedora 工作站专注于桌面体验,尤其是面向那些希望获得“刚刚好”的 Linux 系统体验的用户。像往常一样,Fedora 工作站采用最新的 GNOME 版本:GNOME 42。虽然 GNOME 42 不能完全解决生命、宇宙和一切问题,但它带来了很多改进。许多应用程序都被移植到了 GTK 4,以改善风格和性能。它还附带了两个新的应用程序: 文本编辑器 Text Editor 控制台 Console 。它们的名字起得很贴切,所以你可以猜出它们是干什么的。文本编辑器是新的默认文本编辑器,而控制台可以在软件仓库中下载。

如果你使用了英伟达的专有图形驱动,你的桌面会话现在将默认使用 Wayland 协议。这使你能够在使用现代桌面管理器时,充分利用硬件加速。

当然,我们生产的不仅仅是 “Editions”。Fedora SpinsLabs 针对不同的受众和使用场景。例如 Fedora Comp Neuro ,它为计算神经科学提供工具,以及 Fedora LXQt,它提供一个轻量级的桌面环境。并且,我们附加了可选架构:ARM AArch64、Power 和 S390x

针对系统管理员的改进

Fedora Linux 36 包含最新的 Ansible 版本。Ansible 5 将“引擎”拆分为 ansible-core 包和 collection 包。这使得维护更容易,并允许你只下载需要的集合。请参阅 Ansible 5 迁移指南 以了解如何更新你的 Playbook。

从 Fedora Server 36 开始,Cockpit 提供了一个用于配置和持续管理 NFS 及 Samba 共享的模块。这使得管理员可以通过 Cockpit 网页界面(用于配置其他服务器属性)来管理网络文件共享。

其他更新

无论你使用 Fedora Linux 的哪个衍生版,你都会得到开源世界所提供的最新成果。Podman 4.0 将在 Fedora Linux 36 中首次全面发布。它带来了大量变化和一个全新的网络栈。不过,它也带来了向下不兼容的 API 变化,所以请仔细阅读 上游文档

遵循 Fedora 的 “ 争先 First ” 理念,我们已经更新了关键的编程语言和系统库包,包括 Ruby 3.1、Golang 1.18 和 PHP 8.1。

我们很高兴你能试用新版本!请访问 https://getfedora.org 并立即下载它吧!或者,如果你正在使用 Fedora Linux,请按照我们的 简易升级说明 进行。想了解更多关于 Fedora Linux 36 新功能的信息,请查看 发行说明

虽然不大可能会出现问题……

但是,如果你真的遇到了问题,请访问我们的 Ask Fedora 用户支持论坛。这里有一个 常见问题 的分类。

谢谢大家

感谢在本次发布周期内为 Fedora 项目做出贡献的成千上万的人。Fedora 社区有你们,真好!请务必在 5 月 13 日至 14 日参加我们的 虚拟发布派对


via: https://fedoramagazine.org/announcing-fedora-36/

作者:Matthew Miller 选题:lujun9972 译者:lkxed 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出