From f9779e540f681244945a7d24bba133c1e527d1db Mon Sep 17 00:00:00 2001 From: lixiang23 Date: Wed, 4 Jan 2017 09:50:27 +0800 Subject: [PATCH 0001/1082] beyondworld translating --- sources/tech/20161018 Suspend to Idle.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20161018 Suspend to Idle.md b/sources/tech/20161018 Suspend to Idle.md index 8a33e01e17..118f5ae78d 100644 --- a/sources/tech/20161018 Suspend to Idle.md +++ b/sources/tech/20161018 Suspend to Idle.md @@ -1,4 +1,6 @@ -bjwrkj 翻译中.. + + +beyondworld 翻译中 # Suspend to Idle ### Introduction From 89cd6ab6b753e145b6fc86fec8d62bb25262aa16 Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Wed, 4 Jan 2017 11:31:50 +0800 Subject: [PATCH 0002/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校对中 --- .../20161201 Using the NTP time synchronization.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/translated/tech/20161201 Using the NTP time synchronization.md b/translated/tech/20161201 Using the NTP time synchronization.md index 86e9c1cc69..c12ca399c0 100644 --- a/translated/tech/20161201 Using the NTP time synchronization.md +++ b/translated/tech/20161201 Using the NTP time synchronization.md @@ -3,7 +3,7 @@ NTP 是通过网络来同步时间的一种 TCP/IP 协议。通常客户端向服务器请求当前的时间,并根据结果来设置其时钟。 -这个描述是挺简单的,实现这一功能是极为复杂的——首先要有多层 NTP 服务器,其中的第一次链接着原子时钟,第二层、第三层则担起负载均衡的责任,以处理因特网传来的所有请求。并且,客户端可能也超乎你想象的复杂——时间同步存在着通讯延迟,使用一种方法来调整时间并不能使用所有运行在服务器中进程的到同步设置。幸运的是,所有的这些复杂性都进行了封装,你是不可见也不需要见到的。 +这个描述是挺简单的,实现这一功能却是极为复杂的 - 首先要有多层 NTP 服务器,第一层 NTP 服务器连接原子时钟,第二层、第三层服务器则担起负载均衡的责任,以处理因特网传来的所有请求。另外,客户端可能也超乎你想象的复杂 - 它必须排除通讯延迟,调整时间的同时不干扰其它在服务器中运行的进程。幸运的是,所有的这些复杂性都进行了封装,你是不可见也不需要见到的。 在 Ubuntu 中,是使用 ntpdate 和 ntpd 来同步时间的。 @@ -20,15 +20,15 @@ NTP 是通过网络来同步时间的一种 TCP/IP 协议。通常客户端向 ### timedatectl -在最新的 Ubuntu 版本中,timedatectl 替代了老旧的 ntpdate。默认情况下,timedatectl 在系统启动的时候会立刻同步时间,同时还开启 socket 以便恢复网络之后进行同步。 +在最新的 Ubuntu 版本中,*timedatectl* 替代了老旧的 *ntpdate*。默认情况下,*timedatectl* 在系统启动的时候会立刻同步时间,同时还开启 socket 以便恢复网络之后进行同步。 -如果已安装 ntpdate / ntp,timedatectl 会让你使用之前的设置。这样确保了在有两个时间同步服务的时候不会相互冲突,同时在你进行的时候还保留原本的配置。但这也意味着升级时旧版本的 ntp / ntpdate 仍会安装,迁移到新的 systemd 服务是默认禁用的。 +如果已安装 *ntpdate / ntp*,*timedatectl* 会让你使用之前的设置。这样确保了在有两个时间同步服务的时候不会相互冲突,同时在你进行的时候还保留原本的配置。但这也意味着升级旧版本时 ntp/ntpdate 仍会安装,因此会使新的 systemd 服务被禁用。 ### timesyncd -在最新的 Ubuntu 版本中,timesyncd 替代了 ntpd 的客户端的部分,它默认情况下会定期检测并同步时间。它还会在本地存储时间更新计划,以便在系统重启时做时间单步递增调整。 +在最新的 Ubuntu 版本中,*timesyncd* 替代了 *ntpd* 的客户端的部分。默认情况下 *timesyncd* 会定期检测并同步时间。它还会在本地存储时间更新计划,以便在系统重启时做时间单步调整。 -通过 timedatectl 和 timesyncd 设置的当前的时间状态和时间配置,现在可以使用 timedatectl status 命令来进行确认。 +通过 *timedatectl* 和 *timesyncd* 设置的当前时间状态和时间配置,可以使用 *timedatectl status* 命令来进行确认。 ``` timedatectl status @@ -41,9 +41,10 @@ NTP synchronized: no RTC in local TZ: no ``` -如果安装了 NTP,并用它替代 timedatectl 来同步时间,则 "NTP synchronized" 是 "yes"。 +如果安装了 NTP,并用它替代 *timedatectl* 来同步时间,则 “NTP synchronized” 是 “yes”。 timedatectl 和 timesyncd 用以同步时间的 nameserver 可以通过 /etc/systemd/timesyncd.conf 来指定,另外还有一个非常灵活的配置目录 /etc/systemd/timesyncd.conf.d/。 +The nameserver to fetch time for timedatectl and timesyncd from can be specified in /etc/systemd/timesyncd.conf and with flexible additional config files in /etc/systemd/timesyncd.conf.d/. ### ntpdate @@ -130,3 +131,4 @@ via: https://help.ubuntu.com/lts/serverguide/NTP.html [1]:https://help.ubuntu.com/community/UbuntuTime [2]:http://www.ntp.org/ [3]:http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#S-CONFIG-ADV-PPS + From 655aa70e6cc4f04faaa33203ceae84119f668b28 Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Wed, 4 Jan 2017 14:45:06 +0800 Subject: [PATCH 0003/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校对完毕 @GHLandy --- ...161201 Using the NTP time synchronization.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/translated/tech/20161201 Using the NTP time synchronization.md b/translated/tech/20161201 Using the NTP time synchronization.md index c12ca399c0..66ed393a97 100644 --- a/translated/tech/20161201 Using the NTP time synchronization.md +++ b/translated/tech/20161201 Using the NTP time synchronization.md @@ -43,12 +43,11 @@ NTP synchronized: no 如果安装了 NTP,并用它替代 *timedatectl* 来同步时间,则 “NTP synchronized” 是 “yes”。 -timedatectl 和 timesyncd 用以同步时间的 nameserver 可以通过 /etc/systemd/timesyncd.conf 来指定,另外还有一个非常灵活的配置目录 /etc/systemd/timesyncd.conf.d/。 -The nameserver to fetch time for timedatectl and timesyncd from can be specified in /etc/systemd/timesyncd.conf and with flexible additional config files in /etc/systemd/timesyncd.conf.d/. +timedatectl 和 timesyncd 从 nameserver 处获取时间,这可以通过 /etc/systemd/timesyncd.conf 来指定,另外在 /etc/systemd/timesyncd.conf.d/ 下还有灵活的配置文件。 ### ntpdate -由于 timedatectl 的存在,各发行版已经弃用了 ntpdate,所有默认不在进行安装。如果你安装了,它会在系统启动的时候根据 Ubuntu 的 NTP 服务器来设置你电脑的时间。之后的任意时刻中,它会有一个接口用来重新尝试同步时间——在这期间只要其涵盖的时间增量不是太大,它就会慢慢偏移时间。该行为可以通过 -B/-b 开关来进行控制。 +由于 *timedatectl* 的存在,各发行版已经弃用了 *ntpdate*,默认不再进行安装。如果你安装了,它会在系统启动的时候根据 Ubuntu 的 NTP 服务器来设置你电脑的时间。之后每当一个新接口启动时,它就会重新尝试同步时间 —— 在这期间只要其涵盖的时间差不是太大,它就会慢慢偏移时间。该行为可以通过 -B/-b 开关来进行控制。 ``` ntpdate ntp.ubuntu.com @@ -56,15 +55,15 @@ ntpdate ntp.ubuntu.com ### timeservers -默认情况下,基于 systemd 的工具都是从 ntp.ubuntu.com 请求时间同步的。经典的 ntpd 服务基本上都是使用的 [0-3].ubuntu.pool.ntp.org 池,这等同于 ntp.ubuntu.com,并且需要的话还支持 IPv6。如果说你想强制使用 IPv6,可以使用 ipv6.ntp.ubuntu.com,当然这并非默认配置。 +默认情况下,基于 systemd 的工具都是从 ntp.ubuntu.com 请求时间同步的。经典的基于 ntpd 的服务基本上都是使用 [0-3].ubuntu.pool.ntp.org 池中的 2.ubuntu.pool.ntp.org,还有 ntp.ubuntu.com,此外需要的话还支持 IPv6。如果想强制使用 IPv6,可以使用 ipv6.ntp.ubuntu.com,不过这并非默认配置。 ### ntpd -ntp 的守护进程 ntpd 会计算你的系统时钟的时间偏移量并且持续的进行调整,所以不会出现时间差距较大的更正,以保证不会导致不连续的日志。该进程只花费少量的进程资源和内存,但对于现代的服务器来说实在是微不足道的了。 +ntp 的守护进程 ntpd 会计算你的系统时钟的时间偏移量并且持续的进行调整,所以不会出现时间差距较大的更正,比如说,不会导致不连续的日志。该进程只花费少量的进程资源和内存,但对于现代的服务器来说实在是微不足道的了。 ### 安装 -打开终端命令行来安装 ntpd: +要安装 ntpd,在终端命令行中输入: ``` sudo apt install ntp @@ -72,7 +71,7 @@ sudo apt install ntp ### 配置 -编辑 /etc/ntp.conf ——增加/移除 server 行。默认配置有一下服务器: +编辑 /etc/ntp.conf —— 增加/移除 server 行。默认配置有以下服务器: ``` # Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board @@ -84,7 +83,7 @@ server 2.ubuntu.pool.ntp.org server 3.ubuntu.pool.ntp.org ``` -修改配置文件之后,你需要重新加载 ntpd: +修改配置文件之后,你需要重新加载 *ntpd*: ``` sudo systemctl reload ntp.service @@ -107,7 +106,7 @@ sudo systemctl reload ntp.service ### PPS Support -从 Ubuntu 16.04 开始,ntp 支持 PPS 规范,增强了本地时间资源已提供更高的精度。查看下边列出的链接来获取更多信息。 +从 Ubuntu 16.04 开始,ntp 支持 PPS 规范,增强了本地时间资源已提供更高的精度。查看下边列出的链接来获取更多配置信息。 ### 参考资料 From b48882101a0eac4b52114272fba4b0dd8c76abe2 Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Wed, 4 Jan 2017 15:03:15 +0800 Subject: [PATCH 0004/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校对中 --- translated/tech/20161126 Building Vim from source.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translated/tech/20161126 Building Vim from source.md b/translated/tech/20161126 Building Vim from source.md index d210946bf7..476df526ed 100644 --- a/translated/tech/20161126 Building Vim from source.md +++ b/translated/tech/20161126 Building Vim from source.md @@ -118,9 +118,9 @@ via: https://www.dataquest.io/blog/data-science-portfolio-project/ 作者:[Val Markovic][a] -译者:[译者ID](https://github.com/zky001) +译者:[zky001](https://github.com/zky001) -校对:[校对者ID](https://github.com/校对者ID) +校对:[jasminepeng](https://github.com/jasminepeng) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 771f0d9ca3ee7da9715d9d69317be54b66956e80 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 4 Jan 2017 16:18:39 +0800 Subject: [PATCH 0005/1082] PUB:20161215 Building an Email Server on Ubuntu Linux - Part 3 @geekpi --- ...n Email Server on Ubuntu Linux - Part 3.md | 38 ++++++------------- 1 file changed, 12 insertions(+), 26 deletions(-) rename {translated/tech => published}/20161215 Building an Email Server on Ubuntu Linux - Part 3.md (83%) diff --git a/translated/tech/20161215 Building an Email Server on Ubuntu Linux - Part 3.md b/published/20161215 Building an Email Server on Ubuntu Linux - Part 3.md similarity index 83% rename from translated/tech/20161215 Building an Email Server on Ubuntu Linux - Part 3.md rename to published/20161215 Building an Email Server on Ubuntu Linux - Part 3.md index d900f9733e..ab13217d87 100644 --- a/translated/tech/20161215 Building an Email Server on Ubuntu Linux - Part 3.md +++ b/published/20161215 Building an Email Server on Ubuntu Linux - Part 3.md @@ -1,14 +1,13 @@ -在 Ubuntu 上搭建一台 Email 服务器(三) +如何在 Ubuntu 上搭建一台 Email 服务器(三) ============================================================ -### [mail-server.jpg][2] - ![Mail server](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/mail-server.jpg?itok=Ox1SCDsV "Mail server") + 在本系列的最后,我们将详细介绍如何在 Dovecot 和 Postfix 中设置虚拟用户和邮箱。 欢迎回来,热心的 Linux 系统管理员们! 在本系列的[第一部分][3]和[第二部分][4]中,我们学习了如何将 Postfix 和 Dovecot 组合在一起,搭建一个不错的 IMAP 和 POP3 邮件服务器。 现在我们将学习设置虚拟用户,以便我们可以管理所有 Dovecot 中的用户。 -### 抱歉,还不能配置SSL +### 抱歉,还不能配置 SSL 我知道我答应过教你们如何设置一个受 SSL 保护的服务器。 不幸的是,我低估了这个话题的范围。 所以,我会下个月再写一个全面的教程。 @@ -16,10 +15,9 @@ ### 虚拟用户 -你希望邮件服务器上的是虚拟用户而不是 Linux 系统用户。使用 Linux 系统用户不能扩展,并且它们会暴露登录账号,给你的服务器带来不必要的风险。 设置虚拟用户需要在 Postfix 和 Dovecot 中编辑配置文件。我们将从 Postfix 开始。首先,我们将从一个干净、简化的 `/etc /postfix/main.cf` 开始。移动你原始的`main.cf` 到别处,创建一个新的干净的文件,内容如下: +我们希望邮件服务器上用的是虚拟用户而不是 Linux 系统用户。使用 Linux 系统用户不能扩展,并且它们会暴露系统登录账号,给你的服务器带来不必要的风险。 设置虚拟用户需要在 Postfix 和 Dovecot 中编辑配置文件。我们将从 Postfix 开始。首先,我们将从一个干净、简化的 `/etc /postfix/main.cf` 开始。移动你原始的 `main.cf` 到别处做个备份,创建一个新的干净的文件,内容如下: ``` - compatibility_level=2 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu/GNU) biff = no @@ -43,12 +41,11 @@ virtual_gid_maps = static:5000 virtual_transport = lmtp:unix:private/dovecot-lmtp0 ``` -你可以直接拷贝这份文件,除了 `mynetworks` 参数的设置 `192.168.0.0/24`,它应为你的本地子网掩码。 +你可以直接拷贝这份文件,除了 `mynetworks` 参数的设置 `192.168.0.0/24`,它应该是你的本地子网掩码。 接下来,创建用户和组 `vmail` 来拥有你的虚拟邮箱。虚拟邮箱保存在  `vmail` 的家目录下。 ``` - $ sudo groupadd -g 5000 vmail $ sudo useradd -m -u 5000 -g 5000 -s /bin/bash vmail ``` @@ -56,7 +53,6 @@ $ sudo useradd -m -u 5000 -g 5000 -s /bin/bash vmail 接下来重新加载 Postfix 配置: ``` - $ sudo postfix reload [sudo] password for carla: postfix/postfix-script: refreshing the Postfix mail system @@ -67,14 +63,12 @@ postfix/postfix-script: refreshing the Postfix mail system 我们会使用 Dovecot 的 `lmtp` 协议来连接到 Postfix。你可以这样安装: ``` - $ sudo apt-get install dovecot-lmtpd ``` -`main.cf` 的最后一行涉及到 `lmtp`。复制这个 `/etc/dovecot/dovecot.conf` 示例文件来替换已存在的文件。再说一次,我们只使用这个文件,而不是 `/etc/dovecot/conf.d` 内的所有文件。 +`main.cf` 的最后一行涉及到 `lmtp`。复制这个 `/etc/dovecot/dovecot.conf` 示例文件来替换已存在的文件。再说一次,我们只使用这一个文件,而不是 `/etc/dovecot/conf.d` 内的所有文件。 ``` - protocols = imap pop3 lmtp log_path = /var/log/dovecot.log info_log_path = /var/log/dovecot-info.log @@ -114,7 +108,6 @@ service lmtp { 最后,你可以创建一个含有用户和密码的文件 `/etc/dovecot/passwd`。对于纯文本验证,我们只需要用户的完整邮箱地址和密码: ``` - alrac@studio:{PLAIN}password layla@studio:{PLAIN}password fred@studio:{PLAIN}password @@ -125,7 +118,6 @@ benny@studio:{PLAIN}password Dovecot 虚拟用户独立于 Postfix 虚拟用户,因此你需要管理 Dovecot 中的用户。保存所有的设置并重启 Postfix 和 Dovecot: ``` - $ sudo service postfix restart $ sudo service dovecot restart ``` @@ -133,7 +125,6 @@ $ sudo service dovecot restart 现在让我们使用老朋友 telnet 来看下 Dovecot 是否设置正确。 ``` - $ telnet studio 110 Trying 127.0.1.1... Connected to studio. @@ -151,17 +142,15 @@ Connection closed by foreign host. 现在一切都好!让我们用 `mail` 命令,发送测试消息给我们的用户。确保使用用户的完整电子邮箱地址而不只是用户名。 ``` - $ mail benny@studio Subject: hello and welcome! Please enjoy your new mail account! . ``` -最后一行的句点表示发送消息。让我们看下它是否到达了正确的邮箱。 +最后一行的**英文句点**表示发送消息。让我们看下它是否到达了正确的邮箱。 ``` - $ sudo ls -al /home/vmail/studio/benny@studio/.Mail/new total 16 drwx------ 2 vmail vmail 4096 Dec 14 12:39 . @@ -198,17 +187,14 @@ Please enjoy your new mail account! ### 接下来? -假设你的 LAN 名称服务配置正确,你现在有一台很好用的 LAN 邮件服务器。 显然,以纯文本发送消息不是最佳的,对于 Internet 邮件也是绝对不可以的。 请参阅[ Dovecot SSL 配置][5]和[ Postfix TLS 支持][6],涵盖了 TLS 和数据库后端。并请期待我之后的 SSL 指南。这次我说的是真的。 - - - +假设你的 LAN 名称服务配置正确,你现在有一台很好用的 LAN 邮件服务器。 显然,以纯文本发送消息不是最佳的,不支持互联网的邮件也是绝对不可以的。 请参阅 [Dovecot SSL 配置][5]和 [Postfix TLS 支持][6],[VirtualUserFlatFilesPostfix][7] 涵盖了 TLS 和数据库后端。并请期待我之后的 SSL 指南。这次我说的是真的。 -------------------------------------------------------------------------------- via: https://www.linux.com/learn/sysadmin/building-email-server-ubuntu-linux-part-3 -作者:[ CARLA SCHRODER][a] +作者:[CARLA SCHRODER][a] 译者:[geekpi](https://github.com/geekpi) 校对:[jasminepeng](https://github.com/jasminepeng) @@ -217,8 +203,8 @@ via: https://www.linux.com/learn/sysadmin/building-email-server-ubuntu-linux-par [a]:https://www.linux.com/users/cschroder [1]:https://www.linux.com/licenses/category/creative-commons-zero [2]:https://www.linux.com/files/images/mail-serverjpg -[3]:https://www.linux.com/learn/how-build-email-server-ubuntu-linux -[4]:https://www.linux.com/learn/sysadmin/building-email-server-ubuntu-linux-part-2 +[3]:https://linux.cn/article-8071-1.html +[4]:https://linux.cn/article-8077-1.html [5]:http://wiki.dovecot.org/SSL/DovecotConfiguration [6]:http://www.postfix.org/TLS_README.html -[7]:http://www.postfix.org/TLS_README.html +[7]:http://wiki2.dovecot.org/HowTo/VirtualUserFlatFilesPostfix From 27e2535b22bf548dd7dfbf4b4b000f37c02d26e1 Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Wed, 4 Jan 2017 17:14:57 +0800 Subject: [PATCH 0006/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校对完毕 --- .../tech/20161126 Building Vim from source.md | 82 +++++++++---------- 1 file changed, 40 insertions(+), 42 deletions(-) diff --git a/translated/tech/20161126 Building Vim from source.md b/translated/tech/20161126 Building Vim from source.md index 476df526ed..451f86dbf3 100644 --- a/translated/tech/20161126 Building Vim from source.md +++ b/translated/tech/20161126 Building Vim from source.md @@ -1,24 +1,22 @@ -从源代码编译Vim实际上并不困难。 -这里是你所想要做的内容: -1.首先,安装包括Git在内的所有提前需要的库。 -对于一个Debian Linux发行像Ubuntu, -这将是以下命令: +从源代码编译 Vim 实际上并不那么困难。下面是你所要做的: - ```sh +1.首先,安装包括 Git 在内的所有必备的库。对于一个 Debian Linux 发行版,例如 Ubuntu,命令如下: + + ``` sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \ libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \ libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev \ python3-dev ruby-dev lua5.1 lua5.1-dev libperl-dev git ``` - 在Ubuntu 16.04, `liblua5.1-dev` 作为lua开发包的名称而非`lua5.1-dev`. +   在 Ubuntu 16.04 上, lua 开发包的名称是 `liblua5.1-dev` 而非 `lua5.1-dev`。 - (如果你知道你将使用哪种语言,随意删去你不需要的包。例如:Python2 `python-dev` 或者是 Ruby `ruby-dev`。这一原则适用于整个页面的大部分内容。) +   (如果你知道你将使用哪种语言,可随意删去你不需要的包。例如:Python2 `python-dev` 或者是 Ruby `ruby-dev`。这一原则适用于本文的大部分内容。) - 对于Fedora 20, 将是以下命令: +   对于 Fedora 20, 将是以下命令: - ```sh + ``` sudo yum install -y ruby ruby-devel lua lua-devel luajit \ luajit-devel ctags git python python-devel \ python3 python3-devel tcl-devel \ @@ -27,36 +25,36 @@ perl-ExtUtils-Embed ``` -这一步需要纠正的问题是如何安装Fedora 20的XSubPP: +需要这一步来纠正 Fedora 20 上安装 XSubPP 时出现的问题: - ```sh + ``` # symlink xsubpp (perl) from /usr/bin to the perl dir sudo ln -s /usr/bin/xsubpp /usr/share/perl5/ExtUtils/xsubpp ``` -2. 如果你已经装上vim,删掉它。 +2. 如果你已经安装了 vim,删掉它。 - ```sh + ``` sudo apt-get remove vim vim-runtime gvim ``` - 在Ubuntu 12.04.2你或许也需要同时删除下面这些软件包: +    如果是 Ubuntu 12.04.2,你或许也需要同时删除下面这些软件包: - ```sh + ``` sudo apt-get remove vim-tiny vim-common vim-gui-common vim-nox ``` -3. 一旦上述内容被安装好之后,获取vim源代码很容易。 -注意:如果你使用python,你的配置路径或许有一个特定的机器的名字 (例如`config-3.5m-x86_64-linux-gnu`)。 - 检查/usr/lib/python[2/3/3.5]路径来找到你的python配置路径, 据此更改`python-config-dir`和/或`python3-config-dir`的参数。 +3. 一旦上述内容被安装好之后,获取 vim 源代码很容易。 -添加/删除下面的的标记符以适合您的设置。例如,如果您不打算写任何Lua,您可以删去`enable-luainterp`。 +注意:如果你使用 python,你的配置目录或许有一个特定的机器名 (例如 `config-3.5m-x86_64-linux-gnu`)。 +   检查 /usr/lib/python[2/3/3.5] 目录来找到你的 python 配置目录, 据此更改 `python-config-dir` 和/或 `python3-config-dir `的参数。 -同时,如果你不使用vim8.0,确认下面VIMRUNTIMEDIR参数设置正确 - (例如,使用vim 8.0a, 就用/usr/share/vim/vim80a). - 记住一些vim安装是直接安装在/usr/share/vim;调整好以适应你的系统: +添加/删除下面的的标记符以适合您的设置。例如,如果您不打算写任何 Lua,您可以删去 `enable-luainterp`。 - ```sh +同时,如果你使用的不是 vim8.0,请确认下面 VIMRUNTIMEDIR 参数设置正确(例如,如果使用 vim 8.0a, 就用 /usr/share/vim/vim80a)。记住,一些 vim 安装是直接安装在 /usr/share/vim 下的;调整好参数以适应你的系统: + + + ``` cd ~ git clone https://github.com/vim/vim.git cd vim @@ -71,26 +69,28 @@ --enable-luainterp=yes \ --enable-gui=gtk2 --enable-cscope --prefix=/usr make VIMRUNTIMEDIR=/usr/share/vim/vim80 - ``` - 在Ubuntu 16.04,由于同时开启了Python2和Python3,Python支持将不工作。 阅读 [answer by chirinosky](http://stackoverflow.com/questions/23023783/vim-compiled-with-python-support-but-cant-see-sys-version) 以获取变通的处理方法。 + ``` + +   在 Ubuntu 16.04 上,由于同时开启了 Python2 和 Python3,Python 支持将不工作。 阅读 [chirinosky 的回答](http://stackoverflow.com/questions/23023783/vim-compiled-with-python-support-but-cant-see-sys-version) 以获取变通的处理方法。 - 如果你想要可以轻松卸载vim请使用`checkinstall`. +   如果要轻松卸载 vim,可以使用 `checkinstall` 。 + ```sh sudo apt-get install checkinstall cd ~/vim sudo checkinstall ``` - 否则, 你可以使用`make`来安装. - +   或者, 可以使用 `make` 来安装。 + ```sh cd ~/vim sudo make install ``` - 让vim成为你默认的编辑器请使用`update-alternatives`. - +   要让 vim 成为你默认的编辑器,请使用 `update-alternatives`。 + ```sh sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 1 sudo update-alternatives --set editor /usr/bin/vim @@ -98,23 +98,21 @@ sudo update-alternatives --set vi /usr/bin/vim ``` -4. 仔细检查,你查看输出`vim --version`来获取实际上在运行新的Vim应用程序版本. +4. 再检查下,通过查看 `vim --version` 输出来确认确实在运行新的 Vim 应用程序版本。 - **如果你的gvim不工作 (在 ubuntu 12.04.1 LTS),试着把 - `--enable-gui=gtk2`参数变为`--enable-gui=gnome2`** +    **如果你的 gvim 不工作 (在 ubuntu 12.04.1 LTS 上),试着把 `--enable-gui=gtk2` 参数变为 `--enable-gui=gnome2`。** - 如果你遇到问题,仔细检查在步骤3开始提到的你`configure`配置使用的是正确的Python的config目录。 +如果你遇到问题,仔细检查在步骤 3 开始提到的,使用正确的 Python 配置目录配置 `configure`。 -这些`configure`和`make`命令假设你是一个Debian发行版,Vim的运行库文件目录放在 -`/usr/share/vim/vim80/`,这不是vim的默认。 在`configure`命令中的`--prefix=/usr`也是如此。这些参数或许对一个不是基于Debian的Linux发行版来说是有所不同的,在类似的场景中, 试着移除 `configure`命令中的 - `--prefix`变量和`make`命令中的`VIMRUNTIMEDIR`(换句话说,使用默认的)。 +这些 `configure` 和 `make` 命令假设你是一个 Debian 发行版,Vim 的运行库文件目录放在 `/usr/share/vim/vim80/`,这不是 vim 的默认路径。 在 `configure` 命令中的 `--prefix=/usr` 也是如此。这些参数或许对一个不是基于 Debian 的 Linux 发行版来说是有所不同的,在这种情况下, 试着移除 `configure` 命令中的 `--prefix` 变量和 `make` 命令中的 `VIMRUNTIMEDIR` (换句话说,使用这些参数的默认值)。 - 如果你遇到麻烦, 这里是一些 [其它编译Vim的有用的信息] - (http://vim.wikia.com/wiki/Building_Vim). - + +   如果你遇到麻烦, 这里是一些[其它编译 Vim 的有用的信息] +   (http://vim.wikia.com/wiki/Building_Vim)。 +     -------------------------------------------------------------------------------- -via: https://www.dataquest.io/blog/data-science-portfolio-project/ +via: https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source 作者:[Val Markovic][a] From cd03b4f33df23ea234a1f0288254d650ff53cfed Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Wed, 4 Jan 2017 17:22:35 +0800 Subject: [PATCH 0007/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校对完毕 @zky001 --- .../tech/20161126 Building Vim from source.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/translated/tech/20161126 Building Vim from source.md b/translated/tech/20161126 Building Vim from source.md index 451f86dbf3..3a79038ef1 100644 --- a/translated/tech/20161126 Building Vim from source.md +++ b/translated/tech/20161126 Building Vim from source.md @@ -3,12 +3,12 @@ 1.首先,安装包括 Git 在内的所有必备的库。对于一个 Debian Linux 发行版,例如 Ubuntu,命令如下: - ``` - sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \ + ``` + sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \ libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \ libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev \ python3-dev ruby-dev lua5.1 lua5.1-dev libperl-dev git - ``` + ```   在 Ubuntu 16.04 上, lua 开发包的名称是 `liblua5.1-dev` 而非 `lua5.1-dev`。 @@ -16,27 +16,27 @@   对于 Fedora 20, 将是以下命令: - ``` - sudo yum install -y ruby ruby-devel lua lua-devel luajit \ + ``` + sudo yum install -y ruby ruby-devel lua lua-devel luajit \ luajit-devel ctags git python python-devel \ python3 python3-devel tcl-devel \ perl perl-devel perl-ExtUtils-ParseXS \ perl-ExtUtils-XSpp perl-ExtUtils-CBuilder \ perl-ExtUtils-Embed - ``` + ``` 需要这一步来纠正 Fedora 20 上安装 XSubPP 时出现的问题: - ``` + ``` # symlink xsubpp (perl) from /usr/bin to the perl dir sudo ln -s /usr/bin/xsubpp /usr/share/perl5/ExtUtils/xsubpp - ``` + ``` 2. 如果你已经安装了 vim,删掉它。 ``` sudo apt-get remove vim vim-runtime gvim - ``` + ```    如果是 Ubuntu 12.04.2,你或许也需要同时删除下面这些软件包: @@ -76,27 +76,27 @@   如果要轻松卸载 vim,可以使用 `checkinstall` 。 - ```sh + ``` sudo apt-get install checkinstall cd ~/vim sudo checkinstall - ``` + ```   或者, 可以使用 `make` 来安装。 - ```sh + ``` cd ~/vim sudo make install - ``` + ```   要让 vim 成为你默认的编辑器,请使用 `update-alternatives`。 - ```sh +``` sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 1 sudo update-alternatives --set editor /usr/bin/vim sudo update-alternatives --install /usr/bin/vi vi /usr/bin/vim 1 sudo update-alternatives --set vi /usr/bin/vim - ``` + ``` 4. 再检查下,通过查看 `vim --version` 输出来确认确实在运行新的 Vim 应用程序版本。 From 39d2ee0282e5e2beab3fb977e7829931d3b516b8 Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Wed, 4 Jan 2017 17:29:42 +0800 Subject: [PATCH 0008/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 又调整写格式及细节。 --- .../tech/20161126 Building Vim from source.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/translated/tech/20161126 Building Vim from source.md b/translated/tech/20161126 Building Vim from source.md index 3a79038ef1..91210355cd 100644 --- a/translated/tech/20161126 Building Vim from source.md +++ b/translated/tech/20161126 Building Vim from source.md @@ -25,7 +25,7 @@ perl-ExtUtils-Embed ``` -需要这一步来纠正 Fedora 20 上安装 XSubPP 时出现的问题: + 需要这一步来纠正 Fedora 20 上安装 XSubPP 时出现的问题: ``` # symlink xsubpp (perl) from /usr/bin to the perl dir @@ -46,12 +46,11 @@ 3. 一旦上述内容被安装好之后,获取 vim 源代码很容易。 -注意:如果你使用 python,你的配置目录或许有一个特定的机器名 (例如 `config-3.5m-x86_64-linux-gnu`)。 -   检查 /usr/lib/python[2/3/3.5] 目录来找到你的 python 配置目录, 据此更改 `python-config-dir` 和/或 `python3-config-dir `的参数。 + 注意:如果你使用 python,你的配置目录或许有一个特定的机器名 (例如 `config-3.5m-x86_64-linux-gnu`)。检查 /usr/lib/python[2/3/3.5] 目录来找到你的 python 配置目录,据此更改 `python-config-dir` 和/或 `python3-config-dir `的参数。 -添加/删除下面的的标记符以适合您的设置。例如,如果您不打算写任何 Lua,您可以删去 `enable-luainterp`。 + 添加/删除下面的的标记符以适合您的设置。例如,如果您不打算写任何 Lua,您可以删去 `enable-luainterp`。 -同时,如果你使用的不是 vim8.0,请确认下面 VIMRUNTIMEDIR 参数设置正确(例如,如果使用 vim 8.0a, 就用 /usr/share/vim/vim80a)。记住,一些 vim 安装是直接安装在 /usr/share/vim 下的;调整好参数以适应你的系统: + 同时,如果你使用的不是 vim8.0,请确认下面 VIMRUNTIMEDIR 参数设置正确(例如,如果使用 vim 8.0a, 就用 /usr/share/vim/vim80a)。记住,一些 vim 安装是直接安装在 /usr/share/vim 下的;调整好参数以适应你的系统: ``` @@ -82,7 +81,7 @@ sudo checkinstall ``` -   或者, 可以使用 `make` 来安装。 +   或者,可以使用 `make` 来安装。 ``` cd ~/vim @@ -102,13 +101,12 @@    **如果你的 gvim 不工作 (在 ubuntu 12.04.1 LTS 上),试着把 `--enable-gui=gtk2` 参数变为 `--enable-gui=gnome2`。** -如果你遇到问题,仔细检查在步骤 3 开始提到的,使用正确的 Python 配置目录配置 `configure`。 + 如果你遇到问题,仔细检查在步骤 3 开始提到的,使用正确的 Python 配置目录配置 `configure`。 -这些 `configure` 和 `make` 命令假设你是一个 Debian 发行版,Vim 的运行库文件目录放在 `/usr/share/vim/vim80/`,这不是 vim 的默认路径。 在 `configure` 命令中的 `--prefix=/usr` 也是如此。这些参数或许对一个不是基于 Debian 的 Linux 发行版来说是有所不同的,在这种情况下, 试着移除 `configure` 命令中的 `--prefix` 变量和 `make` 命令中的 `VIMRUNTIMEDIR` (换句话说,使用这些参数的默认值)。 + 这些 `configure` 和 `make` 命令假设你是一个 Debian 发行版,Vim 的运行库文件目录放在 `/usr/share/vim/vim80/`,这不是 vim 的默认路径。 在 `configure` 命令中的 `--prefix=/usr` 也是如此。这些参数或许对一个不是基于 Debian 的 Linux 发行版来说是有所不同的,在这种情况下,试着移除 `configure` 命令中的 `--prefix` 变量和 `make` 命令中的 `VIMRUNTIMEDIR` (换句话说,使用这些参数的默认值)。 -   如果你遇到麻烦, 这里是一些[其它编译 Vim 的有用的信息] -   (http://vim.wikia.com/wiki/Building_Vim)。 +   如果你遇到麻烦, 这里是一些[其它编译 Vim 的有用的信息](http://vim.wikia.com/wiki/Building_Vim)。     -------------------------------------------------------------------------------- From dc7c5484d8bb769ea4be2972f54f715da358dadf Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 5 Jan 2017 08:50:29 +0800 Subject: [PATCH 0009/1082] PUB:20161213 9 Open SourceCommercial Software for Data Center Infrastructure Management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @beyondworld 辛苦了,翻译的不错。 --- ...r Data Center Infrastructure Management.md | 58 ++++++++----------- 1 file changed, 24 insertions(+), 34 deletions(-) rename {translated/tech => published}/20161213 9 Open SourceCommercial Software for Data Center Infrastructure Management.md (83%) diff --git a/translated/tech/20161213 9 Open SourceCommercial Software for Data Center Infrastructure Management.md b/published/20161213 9 Open SourceCommercial Software for Data Center Infrastructure Management.md similarity index 83% rename from translated/tech/20161213 9 Open SourceCommercial Software for Data Center Infrastructure Management.md rename to published/20161213 9 Open SourceCommercial Software for Data Center Infrastructure Management.md index 8b17448f35..23150cac95 100644 --- a/translated/tech/20161213 9 Open SourceCommercial Software for Data Center Infrastructure Management.md +++ b/published/20161213 9 Open SourceCommercial Software for Data Center Infrastructure Management.md @@ -1,22 +1,19 @@ - 九款开源或商业的数据中心基础设施管理软件 ============================================================ - 当一个公司发展壮大时,相应地对计算资源的需求也会与日俱增。无论是普通公司还是服务提供商,包括那些出租服务器的公司,当服务器数量过多时都不得不面对很多问题。 -如何盘存服务器和备件?如何维护使数据中心保持健康运作,及时定位和修复潜在的威胁?如何快速找到宕机设备的机架位置?如何准备物理机上线工作?做完这些事情需要花费大量的时间,或者需要 IT 部门有一大帮管理员支持才能办到。 +如何盘存服务器和备件?如何维护使数据中心保持健康运作,及时定位并修复潜在的威胁?如何快速找到宕机设备的机架位置?如何准备物理机上线工作?做完这些事情需要花费大量的时间,或者需要 IT 部门有一大帮管理员支持才能办到。 现在有一个更好的方案解决这些问题,使用特定软件来实现数据中心管理自动化,下文将介绍当前市场上已有的一些数据中心管理工具。 -### 1\. Opendcim +### 1、 Opendcim -这是该类目前唯一的免费软件,该软件开源并且按照商业化数据中心基础设施管理Data Center Infrastructure Management(DCIM)解决方案的替代方案来设计。该软件可以管理库存、生成数据中心的地图和监控机房温度与电力消耗。 +这是该类目前唯一的自由软件,该软件开源并且按照商业化数据中心基础设施管理Data Center Infrastructure Management(DCIM)解决方案的替代方案来设计。该软件可以管理库存、生成数据中心的地图和监控机房温度与电力消耗。 -不过,它不支持远程关机,服务器重启,操作系统安装等功能。尽管如此,它仍然被全球很多非商业机构使用。 - -多亏了该软件开源,有研发能力的公司可以修改它,使 [Opendcims][2] 更适合自己的公司。 +不过,它不支持远程关机、服务器重启、操作系统安装等功能。尽管如此,它仍然被全球很多非商业机构使用。 +由于该软件开源,有研发能力的公司可以修改它,使 [opendcim][2] 更适合自己的公司。 [ ![openDCIM](http://www.tecmint.com/wp-content/uploads/2016/12/openDCIM.png) @@ -24,41 +21,39 @@ *openDCIM* -### 2\. NOC-PS +### 2、 NOC-PS -这是一款可以管理物理和虚拟设备的商业软件。有很多可以用于初始化设备的工具,比如:操作系统和其他软件安装、网络配置,并且集成了 WHMCS 和 Blesta。美中不足的是,如果你希望能够看到数据中心设备地图或者机架位置,那该软件就不是你的最佳选择了。 +这是一款可以管理物理和虚拟设备的商业软件。它有很多可以用于初始化设备的工具,比如:操作系统和其他软件安装、网络配置,并且集成了 WHMCS 和 Blesta。美中不足的是,如果你希望能够看到数据中心设备地图或者机架位置,那该软件就不是你的最佳选择了。 [NOC-PS][4] 每 100 台服务器每年管理费需要 100€,比较适合中小企业使用。 - [ ![NOC-PS](http://www.tecmint.com/wp-content/uploads/2016/12/NOC-PS.png) ][5] *NOC-PS* -### 3\. DCImanager +### 3、 DCImanager [DCImanager][6] 是一个专用的解决方案,正如宣传所说的,考虑了 DC 工程师和托管服务提供商的需求。该软件集成了很多有名的计费软件,比如 WHMCS、Hostbill、BILLmanager 等。 -该软件的主要功能有:服务器配置、模板化安装操作系统、传感器监控、流量和电力消耗报告、VLAN管理。除此之外,企业版还可以生成数据中心服务器地图、以及对服务器和备件进行盘点管理。 +该软件的主要功能有:服务器配置、模板化安装操作系统、传感器监控、流量和电力消耗报告、VLAN 管理。除此之外,企业版还可以生成数据中心服务器地图、以及对服务器和备件进行盘点管理。 你可以试用免费版,但是免费版最多支持 5 台物理服务器管理,而收费版每 100 台服务器每年的授权使用费是 120€。 根据版本不同,收费版可适用中小企业或者大企业。 - [ ![DCImanager](http://www.tecmint.com/wp-content/uploads/2016/12/DCImanager.png) ][8] *DCImanager* -### 4\. EasyDCIM +### 4、 EasyDCIM -[EasyDCIM][9] 是一款主要面向服务提供商的收费软件。拥有可以安装操作或其他软件的特点,并且能方便地生成机房目录及机架分布图。 +[EasyDCIM][9] 是一款主要面向服务提供商的收费软件。拥有可以安装操作系统或其他软件的特点,并且能方便地生成机房目录及机架分布图。 -该软件本身并不支持通过开关对 IP 和 DNS 进行管理。不过可以通过安装模块的方式获得这些功能,这些模块可能付费或者免费(包括 WHMCS 集成模块)。 +该软件本身并不支持对 IP 和 DNS 进行管理。不过可以通过安装模块的方式获得这些功能,这些模块可能付费或者免费(包括 WHMCS 集成模块)。 该软件每 100 台服务器每年的服务费起步价 $999。对于小公司来说这个价格有点贵,不过中型或者大型企业可以尝试使用。 @@ -68,32 +63,29 @@ *EasyDCIM* -### 5\. Ansible Tower +### 5、 Ansible Tower [Ansible Tower][11] 是红帽出品的企业级计算中心管理软件。该解决方案的核心思想是实现对服务器和不同用户设备的集中式部署。 - -感谢 **Ansible Tower** 能够通过集成软件的方式使用几乎所有的工具程序,并且该软件的数据统计收集模块特别好用。不好的一面则是缺乏和当前比较流行的计费软件的集成,而且价格也不便宜。 +由于 **Ansible Tower** 能够通过集成软件的方式使用几乎所有的工具程序,并且该软件的数据统计收集模块特别好用。不好的一面则是缺乏和当前比较流行的计费软件的集成,而且价格也不便宜。 每 100 台设备每年的服务器费是 $5000,这个价格估计只有大公司才能接受。 - [ ![Ansible Tower](http://www.tecmint.com/wp-content/uploads/2016/12/Ansible_Tower.png) ][12] *Ansible Tower* -### 6\. Puppet Enterprise +### 6、 Puppet Enterprise 在商业基础上发展而来并作为 IT 部门的辅助软件。该软件用于在服务器或者用户设备上安装操作系统及其他软件,无论是初步部署或者进一步开发都适用。 不幸的是,盘存和其他更好的交互方案(电缆连接、协议等)仍然处于开发中。 -[Puppet Enterprise][13]对于小于 10 台服务器的管理免费并且开放全部功能。而收费版则是每台服务器每年 $120。 - -这个价格适合大公司使用. +[Puppet Enterprise][13] 对于小于 10 台服务器的管理免费并且开放全部功能。而收费版则是每台服务器每年 $120。 +这个价格适合大公司使用。 [ ![Puppet Enterprise](http://www.tecmint.com/wp-content/uploads/2016/12/Puppet-Enterprise.png) @@ -101,24 +93,22 @@ *Puppet Enterprise* -### 7\. Device 42 +### 7、 Device 42 该软件主要用于数据中心监控。有一个很棒的盘存工具,自动创建软硬件依赖关系图。通过 [Device 42][15] 生成数据中心地图,给不同机架标特定颜色,并可以通过图表方式反映温度、空闲空间情况和机架的其他指标。但是不支持软件安装和计费软件的集成。 每 100 台服务器每年的收费是 $1499,这个价位比较适合大中型企业。 - [ ![Device42](http://www.tecmint.com/wp-content/uploads/2016/12/Device42.png) ][16] *Device42* -### 8\. CenterOS +### 8、 CenterOS 这是一款适合数据中心管理的操作系统,主要功能是设备盘点。除此之外可以生成数据中心地图及机架方案,并连接了一个评价不错的服务器状态监控系统,方便内部技术管理工作。 - 该软件还有一个特性就是能够通过简单的几次点击就可以找到某个设备对应的人(可能是设备所有人、技术管理员或者该设备的制造商),当出现紧急问题时这个就特别有用了。 **建议阅读:** [8 Open Source/Commercial Billing Platforms for Hosting Providers][17] @@ -127,16 +117,15 @@ 该软件价格的神秘性也决定了软件的目标客户,极有可能这个软件是给大公司用的。 - [ ![CenterOS](http://www.tecmint.com/wp-content/uploads/2016/12/CenterOS.png) ][19] *CenterOS* -### 9\. LinMin +### 9、 LinMin -这个一款用于初始化物理设备以便后期使用的软件。使用 PXE 安装选定的操作系统,并可随后部署一系列必要的软件安装。 +这是一款用于初始化物理设备以便后期使用的软件。使用 PXE 安装选定的操作系统,并可随后部署一系列必要的软件安装。 与同类软件不同的是,[LinMin][20] 有一个开发完善的硬盘备份系统,可以迅速在系统崩溃后恢复以及大规模部署相同配置的服务器。 @@ -157,20 +146,21 @@ 希望通过这篇回顾能够帮你找到适合的软件让你的工作更轻松。另,祝您的服务器永不出错。 - ----------------------------------- 作者简介: ![](http://1.gravatar.com/avatar/ae5edcc20865ae20859fb566c796b97a?s=128&d=blank&r=g) +Nikita Nesmiyanov + 我是一名俄罗斯西伯利亚托管软件开发公司的技术专家。我希望能够在新的 Linux 软件工具和托管行业的发展趋势、可能性、发展历史和发展机遇等方面拓展我的知识。 -------------------------------------------------------------------------------- via: http://www.tecmint.com/data-center-server-management-tools/ -作者:[ Nikita Nesmiyanov][a] +作者:[Nikita Nesmiyanov][a] 译者:[beyondworld](https://github.com/beyondworld) 校对:[jasminepeng](https://github.com/jasminepeng) From f05b6dca7dc2b4af1e1313efffccd76d4fc40e64 Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Thu, 5 Jan 2017 09:45:13 +0800 Subject: [PATCH 0010/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校对中 --- translated/tech/20161128 Managing devices in Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20161128 Managing devices in Linux.md b/translated/tech/20161128 Managing devices in Linux.md index 9b5cba47ff..1a637271c8 100644 --- a/translated/tech/20161128 Managing devices in Linux.md +++ b/translated/tech/20161128 Managing devices in Linux.md @@ -158,7 +158,7 @@ via: https://opensource.com/article/16/11/managing-devices-linux 作者:[David Both][a] 译者:[erlinux](http://www.itxdm.me) -校对:[校对者ID](https://github.com/校对者ID) +校对:[jasminepeng](https://github.com/jasminepeng) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译,[Linux中国](https://linux.cn/) 荣誉推出 From 7151454a2afc5556f17f626387f0fb9fd9d32358 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 5 Jan 2017 11:16:46 +0800 Subject: [PATCH 0011/1082] PUB:20161201 Using the NTP time synchronization @GHLandy --- ...1201 Using the NTP time synchronization.md | 133 ++++++++++++++++++ ...1201 Using the NTP time synchronization.md | 133 ------------------ 2 files changed, 133 insertions(+), 133 deletions(-) create mode 100644 published/20161201 Using the NTP time synchronization.md delete mode 100644 translated/tech/20161201 Using the NTP time synchronization.md diff --git a/published/20161201 Using the NTP time synchronization.md b/published/20161201 Using the NTP time synchronization.md new file mode 100644 index 0000000000..e95eaa0f84 --- /dev/null +++ b/published/20161201 Using the NTP time synchronization.md @@ -0,0 +1,133 @@ +在 Ubuntu 中使用 NTP 进行时间同步 +========== + +NTP 是通过网络来同步时间的一种 TCP/IP 协议。通常客户端向服务器请求当前的时间,并根据结果来设置其时钟。 + +这个描述是挺简单的,实现这一功能却是极为复杂的 - 首先要有多层 NTP 服务器,第一层 NTP 服务器连接原子时钟,第二层、第三层服务器则担起负载均衡的责任,以处理因特网传来的所有请求。另外,客户端可能也超乎你想象的复杂 - 它必须排除通讯延迟,调整时间的同时不干扰其它在服务器中运行的进程。幸运的是,所有的这些复杂性都进行了封装,你是不可见也不需要见到的。 + +在 Ubuntu 中,是使用 `ntpdate` 和 `ntpd` 来同步时间的。 + +* [timedatectl](#timedatectl) +* [timesyncd](#timesyncd) +* [ntpdate](#ntpdate) +* [timeservers](#timeservers) +* [ntpd](#ntpd) +* [安装](#installation) +* [配置](#configuration) +* [View status](#status) +* [PPS Support](#Support) +* [参考资料](#reference) + +### timedatectl + +在最新的 Ubuntu 版本中,`timedatectl` 替代了老旧的 `ntpdate`。默认情况下,`timedatectl` 在系统启动的时候会立刻同步时间,并在稍后网络连接激活后通过 socket 再次检查一次。 + +如果已安装了 `ntpdate` / `ntp`,`timedatectl` 会退而让你使用之前的设置。这样确保了两个时间同步服务不会相互冲突,同时在你升级的时候还保留原本的行为和配置。但这也意味着从旧版本的发行版升级时 `ntp`/`ntpdate` 仍会安装,因此会导致新的基于 systemd 的时间服务被禁用。 + +### timesyncd + +在最新的 Ubuntu 版本中,`timesyncd` 替代了 `ntpd` 的客户端的部分。默认情况下 `timesyncd` 会定期检测并同步时间。它还会在本地存储更新的时间,以便在系统重启时做时间单步调整。 + +通过 `timedatectl` 和 `timesyncd` 设置的当前时间状态和时间配置,可以使用 `timedatectl status` 命令来进行确认。 + +``` +timedatectl status + Local time: Fri 2016-04-29 06:32:57 UTC + Universal time: Fri 2016-04-29 06:32:57 UTC + RTC time: Fri 2016-04-29 07:44:02 + Time zone: Etc/UTC (UTC, +0000) + Network time on: yes +NTP synchronized: no + RTC in local TZ: no +``` + +如果安装了 NTP,并用它替代 `timedatectl` 来同步时间,则 `NTP synchronized` 将被设置为 `yes`。 + +`timedatectl` 和 `timesyncd` 用来获取时间的 nameserver 可以通过 `/etc/systemd/timesyncd.conf` 来指定,另外在 `/etc/systemd/timesyncd.conf.d/` 下还有灵活的附加配置文件。 + +### ntpdate + +由于 `timedatectl` 的存在,各发行版已经弃用了 `ntpdate`,默认不再进行安装。如果你安装了,它会在系统启动的时候根据 Ubuntu 的 NTP 服务器来设置你电脑的时间。之后每当一个新的网络接口启动时,它就会重新尝试同步时间 —— 在这期间只要其涵盖的时间差不是太大,它就会慢慢偏移时间。该行为可以通过 `-B`/`-b` 开关来进行控制。 + +``` +ntpdate ntp.ubuntu.com +``` + +### 时间服务器 + +默认情况下,基于 systemd 的工具都是从 `ntp.ubuntu.com` 请求时间同步的。经典的基于 `ntpd` 的服务基本上都是使用 `[0-3].ubuntu.pool.ntp.org` 池中的 `2.ubuntu.pool.ntp.org`,还有 `ntp.ubuntu.com`,此外需要的话还支持 IPv6。如果想强制使用 IPv6,可以使用 `ipv6.ntp.ubuntu.com`,不过这并非默认配置。 + +### ntpd + +ntp 的守护进程 `ntpd` 会计算你的系统时钟的时间偏移量并且持续的进行调整,所以不会出现时间差距较大的更正,比如说,不会导致不连续的日志。该进程只花费少量的进程资源和内存,但对于现代的服务器来说实在是微不足道的了。 + +### 安装 + +要安装 `ntpd`,在终端命令行中输入: + +``` +sudo apt install ntp +``` + +### 配置 + +编辑 `/etc/ntp.conf` —— 增加/移除 `server` 行。默认配置有以下服务器: + +``` +# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board +# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for +# more information. +server 0.ubuntu.pool.ntp.org +server 1.ubuntu.pool.ntp.org +server 2.ubuntu.pool.ntp.org +server 3.ubuntu.pool.ntp.org +``` + +修改配置文件之后,你需要重新加载 `ntpd`: + +``` +sudo systemctl reload ntp.service +``` + +### 查看状态 + +使用 `ntpq` 来查看更多信息: + +``` +# sudo ntpq -p + remote refid st t when poll reach delay offset jitter +============================================================================== ++stratum2-2.NTP. 129.70.130.70 2 u 5 64 377 68.461 -44.274 110.334 ++ntp2.m-online.n 212.18.1.106 2 u 5 64 377 54.629 -27.318 78.882 +*145.253.66.170 .DCFa. 1 u 10 64 377 83.607 -30.159 68.343 ++stratum2-3.NTP. 129.70.130.70 2 u 5 64 357 68.795 -68.168 104.612 ++europium.canoni 193.79.237.14 2 u 63 64 337 81.534 -67.968 92.792 +``` + +### PPS 支持 + +从 Ubuntu 16.04 开始,ntp 支持 PPS 规范,给 ntp 提供了本地时间源,以提供更高的精度。查看下边列出的链接来获取更多配置信息。 + +### 参考资料 + +* 参考 [Ubuntu Time][1] wiki 页来获取更多信息 + +* [ntp.org,网络时间协议项目主页][2] + +* [ntp.org,关于配置 PPS 的 FAQ][3] + +-------------------------------------------------------------------------------- + +via: https://help.ubuntu.com/lts/serverguide/NTP.html + +作者:[Ubuntu][a] +译者:[GHLandy](https://github.com/GHLandy) +校对:[jasminepeng](https://github.com/jasminepeng) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:https://help.ubuntu.com/lts/serverguide/NTP.html +[1]:https://help.ubuntu.com/community/UbuntuTime +[2]:http://www.ntp.org/ +[3]:http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#S-CONFIG-ADV-PPS + diff --git a/translated/tech/20161201 Using the NTP time synchronization.md b/translated/tech/20161201 Using the NTP time synchronization.md deleted file mode 100644 index 66ed393a97..0000000000 --- a/translated/tech/20161201 Using the NTP time synchronization.md +++ /dev/null @@ -1,133 +0,0 @@ -使用 NTP 进行时间同步 -========== - -NTP 是通过网络来同步时间的一种 TCP/IP 协议。通常客户端向服务器请求当前的时间,并根据结果来设置其时钟。 - -这个描述是挺简单的,实现这一功能却是极为复杂的 - 首先要有多层 NTP 服务器,第一层 NTP 服务器连接原子时钟,第二层、第三层服务器则担起负载均衡的责任,以处理因特网传来的所有请求。另外,客户端可能也超乎你想象的复杂 - 它必须排除通讯延迟,调整时间的同时不干扰其它在服务器中运行的进程。幸运的是,所有的这些复杂性都进行了封装,你是不可见也不需要见到的。 - -在 Ubuntu 中,是使用 ntpdate 和 ntpd 来同步时间的。 - -* [timedatectl](#timedatectl) -* [timesyncd](#timesyncd) -* [ntpdate](#ntpdate) -* [timeservers](#timeservers) -* [ntpd](#ntpd) -* [安装](#installation) -* [配置](#configuration) -* [View status](#status) -* [PPS Support](#Support) -* [参考资料](#reference) - -### timedatectl - -在最新的 Ubuntu 版本中,*timedatectl* 替代了老旧的 *ntpdate*。默认情况下,*timedatectl* 在系统启动的时候会立刻同步时间,同时还开启 socket 以便恢复网络之后进行同步。 - -如果已安装 *ntpdate / ntp*,*timedatectl* 会让你使用之前的设置。这样确保了在有两个时间同步服务的时候不会相互冲突,同时在你进行的时候还保留原本的配置。但这也意味着升级旧版本时 ntp/ntpdate 仍会安装,因此会使新的 systemd 服务被禁用。 - -### timesyncd - -在最新的 Ubuntu 版本中,*timesyncd* 替代了 *ntpd* 的客户端的部分。默认情况下 *timesyncd* 会定期检测并同步时间。它还会在本地存储时间更新计划,以便在系统重启时做时间单步调整。 - -通过 *timedatectl* 和 *timesyncd* 设置的当前时间状态和时间配置,可以使用 *timedatectl status* 命令来进行确认。 - -``` -timedatectl status - Local time: Fri 2016-04-29 06:32:57 UTC - Universal time: Fri 2016-04-29 06:32:57 UTC - RTC time: Fri 2016-04-29 07:44:02 - Time zone: Etc/UTC (UTC, +0000) - Network time on: yes -NTP synchronized: no - RTC in local TZ: no -``` - -如果安装了 NTP,并用它替代 *timedatectl* 来同步时间,则 “NTP synchronized” 是 “yes”。 - -timedatectl 和 timesyncd 从 nameserver 处获取时间,这可以通过 /etc/systemd/timesyncd.conf 来指定,另外在 /etc/systemd/timesyncd.conf.d/ 下还有灵活的配置文件。 - -### ntpdate - -由于 *timedatectl* 的存在,各发行版已经弃用了 *ntpdate*,默认不再进行安装。如果你安装了,它会在系统启动的时候根据 Ubuntu 的 NTP 服务器来设置你电脑的时间。之后每当一个新接口启动时,它就会重新尝试同步时间 —— 在这期间只要其涵盖的时间差不是太大,它就会慢慢偏移时间。该行为可以通过 -B/-b 开关来进行控制。 - -``` -ntpdate ntp.ubuntu.com -``` - -### timeservers - -默认情况下,基于 systemd 的工具都是从 ntp.ubuntu.com 请求时间同步的。经典的基于 ntpd 的服务基本上都是使用 [0-3].ubuntu.pool.ntp.org 池中的 2.ubuntu.pool.ntp.org,还有 ntp.ubuntu.com,此外需要的话还支持 IPv6。如果想强制使用 IPv6,可以使用 ipv6.ntp.ubuntu.com,不过这并非默认配置。 - -### ntpd - -ntp 的守护进程 ntpd 会计算你的系统时钟的时间偏移量并且持续的进行调整,所以不会出现时间差距较大的更正,比如说,不会导致不连续的日志。该进程只花费少量的进程资源和内存,但对于现代的服务器来说实在是微不足道的了。 - -### 安装 - -要安装 ntpd,在终端命令行中输入: - -``` -sudo apt install ntp -``` - -### 配置 - -编辑 /etc/ntp.conf —— 增加/移除 server 行。默认配置有以下服务器: - -``` -# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board -# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for -# more information. -server 0.ubuntu.pool.ntp.org -server 1.ubuntu.pool.ntp.org -server 2.ubuntu.pool.ntp.org -server 3.ubuntu.pool.ntp.org -``` - -修改配置文件之后,你需要重新加载 *ntpd*: - -``` -sudo systemctl reload ntp.service -``` - -### 查看状态 - -使用 ntpq 来查看更多信息: - -``` -# sudo ntpq -p - remote refid st t when poll reach delay offset jitter -============================================================================== -+stratum2-2.NTP. 129.70.130.70 2 u 5 64 377 68.461 -44.274 110.334 -+ntp2.m-online.n 212.18.1.106 2 u 5 64 377 54.629 -27.318 78.882 -*145.253.66.170 .DCFa. 1 u 10 64 377 83.607 -30.159 68.343 -+stratum2-3.NTP. 129.70.130.70 2 u 5 64 357 68.795 -68.168 104.612 -+europium.canoni 193.79.237.14 2 u 63 64 337 81.534 -67.968 92.792 -``` - -### PPS Support - -从 Ubuntu 16.04 开始,ntp 支持 PPS 规范,增强了本地时间资源已提供更高的精度。查看下边列出的链接来获取更多配置信息。 - -### 参考资料 - -* 参考 [Ubuntu Time][1] wiki 页来获取更多信息 - -* [ntp.org,网络时间协议项目主页][2] - -* [ntp.org,关于配置 PPS 的 FAQ][3] - --------------------------------------------------------------------------------- - -via: https://help.ubuntu.com/lts/serverguide/NTP.html - -作者:[Ubuntu][a] -译者:[GHLandy](https://github.com/GHLandy) -校对:[jasminepeng](https://github.com/jasminepeng) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]:https://help.ubuntu.com/lts/serverguide/NTP.html -[1]:https://help.ubuntu.com/community/UbuntuTime -[2]:http://www.ntp.org/ -[3]:http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#S-CONFIG-ADV-PPS - From c0fba7f2a2b89e52e79ddcb4bd190e41922bed10 Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Thu, 5 Jan 2017 11:34:59 +0800 Subject: [PATCH 0012/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校对中 --- .../20161128 Managing devices in Linux.md | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/translated/tech/20161128 Managing devices in Linux.md b/translated/tech/20161128 Managing devices in Linux.md index 1a637271c8..6379625f0c 100644 --- a/translated/tech/20161128 Managing devices in Linux.md +++ b/translated/tech/20161128 Managing devices in Linux.md @@ -1,34 +1,32 @@ ### 在 Linux 中管理设备 -探索如何使您直接访问到 Linux 中的 /dev 目录设备。 +探索 /dev 目录如何使您直接访问到 Linux 中的设备。 ![Managing devices in Linux](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/OSDC_Penguin_Image_520x292_12324207_0714_mm_v1a.png itok=WfAkwbFy "Managing devices in Linux") -> Image by :Opensource.com +*照片提供:Opensource.com* -Linux 目录结构有很多有趣的功能,这个月我涉及(报导)了一些令人着迷的 /dev 目录。在继续这篇文章的任何操作之前,建议你看看我前面的文章。Linux 文件系统,一切皆为文件,这两个都介绍有趣的 Linux 文件系统概念。继续吗?我会等待。 +Linux 目录结构有很多有趣的功能。这个月我涉及了 /dev 目录一些迷人之处。在继续阅读这篇文章之前,建议你看看我前面的文章。[Linux 文件系统][9],[一切皆为文件][8],这两篇文章介绍了一些有趣的 Linux 文件系统概念。请先看看 - 我会等待。 -太好了 !欢迎回来。现在我们可以继续进行更详尽地探讨 /dev 目录。 +太好了 !欢迎回来。现在我们可以继续更详尽地探讨 /dev 目录。 ### 设备文件 -设备文件也称为?驱动 ][3][special files][4]. 设备文件被操作系统用来代表提供给用户的设备接口。所有的 Linux 设备文件位于 /dev 目录,是根 (/) 文件系统的一个组成部分,因为这些设备文件要在操作系统启动过程中必须用到。 +设备文件也称为 [special files][4]。设备文件用来为操作系统和用户提供它们代表的设备接口。所有的 Linux 设备文件位于 /dev 目录,是根 (/) 文件系统的一个组成部分,因为这些设备文件在操作系统启动过程中必须用到。 -关于要记住这些设备文件最重要的事情之一是大多数没有明确的设备驱动。他们是更准确地描述为门户对设备驱动程序。数据从应用程序或操作系统传递到该设备文件,然后将它传递给设备驱动程序,再将它发给物理设备。反向数据通道也可以用,从物理设备通过设备驱动程序再到设备文件最后到达一个应用程序或其他设备。 +关于这些设备文件,要记住一件重要的事情,就是它们大多不是设备驱动。更准确地描述来说,它们是对设备驱动程序的门户。数据从应用程序或操作系统传递到设备文件,然后设备文件将它传递给设备驱动程序,驱动再将它发给物理设备。反向数据通道也可以用,从物理设备通过设备驱动程序,再到设备文件,最后到达一个应用程序或其他设备。 让我们以一个可视化的典型命令看看这数据的流程。 ![dboth-dev-dir_0.png](https://opensource.com/sites/default/files/images/life-uploads/dboth-dev-dir_0.png) -图1:典型命令的简单数据流。 +*图 1:一个典型命令的简单数据流。* -在上面示出的图1中,显示一个简单命令的简化数据流程。**cat /etc/resolv.conf** 命令来自Konsole 或 xterm 终端仿真器解释 resolv.conf 文件从磁盘与磁盘设备驱动程序读取处理设备的具体功能。例如将文件定位在硬盘驱动器上并读取它。数据通过设备文件传递,然后命令终端会话中的显示位置从设备文件到设备驱动程序为 6 的伪终端。 +在图 1 中,显示一个简单命令的简化数据流程。从一个 GUI 终端仿真器,例如 Konsole 或 xterm 中发出 **cat /etc/resolv.conf** 命令,从磁盘中读取 resolv.conf 文件,磁盘设备驱动程序处理设备的具体功能,例如在硬盘驱动器上定位文件并读取它。数据通过设备文件传递,然后从命令到设备文件,然后到伪终端 6 的设备驱动,然后在终端会话中显示。 -当然,输出命令 **cat** 可以以下面的方式被重定向到一个文件 **cat /etc/resolv.conf > /etc/resolv.bak** 创建文件的备份。 +当然, **cat** 命令的输出可以下面的方式被重定向到一个文件, **cat /etc/resolv.conf > /etc/resolv.bak** ,以创建该文件的备份。在这种情况下,图 1 左侧的数据流量将保持不变,而右边的数据流量将通过 /dev/sda2 设备文件,硬盘设备驱动程序,然后到硬盘驱动器本身。 -在这种情况下,图 1 左侧的数据流量将保持不变而右边的数据流量将通过 /dev/sda2 设备文件,硬盘设备驱动程序,然后到硬驱动器本身。 - -这些设备文件使它使用标准流 (STD/IO) 和重定向访问Linux 或 Unix 计算机上的任何一个设备非常容易。只需将数据流定向到设备文件即可将数据发送到该设备。 +这些设备文件使用标准流 (STD/IO) 和重定向,使得访问 Linux 或 Unix 计算机上的任何一个设备非常容易。只需将数据流定向到设备文件,即可将数据发送到该设备。 ### 设备文件类别 @@ -165,8 +163,9 @@ via: https://opensource.com/article/16/11/managing-devices-linux [a]:https://opensource.com/users/dboth [1]:https://opensource.com/life/15/9/everything-is-a-file [2]:https://opensource.com/life/16/10/introduction-linux-filesystems -[3]:https://en.wikipedia.org/wiki/Device_file [4]:https://en.wikipedia.org/wiki/Device_file [5]:https://www.kernel.org/doc/Documentation/devices.txt [6]:https://www.linux.com/ [7]:https://www.linux.com/news/udev-introduction-device-management-modern-linux-system +[8]:https://opensource.com/life/15/9/everything-is-a-file +[9]:https://opensource.com/life/16/10/introduction-linux-filesystems From 9baf7b9cd5f3c1b2b3c5b59323d48302daf5ed8a Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 5 Jan 2017 14:57:09 +0800 Subject: [PATCH 0013/1082] PROOF:20161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10 @ypingcn --- ...ld Xorg Apps in Unity 8 on Ubuntu 16.10.md | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/translated/tech/20161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10.md b/translated/tech/20161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10.md index 86f701dad8..f20d8601ec 100644 --- a/translated/tech/20161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10.md +++ b/translated/tech/20161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10.md @@ -1,13 +1,13 @@ -如何在 Ubuntu 16.10 的 Unity 8 上使用之前的 Xorg 程序 +如何在 Ubuntu 16.10 的 Unity 8 上运行老式 Xorg 程序 ==== ![](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2016/10/unity8-feature-image.jpg "How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10s") -随着 Ubuntu 16.10 的发布,Unity 8 吸引到了比平时更多的目光。这是因为这个大家最爱的 Linux 发行版的最新版本进行着一项桌面显示实验。桌面发行版是人们最熟悉的 Unity 环境,但有一点点不同。它不再使用 X11 图形技术,Ubuntu的开发者选择了另一种截然不同的方式。 +随着 Ubuntu 16.10 的发布,Unity 8 越来越吸引到了更多人的关注。这是因为在这个大家最爱的 Linux 发行版的最新版本中可以体验其带有的试验性桌面。桌面发行版是人们最熟悉的 Unity 环境,但有一点点不同。它不再使用 X11 图形技术,Ubuntu 的开发者选择了另一种截然不同的方式。 -原来,Unity 8 用的是 Mir,这是 Ubuntu 对 Linux 上更好显示服务的号召所做出的回答。这项技术已经 Ubuntu phone 和平板上大量使用,但是这次新版是我们在桌面环境上第一次见到 Mir 。 +原来,Unity 8 用的是 Mir,这是 Ubuntu 为了在 Linux 上提供显示服务而做出的努力。这项技术已经在 Ubuntu phone 和平板上大量使用,但是这次新版是我们在桌面环境上第一次见到 Mir 。 -这项技术相当新颖,结果是没多少 Linux 程序能运行在它之上。不是所有,那也是大部分的程序被设计在 Xorg 和 X11 之上运行。如果你一直尝试在 Unity 8 上运行这些程序,当你了解到在 Unity 8上确实有可能运行之前的 Xorg 程序时,你会很开心的。接下来是如何做! +这项技术相当新颖,结果是没多少 Linux 程序能运行在它之上。不是所有,那也是大部分的程序设计在 Xorg 和 X11 之上运行。如果你想要试试在 Unity 8 上运行这些程序,你肯定会为在 Unity 8上确实能够运行之前的 Xorg 程序而高兴。接下来是如何做! ### 登录进 Unity 8 @@ -19,7 +19,7 @@ Unity 8 在 Ubuntu 16.10 上是一个可选会话。在使用之前只须牢记 ### 安装 Libertine -Xorg 程序(例如 Firefox 等)确实能在 Unity 8 上使用,在使用之前需要一点小调整。在 Mir 桌面上用终端打开 Libertine ,在 scopes 窗口中点击终端图标就能完成。一旦打开,输入你的密码。接下来,输入以下的命令: +Xorg 程序(例如 Firefox 等)确实能在 Unity 8 上使用,在使用之前需要一点小调整。在 Mir 桌面上用终端打开 Libertine ,在 Scopes 窗口中点击终端图标就能完成。一旦打开,输入你的密码。接下来,输入以下的命令: ![unity8-installing-libertine-in-terminal](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2016/10/unity8-installing-libertine-in-terminal.jpg "unity8-installing-libertine-in-terminal") @@ -27,15 +27,15 @@ Xorg 程序(例如 Firefox 等)确实能在 Unity 8 上使用,在使用之 sudo apt install libertine-tools libertine-scope libertine ``` -当这些程序完成安装后,点击并拖动 scopes 窗口以刷新内容。然后,在面板上点击来启动libertine。 +当这些程序完成安装后,点击并拖动 Scopes 窗口以刷新内容。然后,在面板上点击来启动 libertine。 ### 新建 Xorg 容器 -打开 Libertine,就到时间来新建一些容器了。这些容器很特别,因为他们能让基于 X11 的 Linux 程序在 Mir/Unity 8 桌面上的容器之中运行。另外,点击“i386 multiarch support"复选框来获得 32 位支持。否则,什么都不要动(或者输入名字和密码),点击”OK”。 +打开 Libertine,就可以新建一些(应用)容器了。这些容器很特别,因为它们能让基于 X11 的 Linux 程序在 Mir/Unity 8 桌面上的容器之中运行。另外,如果需要支持 32 位应用,勾选“i386 multiarch support”复选框。否则,什么都不要动(或者输入名字和密码),点击“OK”。 ![unity8-libertine-create-new-container](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2016/10/unity8-libertine-create-new-container.jpg "unity8-libertine-create-new-container") -在这之后,这个 Xorg 容器就准备好以供使用了。在 Libertine 找到它并启动。删除也很容易,右键点击容器,选择“删除”选项。 +在这之后,这个 Xorg 容器就准备好,可以使用了。在 Libertine 找到它并启动。删除也很容易,右键点击容器,选择“删除”选项。 **注意**:每一个 Xorg 容器有 500 MB的最大内存限制。所以多个容器是有必要的。 @@ -43,23 +43,21 @@ sudo apt install libertine-tools libertine-scope libertine ![unity8-libertine-install-software](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2016/10/unity8-libertine-install-software.jpg "unity8-libertine-install-software") -两天内在 Libertine 容器中安装好软件。第一步允许用户启动容器后选择“输入包名或者 Debian 文件”,这意味着用户可以在软件中心或者终端找到一个软件的名字,然后输入 Libertine 来安装,也可以指定特定的 DEB 文件来安装,也可以在Libertine LXC 容器中直接搜索安装包。 +在 Libertine 容器中安装软件有两个方法。第一种是允许用户启动容器后选择“输入包名或者 Debian 文件”,这意味着用户可以在软件中心或者终端找到一个软件的名字,然后在 Libertine 中输入它来安装。也可以指定特定的 DEB 文件来安装,可以在Libertine LXC 容器中直接搜索安装包。 **注意**:Unity 8 非常新,一些程序或许不能在 Libertine 里加载或者完全安装。 ### 结论 -Unity 8展现了不少的新特性,它现代、时髦,而且比之前任何一个 Unity 迭代版本都快。唯一限制它的就是使用率。事实是大部分用户更乐意选择实用的应用程序,而不是一个别致新颖的桌面环境。某种程度上来说,使用 Libertine 能解决这个问题,但它不会永久有效。早晚有一天,Canonical 将有必要自行引进程序或者向社区求助来彻底解决这个问题。 +Unity 8 展现了不少的新特性,它现代、时髦,而且比之前任何一个 Unity 迭代版本都快。唯一限制它的就是使用率。事实是大部分用户更乐意选择实用的应用程序,而不是一个别致新颖的桌面环境。某种程度上来说,使用 Libertine 能解决这个问题,但它不会永久有效。早晚有一天,Canonical 都需要自行移植这些程序或者向社区求助来彻底解决这个问题。 -------------------------------------------------------------------------------- via: https://www.maketecheasier.com/use-old-xorg-apps-unity-8/ 作者:[Derrik Diener][a] - 译者:[ypingcn](https://github.com/ypingcn) - -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译,[Linux中国](https://linux.cn/) 荣誉推出 From 148042bc19a1306c1ab4f06e8d0ac65e6a57ae24 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 5 Jan 2017 14:57:38 +0800 Subject: [PATCH 0014/1082] PUB:20161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10 @ypingcn --- ...0161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/tech => published}/20161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10.md (100%) diff --git a/translated/tech/20161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10.md b/published/20161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10.md similarity index 100% rename from translated/tech/20161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10.md rename to published/20161024 How to Use Old Xorg Apps in Unity 8 on Ubuntu 16.10.md From aa1ab07c6818fdc21698d8632912abf52a27df0b Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Thu, 5 Jan 2017 16:47:43 +0800 Subject: [PATCH 0015/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校对完毕 @erlinux,谢谢 --- .../20161128 Managing devices in Linux.md | 83 +++++++++++-------- 1 file changed, 48 insertions(+), 35 deletions(-) diff --git a/translated/tech/20161128 Managing devices in Linux.md b/translated/tech/20161128 Managing devices in Linux.md index 6379625f0c..4430163d01 100644 --- a/translated/tech/20161128 Managing devices in Linux.md +++ b/translated/tech/20161128 Managing devices in Linux.md @@ -30,9 +30,9 @@ Linux 目录结构有很多有趣的功能。这个月我涉及了 /dev 目 ### 设备文件类别 -设备文件至少可以被分为两种方式。最常用的第一种分类通常是与设备相关联数据的数据流。比如,虚拟终端 (电报交换机) 并且串行设备被认为是基于字符的,因为数据流一次被传送和处理一个字符或字节。 块类型设备(如硬盘驱动器)以块为单位传输数据,通常为256个字节的倍数。 +设备文件至少可以按两种方式划分。第一种也是最常用的分类是根据与设备相关联的数据流进行划分。比如,tty (teletype) 和串行设备被认为是基于字符的,因为一次传送和处理数据流的一个字符或字节。 块类型设备(如硬盘驱动器)以块为单位传输数据,通常为 256 个字节的倍数。 -如果你还没有准备好继续前进,在终端会话一个非root用户,改变目前的工作目录(PWD)到 /dev 和显示的长目录列表。 这将显示设备文件列表及其文件权限及其主要和次要标识号。 例如,下面的设备文件只是 Fedora 24 工作站上 /dev 目录中的几个文件。 它们表示磁盘和tty设备类型。 注意输出中每行的最左边的字符。 具有“b”的是块类型设备,以“c”开头的是字符设备。 +您可以在终端上以一个非 root 用户,改变当前工作目录(PWD)到 /dev ,并显示长目录列表。 这将显示设备文件列表、文件权限及其主次设备号。 例如,下面的设备文件只是我的 Fedora 24 工作站上 /dev 目录中的几个文件。 它们表示磁盘和 tty 设备类型。 注意输出中每行的最左边的字符。 “b” 代表是块类型设备,“c” 代表字符设备。 ``` brw-rw----   1 root disk        8,   0 Nov  7 07:06 sda @@ -46,65 +46,67 @@ crw--w---- 1 root tty         4,  10 Nov  7 07:06 tty10 crw--w---- 1 root tty         4,  11 Nov  7 07:06 tty11 ``` -识别设备文件更详细和更明确的方法是使用设备主要以及次要码。 磁盘设备具有主数字8,其将它们指定为SCSI块设备。 请注意,所有PATA和SATA硬盘驱动器都由SCSI子系统管理,因为旧的ATA子系统多年前被认为是不可维护的,因为它的代码质量差。 造成的结果是,以前被称为“hd [a-z]”的硬盘驱动器现在被称为“sd [a-z]”。 +识别设备文件更详细和更明确的方法是使用设备主要以及次要号。 磁盘设备主设备号为 8,将它们指定为 SCSI 块设备。 请注意,所有 PATA 和 SATA 硬盘驱动器都由 SCSI 子系统管理,因为旧的 ATA 子系统多年前被认为是不可维护的,因为它的代码质量差。 造成的结果是,以前被称为 “hd [a-z]” 的硬盘驱动器现在被称为 “sd [a-z]”。 -你大概可以推断出磁盘驱动器次要设备号如上示例所示的模式。小数字 0、 16、 32 等等,通过 240 是整个磁盘号。所以主要/次要 8/16 表示整个磁盘 /dev/sdb 和 8/17 是 /dev/sdb1的第一个分区的设备文件。数字 8/34 将是 /dev/sdc2。 +你大概可以从上面的示例中推出磁盘驱动器次设备号的样式。次设备号 0、 16、 32 等等,直到 240,是整磁盘号。所以主/次 8/16 表示整个磁盘 /dev/sdb , 8/17 是第一个分区的设备文件,/dev/sdb1。数字 8/34 代表 /dev/sdc2。 -在上面列表中的tty设备文件是通过从tty0到tty63的编号更简单一些。 +The tty device files in the list above are numbered a bit more simply from tty0 through tty63. -Kernel.org上的[Linux Allocated Devices][5]文件是设备类型和主要和次要编号分配的正式注册表。 它可以帮助您了解所有当前定义的设备的主要/次要号码。 +在上面列表中的 tty 设备文件编号更简单一些,从 tty0 到 tty63 。 -### 设备文件乐趣 +Kernel.org 上的 [Linux Allocated Devices][5] 文件是设备类型和主次编号分配的正式注册表。 它可以帮助您了解所有当前定义的设备的主要/次要号码。 -让我们花几分钟时间,执行几个有趣的,实验将说明Linux设备文件的强大和灵活性。 大多数Linux发行版都有1到7多个虚拟控制台,可用于使用shell接口登录到本地控制台会话。 可以使用Ctrl-Alt-F1(对于控制台1),Ctrl-Alt-F2(对于控制台2)等组合键可以访问这些。 +### 趣味设备文件 -请按 Ctrl-Alt-F2 切换到控制台 2。在某些发行版,登录信息包括与此控制台关联的tty设备,但许多人不知道。它应该是 tty2,因为你是在控制台 2 中。 +让我们花几分钟时间,执行几个有趣的实验,演示 Linux 设备文件的强大和灵活性。 大多数 Linux 发行版都有 1 到 7 个虚拟控制台,可用于使用 shell 接口登录到本地控制台会话。 可以使用 Ctrl-Alt-F1(控制台1),Ctrl-Alt-F2(控制台2)等键盘组合键来访问。 -以非root用户身份登录。 然后你可以使用谁是我的命令(译者注:就是命令“who”)。是的,就像这样,用空格来确定哪个tty设备连接到这个控制台。 +请按 Ctrl-Alt-F2 切换到控制台 2。在某些发行版,登录信息包括与此控制台关联的 tty 设备,但大多不包括。它应该是 tty2,因为你是在控制台 2 中。 -在我们实际执行此实验之前,看看在 /dev中的 tty2 和 tty3 的设备列表 +以非 root 用户身份登录。 然后你可以使用 who am i 命令 — 是的,就是这个命令,带空格 — 来确定哪个 tty 设备连接到这个控制台。 + +在我们实际执行此实验之前,看看 /dev 中的 tty2 和 tty3 的设备列表。 ``` ls -l /dev/tty[23] ``` -将有大量的 tty 设备定义,但我们不关心他们中的大多数,只注意 tty2 和 tty3 上的设备。 作为设备文件,他们没什么特别之处。他们都只是字符类型设备。我们将使用这些设备进行此实验。 tty2设备连接到虚拟控制台2,tty3设备连接到虚拟控制台3。 +有大量的 tty 设备,但我们不关心他们中的大多数,只注意 tty2 和 tty3 设备。 作为设备文件,他们没什么特别之处。他们都只是字符类型设备。我们将使用这些设备进行此实验。 tty2 设备连接到虚拟控制台 2,tty3 设备连接到虚拟控制台 3。 -按 Ctrl-Alt-f2 键以返回到控制台 2。字符串"Hello world"(没有引号) 将显示在控制台 2。 +按 Ctrl-Alt-F3 切换到控制台 3。再次以同一非 root 用户身份登陆。 现在在控制台 3 上输入以下命令。 ``` echo "Hello world" > /dev/tty2 ``` -该实验也可以使用GUI桌面上的终端仿真器来执行。 桌面上的终端会话在 /dev 中使用伪终端设备,如 /dev/pts/1。 使用 Konsole 或 Xterm 打开两个终端会话。 确定它们连接到哪些伪终端,并使用一个向另一个发送消息。 +按 Ctrl-Alt-f2 键以返回到控制台 2。字符串 “Hello world”(没有引号)将显示在控制台 2。 -现在继续实验,使用 cat 命令在不同的终端上显示 /etc/fstab 文件。 +该实验也可以使用 GUI 桌面上的终端仿真器来执行。 桌面上的终端会话使用 /dev 中的伪终端设备,如 /dev/pts/1。 使用 Konsole 或 Xterm 打开两个终端会话。 确定它们连接到哪些伪终端,并使用一个向另一个发送消息。 -另一个有趣的实验是使用cat命令将文件直接打印到打印机。 假设您的打印机设备是/ dev / usb / lp0,并且您的打印机可以直接打印PDF文件,以下命令将在您的打印机上打印PDF文件test.pdf。 +现在继续实验,使用 cat 命令,在不同的终端上显示 /etc/fstab 文件。 + +另一个有趣的实验是使用 cat 命令将文件直接打印到打印机。 假设您的打印机设备是 /dev/usb/lp0,并且您的打印机可以直接打印 PDF 文件,以下命令将在您的打印机上打印 test.pdf 文件。 ``` cat test.pdf > /dev/usb/lp0 ``` -/dev目录包含一些非常有趣的设备文件,这些文件是硬件的入口,人们通常不认为这是硬盘驱动器或显示器之类的设备。 例如,系统存储器RAM不是通常被认为是“设备”的东西,而/ dev / mem是通过其可以实现对存储器的直接访问的门户。 下面的例子有一些有趣的结果。 +/dev 目录包含一些非常有趣的设备文件,这些文件是硬件的入口,人们通常不认为这是硬盘驱动器或显示器之类的设备。 例如,系统存储器 RAM 不是通常被认为是“设备”的东西,而 /dev/mem 是通过其可以实现对存储器的直接访问的入口。 下面的例子有一些有趣的结果。 ``` dd if=/dev/mem bs=2048 count=100 ``` -The **dd** command above provides a bit more control than simply using the **cat**command to dump all of a system's memory. It provides the ability to specify how much data is read from /dev/mem and would also allow me to specify the point at which to start reading data from memory. Although some memory was read, the kernel responded with the following error that I found in /var/log/messages. - -上面的**dd**命令提供比简单地使用**cat**命令转储所有系统的内存提供了更多的控制。 它提供了指定从 /dev/mem 读取多少数据的能力,并且还允许我指定开始从存储器读取数据的点。 虽然一些内存被读取,内核响应我在 /var/log/messages中发现的以下错误 +上面的 **dd** 命令提供比简单地使用 **cat** 命令 dump 所有系统的内存提供了更多的控制。 它提供了指定从 /dev/mem 读取多少数据的能力,还允许指定从存储器哪里开始读取数据。 虽然读取了一些内存,但内核响应了以下错误,在 /var/log/messages 中可以找到。 ``` Nov 14 14:37:31 david kernel: usercopy: kernel memory exposure attempt detected from ffff9f78c0010000 (dma-kmalloc-512) (2048 bytes) ``` -这个错误意味着内核正在通过保护属于其他进程的内存来完成它的工作,这正是它应该工作的方式。 所以,虽然可以使用 /dev/mem 来显示存储在 RAM 内存中的数据,但是访问大多数内存空间是受保护的并且会导致错误。 只有由内核内存管理器分配给运行**dd**命令的BASH shell的虚拟内存才可以访问,而不会导致错误。 抱歉,但你不能在不属于你的内存监听,除非你发现了一个漏洞利用。 +这个错误意味着内核正在通过保护属于其他进程的内存来完成它的工作,这正是它应该工作的方式。 所以,虽然可以使用 /dev/mem 来显示存储在 RAM 内存中的数据,但是访问大多数内存空间是受保护的并且会导致错误。 只可以访问由内核内存管理器分配给运行 **dd** 命令的 BASH shell 的虚拟内存,而不会导致错误。 抱歉,但你不能窥视不属于你的内存,除非你发现了一个可利用的漏洞。 -/dev中还有一些非常有趣的设备文件。 设备文件null,zero,random和urandom不与任何物理设备相关联。 +/dev 中还有一些非常有趣的设备文件。 设备文件 null,zero,random 和 urandom 不与任何物理设备相关联。 -例如,空设备/dev/null可以用作来自shell命令或程序的输出重定向的目标,以便它们不显示在终端上。 我经常在我的BASH脚本中使用这个,以防止向用户展示可能会让他们感到困惑的输出。(译者注:作者怕大家看不懂,解释了一下) /dev/null 设备可用于产生一个空字符串。 使用如下所示的dd命令查看/dev/null设备文件的一些输出。 +例如,空设备 /dev/null 可以用作来自 shell 命令或程序的输出重定向的目标,以便它们不显示在终端上。 我经常在我的 BASH 脚本中使用这个,以防止向用户展示可能会让他们感到困惑的输出。 /dev/null 设备可用于产生一个空字符串。 使用如下所示的 dd 命令查看 /dev/null 设备文件的一些输出。 ``` # dd if=/dev/null bs=512 count=500 | od -c @@ -114,13 +116,13 @@ Nov 14 14:37:31 david kernel: usercopy: kernel memory exposure attempt detected 0000000 ``` -注意,因为空字符什么也没有所以确实没有可见的输出。 注意字节计数。 +注意,因为空字符什么也没有所以确实没有可见的输出。 注意字节数。 -/ dev / random和/ dev / urandom设备也很有趣。 正如他们的名字所暗示的,它们都产生随机输出,而不仅仅是数字,而是任何和所有字节组合。 / dev / urandom设备产生确定性的随机输出并且非常快。 这意味着输出由算法确定,并使用种子字符串作为起点。 结果,如果原始种子是已知的,则黑客可以再现输出,尽管非常困难。 使用命令 **cat /dev/urandom** 可以查看典型输出. 你可以使用 Ctrl-c 去退出. +/dev/random 和 /dev/urandom 设备也很有趣。 正如他们的名字所暗示的,它们都产生随机输出,而不仅仅是数字,而是任何字节组合。 /dev/urandom 设备产生确定性的随机输出并且非常快。 这意味着输出由算法确定,并使用种子字符串作为起点。 结果,如果原始种子是已知的,则黑客可以再现输出,尽管非常困难,但这是有可能的。 使用命令 **cat /dev/urandom** 可以查看典型输出,使用 Ctrl-c 退出。 -/dev/random设备文件生成非确定性随机输出,但它产生的输出更慢。 该输出不是由依赖于先前数字的算法确定的,而是响应于击键和鼠标移动而产生的。 这种方法使得复制特定系列的随机数要困难得多。使用 **cat **命令去查看一些来自/dev/random 设备文件输出。尝试移动鼠标以查看它如何影响输出。 +/dev/random 设备文件生成非确定性随机输出,但它产生的输出更慢。 该输出不是由依赖于先前数字的算法确定的,而是由击键和鼠标移动而产生的。 这种方法使得复制特定系列的随机数要困难得多。使用 **cat **命令去查看一些来自 /dev/random 设备文件输出。尝试移动鼠标以查看它如何影响输出。 -正如其名字所暗示的,/ dev / zero设备文件产生一个无止境的零字符串作为输出。 注意,这些是八进制零,而不是ASCII字符零(0)。 使用如下所示的 **dd** 查看/dev/zero设备文件中的一些输出 +正如其名字所暗示的,/dev/zero 设备文件产生一个无止境的零作为输出。 注意,这些是八进制零,而不是ASCII字符零(0)。 使用如下所示的 **dd** 查看 /dev/zero 设备文件中的一些输出 ``` # dd if=/dev/zero bs=512 count=500 | od -c @@ -132,24 +134,33 @@ Nov 14 14:37:31 david kernel: usercopy: kernel memory exposure attempt detected 0764000 ``` -请注意,此命令的字节计数不为零。 +请注意,此命令的字节数不为零。 ### 创建设备文件 -在过去,在/dev 中的设备文件都是在安装时创建的,导致一个目录中可能几乎所有的设备文件,尽管大多数永远不会使用。 在不太可能发生的情况下,需要新的设备文件或意外删除并需要重新创建 **mknod** 程序可手动创建设备文件。 你必须知道的是设备主要和次要号码。 +在过去,在 /dev 中的设备文件都是在安装时创建的,导致一个目录中有几乎所有的设备文件,尽管大多数文件永远不会用到。 在不常发生的情况,例如需要新的设备文件,或意外删除后需要重新创建设备文件,可以使用 **mknod** 程序手动创建设备文件。 前提是你必须知道设备主要和次要号码。 -CentOS and RHEL 6 and 7, 以及Fedora的所有版本回到至少与Fedora 15一样,使用较新的创建设备文件的方法。 所有设备文件都是在引导时创建的。 此功能是可能的,因为udev设备管理器检测到设备的添加和删除发生时。 这允许在主机启动和运行时的真正的动态即插即用功能。 它还在引导时执行相同的任务,通过在引导过程的早期检测系统上安装的所有设备。 [Linux.com][6] 有很棒的 [udev 描述][7]. -回到你在/ dev中的文件列表,注意文件的日期和时间。 所有这些都是在上次启动时创建的。 您可以使用验证**uptime** 或者 **last 命令。在上面的设备列表中,所有这些文件都是在11月7日上午7:06创建的,这是我最后一次启动系统。 +CentOS 和 RHEL 6、7, 以及 Fedora 的所有版本,追溯到至少 Fedora 15,使用较新的创建设备文件的方法。 所有设备文件都是在引导时创建的。 这是因为 udev 设备管理器在设备添加和删除发生时会进行检测。这可实现在主机启动和运行时的真正的动态即插即用功能。 它还在引导时执行相同的任务,通过在引导过程的早期检测系统上安装的所有设备。 [Linux.com][6] 上有很棒的对 [udev 的描述][7]. -当然, **mknod** 命令仍然可用, 但新的 **MAKEDEV** (是的,所有大写,在我看来是违背Linux哲学使用所有小写命令名) 命令提供了一个更容易的界面,用于创建设备文件,如果需要的话。 在当前版本的Fedora或CentOS 7中,默认情况下不安装MAKEDEV命令; 它安装在CentOS 6.您可以使用YUM或DNF来安装MAKEDEV包。 +回到 /dev 中的文件列表,注意文件的日期和时间。 所有文件都是在上次启动时创建的。 您可以使用 **uptime** 或者 **last** 命令来验证这一点。在上面我的设备列表中,所有这些文件都是在 11 月 7 日上午 7:06 创建的,这是我最后一次启动系统。 -### 结尾 +当然,  **mknod** 命令仍然可用, 但新的 **MAKEDEV** (是的,所有字母大写,在我看来是违背 Linux 使用小写命令名的原则的) 命令提供了一个更容易的界面,用于创建设备文件,如果需要的话。 在当前版本的 Fedora 或 CentOS 7 中,默认情况下不安装 MAKEDEV 命令; 它安装在 CentOS 6。您可以使用 YUM 或 DNF 来安装 MAKEDEV 包。 -有趣的是,我需要创建一个设备文件已经很长时间了。 然而,最近我有一个有趣的情况,其中一个通常使用的设备文件没有创建,我不得不创建它。 我从来没有与该设备有任何问题。所以造成丢失的设备文件的情况仍然可以发生,知道如何处理它可能很重要。 +### 结论 -我所没有涵盖的你可能会遇到的不同类型的设备文件。 这些信息在所引用的资源中有大量的细节信息是可用的。 我希望我已经给你一些基本的了解这些文件的功能和工具,让你自己探索更多。 +有趣的是,我需要创建一个设备文件已经很长时间了。 然而,最近我遇到一个有趣的情况,其中一个我常使用的设备文件没有创建,我不得不创建它。 之后该设备再出过问题。所以丢失设备文件的情况仍然可以发生,知道如何处理它可能很重要。 + +设备文件有无数种,您遇到的设备文件我可能没有涵盖到。 这些信息在所下面引用的资源中有大量的细节信息可用。 关于这些文件的功能和工具,我希望我已经给您一些基本的了解,下一步您自己可以探索更多。 + +资源 + +[Everything is a file][1], David Both, Opensource.com +[An introduction to Linux filesystems][2], David Both, Opensource.com +[Filesystem Hierarchy][10], The Linux Documentation Project +[Device File][4], Wikipedia +[Linux Allocated Devices][5], Kernel.org -------------------------------------------------------------------------------- via: https://opensource.com/article/16/11/managing-devices-linux @@ -169,3 +180,5 @@ via: https://opensource.com/article/16/11/managing-devices-linux [7]:https://www.linux.com/news/udev-introduction-device-management-modern-linux-system [8]:https://opensource.com/life/15/9/everything-is-a-file [9]:https://opensource.com/life/16/10/introduction-linux-filesystems +[10]:http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/dev.html + From 6a071fbb9e834cb8d3d92de28e1b060edc29e1ea Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Thu, 5 Jan 2017 16:52:34 +0800 Subject: [PATCH 0016/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校对完毕 --- translated/tech/20161128 Managing devices in Linux.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translated/tech/20161128 Managing devices in Linux.md b/translated/tech/20161128 Managing devices in Linux.md index 4430163d01..32882d716d 100644 --- a/translated/tech/20161128 Managing devices in Linux.md +++ b/translated/tech/20161128 Managing devices in Linux.md @@ -156,11 +156,11 @@ CentOS 和 RHEL 6、7, 以及 Fedora 的所有版本,追溯到至少 Fedora 15 资源 -[Everything is a file][1], David Both, Opensource.com -[An introduction to Linux filesystems][2], David Both, Opensource.com -[Filesystem Hierarchy][10], The Linux Documentation Project -[Device File][4], Wikipedia -[Linux Allocated Devices][5], Kernel.org +- [Everything is a file][1], David Both, Opensource.com +- [An introduction to Linux filesystems][2], David Both, Opensource.com +- [Filesystem Hierarchy][10], The Linux Documentation Project +- [Device File][4], Wikipedia +- [Linux Allocated Devices][5], Kernel.org -------------------------------------------------------------------------------- via: https://opensource.com/article/16/11/managing-devices-linux From 7d2d02c9eac032e29b129fe4c5ad77feb6fb2ee3 Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Thu, 5 Jan 2017 16:57:16 +0800 Subject: [PATCH 0017/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 又调整了下格式 --- translated/tech/20161128 Managing devices in Linux.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/translated/tech/20161128 Managing devices in Linux.md b/translated/tech/20161128 Managing devices in Linux.md index 32882d716d..c9aab3a1eb 100644 --- a/translated/tech/20161128 Managing devices in Linux.md +++ b/translated/tech/20161128 Managing devices in Linux.md @@ -50,8 +50,6 @@ crw--w---- 1 root tty         4,  11 Nov  7 07:06 tty11 你大概可以从上面的示例中推出磁盘驱动器次设备号的样式。次设备号 0、 16、 32 等等,直到 240,是整磁盘号。所以主/次 8/16 表示整个磁盘 /dev/sdb , 8/17 是第一个分区的设备文件,/dev/sdb1。数字 8/34 代表 /dev/sdc2。 -The tty device files in the list above are numbered a bit more simply from tty0 through tty63. - 在上面列表中的 tty 设备文件编号更简单一些,从 tty0 到 tty63 。 Kernel.org 上的 [Linux Allocated Devices][5] 文件是设备类型和主次编号分配的正式注册表。 它可以帮助您了解所有当前定义的设备的主要/次要号码。 @@ -161,6 +159,7 @@ CentOS 和 RHEL 6、7, 以及 Fedora 的所有版本,追溯到至少 Fedora 15 - [Filesystem Hierarchy][10], The Linux Documentation Project - [Device File][4], Wikipedia - [Linux Allocated Devices][5], Kernel.org + -------------------------------------------------------------------------------- via: https://opensource.com/article/16/11/managing-devices-linux From 84e9ab501945e94bd5d5e897d46337840018217f Mon Sep 17 00:00:00 2001 From: ypingcn <1344632698@qq.com> Date: Thu, 5 Jan 2017 17:42:54 +0800 Subject: [PATCH 0018/1082] Update 20161107 CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md --- ...UD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sources/tech/20161107 CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md b/sources/tech/20161107 CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md index 0350f284e0..fb52f4d2d3 100644 --- a/sources/tech/20161107 CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md +++ b/sources/tech/20161107 CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md @@ -1,5 +1,6 @@ translating by ypingcn. +为了畅游网络的人们、专注于云端的Linux 发行版 CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE ============================================================ @@ -7,12 +8,16 @@ CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE ![Best Linux distributions for cloud computing](https://itsfoss.com/wp-content/uploads/2016/11/cloud-centric-Linux-distributions.jpg) ][6] +概述:我们列举了几款以云端为中心的 Linux 发行版,它们被视为真正能替代 Chrome OS 的 Linux 发行版。 _Brief: We list some _Cloud centric_ Linux distributions that might be termed as real Linux alternatives to Chrome OS._ +这个世界正在向云端服务转变,而且我们都知道 Chrome OS 倍受人们喜爱。嗯,它确实值得尊重。它超级快、轻盈、省电、简约、设计精美而且充分发挥了当今科技所能提供的云端潜能。 The world is moving to cloud-based services and we all know the kind of love that Chrome OS got. Well, it does deserve respect. It’s super fast, light, power-efficient, minimalistic, beautifully designed and utilizes the full potential of cloud that technology permits today. +虽然 [Chrome OS][7] 只能在谷歌的硬件上使用,但是,就只是在你的台式机或者笔记本上,还是有其他的方法来体验云计算的潜能。 Although [Chrome OS][7] is exclusively available only for Google’s hardware, there are other means to experience the potential of cloud computing right on your laptop or desktop. +正如我重复说的,在 Linux 领域中,人们总能参与其中。有那些看起来像 Windows 或者 Mac OS 的Linux 发行版。Linux 汇集了分享,爱和计算体验的最前沿。让我们马上看看这份列表吧! As I have repeatedly said, there is always something for everybody in the Linux domain, be it [Linux distributions that look like Windows][8] or Mac OS. Linux is all about sharing, love and some really bleeding edge computing experience. Let’s crack this list right away! ### 1\. CUB LINUX From ad793a16a8d1c29222075f58f6dbaf0d18a438ce Mon Sep 17 00:00:00 2001 From: ypingcn <1344632698@qq.com> Date: Thu, 5 Jan 2017 18:26:59 +0800 Subject: [PATCH 0019/1082] Update 20161107 CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md --- ...SED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sources/tech/20161107 CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md b/sources/tech/20161107 CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md index fb52f4d2d3..302e30f02a 100644 --- a/sources/tech/20161107 CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md +++ b/sources/tech/20161107 CLOUD FOCUSED LINUX DISTROS FOR PEOPLE WHO BREATHE ONLINE.md @@ -23,23 +23,30 @@ As I have repeatedly said, there is always something for everybody in the Linux ### 1\. CUB LINUX ![Cub Linux Desktop](https://itsfoss.com/wp-content/uploads/2016/10/cub1.jpg) - + +这不是 Chrome OS ,上述图片描绘的是 Cub Linux 的桌面。不清楚我说的什么? It is not Chrome OS. But the above image is featuring the desktop of [Cub Linux][9]. Say what? +Cub Linux 对于 Linux 用户来说不再新鲜,但是如果你确实不知道的话,(我来解释下,)Cub Linux 灵感来源于主流的 Chrome OS ,是一款专注于网页的 Linux 发行版。从母亲 Linux 来讲,它也是 Chrome OS 的开源兄弟。 Cub Linux is no news for Linux users. But if you already did not know, Cub Linux is the web focused Linux distro that is inspired from mainstream Chrome OS. It is also the open source brother of Chrome OS from mother Linux. +Chrome OS 内置了 Chrome 浏览器。不久之前,一个名为 [Chromixium OS][10] 的项目启动,旨在用 Chromium 浏览器取代 Chrome 浏览器,来提供与 Chrome OS 同样的体验。因为一些法律上的争论,项目名字后来改为 Cub Linux (取自 Chromium 和 Ubuntu 两个词)。 Chrome OS has the Chrome Browser as it’s primary component. Not so long ago, a project by name [Chromixium OS][10] was started to recreate Chrome OS like experience by using the Chromium Browser in place of Chrome Browser. Due to some legal issues, the name was later changed to Cub Linux (Chromium+Ubuntu). ![cub2](https://itsfoss.com/wp-content/uploads/2016/10/cub2.jpg) - + +在历史上,如名字提示的那样,Cub Linux 基于 Ubuntu ,使用了轻量的 Openbox 桌面环境。定制桌面来给人以 Chrome OS 的印象,而且看起来很整洁。 Well, history apart, as the name hints, Cub Linux is based on Ubuntu, features the lightweight Openbox Desktop Environment. The Desktop is customized to give a Chrome OS impression and looks really neat. +在应用部分,你能安装 Chrome 网上商店的网络应用和所有的 Ubuntu 应用。对,有 Chrome OS 的精美应用,你还能体会到 Ubuntu 的好处。 In the apps department, you can install the web applications from the Chrome web store and all the Ubuntu software. Yup, with all the snappy apps of the Chrome OS, You’ll still get the Ubuntu goodies. +就表现而言,这操作系统相当快多亏了它自身的 Openbox 桌面环境。基于 Ubuntu ,Cub Linux 的稳定性是毋庸置疑的。这桌面流畅的动画和漂亮的用户界面,对于眼睛是一种享受, As far as the performance is concerned, the operating system is super fast thanks to its Openbox Desktop Environment. Based on Ubuntu Linux, the stability of Cub Linux is unquestionable. The desktop itself is a treat to the eyes with all its smooth animations and beautiful UI. [Suggested Read[Year 2013 For Linux] 2 Linux Distributions Discontinued][11] +我向花费大部分时间在浏览器,时不时做些家务的人推荐 Cub Linux 。嗯,一个浏览器就是你所需要的全部,而且,一个浏览器正是你将会得到的全部。 I suggest Cub Linux to anybody who spends most their times on a browser and do some home tasks now and then. Well, a browser is all you need and a browser is exactly what you’ll get. ### 2\. PEPPERMINT OS From cba99e819e138645673a89e9bdc7b68f05eaac59 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 5 Jan 2017 21:23:31 +0800 Subject: [PATCH 0020/1082] =?UTF-8?q?PUB:20161206=20How=20to=20Find=20Rece?= =?UTF-8?q?nt=20or=20Today=E2=80=99s=20Modified=20Files=20in=20Linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @geekpi --- ...cent or Today’s Modified Files in Linux.md | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) rename {translated/tech => published}/20161206 How to Find Recent or Today’s Modified Files in Linux.md (79%) diff --git a/translated/tech/20161206 How to Find Recent or Today’s Modified Files in Linux.md b/published/20161206 How to Find Recent or Today’s Modified Files in Linux.md similarity index 79% rename from translated/tech/20161206 How to Find Recent or Today’s Modified Files in Linux.md rename to published/20161206 How to Find Recent or Today’s Modified Files in Linux.md index 9c0df6385d..6d098f2922 100644 --- a/translated/tech/20161206 How to Find Recent or Today’s Modified Files in Linux.md +++ b/published/20161206 How to Find Recent or Today’s Modified Files in Linux.md @@ -1,7 +1,7 @@ 如何在 Linux 中找出最近或今天被修改的文件 ============================================================ -在本文中,我们将解释两个简单的[命令行小贴士][5],它可以帮你只列出今天的所有文件。 +在本文中,我们将解释两个简单的[命令行小技巧][5],它可以帮你只列出所有的今天的文件。 Linux 用户在命令行上遇到的常见问题之一是[定位具有特定名称的文件][6],如果你知道确定的文件名则可能会容易得多。 @@ -9,23 +9,25 @@ Linux 用户在命令行上遇到的常见问题之一是[定位具有特定名 下面用不同的方式只[列出所有你今天创建或修改的文件][7](直接或间接)。 -1. 使用[ ls 命令][8],只列出你的 home 文件夹中今天的文件,其中: - -- `-a` - 列出所有文件,包括隐藏文件 -- `-l` - 启用长列表格式 -- `--time-style = FORMAT` - 显示指定 FORMAT 的时间 -- `+%D` - 以 %m/%d/%y (月/日/年)格式显示或使用日期 +1、 使用 [ls 命令][8],只列出你的 home 文件夹中今天的文件。 ``` # ls -al --time-style=+%D | grep 'date +%D' ``` + +其中: + +- `-a` - 列出所有文件,包括隐藏文件 +- `-l` - 启用长列表格式 +- `--time-style=FORMAT` - 显示指定 FORMAT 的时间 +- `+%D` - 以 `%m/%d/%y` (月/日/年)格式显示或使用日期 + [ ![Find Recent Files in Linux](http://www.tecmint.com/wp-content/uploads/2016/12/Find-Recent-Files-in-Linux.png) ][9] *在Linux中找出最近的文件* - 此外,你使用可以 `-X` 标志来[按字母顺序对结果排序][10]: ``` @@ -38,15 +40,15 @@ Linux 用户在命令行上遇到的常见问题之一是[定位具有特定名 # ls -alS --time-style=+%D | grep 'date +%D' ``` -2. 另外,使用 [find 命令][11]会更灵活,并且提供比 ls 更多的选项,可以实现相同的目的。 +2、 另外,使用 [find 命令][11]会更灵活,并且提供比 `ls` 更多的选项,可以实现相同的目的。 --  `-maxdepth` 级别用于指定搜索操作的起点(在这个情况下为当前目录)下的搜索层级(子目录层级数)。 --  `-newerXY`,用于寻找时间戳 X 比参照文件的时间戳 Y 更新的文件。 X 和 Y 表示以下任何字母: -     - a - 参照文件的访问时间 -     - B - 参照文件的创建时间 -     - c - 参照文件的 inode 状态改变时间 -     - m - 参照文件的修改时间 -     - t - 直接指定一个绝对时间 +-  `-maxdepth` 级别用于指定在搜索操作的起点下(在这个情况下为当前目录)的搜索层级(子目录层级数)。 +-  `-newerXY`,用于所寻找的文件的时间戳 `X` 比参照文件的时间戳 `Y` 更新一些的文件。 `X` 和 `Y` 表示以下任何字母: +     - `a` - 参照文件的访问时间 +     - `B` - 参照文件的创建时间 +     - `c` - 参照文件的 inode 状态改变时间 +     - `m` - 参照文件的修改时间 +     - `t` - 直接指定一个绝对时间 下面的命令意思是只找出 2016-12-06 这一天修改的文件: @@ -82,7 +84,7 @@ find: I cannot figure out how to interpret '12-06-2016' as a date or time 你可以在我们的下面一系列文章中获得 `ls `和 `find` 命令的更多使用信息。 - [用 15 例子的掌握 Linux ‘ls’ 命令][1] -- [对 Linux 用户有用的 7 个奇怪的技巧][2] +- [对 Linux 用户有用的 7 个奇特技巧][2] - [用 35 个例子掌握 Linux ‘find’ 命令][3] - [在 Linux 中使用扩展查找多个文件名的方法][4] From 7836c942be2e7960713677cdb2f71e0ee11f2574 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 5 Jan 2017 22:01:11 +0800 Subject: [PATCH 0021/1082] PUB:20161126 Building Vim from source @zky001 --- .../20161126 Building Vim from source.md | 120 +++++++++++++++++ .../tech/20161126 Building Vim from source.md | 123 ------------------ 2 files changed, 120 insertions(+), 123 deletions(-) create mode 100644 published/20161126 Building Vim from source.md delete mode 100644 translated/tech/20161126 Building Vim from source.md diff --git a/published/20161126 Building Vim from source.md b/published/20161126 Building Vim from source.md new file mode 100644 index 0000000000..cbd91bb51d --- /dev/null +++ b/published/20161126 Building Vim from source.md @@ -0,0 +1,120 @@ +从源代码编译 Vim 8.0 +======== + +从源代码编译 Vim 实际上并不那么困难。下面是你所要做的: + +1、首先,安装包括 Git 在内的所有必备的库。对于一个 Debian 类的 Linux 发行版,例如 Ubuntu,命令如下: + +``` +sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \ + libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \ + libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev \ + python3-dev ruby-dev lua5.1 lua5.1-dev libperl-dev git +``` + +在 Ubuntu 16.04 上,lua 开发包的名称是 `liblua5.1-dev` 而非 `lua5.1-dev`。 + +如果你知道你将使用哪种语言,可随意删去你不需要的包。例如:Python2 `python-dev` 或者是 Ruby `ruby-dev`。这一原则适用于本文的大部分内容。 + +对于 Fedora 20,将是以下命令: + +``` +sudo yum install -y ruby ruby-devel lua lua-devel luajit \ + luajit-devel ctags git python python-devel \ + python3 python3-devel tcl-devel \ + perl perl-devel perl-ExtUtils-ParseXS \ + perl-ExtUtils-XSpp perl-ExtUtils-CBuilder \ + perl-ExtUtils-Embed +``` + +在 Fedora 20 上需要这一步来纠正安装 XSubPP 时出现的问题: + +``` +# 从 /usr/bin 到 perl 目录做个 xsubpp (perl) 的符号链接 +sudo ln -s /usr/bin/xsubpp /usr/share/perl5/ExtUtils/xsubpp +``` + +2、 如果你已经安装了 vim,删掉它。 + +``` +sudo apt-get remove vim vim-runtime gvim +``` + +如果是 Ubuntu 12.04.2,你或许也需要同时删除下面这些软件包: + +``` +sudo apt-get remove vim-tiny vim-common vim-gui-common vim-nox +``` + +3、 一旦上述内容都被安装好之后,获取 vim 源代码很容易。 + +注意:如果你使用 python,你的配置目录或许有一个特定的机器名 (例如 `config-3.5m-x86_64-linux-gnu`)。检查 `/usr/lib/python[2/3/3.5]` 目录来找到你的 python 配置目录,据此更改 `python-config-dir` 和/或 `python3-config-dir `的参数。 + +添加/删除下面的编译参数以适合您的设置。例如,如果您不打算写任何 Lua 脚本,您可以删去 `enable-luainterp`。 + +同时,如果你使用的不是 vim 8.0,请确认下面 `VIMRUNTIMEDIR` 参数设置正确(例如,如果使用 vim 8.0a, 就用 `/usr/share/vim/vim80a`)。记住,一些 vim 安装是直接安装在 `/usr/share/vim` 下的;调整好参数以适应你的系统: + +``` +cd ~ +git clone https://github.com/vim/vim.git +cd vim +./configure --with-features=huge \ + --enable-multibyte \ + --enable-rubyinterp=yes \ + --enable-pythoninterp=yes \ + --with-python-config-dir=/usr/lib/python2.7/config \ + --enable-python3interp=yes \ + --with-python3-config-dir=/usr/lib/python3.5/config \ + --enable-perlinterp=yes \ + --enable-luainterp=yes \ + --enable-gui=gtk2 --enable-cscope --prefix=/usr +make VIMRUNTIMEDIR=/usr/share/vim/vim80 +``` + +在 Ubuntu 16.04 上,由于同时开启了 Python2 和 Python3,Python 支持将不工作。 阅读 [chirinosky 的回答](http://stackoverflow.com/questions/23023783/vim-compiled-with-python-support-but-cant-see-sys-version) 以获取变通的处理方法。 + +如果你想将来轻松卸载 vim,可以使用 `checkinstall` 来安装 。 + +``` +sudo apt-get install checkinstall +cd ~/vim +sudo checkinstall +``` + +否则,可以使用 `make` 来安装。 + +``` +cd ~/vim +sudo make install +``` + +要让 vim 成为你默认的编辑器,请使用 `update-alternatives`。 + +``` +sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 1 +sudo update-alternatives --set editor /usr/bin/vim +sudo update-alternatives --install /usr/bin/vi vi /usr/bin/vim 1 +sudo update-alternatives --set vi /usr/bin/vim +``` + +4、 再检查下,通过查看 `vim --version` 输出来确认确实在运行新的 Vim 应用程序版本。 + +**如果你的 gvim 不工作(在 ubuntu 12.04.1 LTS 上),试着把 `--enable-gui=gtk2` 参数变为 `--enable-gui=gnome2`。** + +如果你遇到问题,仔细检查在步骤 3 开始提到的,使用正确的 Python 配置目录配置 `configure`。 + +这些 `configure` 和 `make` 命令假设你是一个 Debian 发行版,Vim 的运行库文件目录放在 `/usr/share/vim/vim80/`,这不是 vim 的默认路径。 在 `configure` 命令中的 `--prefix=/usr` 也是如此。这些参数或许对一个不是基于 Debian 的 Linux 发行版来说是有所不同的,在这种情况下,试着移除 `configure` 命令中的 `--prefix` 变量和 `make` 命令中的 `VIMRUNTIMEDIR` (换句话说,使用这些参数的默认值)。 + +如果你遇到麻烦, 这里是一些[其它编译 Vim 的有用的信息](http://vim.wikia.com/wiki/Building_Vim)。 + +-------------------------------------------------------------------------------- + +via: https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source + +作者:[Val Markovic][a] +译者:[zky001](https://github.com/zky001) +校对:[jasminepeng](https://github.com/jasminepeng) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://github.com/Valloric diff --git a/translated/tech/20161126 Building Vim from source.md b/translated/tech/20161126 Building Vim from source.md deleted file mode 100644 index 91210355cd..0000000000 --- a/translated/tech/20161126 Building Vim from source.md +++ /dev/null @@ -1,123 +0,0 @@ - -从源代码编译 Vim 实际上并不那么困难。下面是你所要做的: - -1.首先,安装包括 Git 在内的所有必备的库。对于一个 Debian Linux 发行版,例如 Ubuntu,命令如下: - - ``` - sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \ - libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \ - libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev \ - python3-dev ruby-dev lua5.1 lua5.1-dev libperl-dev git - ``` - -   在 Ubuntu 16.04 上, lua 开发包的名称是 `liblua5.1-dev` 而非 `lua5.1-dev`。 - -   (如果你知道你将使用哪种语言,可随意删去你不需要的包。例如:Python2 `python-dev` 或者是 Ruby `ruby-dev`。这一原则适用于本文的大部分内容。) - -   对于 Fedora 20, 将是以下命令: - - ``` - sudo yum install -y ruby ruby-devel lua lua-devel luajit \ - luajit-devel ctags git python python-devel \ - python3 python3-devel tcl-devel \ - perl perl-devel perl-ExtUtils-ParseXS \ - perl-ExtUtils-XSpp perl-ExtUtils-CBuilder \ - perl-ExtUtils-Embed - ``` - - 需要这一步来纠正 Fedora 20 上安装 XSubPP 时出现的问题: - - ``` - # symlink xsubpp (perl) from /usr/bin to the perl dir - sudo ln -s /usr/bin/xsubpp /usr/share/perl5/ExtUtils/xsubpp - ``` - -2. 如果你已经安装了 vim,删掉它。 - - ``` - sudo apt-get remove vim vim-runtime gvim - ``` - -    如果是 Ubuntu 12.04.2,你或许也需要同时删除下面这些软件包: - - ``` - sudo apt-get remove vim-tiny vim-common vim-gui-common vim-nox - ``` - -3. 一旦上述内容被安装好之后,获取 vim 源代码很容易。 - - 注意:如果你使用 python,你的配置目录或许有一个特定的机器名 (例如 `config-3.5m-x86_64-linux-gnu`)。检查 /usr/lib/python[2/3/3.5] 目录来找到你的 python 配置目录,据此更改 `python-config-dir` 和/或 `python3-config-dir `的参数。 - - 添加/删除下面的的标记符以适合您的设置。例如,如果您不打算写任何 Lua,您可以删去 `enable-luainterp`。 - - 同时,如果你使用的不是 vim8.0,请确认下面 VIMRUNTIMEDIR 参数设置正确(例如,如果使用 vim 8.0a, 就用 /usr/share/vim/vim80a)。记住,一些 vim 安装是直接安装在 /usr/share/vim 下的;调整好参数以适应你的系统: - - - ``` - cd ~ - git clone https://github.com/vim/vim.git - cd vim - ./configure --with-features=huge \ - --enable-multibyte \ - --enable-rubyinterp=yes \ - --enable-pythoninterp=yes \ - --with-python-config-dir=/usr/lib/python2.7/config \ - --enable-python3interp=yes \ - --with-python3-config-dir=/usr/lib/python3.5/config \ - --enable-perlinterp=yes \ - --enable-luainterp=yes \ - --enable-gui=gtk2 --enable-cscope --prefix=/usr - make VIMRUNTIMEDIR=/usr/share/vim/vim80 - ``` - -   在 Ubuntu 16.04 上,由于同时开启了 Python2 和 Python3,Python 支持将不工作。 阅读 [chirinosky 的回答](http://stackoverflow.com/questions/23023783/vim-compiled-with-python-support-but-cant-see-sys-version) 以获取变通的处理方法。 - - -   如果要轻松卸载 vim,可以使用 `checkinstall` 。 - - ``` - sudo apt-get install checkinstall - cd ~/vim - sudo checkinstall - ``` - -   或者,可以使用 `make` 来安装。 - - ``` - cd ~/vim - sudo make install - ``` - -   要让 vim 成为你默认的编辑器,请使用 `update-alternatives`。 - -``` - sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 1 - sudo update-alternatives --set editor /usr/bin/vim - sudo update-alternatives --install /usr/bin/vi vi /usr/bin/vim 1 - sudo update-alternatives --set vi /usr/bin/vim - ``` - -4. 再检查下,通过查看 `vim --version` 输出来确认确实在运行新的 Vim 应用程序版本。 - -    **如果你的 gvim 不工作 (在 ubuntu 12.04.1 LTS 上),试着把 `--enable-gui=gtk2` 参数变为 `--enable-gui=gnome2`。** - - 如果你遇到问题,仔细检查在步骤 3 开始提到的,使用正确的 Python 配置目录配置 `configure`。 - - 这些 `configure` 和 `make` 命令假设你是一个 Debian 发行版,Vim 的运行库文件目录放在 `/usr/share/vim/vim80/`,这不是 vim 的默认路径。 在 `configure` 命令中的 `--prefix=/usr` 也是如此。这些参数或许对一个不是基于 Debian 的 Linux 发行版来说是有所不同的,在这种情况下,试着移除 `configure` 命令中的 `--prefix` 变量和 `make` 命令中的 `VIMRUNTIMEDIR` (换句话说,使用这些参数的默认值)。 - - -   如果你遇到麻烦, 这里是一些[其它编译 Vim 的有用的信息](http://vim.wikia.com/wiki/Building_Vim)。 -     --------------------------------------------------------------------------------- - -via: https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source - -作者:[Val Markovic][a] - -译者:[zky001](https://github.com/zky001) - -校对:[jasminepeng](https://github.com/jasminepeng) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://github.com/Valloric From aaff7b4e5e73935da46b1f04693f54868be14458 Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Fri, 6 Jan 2017 09:32:02 +0800 Subject: [PATCH 0022/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校对中 --- translated/tech/20160929 Getting Started with HTTP2 - Part 2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20160929 Getting Started with HTTP2 - Part 2.md b/translated/tech/20160929 Getting Started with HTTP2 - Part 2.md index b57c67fd43..6479faed81 100644 --- a/translated/tech/20160929 Getting Started with HTTP2 - Part 2.md +++ b/translated/tech/20160929 Getting Started with HTTP2 - Part 2.md @@ -169,7 +169,7 @@ via: https://www.viget.com/articles/getting-started-with-http-2-part-2 作者:[Ben][a] 译者:[GitFuture](https://github.com/GitFuture) -校对:[校对者ID](https://github.com/校对者ID) +校对:[jasminepeng](https://github.com/jasminepeng) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译,[Linux中国](https://linux.cn/) 荣誉推出 From 6b4a0bc60736a98eb941fd3c6eb7d02ff540bd7e Mon Sep 17 00:00:00 2001 From: jasminepeng Date: Fri, 6 Jan 2017 11:31:39 +0800 Subject: [PATCH 0023/1082] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 校对中 --- ...929 Getting Started with HTTP2 - Part 2.md | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/translated/tech/20160929 Getting Started with HTTP2 - Part 2.md b/translated/tech/20160929 Getting Started with HTTP2 - Part 2.md index 6479faed81..c3b705e176 100644 --- a/translated/tech/20160929 Getting Started with HTTP2 - Part 2.md +++ b/translated/tech/20160929 Getting Started with HTTP2 - Part 2.md @@ -4,13 +4,13 @@ 首先制定一个坚定的 HTTP/2 前端开发目标。 -如果你对 HTTP/2 有所了解,那你可能用过它,或者至少想过怎样能把它融入你的项目中。尽管有很多关于它如何改变你的工作流程,提高网络的速度和效率等方面的猜想,但最好的使用方式还没有定下来。这里我想讲的就是我在之前的项目中所发现的 HTTP /2 的优点。 - -如果你还不确定什么是 HTTP/2,或者为什么它能帮助你工作,[看看我介绍背景方面的第一篇文章][4]。 +如果你对 HTTP/2 有所了解,那你可能用过它,或者至少想过怎样能把它融入你的项目中。尽管有很多关于它如何改变工作流程,提高 Web 速度和效率等方面的猜想,但最好的使用方式还没有定下来。这里我想讲的就是我在之前的项目中所发现的 HTTP/2 的最佳实践。 -记住:开始之前,我要告诉你,尽管你的浏览器可能支持 HTTP/2,但你的服务器可能不支持。检查你的主机服务,看看他们是否提供 HTTP/2 的支持。否则你可能玩坏你的服务器。这篇文章并不会讲怎么做,但你可以查看 [http2 github][5] 页面,找一找这方面的工具。  +如果你还不确定什么是 HTTP/2,或者为什么它能改进你的工作,可以先看看我[介绍背景方面的第一篇文章][4]。 -### 🙏 [Rubs Hands Together] +记住:开始之前,我要告诉你,尽管你的浏览器可能支持 HTTP/2,但你的服务器可能不支持。检查你的主机托管服务,看看他们是否提供 HTTP/2 的支持。否则你可能建立你自己的服务器。这篇文章并不会涉及这方面该如何做,但你可以查看 [http2 github][5] 页面,找一找这方面的工具。  + +### 🙏 [准备工作] 首先组织好你的文件。看一看下面的文件树结构作为组织样式表的起点: @@ -28,9 +28,9 @@ 这会把你的样式分到三个目录下面:Setup,Global 和 Componenets。接下来我会说明这些目录对你的项目有什么用。  -### Setting Up 目录 +### Setup 目录 -Setup 目录保存所有的变量,函数,混合以及其它文件需要编译的任意定义。要想让这个它物尽其用,把这个目录下所有内容导入到 `setup.scss`文件中是个很不错的主意,这样这个文件就会像下面所展示的一样: +Setup 目录保存所有的变量,函数,mixins 以及其它文件正常编译需要的任意定义。要想让这个目录物尽其用,把这个目录下所有内容导入到 `setup.scss` 文件中是个很不错的主意,这样这个文件就会像下面所展示的一样: ``` `/* setup.scss */ @@ -51,9 +51,9 @@ Setup 目录保存所有的变量,函数,混合以及其它 ### Global 目录 -接下来的目录,Global,应该包含可在当前站点的多个部分或者每一个页面中重复使用的容器。像按钮、文本、主要样式以及你的浏览器默认设置应该放在这里。我不建议把顶部或底部样式放在这儿,因为某些项目中没有顶部或者不同页面顶部不同。而且,底部永远是页面的最后一个元素,所以在用户加载完当前站点的其它东西前,不必过分优先考虑加载底部样式。 +接下来的目录,Global,应该包含可在当前站点的多个部分或者每一个页面中重复使用的组件。像按钮、文本、主要样式以及你的浏览器默认设置应该放在这里。我不建议把顶部或底部样式放在这儿,因为某些项目中没有顶部,或者不同页面顶部不同。而且,底部永远是页面的最后一个元素,所以在用户加载完当前站点的其它东西前,不必过分优先考虑加载底部样式。 -记住,如果没有那些定义在 Setup 目录下的东西,你的全局样式就可能没有作用,你的全局文件看起来应该像这样: +记住,如果没有那些定义在 Setup 目录下的东西,你的 Global 样式就可能没有作用,你的 Global 文件看起来应该像这样: ``` `/* global.scss */ @@ -72,13 +72,13 @@ Setup 目录保存所有的变量,函数,混合以及其它 注意,首先要做的就是导入 Setup 样式。这样的话,这个样式里定义的所有文件都能够获得引用。 -由于全局样式需要存在于每个页面中,我们可以用默认的方法加载它们,在 `` 标签内用一个 `` 标签。你所看到的将是一个十分小巧的 css 文件,或者说理论上小巧的,这取决于你需要多少全局样式。 +由于 Global 样式需要存在于每个页面中,我们可以用典型的方式加载它们,在 `` 标签内用一个 `` 标签。你所看到的将是一个十分小巧的 css 文件,或者说理论上小巧的,这取决于你需要多少全局样式。 -### 最后,你的容器 +### 最后,你的组件 -注意我没有在上述文件树中的容器目录里包含索引文件。这是 HTTP/2 所带来的效用。直到现在,我们已经按照标准步骤构建了一个典型的站点,包含相当高效的结构,选择仅仅全局化那些最重要的样式。容器表现的就像他们有单独的索引文件。 +注意,我没有在上述文件树中的 Components 目录里包含索引文件。这是 HTTP/2 所带来的效用。直到现在,我们已经按照标准步骤构建了一个典型的站点,包含相当简单的结构fairly lean infrastructure,选择仅仅全局化那些最重要的样式。组件充当他们自己的索引文件。 -大多数开发者有独特的组织容器的方式,因此我并不想影响你的策略。但是,你所有的容器看起来应该像这样: +大多数开发者有独特的组织组件的方式,因此我并不想影响你的策略。但是,你所有的组件看起来应该像这样: ``` `/* header.scss */ @@ -93,13 +93,14 @@ header { ... etc` ``` -同样的,你要把 Setup 样式包含进来,确保所有东西在编译时都有定义。你不必链接、压缩 或者改变什么文件,除了编译他们和可能要把他们放到 /assets 目录,很容易就找出个模版。 +同样的,你要把 Setup 样式包含进来,确保所有东西在编译时都有定义。除了编译这些文件,以及可能要把他们放到 /assets 目录,以便很容易找到模版,对这些文件你不必链接concatenate压缩minify或者改变什么。 -现在样式表已经差不多了,构建页面应该很简单。 +现在样式表已经差不多了,构建站点应该很简单。 -### 构建容器 -或许对于标准语言你有自己的选择,这取决于你的项目,有可能是 Twig, Rails, Jade 或者 Handlebars。我认为考虑容器最好的方式是它是否有自己的模版文件,它该有个与名字相应的样式。这样你的项目中,模版和样式的比例就会是个不错的 1:1 的比例,而且你知道哪个文件有哪些东西,哪里有哪个文件,因为它们的命名是有规律的。 +### 构建组件 + +或许对于模板语言你有自己的选择,这取决于你的项目,有可能是 Twig, Rails, Jade 或者 Handlebars。我认为考虑组件最好的方式是它是否有自己的模版文件,它该有个与名字相应的样式。这样你的项目中,模版和样式的比例就会是个不错的 1:1 的比例,而且你知道哪个文件有哪些东西,哪里有哪个文件,因为它们的命名是有规律的。 现在它正步入正轨,用好 HTTP/2 的多种功能十分简单,让我们做一个模版: @@ -114,11 +115,12 @@ header { ... etc` ``` -非常好!你就能在模版里用更简单的方式链接资源,但这也显示出你所要做的仅是在开始构建时,在模版文件中链接一个小小的头部样式。这将允许你的站点仅仅加载特定资源到任意给定页面的容器中,而且,能够设定页面从头到脚的优先级。 +非常好!在模版里你可能有更简单的方式链接资源,但这里显示,你所要做的仅是在开始构建时,在模版文件中链接一个小小的头部样式。这将允许你的站点仅仅加载特定资源到任意给定页面的组件中,而且,能够设定页面从头到脚的组件的优先级。 + ### 结合在一起 -现在所有的容器都有结构,浏览器将会渲染类似以下的内容: +现在所有的组件都有结构,浏览器将会类似以下来渲染它们: ``` ` @@ -157,8 +159,9 @@ header { ` ``` -这是一个高级方法,但你的项目中可能有调整的更好的容器,你可以用 `