diff --git a/translated/tech/20180618 Anatomy of a Linux DNS Lookup – Part II.md b/published/20180618 Anatomy of a Linux DNS Lookup - Part II.md
similarity index 80%
rename from translated/tech/20180618 Anatomy of a Linux DNS Lookup – Part II.md
rename to published/20180618 Anatomy of a Linux DNS Lookup - Part II.md
index c6c7c9da21..9bd7f17347 100644
--- a/translated/tech/20180618 Anatomy of a Linux DNS Lookup – Part II.md
+++ b/published/20180618 Anatomy of a Linux DNS Lookup - Part II.md
@@ -1,28 +1,26 @@
-Linux DNS 查询剖析 - 第二部分
-============================================================
+Linux DNS 查询剖析(第二部分)
+==============================================
在 [Linux DNS 查询剖析 - 第一部分][1] 中,我介绍了:
* `nsswitch`
* `/etc/hosts`
* `/etc/resolv.conf`
-* `ping` vs `host` 对应的查询方式
+* `ping` 与 `host` 查询方式对比
并且发现大多数程序选择要查询的 DNS 服务器时会参考 `/etc/resolv.conf` 配置文件。
-这种方式在 Linux 上比较普遍 (*)。虽然我使用了特定的发行版 Ubuntu,但背后的原理与 Debian 甚至是那些基于 CentOS 的发行版与相通的地方;当然,与更低或更高的 Ubuntu 版本相比,差异还是存在的。
+这种方式在 Linux 上比较普遍[^1]。虽然我使用了特定的发行版 Ubuntu,但背后的原理与 Debian 甚至是那些基于 CentOS 的发行版有相通的地方;当然,与更低或更高的 Ubuntu 版本相比,差异还是存在的。
-###### (*) 事实上,这是相对于 POSIX 标准的,故不限于 Linux (我从上一篇文章的一条极好的[回复][2]中了解到这一点)
+[^1]: 事实上,这是相对于 POSIX 标准的,故不限于 Linux (我从上一篇文章的一条极好的[回复][2]中了解到这一点)
也就是说,接下来,你主机上的行为很可能与我描述的不一致。
在第二部分中,我将介绍 `resolv.conf` 的更新机制、`systemctl restart networking` 命令的运行机制 ,以及 `dhclient` 是如何参与其中。
-* * *
+### 1) 手动更新 /etc/resolv.conf
-# 1) 手动更新 /etc/resolv.conf
-
-我们知道 `/etc/resolv.conf` (有极大的可能性)被用到,故你自然可以通过该文件增加一个 nameserver,那么主机也将会(与已有的 nameservers 一起)使用新加入的 nameserver 吧?
+我们知道 `/etc/resolv.conf` (有极大的可能性)被用到,故你自然可以通过该文件增加一个 `nameserver`,那么主机也将会(与已有的 `nameserver` 一起)使用新加入的 `nameserver` 吧?
你可以尝试如下:
@@ -30,7 +28,7 @@ Linux DNS 查询剖析 - 第二部分
$ echo nameserver 10.10.10.10 >> /etc/resolv.conf
```
-看上去新的 nameserver 已经加入:
+看上去新的 `nameserver` 已经加入:
```
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
@@ -51,13 +49,11 @@ nameserver 10.0.2.3
search home
```
-我们的 `10.10.10.10` nameserver 不见了!
+我们的 `10.10.10.10` 的 `nameserver` 不见了!
在上一篇文章中我们忽略了这一点,本文进行补充说明。
-* * *
-
-# 2) resolvconf
+### 2) resolvconf
你在 `/etc/resolv.conf` 文件中看到 `generated by resolvconf` 词组了吧?这就是我们的线索。
@@ -72,11 +68,11 @@ search home
```
Add or overwrite the record IFACE.PROG then run the update scripts
if updating is enabled.
-
-(LCTT 译注:增加或覆盖 IFACE.PROG 记录,如果开启更新选项,则运行更新脚本)
```
-故而也许我们可以直接调用该命令增加 namserver:
+(增加或覆盖 IFACE.PROG 记录,如果开启更新选项,则运行更新脚本)
+
+故而也许我们可以直接调用该命令增加 `namserver`:
```
echo 'nameserver 10.10.10.10' | /sbin/resolvconf -a enp0s8.inet
@@ -90,7 +86,7 @@ nameserver 10.0.2.3
nameserver 10.10.10.10
```
-是否已经找到答案,这就是 `/etc/resolv.conf` 更新的逻辑?调用 `resolvconf` 将 nameserver 添加到某个地方的数据库,然后(如果配置了更新,先不管具体什么含义)更新 `resolv.conf` 文件。
+是否已经找到答案,这就是 `/etc/resolv.conf` 更新的逻辑?调用 `resolvconf` 将 `nameserver` 添加到某个地方的数据库,然后(“如果配置了更新”,先不管具体什么含义)更新 `resolv.conf` 文件。
并非如此。
@@ -103,13 +99,11 @@ nameserver 10.0.2.3
search home
```
-呃!(网络服务重启后)新增的 nameserver 再次消失了。
+呃!(网络服务重启后)新增的 `nameserver` 再次消失了。
-可见,`systemctl restart networking` 不仅仅运行了 `resolvconf`,还在其它地方获取 nameserver 信息。具体是哪里呢?
+可见,`systemctl restart networking` 不仅仅运行了 `resolvconf`,还在其它地方获取 `nameserver` 信息。具体是哪里呢?
-* * *
-
-# 3) ifup/ifdown
+### 3) ifup/ifdown
继续深入研究 `systemctl restart networking`,发现它完成了一系列工作:
@@ -133,9 +127,9 @@ ExecStop=/sbin/ifdown -a --read-environment --exclude=lo
/sbin/ifup -a --read-environment
```
-第一行使用 `ifdown` 关闭全部的网络接口,但本地回环接口除外。(*)
+第一行使用 `ifdown` 关闭全部的网络接口,但本地回环接口除外。[^2]
-###### (*) 我不明白为何这没有导致我例子中的 vagrant 会话中断 (有谁明白吗?)。
+[^2]: 我不明白为何这没有导致我例子中的 vagrant 会话中断 (有谁明白吗?)。
(LCTT 译注:其实这是因为很快就又启动了接口,间隔的时间没有超过 TCP 连接的超时时间,有人在评论中也做了类似回复)
@@ -147,9 +141,7 @@ ExecStop=/sbin/ifdown -a --read-environment --exclude=lo
其中一件工作就是运行了 `dhclient`,但我还不完全确定具体的机理,也许 `udev` 参与其中。
-* * *
-
-# 4) dhclient
+### 4) dhclient
`dhclient` 是一个程序,用于与 DHCP 服务器协商对应网络接口应该使用的 IP 地址的详细信息。同时,它也可以获取可用的 DNS 服务器并将其替换到 `/etc/resolv.conf` 中。
@@ -177,7 +169,7 @@ $ cat /etc/resolv.conf | grep nameserver
nameserver 10.0.2.3
```
-可见这就是 nameserver 的来源。
+可见这就是 `nameserver` 的来源。
但稍等一下,命令中的 `/run/resolvconf/resolv.conf` 是哪个文件,不应该是 `/etc/resolv.conf` 吗?
@@ -185,16 +177,14 @@ nameserver 10.0.2.3
在我的虚拟机上,它是一个软链接,指向位于 `/run/resolvconf` 目录下的“真实文件”。这也暗示了我们,该文件是在系统启动时生成的;同时,这也是该文件注释告诉我们不要直接修改该文件的原因。
-(LCTT 译注:在 CentOS 7 中,没有 resolvconf 命令,/etc/resolv.conf 也不是软链接)
+(LCTT 译注:在 CentOS 7 中,没有 `resolvconf` 命令,`/etc/resolv.conf` 也不是软链接)
假如上面命令中 `sed` 命令直接处理 `/etc/resolv.conf` 文件,效果是不同的,会有警告消息告知待操作的文件不能是软链接(`sed -i` 无法很好的处理软链接,它只会创建一个新文件)。
-(译注:CentOS 7 测试时,`sed -i` 命令操作软链接并没有警告,但确实创建了新文件取代软链接)
+(LCTT 译注:CentOS 7 测试时,`sed -i` 命令操作软链接并没有警告,但确实创建了新文件取代软链接)
如果你继续深入查看配置文件 `/etc/dhcp/dhclient.conf` 的 `supersede` 部分,你会发现 `dhclient` 可以覆盖 DHCP 提供的 DNS 服务器。
-* * *
-
![linux-dns-2 (2)](https://zwischenzugs.files.wordpress.com/2018/06/linux-dns-2-2.png?w=525)
_(大致)准确的关系图_
@@ -224,10 +214,10 @@ via: https://zwischenzugs.com/2018/06/18/anatomy-of-a-linux-dns-lookup-part-ii/
作者:[ZWISCHENZUGS][a]
译者:[pinewall](https://github.com/pinewall)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://zwischenzugs.com/
-[1]:https://zwischenzugs.com/2018/06/08/anatomy-of-a-linux-dns-lookup-part-i/
+[1]:https://linux.cn/article-9943-1.html
[2]:https://zwischenzugs.com/2018/06/08/anatomy-of-a-linux-dns-lookup-part-i/#comment-2312
diff --git a/translated/tech/20180802 6 Easy Ways to Check User Name And Other Information in Linux.md b/published/20180802 6 Easy Ways to Check User Name And Other Information in Linux.md
similarity index 62%
rename from translated/tech/20180802 6 Easy Ways to Check User Name And Other Information in Linux.md
rename to published/20180802 6 Easy Ways to Check User Name And Other Information in Linux.md
index 0582c84019..32fe8a11c0 100644
--- a/translated/tech/20180802 6 Easy Ways to Check User Name And Other Information in Linux.md
+++ b/published/20180802 6 Easy Ways to Check User Name And Other Information in Linux.md
@@ -1,7 +1,7 @@
6 个简单的方式来查看 Linux 中的用户名和其它信息
======
-这是一个非常基础的话题,在 Linux 中,每个人都知道如何使用 **id** 来查找用户信息。一些用户也从 **/etc/passwd** 文件中过滤用户信息。
+这是一个非常基础的话题,在 Linux 中,每个人都知道如何使用 `id` 来查找用户信息。一些用户也从 `/etc/passwd` 文件中过滤用户信息。
我们还使用其它命令来获取用户信息。
@@ -11,45 +11,44 @@
这是帮助管理员在 Linux 中查找用户信息的基本命令之一。Linux 中的一切都是文件,甚至用户信息都存储在一个文件中。
-**建议阅读:**
+建议阅读:
-**(#)** [怎样在 Linux 上查看用户创建的日期][1]
+- [怎样在 Linux 上查看用户创建的日期][1]
+- [怎样在 Linux 上查看用户属于哪个组][2]
+- [怎样在 Linux 上查看强制用户在下次登录时改变密码][3]
-**(#)** [怎样在 Linux 上查看用户属于哪个组][2]
-
-**(#)** [怎样在 Linux 上查看强制用户在下次登录时改变密码][3]
-
-所有用户都被添加在 `/etc/passwd` 文件中,这里保留了用户名和其它相关详细信息。在 Linux 中创建用户时,用户详细信息将存储在 /etc/passwd 文件中。passwd 文件将每个用户详细信息保存为一行,包含 7 字段。
+所有用户都被添加在 `/etc/passwd` 文件中,这里保留了用户名和其它相关详细信息。在 Linux 中创建用户时,用户详细信息将存储在 `/etc/passwd` 文件中。passwd 文件将每个用户详细信息保存为一行,包含 7 字段。
我们可以使用以下 6 种方法来查看用户信息。
- * `id :`为指定的用户名打印用户和组信息。
- * `getent :`从 Name Service Switch 库中获取条目。
- * `/etc/passwd file :` /etc/passwd 文件包含每个用户的详细信息,每个用户详情是一行,包含 7 个字段。
- * `finger :`用户信息查询程序
- * `lslogins :`lslogins 显示系统中已有用户的信息
- * `compgen :`compgen 是 bash 内置命令,它将显示用户的所有可用命令。
+ * `id`:为指定的用户名打印用户和组信息。
+ * `getent`:从 Name Service Switch 库中获取条目。
+ * `/etc/passwd`: 文件包含每个用户的详细信息,每个用户详情是一行,包含 7 个字段。
+ * `finger`:用户信息查询程序
+ * `lslogins`:显示系统中已有用户的信息
+ * `compgen`:是 bash 内置命令,它将显示用户的所有可用命令。
### 1) 使用 id 命令
-id 代表身份。它输出真实有效的用户和组 ID。也可以输出指定用户或当前用户的用户和组信息。
+`id` 代表身份。它输出真实有效的用户和组 ID。也可以输出指定用户或当前用户的用户和组信息。
+
```
# id daygeek
uid=1000(daygeek) gid=1000(daygeek) groups=1000(daygeek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare)
-
```
下面是上述输出的详细信息:
- * **`uid (1000/daygeek):`** 它显示用户 ID 和用户名
- * **`gid (1000/daygeek):`** 它显示用户的组 ID 和名称
- * **`groups:`** 它显示用户的附加组 ID 和名称
+ * `uid (1000/daygeek)`: 它显示用户 ID 和用户名
+ * `gid (1000/daygeek)`: 它显示用户的组 ID 和名称
+ * `groups`: 它显示用户的附加组 ID 和名称
### 2) 使用 getent 命令
-getent 命令显示 Name Service Switch 库支持的数据库中的条目,这些库在 /etc/nsswitch.conf 中配置。
+`getent` 命令显示 Name Service Switch 库支持的数据库中的条目,这些库在 `/etc/nsswitch.conf` 中配置。
+
+`getent` 命令会显示类似于 `/etc/passwd` 文件的用户详情,它将每个用户的详细信息放在一行,包含 7 个字段。
-getent 命令会显示类似于 /etc/passwd 文件的用户详情,它将每个用户的详细信息放在一行,包含 7 个字段。
```
# getent passwd
root:x:0:0:root:/root:/bin/bash
@@ -85,24 +84,24 @@ nrpe:x:497:497:NRPE user for the NRPE service:/var/run/nrpe:/sbin/nologin
magesh:x:502:503:2g Admin - Magesh M:/home/magesh:/bin/bash
thanu:x:503:504:2g Editor - Thanisha M:/home/thanu:/bin/bash
sudha:x:504:505:2g Editor - Sudha M:/home/sudha:/bin/bash
-
```
-下面是关于 7 个字段的详细信息。
+下面是关于 7 个字段的详细信息:
+
```
magesh:x:502:503:2g Admin - Magesh M:/home/magesh:/bin/bash
-
```
- * **`Username (magesh):`** 已创建的用户名。字符长度应该在 1 到 32 之间。
- * **`Password (x):`** 它表明加密密码存储在 /etc/shadow 文件中。
- * **`User ID (UID-502):`** 它表示用户 ID(UID),每个用户应包含唯一的 UID。UID (0-Zero) 保留给 root,UID(1-99)是为系统用户保留的,UID(100-999)是为系统账户/组保留的。
- * **`Group ID (GID-503):`** 它表示组 ID(GID),每个组应该包含唯一的 GID,它存储在 /etc/group 文件中。
- * **`User ID Info (2g Admin - Magesh M):`** 它表示命令字段。这个字段可用于描述用户信息。
- * **`Home Directory (/home/magesh):`** 它表示用户家目录。
- * **`shell (/bin/bash):`** 它表示用户的 bash shell。
+ * `Username (magesh)`: 已创建的用户名。字符长度应该在 1 到 32 之间。
+ * `Password (x)`: 它表明加密密码存储在 `/etc/shadow` 文件中。
+ * `User ID (UID-502)`: 它表示用户 ID(UID),每个用户应包含唯一的 UID。UID (0-Zero) 保留给 root,UID(1-99)是为系统用户保留的,UID(100-999)是为系统账户/组保留的。
+ * `Group ID (GID-503)`: 它表示组 ID(GID),每个组应该包含唯一的 GID,它存储在 `/etc/group` 文件中。
+ * `User ID Info (2g Admin - Magesh M)`: 它表示命令字段。这个字段可用于描述用户信息。
+ * `Home Directory (/home/magesh)`: 它表示用户家目录。
+ * `shell (/bin/bash)`: 它表示用户的 bash shell。
+
+如果你只想在 `getent` 命令的输出中显示用户名,使用以下命令格式:
-如果你只想在 getent 命令的输出中显示用户名,使用以下命令格式:
```
# getent passwd | cut -d: -f1
root
@@ -138,10 +137,10 @@ nrpe
magesh
thanu
sudha
-
```
只显示用户的家目录,使用以下命令格式:
+
```
# getent passwd | grep '/home' | cut -d: -f1
centos
@@ -149,12 +148,12 @@ prakash
magesh
thanu
sudha
-
```
### 3) 使用 /etc/passwd 文件
-`/etc/passwd` 是一个文本文件,它包含每个用户登录 Linux 系统所必需的的信息。它维护用户的有用信息,如用户名,密码,用户 ID,组 ID,用户 ID 信息,家目录和 shell。/etc/passwd 文件将每个用户详细信息放在一行中,包含 7 个字段,如下所示:
+`/etc/passwd` 是一个文本文件,它包含每个用户登录 Linux 系统所必需的的信息。它维护用户的有用信息,如用户名,密码,用户 ID,组 ID,用户 ID 信息,家目录和 shell。`/etc/passwd` 文件将每个用户详细信息放在一行中,包含 7 个字段,如下所示:
+
```
# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
@@ -190,24 +189,24 @@ nrpe:x:497:497:NRPE user for the NRPE service:/var/run/nrpe:/sbin/nologin
magesh:x:502:503:2g Admin - Magesh M:/home/magesh:/bin/bash
thanu:x:503:504:2g Editor - Thanisha M:/home/thanu:/bin/bash
sudha:x:504:505:2g Editor - Sudha M:/home/sudha:/bin/bash
-
```
以下是 7 个字段的详细信息。
+
```
magesh:x:502:503:2g Admin - Magesh M:/home/magesh:/bin/bash
-
```
- * **`Username (magesh):`** 已创建的用户名。字符长度应该在 1 到 32 之间。
- * **`Password (x):`** 它表明加密密码存储在 /etc/shadow 文件中。
- * **`User ID (UID-502):`** 它表示用户 ID(UID),每个用户应包含唯一的 UID。UID (0-Zero) 保留给 root,UID(1-99)是为系统用户保留的,UID(100-999)是为系统账户/组保留的。
- * **`Group ID (GID-503):`** 它表示组 ID(GID),每个组应该包含唯一的 GID,它存储在 /etc/group 文件中。
- * **`User ID Info (2g Admin - Magesh M):`** 它表示命令字段。这个字段可用于描述用户信息。
- * **`Home Directory (/home/magesh):`** 它表示用户家目录。
- * **`shell (/bin/bash):`** 它表示用户的 bash shell。
+ * `Username (magesh)`: 已创建的用户名。字符长度应该在 1 到 32 之间。
+ * `Password (x)`: 它表明加密密码存储在 `/etc/shadow` 文件中。
+ * `User ID (UID-502)`: 它表示用户 ID(UID),每个用户应包含唯一的 UID。UID (0-Zero) 保留给 root,UID(1-99)是为系统用户保留的,UID(100-999)是为系统账户/组保留的。
+ * `Group ID (GID-503)`: 它表示组 ID(GID),每个组应该包含唯一的 GID,它存储在 `/etc/group` 文件中。
+ * `User ID Info (2g Admin - Magesh M)`: 它表示命令字段。这个字段可用于描述用户信息。
+ * `Home Directory (/home/magesh)`: 它表示用户家目录。
+ * `shell (/bin/bash)`: 它表示用户的 bash shell。
+
+如果你只想显示 `/etc/passwd` 文件中的用户名,使用以下格式:
-如果你只想显示 /etc/passwd 文件中的用户名,使用以下格式:
```
# cut -d: -f1 /etc/passwd
root
@@ -243,10 +242,10 @@ nrpe
magesh
thanu
sudha
-
```
只显示用户的家目录,使用以下格式:
+
```
# cat /etc/passwd | grep '/home' | cut -d: -f1
centos
@@ -254,12 +253,12 @@ prakash
magesh
thanu
sudha
-
```
### 4) 使用 finger 命令
-finger 命令显示有关系统用户的信息。它显示用户的真实姓名,终端名称和写入状态(如果没有写入权限,那么最为终端名称后面的 "*"),空闲时间和登录时间。
+`finger` 命令显示有关系统用户的信息。它显示用户的真实姓名,终端名称和写入状态(如果没有写入权限,那么最为终端名称后面的 `*`),空闲时间和登录时间。
+
```
# finger magesh
Login: magesh Name: 2g Admin - Magesh M
@@ -267,22 +266,22 @@ Directory: /home/magesh Shell: /bin/bash
Last login Tue Jul 17 22:46 (EDT) on pts/2 from 103.5.134.167
No mail.
No Plan.
-
```
以下是上述输出的详细信息:
- * **`Login:`** 用户名
- * **`Name:`** 附加/有关用户的其它信息
- * **`Directory:`** 用户家目录的信息
- * **`Shell:`** 用户的 shell 信息
- * **`LAST-LOGIN:`** 上次登录日期和其它信息
+ * `Login`: 用户名
+ * `Name`: 附加/有关用户的其它信息
+ * `Directory`: 用户家目录的信息
+ * `Shell`: 用户的 shell 信息
+ * `LAST-LOGIN`: 上次登录日期和其它信息
### 5) 使用 lslogins 命令
它显示系统已知用户的信息。默认情况下,它将列出系统中所有用户的信息。
-lslogins 使用程序的灵感来自于 logins 实用程序,该实用程序最初出现在 FreeBSD 4.10 中。
+`lslogins` 使用程序的灵感来自于 `logins` 实用程序,该实用程序最初出现在 FreeBSD 4.10 中。
+
```
# lslogins -u
UID USER PWD-LOCK PWD-DENY LAST-LOGIN GECOS
@@ -292,21 +291,21 @@ UID USER PWD-LOCK PWD-DENY LAST-LOGIN GECOS
502 magesh 0 0 Jul17/22:46 2g Admin - Magesh M
503 thanu 0 0 Jul18/00:40 2g Editor - Thanisha M
504 sudha 0 0 Jul18/01:18 2g Editor - Sudha M
-
```
以下是上述输出的详细信息:
- * **`UID:`** 用户 id
- * **`USER:`** 用户名
- * **`PWD-LOCK:`** 密码已设置,但是已锁定
- * **`PWD-DENY:`** 登录密码是否禁用
- * **`LAST-LOGIN:`** 上次登录日期
- * **`GECOS:`** 有关用户的其它信息
+ * `UID`: 用户 id
+ * `USER`: 用户名
+ * `PWD-LOCK`: 密码已设置,但是已锁定
+ * `PWD-DENY`: 登录密码是否禁用
+ * `LAST-LOGIN`: 上次登录日期
+ * `GECOS`: 有关用户的其它信息
### 6) 使用 compgen 命令
-compgen 是 bash 内置命令,它将显示所有可用的命令,别名和函数。(to 校正:这个命令在 CentOS 中有,但是我没有搞懂它的输出)
+`compgen` 是 bash 内置命令,它将显示所有可用的命令,别名和函数。(LCTT 译注:它的 `-u` 参数可以列出系统中用户。)
+
```
# compgen -u
root
@@ -352,7 +351,7 @@ via: https://www.2daygeek.com/6-easy-ways-to-check-user-name-and-other-informati
作者:[Prakash Subramanian][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[MjSeven](https://github.com/MjSeven)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/translated/tech/20180809 How To Switch Between Multiple PHP Versions In Ubuntu.md b/published/20180809 How To Switch Between Multiple PHP Versions In Ubuntu.md
similarity index 66%
rename from translated/tech/20180809 How To Switch Between Multiple PHP Versions In Ubuntu.md
rename to published/20180809 How To Switch Between Multiple PHP Versions In Ubuntu.md
index bf743b5d5b..acf5b328ce 100644
--- a/translated/tech/20180809 How To Switch Between Multiple PHP Versions In Ubuntu.md
+++ b/published/20180809 How To Switch Between Multiple PHP Versions In Ubuntu.md
@@ -3,104 +3,101 @@
![](https://www.ostechnix.com/wp-content/uploads/2018/08/php-720x340.png)
-有时,最新版本的安装包可能无法按预期工作。你的程序可能与更新的软件包不兼容,并且仅支持特定的旧版软件包。在这种情况下,你可以立即将有问题的软件包降级到其早期的工作版本。请参阅我们的旧指南,[**在这**][1]了解如何降级 Ubuntu 及其衍生版中的软件包以及[**在这**][1]了解如何降级 Arch Linux 及其衍生版中的软件包。但是,你无需降级某些软件包。我们可以同时使用多个版本。例如,假设你在测试部署在 Ubuntu 18.04 LTS 中的[**LAMP 栈**][3]的 PHP 程序。过了一段时间,你发现应用程序在 PHP5.6 中工作正常,但在 PHP 7.2 中不正常(Ubuntu 18.04 LTS 默认安装 PHP 7.x)。你打算重新安装 PHP 或整个 LAMP 栈吗?但是没有必要。你甚至不必将 PHP 降级到其早期版本。在这个简短的教程中,我将向你展示如何在 Ubuntu 18.04 LTS 中切换多个 PHP 版本。它没你想的那么难。请继续阅读。
+有时,最新版本的安装包可能无法按预期工作。你的程序可能与更新的软件包不兼容,并且仅支持特定的旧版软件包。在这种情况下,你可以立即将有问题的软件包降级到其早期的工作版本。请参阅我们的旧指南,[在这][1]了解如何降级 Ubuntu 及其衍生版中的软件包以及[在这][1]了解如何降级 Arch Linux 及其衍生版中的软件包。但是,你无需降级某些软件包。我们可以同时使用多个版本。例如,假设你在测试部署在 Ubuntu 18.04 LTS 中的[LAMP 栈][3]的 PHP 程序。过了一段时间,你发现应用程序在 PHP 5.6 中工作正常,但在 PHP 7.2 中不正常(Ubuntu 18.04 LTS 默认安装 PHP 7.x)。你打算重新安装 PHP 或整个 LAMP 栈吗?但是没有必要。你甚至不必将 PHP 降级到其早期版本。在这个简短的教程中,我将向你展示如何在 Ubuntu 18.04 LTS 中切换多个 PHP 版本。它没你想的那么难。请继续阅读。
### 在多个 PHP 版本之间切换
要查看 PHP 的默认安装版本,请运行:
+
```
$ php -v
PHP 7.2.7-0ubuntu0.18.04.2 (cli) (built: Jul 4 2018 16:55:24) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.7-0ubuntu0.18.04.2, Copyright (c) 1999-2018, by Zend Technologies
-
```
如你所见,已安装的 PHP 的版本为 7.2.7。在测试你的程序几天后,你会发现你的程序不支持 PHP7.2。在这种情况下,同时使用 PHP5.x 和 PHP7.x 是个不错的主意,这样你就可以随时轻松地在任何支持的版本之间切换。
你不必删除 PHP7.x 或重新安装 LAMP 栈。你可以同时使用 PHP5.x 和 7.x 版本。
-我假设你还没有在你的系统中卸载 php5.6。万一你已将其删除,你可以使用下面的 PPA 再次安装它。
+我假设你还没有在你的系统中卸载 PHP 5.6。万一你已将其删除,你可以使用下面的 PPA 再次安装它。
+
+你可以从 PPA 中安装 PHP 5.6:
-你可以从 PPA 中安装 PHP5.6:
```
$ sudo add-apt-repository -y ppa:ondrej/php
$ sudo apt update
$ sudo apt install php5.6
-
```
-#### 从 PHP7.x 切换到 PHP5.x.
+#### 从 PHP 7.x 切换到 PHP 5.x.
+
+首先使用命令禁用 PHP 7.2 模块:
-首先使用命令禁用 PHP7.2 模块:
```
$ sudo a2dismod php7.2
Module php7.2 disabled.
To activate the new configuration, you need to run:
systemctl restart apache2
-
```
-接下来,启用 PHP5.6 模块:
+接下来,启用 PHP 5.6 模块:
+
```
$ sudo a2enmod php5.6
-
```
-将 PHP5.6 设置为默认版本:
+将 PHP 5.6 设置为默认版本:
+
```
$ sudo update-alternatives --set php /usr/bin/php5.6
-
```
或者,你可以运行以下命令来设置默认情况下要使用的全局 PHP 版本。
+
```
$ sudo update-alternatives --config php
-
```
-输入选择的号码将其设置为默认版本,或者只需按 ENTER 键保持当前选择。
+输入选择的号码将其设置为默认版本,或者只需按回车键保持当前选择。
如果你已安装其他 PHP 扩展,请将它们设置为默认值。
+
```
$ sudo update-alternatives --set phar /usr/bin/phar5.6
-
```
最后,重启 Apache Web 服务器:
+
```
$ sudo systemctl restart apache2
-
```
-现在,检查 PHP5.6 是否是默认版本:
+现在,检查 PHP 5.6 是否是默认版本:
+
```
$ php -v
PHP 5.6.37-1+ubuntu18.04.1+deb.sury.org+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
-
```
-#### 从 PHP5.x 切换到 PHP7.x.
+#### 从 PHP 5.x 切换到 PHP 7.x.
+
+同样,你可以从 PHP 5.x 切换到 PHP 7.x 版本,如下所示。
-同样,你可以从 PHP5.x 切换到 PHP7.x 版本,如下所示。
```
$ sudo a2enmod php7.2
-
$ sudo a2dismod php5.6
-
$ sudo update-alternatives --set php /usr/bin/php7.2
-
$ sudo systemctl restart apache2
-
```
**提醒一句:**
-最终稳定版 PHP5.6 于 2017 年 1 月 19 日达到[**活跃支持截止**][4]。但是,直到 2018 年 12 月 31 日,PHP 5.6 将继续获得对关键安全问题的支持。所以,建议尽快升级所有 PHP 程序并与 PHP7.x 兼容。
+最终稳定版 PHP 5.6 于 2017 年 1 月 19 日达到[**活跃支持截止**][4]。但是,直到 2018 年 12 月 31 日,PHP 5.6 将继续获得对关键安全问题的支持。所以,建议尽快升级所有 PHP 程序并与 PHP 7.x 兼容。
如果你希望防止 PHP 将来自动升级,请参阅以下指南。
@@ -109,7 +106,6 @@ $ sudo systemctl restart apache2
干杯!
-
--------------------------------------------------------------------------------
via: https://www.ostechnix.com/how-to-switch-between-multiple-php-versions-in-ubuntu/
@@ -117,7 +113,7 @@ via: https://www.ostechnix.com/how-to-switch-between-multiple-php-versions-in-ub
作者:[SK][a]
选题:[lujun9972](https://github.com/lujun9972)
译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
diff --git a/published/20180812 Ubuntu 18.04 Vs. Fedora 28.md b/published/20180812 Ubuntu 18.04 Vs. Fedora 28.md
new file mode 100644
index 0000000000..37b1a6620a
--- /dev/null
+++ b/published/20180812 Ubuntu 18.04 Vs. Fedora 28.md
@@ -0,0 +1,108 @@
+对比 Ubuntu 18.04 和 Fedora 28
+======
+
+![](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/ubuntu-18-04-vs-fedora-28_orig.jpg)
+
+大家好,我准备在今天突出说明一下两大主流 Linux 发行版,即 **Ubuntu 18.04** 和 **Fedora 28**,包括一些特性和差异。两者都有各自的包管理系统,其中 Ubuntu 使用 DEB,Fedora 使用 RPM;但二者使用同样的[桌面环境][3] (DE)[GNOME][4],并致力于为 Linux 用户提供高品质的桌面体验。
+
+**Ubuntu 18.04** 是 Ubuntu 目前最新的 [长期支持版本][1](LTS),为用户提供 GNOME 桌面系统。**Fedora 28** 也提供 GNOME 桌面系统,但落实到具体的软件包管理方面,二者的桌面体验存在差异;在用户界面方面也显然存在差异。
+
+### 基本概念
+
+不知你是否了解,虽然 Ubuntu 基于 Debian,但 Ubuntu 比 Debian 更早提供最新版本的软件。举个例子,当 Ubuntu 提供流行网页浏览器 Firefox Quantum 时,Debian 仍在提供 Firefox 的延期支持版(ESR)。
+
+(LCTT 译注:从 2012 年 1 月开始,Firefox 进入快速版本期,每 6 周发布新的主线版本,每隔 7 个主线版本发布新的 ESR 版本。Firefox 57 的桌面版发布时被命名为 Firefox Quantum,同期的 ESR 版本与 Firefox 52 一同发布并基于 Firefox 48。参考 [Wiki: History\_of\_Firefox][9])
+
+同样的情况也适用于 Fedora,它为终端用户提供前沿的软件,也被用作下一个稳定版本的 RHEL (Red Hat Enterprise Linux) 的测试平台。
+
+### 桌面预览
+
+Fedora 提供原汁原味的 GNOME 桌面体验;相比之下,Ubuntu 18.04 对 GNOME 做了若干方面的微调,以便长期以来的 Unity 用户可以平滑的过渡到 GNOME 桌面环境。
+
+_为节省开发时间,Canonical (从 Ubuntu [17.10][2] 开始)已经决定放弃 Unity 并转向 GNOME 桌面,以便可以将更多精力投入到 IoT 领域。_
+
+因此,在 Fedora 的桌面预览中,我们可以看到一个简洁的无图标桌面和一个自动隐藏的侧边栏,整体外观采用 GNOME 默认的 Adwaita 主题。
+
+ [![fedora 28 gnome](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/ubuntu-18-04-gnome_orig.jpg)][5]
+
+相比之下,Ubuntu 采用其经典的有图标桌面样式,左侧边栏用于模拟其传统的“程序坞”,使用 Ubuntu Ambiance 主题定制化窗口,与其传统的(Unity 桌面)外观和体验基本一致。
+
+ [![Ubuntu gnome 18.04](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/ubuntu-gnome-18-04_orig.jpg)][6]
+
+虽然存在一定差异,但习惯使用其中一种桌面环境后切换到另外一种并不困难。毕竟二者设计时都充分考虑了简洁性和用户友好性,即使是新用户也不会对这两种 Linux 发行版感到不适应。
+
+但外观或 UI 并不是决定用户选择哪一种 Linux 发行版的唯一因素,还有其它因素也会影响用户的选择。下面主要介绍两种 Linux 发行版在软件包管理相关方面的内容。
+
+### 软件中心
+
+Ubuntu 使用 dpkg(即 Debian Package Management)将软件分发给终端用户;Fedora 则使用 rpm(全称为 Red Hat Package Management)。它们都是 Linux 社区中非常流行的包管理系统,对应的命令行工具也都简单易用。
+
+ [![ubuntu software center](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/ubuntu-software-center_2_orig.jpg)][7]
+
+但在具体分发的软件方面,各个 Linux 发行版会有明显差异。Canonical 每 6 个月发布新版本的 Ubuntu,一般是在每年的 4 月和 10 月。对每个版本,开发者会维护一个开发计划;Ubuntu 新版本发布后,该版本就会进入冻结状态,即停止新软件的开发和测试。
+
+相比之下,Fedora 也采用相似的 6 个月发布周期,看起来很像一种滚动更新的 Linux 发行版(其实并不是这样)。与 Ubuntu 不同之处在于,(Fedora 中的)几乎所有软件包更新都很频繁,让用户有机会尝试最新版本的软件。但这样也导致软件 Bug 更频繁出现,给用户带来“不稳定性”,虽然还不至于导致系统不可用。
+
+### 软件更新
+
+我上面已经提到了 Ubuntu 版本的冻结状态。好吧,由于它对 Ubuntu 软件更新方式有着重要的影响,我再次提到这个状态:当 Ubuntu 新版本发布后,该版本的开发(这里是指测试新软件)就停止了。
+
+_即将发布的下个版本的开发也随之开始,先后历经 “每日构建” 和 “测试版” 阶段,最后作为新版本发布给终端用户。_
+
+在冻结状态下,Ubuntu 维护者不会在软件源中增加最新版软件,除非用于解决严重的安全问题。因此,Ubuntu 用户可用的软件更新更多涉及 Bug 修复而不是新特性,这样的好处在于系统可以保持稳定,不会扰乱用户的使用。
+
+Fedora 试图为终端用户提供最新版本的软件,故用户的可用软件更新相比 Ubuntu 而言会更多涉及新特性。当然,开发者为了维持系统的稳定性,也采取了一系列措施。例如,在操作系统启动时,用户可以从最多三个可用内核(最新内核处于最上方)中进行选择;当新内核无法启动时,用户可以回滚使用之前两个可用内核。
+
+### Snaps 和 flatpak
+
+它们都是新出现的酷炫工具,可以将软件发布到多个 Linux 发行版上。Ubuntu 提供 **snaps**,而 Fedora 则提供 **flatpak** 。二者之中 snaps 更加流行,更多流行软件或版权软件都在考虑上架 snap 商店。Flatpak 也在吸引关注,越来越多的软件上线该平台。
+
+不幸的是,由于二者出现的时间都不久,很多人遇到“窗口主题不一致”问题并在网上表达不满。但由于二者都很易于使用,在二者之间切换并不是难事。
+
+(LCTT 译注:按译者理解,由于二者都增加了一层安全隔离,读取系统主题方面会遇到问题;另外,似乎也有反馈 snap 专用主题无法及时应用于 snap 的问题)
+
+### 应用对比
+
+下面列出一些在 Ubuntu 和 Fedora 上共有的常见应用,然后在两个平台之间进行对比:
+
+#### 计算器
+
+Fedora 上的计算器程序启动速度更快。这是因为 Fedora 上的计算器程序是软件包形式安装的,而 Ubuntu 上的计算器程序则是 snap 版本。
+
+#### 系统监视器
+
+可能听上去比较书呆子气,但我认为观察计算机性能并杀掉令人讨厌的进程是必要且直观的。程序启动速度对比与计算器的结果一致,即 (软件包方式安装的)Fedora 版本快于(snap 形式提供的)Ubuntu 版本。
+
+#### 帮助程序
+
+我已经提到,(为便于长期以来的 Untiy 用户平滑切换到 GNOME),Ubuntu 提供的 GNOME 桌面环境是经过微调的版本。不幸的是,Ubuntu 开发者似乎忘记或忽略了对帮助程序的更新,用户阅读文档(入门视频)后会发现演示视频与真实环境有略微差异,这可能让人感到迷惑。
+
+ [![ubuntu 18.04 help manual](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/ubuntu-18-04-help-manual_orig.jpg)][8]
+
+### 结论
+
+Ubuntu 和 Fedora 是两个主流的 Linux 发行版。两者都各自有一些华而不实的特性,因而新接触 Linux 的人很难抉择。我的建议是同时尝试二者,这样你在试用后可以发现哪个发行版提供的工具更适合你。
+
+希望你阅读愉快,你可以在下方的评论区给出我漏掉的内容或你的建议。
+
+--------------------------------------------------------------------------------
+
+via: http://www.linuxandubuntu.com/home/ubuntu-1804-vs-fedora-28
+
+作者:[LinuxAndUbuntu][a]
+选题:[lujun9972](https://github.com/lujun9972)
+译者:[pinewall](https://github.com/pinewall)
+校对:[wxy](https://github.com/wxy)
+
+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
+
+[a]:http://www.linuxandubuntu.com
+[1]:http://www.linuxandubuntu.com/home/ubuntu-1804-codename-announced-bionic-beaver
+[2]:http://www.linuxandubuntu.com/home/what-new-is-going-to-be-in-ubuntu-1704-zesty-zapus
+[3]:http://www.linuxandubuntu.com/home/5-best-linux-desktop-environments-with-pros-cons
+[4]:http://www.linuxandubuntu.com/home/walkthrough-on-how-to-use-gnome-boxes
+[5]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/ubuntu-18-04-gnome_orig.jpg
+[6]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/ubuntu-gnome-18-04_orig.jpg
+[7]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/ubuntu-software-center_2_orig.jpg
+[8]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/ubuntu-18-04-help-manual_orig.jpg
+[9]:https://en.wikipedia.org/wiki/History_of_Firefox
diff --git a/translated/tech/20180814 How To Record Terminal Sessions As SVG Animations In Linux.md b/published/20180814 How To Record Terminal Sessions As SVG Animations In Linux.md
similarity index 80%
rename from translated/tech/20180814 How To Record Terminal Sessions As SVG Animations In Linux.md
rename to published/20180814 How To Record Terminal Sessions As SVG Animations In Linux.md
index d62362ac34..b9df74963d 100644
--- a/translated/tech/20180814 How To Record Terminal Sessions As SVG Animations In Linux.md
+++ b/published/20180814 How To Record Terminal Sessions As SVG Animations In Linux.md
@@ -3,12 +3,12 @@
![Banner 图](https://www.ostechnix.com/wp-content/uploads/2018/08/termtosvg-720x340.png)
-录制终端会话可以满足我们不同类型的需求。通过录制终端会话,你可以完整记录你在终端中执行的操作,将其保存可供后续参考。通过录制终端会话,你还可以向青少年、学生或其它打算学习 Linux 的人展示各种 Linux 命令及其用例。值得庆幸的是,市面上已经有不少工具,可以帮助我们在类 Unix 操作系统下录制终端会话。我们已经介绍过一些可以帮助你录制终端会话的工具,可以在下面的链接中找到。
+录制终端会话可以满足我们不同类型的需求。通过录制终端会话,你可以完整记录你在终端中执行的操作,将其保存以供后续参考。通过录制终端会话,你还可以向青少年、学生或其它打算学习 Linux 的人展示各种 Linux 命令及其用例。值得庆幸的是,市面上已经有不少工具,可以帮助我们在类 Unix 操作系统下录制终端会话。我们已经介绍过一些可以帮助你录制终端会话的工具,可以在下面的链接中找到。
+ [如何录制你在终端中的所作所为][3]
+ [Asciinema – 录制终端会话并在网上分享][4]
-今天,我们要介绍另一款录制终端操作的工具,名字叫做 **Termtosvg**。从名字可以看出,Termtosvg 将你的终端会话录制成一个单独的 SVG 动画。它是一款简单的命令行工具,使用 **Python** 语言编写,可以生成轻量级、外观整洁的动画,可以嵌入到网页项目中。Termtosvg 支持自定义色彩主题、终端 UI,还可以通过 [SVG 模板][1]完成动画控制。它兼容 asciinema 录制格式,支持 GNU/Linux,Mac OS 和 BSD 等操作系统。
+今天,我们要介绍另一款录制终端操作的工具,名字叫做 **Termtosvg**。从名字可以看出,Termtosvg 将你的终端会话录制成一个单独的 SVG 动画。它是一款简单的命令行工具,使用 **Python** 语言编写,可以生成轻量级、外观整洁的动画,可以嵌入到网页项目中。Termtosvg 支持自定义色彩主题、终端 UI,还可以通过 [SVG 模板][1]完成动画控制。它兼容 asciinema 录制格式,支持 GNU/Linux,Mac OS 和 BSD 等操作系统。
### 安装 Termtosvg
@@ -32,15 +32,15 @@ $ pip3 install pyte python-xlib svgwrite
### 将 Linux 终端会话录制成 SVG 动画
-使用 Termtosvg 录制终端会话十分容易。打开终端窗口,运行如下命令即可开始录制:
+使用 `termtosvg` 录制终端会话十分容易。打开终端窗口,运行如下命令即可开始录制:
```
$ termtosvg
```
-**注意:** 如果 termtosvg 命令不可用,重启操作系统一次即可。
+**注意:** 如果 `termtosvg` 命令不可用,重启操作系统一次即可。
-运行 termtosvg 命令后,可以看到如下命令输出:
+运行 `termtosvg` 命令后,可以看到如下命令输出:
```
Recording started, enter "exit" command or Control-D to end
@@ -60,7 +60,7 @@ $ uname -a
```
-操作完成后,使用组合键 **CTRL+D** 或者输入 **exit** 停止录制。录制结果将会保存在 **/tmp** 目录,(由于做了唯一性处理)文件名并不会重复。
+操作完成后,使用组合键 `CTRL+D` 或者输入 `exit` 停止录制。录制结果将会保存在 `/tmp` 目录,(由于做了唯一性处理)文件名并不会重复。
![](https://www.ostechnix.com/wp-content/uploads/2018/08/Termtosvg-in-action-1-1.png)
@@ -70,7 +70,7 @@ $ uname -a
$ firefox /tmp/termtosvg_ddkehjpu.svg
```
-你也可以在(图形界面的)浏览器中直接打开这个 SVG 文件( **File ->