2019年7月

在 Linux 上通过命令行安装一个包程序是一件简单的事。在一行命令中组合使用多个命令能让你更加简单地完成任务。

安全更新也同样如此。

在这个教程里面,我们会向你展示如何查看可用的安全更新,以及如何在 Ubuntu、LinuxMint 等等这些基于 Debian 的系统中安装它们。

有三种方法可以完成这件事,下面会详细地描述这三种方法。

作为一个 Linux 管理员,你应该让你的系统保持为最新,这会让你的系统更安全,保护你的系统抵抗意想不到的攻击。

如果你因为一些应用的依赖问题不能解决,导致不能给所有的系统进行全部更新。那至少,你应该打上安全补丁来让你的系统 100% 符合要求。

方法一:如何检查 Debian/Ubuntu 中是否有任何可用的安全更新?

在进行补丁安装之前,检查可用安全更新列表始终是一个好习惯。它会为你提供将在你的系统中进行更新的软件包的列表。

默认情况下,你的系统上应该是已经安装了 unattended-upgrades 包的。但是如果你的系统没有装这个包,那么请使用下面的命令来安装它。

使用 APT-GET 命令 或者 APT 命令 来安装 unattended-upgrades 包。

$ sudo apt-get install unattended-upgrades
或
$ sudo apt install unattended-upgrades

什么是试运行? 大多数的 Linux 命令都有一个试运行选项,它会给出实际的输出但不会下载或安装任何东西。

为此,你需要在 unattended-upgrades 命令中添加 --dry-run 选项。

$ sudo unattended-upgrade --dry-run -d

Initial blacklisted packages:
Initial whitelisted packages:
Starting unattended upgrades script
Allowed origins are: o=Ubuntu,a=bionic, o=Ubuntu,a=bionic-security, o=UbuntuESM,a=bionic
Using (^linux-image-[0-9]+\.[0-9\.]+-.*|^linux-headers-[0-9]+\.[0-9\.]+-.*|^linux-image-extra-[0-9]+\.[0-9\.]+-.*|^linux-modules-[0-9]+\.[0-9\.]+-.*|^linux-modules-extra-[0-9]+\.[0-9\.]+-.*|^linux-signed-image-[0-9]+\.[0-9\.]+-.*|^kfreebsd-image-[0-9]+\.[0-9\.]+-.*|^kfreebsd-headers-[0-9]+\.[0-9\.]+-.*|^gnumach-image-[0-9]+\.[0-9\.]+-.*|^.*-modules-[0-9]+\.[0-9\.]+-.*|^.*-kernel-[0-9]+\.[0-9\.]+-.*|^linux-backports-modules-.*-[0-9]+\.[0-9\.]+-.*|^linux-modules-.*-[0-9]+\.[0-9\.]+-.*|^linux-tools-[0-9]+\.[0-9\.]+-.*|^linux-cloud-tools-[0-9]+\.[0-9\.]+-.*) regexp to find kernel packages
Using (^linux-image-4\.15\.0\-51\-generic$|^linux-headers-4\.15\.0\-51\-generic$|^linux-image-extra-4\.15\.0\-51\-generic$|^linux-modules-4\.15\.0\-51\-generic$|^linux-modules-extra-4\.15\.0\-51\-generic$|^linux-signed-image-4\.15\.0\-51\-generic$|^kfreebsd-image-4\.15\.0\-51\-generic$|^kfreebsd-headers-4\.15\.0\-51\-generic$|^gnumach-image-4\.15\.0\-51\-generic$|^.*-modules-4\.15\.0\-51\-generic$|^.*-kernel-4\.15\.0\-51\-generic$|^linux-backports-modules-.*-4\.15\.0\-51\-generic$|^linux-modules-.*-4\.15\.0\-51\-generic$|^linux-tools-4\.15\.0\-51\-generic$|^linux-cloud-tools-4\.15\.0\-51\-generic$) regexp to find running kernel packages
Checking: apt ([])
adjusting candidate version: apt=1.6.6ubuntu0.1
Checking: apt-utils ([])
adjusting candidate version: apt-utils=1.6.6ubuntu0.1
Checking: bash ([])
.
.
Checking: xxd ([, ])
pkgs that look like they should be upgraded: binutils
binutils-common
binutils-x86-64-linux-gnu
cpp
cpp-7
dbus
dbus-user-session
dbus-x11
firefox
firefox-locale-en
g++
g++-7
gcc
gcc-7
gcc-7-base
gcc-8-base
libasan4
libatomic1
libbinutils
libcc1-0
libcilkrts5
libdbus-1-3
libdbus-1-dev
libgcc-7-dev
libgcc1
libgfortran4
libgomp1
libitm1
liblsan0
libmpx2
libquadmath0
libstdc++-7-dev
libstdc++6
libtsan0
libubsan0
vim-common
vim-tiny
xxd

如果在终端里,上面的命令输出说 “No packages found that can be upgraded unattended and no pending auto-removals”,这意味着你的系统已经是最新的了。

如何在 Debian/Ubuntu 中安装可用的安全更新?

如果你在上面的命令输出中获得了任意的软件包更新,就运行下面的命令来安装它们。

$ sudo unattended-upgrade -d

除此之外,你也可以使用 apt-get 命令来进行安装。但是这个方法有点棘手,我会建议用户用第一个选项。

方法二:如何使用 apt-get 命令在 Debian/Ubuntu 中检查是否有可用的安全更新?

在你的 Debian/Ubuntu 系统中运行下面的命令来查看可用安全更新的列表。

$ sudo apt-get -s dist-upgrade | grep "^Inst" | grep -i securi

Inst libquadmath0 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst libitm1 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst gcc-8-base [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libmpx2:amd64 libgcc1:amd64 libtsan0:amd64 liblsan0:amd64 libgomp1:amd64 libatomic1:amd64 libcc1-0:amd64 libstdc++6:amd64 ]
Inst libgcc1 [1:8.2.0-1ubuntu2~18.04] (1:8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libmpx2:amd64 libtsan0:amd64 liblsan0:amd64 libgomp1:amd64 libatomic1:amd64 libcc1-0:amd64 libstdc++6:amd64 ]
Inst libmpx2 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libtsan0:amd64 liblsan0:amd64 libgomp1:amd64 libatomic1:amd64 libcc1-0:amd64 libstdc++6:amd64 ]
Inst liblsan0 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libtsan0:amd64 libgomp1:amd64 libatomic1:amd64 libcc1-0:amd64 libstdc++6:amd64 ]
Inst libtsan0 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libgomp1:amd64 libatomic1:amd64 libcc1-0:amd64 libstdc++6:amd64 ]
Inst libcc1-0 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libgomp1:amd64 libatomic1:amd64 libstdc++6:amd64 ]
Inst libatomic1 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libgomp1:amd64 libstdc++6:amd64 ]
Inst libgomp1 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libstdc++6:amd64 ]
Inst libstdc++6 [8.2.0-1ubuntu2~18.04] (8.3.0-6ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst libdbus-1-dev [1.12.2-1ubuntu1] (1.12.2-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst dbus-user-session [1.12.2-1ubuntu1] (1.12.2-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst dbus-x11 [1.12.2-1ubuntu1] (1.12.2-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst dbus [1.12.2-1ubuntu1] (1.12.2-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst libdbus-1-3 [1.12.2-1ubuntu1] (1.12.2-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst xxd [2:8.0.1453-1ubuntu1] (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst vim-tiny [2:8.0.1453-1ubuntu1] (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst vim-common [2:8.0.1453-1ubuntu1] (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [all])
Inst binutils-x86-64-linux-gnu [2.30-21ubuntu1~18.04] (2.30-21ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [binutils:amd64 ]
Inst binutils-common [2.30-21ubuntu1~18.04] (2.30-21ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [binutils:amd64 libbinutils:amd64 ]
Inst binutils [2.30-21ubuntu1~18.04] (2.30-21ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) [libbinutils:amd64 ]
Inst libbinutils [2.30-21ubuntu1~18.04] (2.30-21ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst libasan4 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst libubsan0 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst libcilkrts5 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst g++-7 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst gcc-7 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst libstdc++-7-dev [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst libgcc-7-dev [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst libgfortran4 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst cpp-7 [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64]) []
Inst gcc-7-base [7.3.0-27ubuntu1~18.04] (7.4.0-1ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst cpp [4:7.3.0-3ubuntu2.1] (4:7.4.0-1ubuntu2.3 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst firefox [67.0.1+build1-0ubuntu0.18.04.1] (67.0.2+build2-0ubuntu0.18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst firefox-locale-en [67.0.1+build1-0ubuntu0.18.04.1] (67.0.2+build2-0ubuntu0.18.04.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst gcc [4:7.3.0-3ubuntu2.1] (4:7.4.0-1ubuntu2.3 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst g++ [4:7.3.0-3ubuntu2.1] (4:7.4.0-1ubuntu2.3 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])

如何使用 apt-get 命令在 Debian/Ubuntu 系统中安装可用的安全更新?

如果你在上面命令的输出中发现任何的软件包更新。就运行下面的命令来安装它们。

$ sudo apt-get -s dist-upgrade | grep "^Inst" | grep -i securi | awk -F " " {'print $2'} | xargs apt-get install

除此之外,也可以使用 apt 命令来完成。但是这个方法有点棘手,我会建议用户用第一个方式。

方法三:如何使用 apt 命令在 Debian/Ubuntu 系统中检查是否有可用的安全更新?

在 Debian/Ubuntu 系统中运行下面的命令来查看可用安全更新的列表。

$ sudo apt list --upgradable | grep -e "-security"

binutils/bionic-updates,bionic-security 2.30-21ubuntu1~18.04.2 amd64 [upgradable from: 2.30-21ubuntu1~18.04]
binutils-common/bionic-updates,bionic-security 2.30-21ubuntu1~18.04.2 amd64 [upgradable from: 2.30-21ubuntu1~18.04]
binutils-x86-64-linux-gnu/bionic-updates,bionic-security 2.30-21ubuntu1~18.04.2 amd64 [upgradable from: 2.30-21ubuntu1~18.04]
cpp/bionic-updates,bionic-security 4:7.4.0-1ubuntu2.3 amd64 [upgradable from: 4:7.3.0-3ubuntu2.1]
cpp-7/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04]
dbus/bionic-updates,bionic-security 1.12.2-1ubuntu1.1 amd64 [upgradable from: 1.12.2-1ubuntu1]
dbus-user-session/bionic-updates,bionic-security 1.12.2-1ubuntu1.1 amd64 [upgradable from: 1.12.2-1ubuntu1]
dbus-x11/bionic-updates,bionic-security 1.12.2-1ubuntu1.1 amd64 [upgradable from: 1.12.2-1ubuntu1]
firefox/bionic-updates,bionic-security 67.0.2+build2-0ubuntu0.18.04.1 amd64 [upgradable from: 67.0.1+build1-0ubuntu0.18.04.1]
firefox-locale-en/bionic-updates,bionic-security 67.0.2+build2-0ubuntu0.18.04.1 amd64 [upgradable from: 67.0.1+build1-0ubuntu0.18.04.1]
g++/bionic-updates,bionic-security 4:7.4.0-1ubuntu2.3 amd64 [upgradable from: 4:7.3.0-3ubuntu2.1]
g++-7/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04]
gcc/bionic-updates,bionic-security 4:7.4.0-1ubuntu2.3 amd64 [upgradable from: 4:7.3.0-3ubuntu2.1]
gcc-7/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04]
gcc-7-base/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04]
gcc-8-base/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04]
libasan4/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04]
libatomic1/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04]
libbinutils/bionic-updates,bionic-security 2.30-21ubuntu1~18.04.2 amd64 [upgradable from: 2.30-21ubuntu1~18.04]
libcc1-0/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04]
libcilkrts5/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04]
libdbus-1-3/bionic-updates,bionic-security 1.12.2-1ubuntu1.1 amd64 [upgradable from: 1.12.2-1ubuntu1]
libdbus-1-dev/bionic-updates,bionic-security 1.12.2-1ubuntu1.1 amd64 [upgradable from: 1.12.2-1ubuntu1]
libgcc-7-dev/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04]
libgcc1/bionic-updates,bionic-security 1:8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 1:8.2.0-1ubuntu2~18.04]
libgfortran4/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04]
libgomp1/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04]
libitm1/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04]
liblsan0/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04]
libmpx2/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04]
libquadmath0/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04]
libstdc++-7-dev/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04]
libstdc++6/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04]
libtsan0/bionic-updates,bionic-security 8.3.0-6ubuntu1~18.04.1 amd64 [upgradable from: 8.2.0-1ubuntu2~18.04]
libubsan0/bionic-updates,bionic-security 7.4.0-1ubuntu1~18.04.1 amd64 [upgradable from: 7.3.0-27ubuntu1~18.04]
vim-common/bionic-updates,bionic-updates,bionic-security,bionic-security 2:8.0.1453-1ubuntu1.1 all [upgradable from: 2:8.0.1453-1ubuntu1]
vim-tiny/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.1 amd64 [upgradable from: 2:8.0.1453-1ubuntu1]
xxd/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.1 amd64 [upgradable from: 2:8.0.1453-1ubuntu1]

如何在 Debian/Ubuntu 系统中使用 apt 命令来安装可用的安全更新?

如果你在上面命令的输出中发现任何的软件包更新。就运行下面的命令来安装它们。

$ sudo apt list --upgradable | grep -e "-security" | awk -F "/" '{print $1}' | xargs apt install

同样,下面的文件也会告诉你更新包的总数。

$ sudo cat /var/lib/update-notifier/updates-available

190 packages can be updated.
39 updates are security updates.

via: https://www.2daygeek.com/manually-install-security-updates-ubuntu-debian/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:hopefully2333 校对:wxy

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

在国内的云服务市场当中,青云QingCloud 一直是一个积极活跃的身影,但是我却从来没有和他们直接接触过,而在上个月刚刚结束的 KubeCon 2019 上,我见到了江湖人称“四爷”的青云QingCloud 容器平台负责人周小四。自以为尚不算健谈的我,跟人聊起技术来,居然聊得非常投机。期间,我和四爷聊起了 KubeSphere 容器平台,也对青云QingCloud 的容器战略有了一些管中窥豹的了解。我想将这些谈话整理出来分享给大家,希望可以通过我的侧写让大家也认识一下这位“四爷”和他的团队打造的 KubeSphere。

谈话自然是从我所不了解的青云QingCloud 开始的。

天然的企业服务提供者

说起青云QingCloud,自然不能放过其背后的历史,这段与众不同的历史,造就了这家与众不同的云计算企业。

谈起云计算,大家会想起国内公有云市场占有率较高的一些互联网公司旗下的云服务商,这些公司的云计算业务最初大多是从内部的云计算技术能力转化出来的,将其在内部打造的云计算能力开放给公众,从而形成了我们所熟悉的多个云计算平台。

青云QingCloud 从一开始就走上了和绝大多数云计算创业企业不同的道路——自研云计算架构。

“与这些云计算公司不同,青云QingCloud 从 2012 年公司创立的那一刻开始,就是一个立足于为企业服务的云计算企业,其三位创始人均有多年在 IBM 工作的深厚背景,使得他们对于企业级用户的市场和用户的需求更加敏感,也能更加准确把握企业用户的需求和痛点。”四爷介绍说,“并且,青云QingCloud 的创始人均是资深的技术研发出身,对于技术方向的发展更加敏感,也正是如此,青云从一开始就走上了和绝大多数云计算创业企业不同的道路——自研云计算架构。”说到这里,四爷眼中洋溢着自信的眼神,作为一个同样从事了多年技术工作的老兵,我对这种技术驱动型的公司更加感兴趣了。

私有云成就下的青云

从 2012 年开始,青云QingCloud 便开始进行自研底层云计算架构的研究。自研架构所需要付出的技术成本,使得青云的公有云服务上线花费了一年半的时间,但是,付出总有回报,在自研架构上的投入,使得青云QingCloud更加灵活和富有创造力,可以更加专心地为企业提供更优质的服务。

而同时期一些使用 OpenStack 作为基础设施的云计算企业,却受制于社区的发展速度,不得不在底层基础设施的优化上花费大量的精力。说到这里,四爷表示,“这为青云争取到了宝贵的时间!”

到了 2014 年,青云QingCloud 已经取得了长足的发展。这个时候他们意识到,在当时的环境下只做公有云服务是“一条腿走路”,无法获得长时间的可持续发展,而私有云服务能够更好的发挥青云QingCloud 在企业服务的能力和经验。因此,青云开始正式进军私有云市场,并在次年年初,成功拿下中国银行、招商银行等的私有云业务。

随着青云QingCloud 的私有云业务的发展一路开疆拓土,他们逐渐建立起来成熟完善的公有云、私有云、托管云、混合云一体化的产品服务体系,后续不断得到越来越多客户的认可,我们耳熟能详的光大银行、泰康保险、中国太平、江苏交通控股、华润创业、本钢集团、国航、四川航空、好未来、VIPKID 等,都是青云的客户。

在云业务一片向好的环境下,容器时代正在悄悄的来临了。

容器时代来临,KubeSphere 应运而生

容器时代的到来,让各家云服务商都开始积极布局容器服务,而在青云QingCloud,容器服务的负责人便是我们今天谈话的主角周小四——圈内亲切的称其为“四爷”。

从 Docker 开始

在当时,开源社区内的主流容器方案,一种是一出现就迅速风靡技术世界的 Docker 技术,另一个则是同样源自 CGroup 技术的 LXC。那个时候,看起来 LXC 的目标更远大,但是在对这两种技术方向进行分析后,最终四爷选择了 Docker 的方案。

我们也曾经在容器技术初现萌芽时,对出现的各种容器技术做过跟踪,因此,我也好奇为什么四爷会在 Docker 技术初生时就押注 Docker,因为这不仅仅是社区爱好,这个决策肯定会影响到公司的技术方向和时间差优势。

四爷对此的解释说,“2013 年才提出的 Docker 虽然很年轻,但是作为一个新的容器化解决方案,它所提出的解决方案适合这个面向应用、快速迭代、微服务正在兴起的大趋势,符合并适合现行的软件开发模式发展,可以让技术把更多的精力放在如何构建一个更好的应用上。”而 LXC 则延续了重型虚拟机时代的思路,将更多的精力放在了如何更好的隔离宿主环境与容器内的环境上。这很重要,但是已经不再适合如今快节奏、快迭代的开发环境了,因此,他认为 Docker 一定会是最终的胜利者,决定选择 Docker 作为青云QingCloud 容器服务平台的底层设施。

虽然现在回过头看,Docker 容器技术在初期确实存在容器逃逸的安全问题,如今也有专注于提高隔离性的安全容器技术的出现,但是在当时,这种折中确实极大地激发了 DevOps 和相关生态的迅速发展。而正当其时,能敏锐地发现这一点,并果断下注,我认为这离不开一位技术领袖的远瞻。

在选择了容器技术方向之后,四爷的下一个挑战就来了。Docker 最初主要是一个容器引擎,其外围的生态尚不完善,尤其是对于企业大规模应用所需要的容器编排才刚刚开始获得发展。业界也推出几种不同的容器编排技术方案,这包括 Docker 推出的 Swarm、Google 推出的 Kubernetes,以及 Apache Mesos,那么作为面对企业提供服务的青云QingCloud,该如何选择呢?

押注 Kubernetes

现在看起来,当初四爷选择 Kubernetes 作为技术方向似乎是在技术人直觉之下做的选择。但是,这背后是经过了深思熟虑和足够的技术远见之下的选择。

四爷告诉我,他选择 Kubernetes 的主要原因有以下几点:

  1. Kubernetes 背后由 Google 支持:显然 Google 支持的 Kubernetes 会拥有更多的资源来发展,它也拥有更加强大的生命力。
  2. Kubernetes 是 Google 在内部基础设施的容器编排方面的经验升华:Kubernetes 的应用场景是容器编排,这种大规模容器的实践经验十分难得。而 Google 作为互联网领域的巨鳄,所拥有的经验和技术积累具有无可比拟的优势。相比之下,初创企业 Docker 公司在海量的可伸缩服务上的经验就稍显孱弱。而且 Docker 公司本身的开发力量显然有限,在容器技术日新月异的快节奏发展之下,仅仅是 Docker 引擎本身的开发和维护就已经有些不堪负荷,所以对他们在 Docker Swarm 上发展自然不如 Kubernetes 那么快。
  3. Kubernetes 的社区更加活跃:得益于 Google、Red Hat 等企业的开源社区基础,Kubernetes 从一开始就是整个社区目光的焦点,大量的开发者活跃在 Kubernetes 及其周边项目上,活跃的社区为企业培养了足够的储备人才,这一点是 Docker Swarm 和 Mesos 都无法比拟的。
  4. 容器时代已经与以虚机为基础的云计算时代有着本质的区别,以前人们关注的是功能、性能、安全等问题,创建一个虚机每个厂商可以用不同的 API 提供,用户要的是资源,不会太在意这些差异性,因此自研的云平台有存在的市场空间。但容器时代是面向应用的,用户更关注的是开放、标准等问题。简单来说,如果大家都用 Java 语言,你去采用一个只能使用汇编语言的平台,这个平台基本上很难有市场。容器编排系统一样,用 YAML 或 JSON 定义的声明式接口就是标准,大家害怕的就是选错标准。所以当大家都选择 Kubernetes 的时候,实际上选择的是标准。

经过权衡,四爷及其团队最终选择了 Kubernetes 作为青云QingCloud容器平台的编排工具。而随着对 Kubernetes 的不断的深入研究,更是让他相信,Kubernetes 会成为最终的胜利者。

他补充道:“Kubernetes 的一个主要关注是规范化,应用可以随意的在不同的基础设施间迁移,从而避免了供应商锁定。这会使得越来越多的人主动尝试使用 Kubernetes,此长彼消之下,Kubernetes 会成为最终的赢家。”

KubeSphere 的诞生

确定了 Kubernetes 方向后,四爷开始对各个 Kubernetes 产品进行了调研。通过不断试用、体验后,他敏锐的发现,现有市场上大多数厂商都没有认真做产品,要么是为了尽快抢占市场、在市场上发布尚不完善的产品,要么就是厂商的防御性产品。

“他们是以做项目的心态在做产品,没有精细化地打磨产品,更多的是功能的堆砌。”周小四解释到。

“就好像考试做题,一共十道题,每道题 10 分。他们可以做八道题,但是因为做得不好,每道题都只能得五分。而我们即使只做了 6 道题,但是每道题都是 10 分。最后的总分还是我们高,企业还是会选择我们。”四爷举了一个例子来说明“做项目”和“做产品”的不同。

在他看来,也正是这些企业以“做项目”的心态来做容器产品,才给了 KubeSphere 弯道超车的机会,以满分的心态,做出更好的产品。

从 2017 年 6 月开始,周小四便开始调研和思考如何设计 KubeSphere 的原型。2018 年 4 月,KubeSphere 项目正式立项,经过了三个月的苦干,终于在同年 6 月正式发布了 KubeSphere 的社区版,并邀请了部分用户进行内测。

精细化打磨的 KubeSphere 得到了用户的很多好评。而这一切并没有让 KubeSphere 团队止步,他们又进行了 5 个月的研发迭代,继而在 2018 年的 12 月发布了 KubeSphere 高级版,并进入了公测期。KubeSphere 团队吸收了在社区版上积累的经验,高级版将更多的精力放在企业用户的专业性、高可用性、易用性需求上。而就在前不久的 4 月发布的 KubeSphere 高级版 2.0 中,融合了更多的企业级特性。

四爷向我介绍说,KubeSphere 容器平台在企业增强特性上主要可总结为四点:

  • 极简:向导式图形化的 UI 全方位覆盖调度、管理、运维监控等功能,低学习成本高效使用。
  • 安全:基于微服务级别细粒度的多租户权限管理,完美实现资源隔离,保障数据安全性。
  • 运维友好:可视化、自动化的统一运维,以及全方位、立体化的秒级频率监控,极大程度降低运维复杂度。
  • 兼容企业传统 IT:尊重企业 IT 管理规范,兼容企业既有 IT 管理流程,可平滑整合到现有 IT 体系中。

比如说,在 Kubernetes 社区中,官方仪表盘糟糕的监控功能饱受诟病,为了解决这个问题,KubeSphere 团队为用户提供了更细粒度的权限控制、自定义控制、日志查看等功能,帮助企业更好的解决监控的需求。此外,KubeSphere 还提供了诸如 DevOps、微服务治理等能力,可以帮助企业更加简单的完成 Kubernetes 生态的接入。这些方面的差异性体现在以下几点:

  • DevOps:无需Jenkins配置、图形化拖拽编辑、即点即用
  • 微服务:治理功能完善、全可视化治理、低成本运维(轻点即用、零 Istio 基础也可以)

在接下来会发布的版本中,四爷透露道,新版会更加适配企业用户的需求,将会为企业用户提供诸如多集群、多租户、多网络、AI平台等企业亟需的特性,还将对 KubeSphere 进行架构层面的改造,让 KubeSphere 支持模块化配置,用户可以根据自己的需要,选择所需的产品模块,从而让 KubeSphere 的架构更加灵活、自如。

KubeSphere 的开源基因

如今是开源的年代,而云计算、容器和 Kubernetes 更在开源中诞生并茁壮成长起来的奇迹花园。作为开源社区,我们也非常关心 KubeSphere 的开源情况。

四爷表示,KubeSphere 项目从一开始,就是抱着开源的想法去做的,项目从初期便开源。他提到,青云QingCloud 做 KubeSphere 一开始就和其他的企业的思路不同。青云有天然的企业服务基因,从一开始 KubeSphere 就是面向企业设计和研发的,企业对于开源产品会更加的信任,而开源模式也能够让 KubeSphere 走得更远。

这种开放的策略,让 KubeSphere 在早期收获了大量用户,也让 KubeSphere 赢得了用户的信赖。

此外,四爷表示,KubeSphere 的开源也是符合用户利益的。实际上,有不少用户在开始使用青云QingCloud 的云服务之前,已经采购了其他的云服务、虚拟化或者物理设备,很难马上迁移到青云上来。开源的 KubeSphere 可以帮助他们在其它基础设施上先用起来。这种开放的策略,让 KubeSphere 在早期收获了大量用户,也让 KubeSphere 赢得了用户的信赖。

当 KubeSphere 根植于青云时

开源的 KubeSphere 与云平台是完全解耦的,这意味着 KubeSphere 可以运行于任何公有云基础设施之上,而当 KubeSphere 根植于青云QingCloud 自身所提供的基础设施时,就出现了 QKE。

周小四说,“QKE 是我们在 KubeSphere 容器平台的基础上,加入了青云的基础设施,以进一步的降低用户的使用成本。”

“从一开始做我们就知道,KubeSphere 的最终形态一定是对接公有云的,也只有公有云才有足够的资源提供给企业进行弹性伸缩。我们在 KubeSphere 的基础之上,对接了青云的高可扩展性网络和高性能存储,帮助企业用户更加简便地使用 Kubernetes 完成应用开发,而无需将大量的精力投放在底层基础设施的运维上。”

进一步的,在 QKE 之上,QKS(QingCloud Kubernetes Service)也会很快推出,QKS 是 QKE 的升级版。“QKS 也在 KubeSphere 之上,提供了不少非常有价值的功能,比如说,相比于其他家的容器服务,QKS 能够根据用量付费,这和其他家以集群来付费的理念是完全不同的。他们的本质上还是购买计算资源,然后在资源内部进行弹性。而 QKS 的底层是一个大的资源池,所有的用户都从这个资源池内调取资源进行计算,使用完成后就可以释放,从而达到真正的‘按量计费’。”

尾声

或许都是技术人吧,两个有共同话题的人聊起来技术就滔滔不绝,聊天中,我问起了“四爷”这个颇为霸气的昵称的来历,据说最初这来自同事们的戏称,周小四在技术问题上非常较真,十分霸气;而在攻关重大技术难关时,又能领着大家迎头挑战,颇有侠气,因此这个昵称在技术部门内不胫而走,最后在整个青云公司内,甚至连客户都这样亲切称呼他。我想,这正是一个技术人对技术的自信、对自己做出来的产品自信,才能自信立于云计算的潮头吧。

“穿山甲专访”栏目是 Linux 中国社区推出的面向开源界、互联网技术圈的重要领军人物的系列采访,将为大家介绍中国开源领域中一些积极推动开源,谙熟开源思想的技术人,并辨析其思考、挖掘其动因,揭示其背后所发生的事情,为关注开源、有志于开源的企业和技术人标出一条路径。

取名为“穿山甲”寓意有二:取穿山甲挖掘、深入之意来象征技术进步和表征技术领袖的作用;穿山甲是珍稀保护动物,宣传公益。

在具有适应性文化的开放组织中,学习应该一直持续 —— 但不会总是出现在正式场合。我们真的明白它是如何工作的吗?

 title=

持续学习是指人们为发展自己而进行的持续的、职业驱动的、有意识的学习过程。对于那些自认是持续学习者的人来说,学习从未停止 —— 这些人从日常经历中看到学习机会。与同事进行辩论、反思反馈、在互联网上寻找问题的解决方案、尝试新事物或冒险都是一个人在工作中可以进行的非正式学习活动的例子。

持续学习是开放组织中任何人的核心能力。毕竟,开放的组织是建立在同行相互思考、争论和行动的基础上的。在开放组织的模棱两可、话语驱动的世界中茁壮成长,每天都需要员工具备这些技能。

不幸的是,科学文献在传播我们在工作中学习的知识方面、帮助个人欣赏和发展自己的学习能力方面,做得很差。因此,在本文系列中,我将向你介绍非正式学习,并帮助你理解将学习视为一种技能会如何帮助你在任何组织中茁壮成长,尤其是在开放式组织中。

为什么这么正式?

迄今为止,对组织中学习的科学研究主要集中在正式学习而不是非正式学习的设计、交付和评估上。

投资于员工知识、技能和能力的发展是一个组织保持其相对于竞争对手优势的重要方式。组织通过创建或购买课程、在线课程、研讨会等来使学习机会正规化。这些课程旨在像个人传授与工作相关的内容,就像学校里的班级一样。对于一个组织来说,提供一门课程是一种简单(如果成本高昂的话)的方法,可以确保其员工的技能或知识保持最新。同样,教室环境是研究人员的天然实验室,使得基于培训的研究和工作不仅可能,而且强大。

当然,有些东西人们不需要培训来学习;通常,人们通过研究答案、与同事交谈、思考、实验或适应变化来学习。事实上,最近的评估表明 70% 到 80% 的与工作相关的知识不是在培训中学到的,而是在工作中非正式学到的。这并不是说正规的培训无效;培训可能非常有效,但它是一种精确的干预方式。在工作的大部分方面正式培训一个人是不现实的,尤其是当这些工作变得更加复杂的时候。

因此,非正式学习,或者任何发生在结构化学习环境之外的学习,对工作场所来说是极其重要的。事实上,最近的科学证据表明,非正式学习比正式培训更能预测工作表现。

那么,为什么机构和科学界如此关注培训呢?

循环过程

除了我前面提到的原因,研究非正式学习可能非常困难。与正式学习不同,非正式学习发生在非结构化环境中,高度依赖于个人,很难或不可能观察到。

直到最近,大多数关于非正式学习的研究都集中在定义非正式学习的合格特征和确定非正式学习在理论上是如何与工作经验联系在一起的。研究人员描述了一个动态的周期性过程,通过这个过程,个人可以在组织中非正式地学习。

与正式学习一样,非正式学习发生在非结构化环境中,高度依赖于个人,很难或不可能观察。

在这个过程中,个人和组织都有创造学习机会的机构。例如,一个人可能对学习某样东西感兴趣,并为此表现出学习行为。组织以向个人提供反馈的形式,可能表明需要学习。这可能是一个糟糕的绩效评估、一个在项目中发表的评论、或者一个不是个人指导的组织环境的更广泛的变化。这些力量在组织环境中(例如,有人尝试了一个新想法,他或她的同事认识到并奖励了这种行为)或者通过在个人的头脑中反思(例如,有人反思了关于他或她的表现的,并决定在学习工作中付出更多的努力)。与培训不同,非正式学习不遵循正式的线性过程。个人可以随时体验过程的任何部分,同时体验过程的多个部分。

开放组织中的非正式学习

具体而言,在开放组织中,既减少了对等级制度的重视程度,又更加注重对参与式文化的重视程度,这两者都推动了这种非正式的学习。简而言之,开放式组织只是为个人和组织环境提供了更多互动和激发学习的机会。此外,想法和变革需要开放式组织中员工给予更广泛的认同 —— 而认同需要对他人的适应性和洞察力的欣赏。

也就是说,仅仅增加学习机会并不能保证学习会发生或成功。有人甚至可能会说,开放式组织中常见的模糊性和公开性话语可能会阻止不擅长持续学习的人——同样,随着时间的推移学习的习惯和开放式组织的核心能力——尽可能有效地为组织做出贡献。

解决这些问题需要一种以一致的方式跟踪非正式学习。最近,科学界呼吁创造衡量非正式学习的方法,这样就可以进行系统的研究来解决非正式学习的前因后果的问题。我自己的研究集中在这一呼吁上,我花了几年时间发展和完善我们对非正式学习行为的理解,以便可以衡量它们。

在本文系列的第二部分,我将重点介绍我最近在一个开放式组织中进行的一项研究的成果,在该研究中,我测试了我对非正式学习行为的研究,并将它们与更广泛的工作环境和个人工作成果联系起来。


via: https://opensource.com/open-organization/19/7/informal-learning-adaptability

作者:Colin Willis 选题:lujun9972 译者:heguangzhi
校对:wxy

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

互联网上的大多数人都拥有来自 Google 等大公司的电子邮件帐户,但这些帐户不尊重你的隐私。值得庆幸的是,目前有 TutanotaProtonMail 等具有隐私意识的替代品。问题是并非所有人都有桌面客户端。今天,我们将研究一个为你解决该问题的项目。我们来看看 ElectronMail 吧。

‘Electron’ 警告!

以下应用是使用 Electron 构建的(也就是名为 ElectronMail 的原因之一)。如果使用 Electron 让你感到不安,请将此视为触发警告。

ElectronMail:Tutanota 和 ProtonMail 的桌面客户端

Electron Mail About

ElectronMail 可以简单地视作 ProtonMail 和 Tutanota 的电子邮件客户端。它使用三大技术构建:ElectronTypeScriptAngular。它包括以下功能:

  • 针对每个电子邮件提供商提供多帐户支持
  • 加密本地存储
  • 适用于 Linux、Windows、macOS 和 FreeBSD
  • 原生通知系统
  • 带有未读消息总数的系统托盘图标
  • 用主密码保护帐户信息
  • 可切换的视图布局
  • 可离线访问电子邮件
  • 电子邮件在本地加密存储
  • 批量导出电子邮件为 EML 文件
  • 全文搜索
  • 内置/预打包的 Web 客户端
  • 可以为每个帐户配置代理
  • 拼写检查
  • 支持双因素身份验证,以提高安全性

目前,ElectronMail 仅支持 Tutanota 和 ProtonMail。我觉得他们将来会增加更多。根据 GitHub 页面:“多电子邮件提供商支持。目前支持 ProtonMail 和 Tutanota。”

ElectronMail 目前是 MIT 许可证。

如何安装 ElectronMail

目前,有几种方法可以在 Linux 上安装 ElectronMail。对于Arch 和基于 Arch 的发行版,你可以从Arch 用户仓库安装它。ElectrionMail 还有一个 Snap 包。要安装它,只需输入 sudo snap install electron-mail 即可。

对于所有其他 Linux 发行版,你可以下载 .deb.rpm 文件。

Electron Mail Inbox

你也可以下载用于 Windows 中的 .exe 安装程序或用于 macOS 的 .dmg 文件。甚至还有给 FreeBSD 用的文件。

删除 ElectronMail

如果你安装了 ElectronMail 并确定它不适合你,那么开发者建议采用几个步骤。 在卸载应用之前,请务必遵循以下步骤。

如果你使用了“保持登录”功能,请单击菜单上的“注销”。这将删除本地保存的主密码。卸载 ElectronMail 后也可以删除主密码,但这涉及编辑系统密钥链。

你还需要手动删除设置文件夹。在系统托盘中选择应用图标后,单击“打开设置文件夹”可以找到它。

Electron Mail Setting

我对 ElectronMail 的看法

我通常不使用电子邮件客户端。事实上,我主要依赖于 Web 客户端。所以,这个应用对我没太大用处。

话虽这么说,但是 ElectronMail 看着不错,而且很容易设置。它有大量开箱即用的功能,并且高级功能并不难使用。

我遇到的一个问题与搜索有关。根据功能列表,ElectronMail 支持全文搜索。但是,Tutanota 的免费版本仅支持有限的搜索。我想知道 ElectronMail 如何处理这个问题。

最后,ElectronMail 只是一个基于 Web Email 的一个 Electron 封装。我宁愿在浏览器中打开它们,而不是将单独的系统资源用于运行 Electron。如果你只使用 Tutanota,他们有自己官方的 Electron 桌面客户端。你可以尝试一下。

我最大的问题是安全性。这是两个非常安全的电子邮件应用的非官方应用。如果有办法捕获你的登录信息或阅读你的电子邮件怎么办?比我聪明的人必须通过源代码才能确定。这始终是一个安全项目的非官方应用的问题。

你有没有使用过 ElectronMail?你认为是否值得安装 ElectronMail?你最喜欢的邮件客户端是什么?请在下面的评论中告诉我们。

如果你发现这篇文章很有趣,请花一点时间在社交媒体、Hacker News 或 Reddit 上分享它。


via: https://itsfoss.com/electronmail/

作者:John Paul 选题:lujun9972 译者:geekpi 校对:wxy

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

安装 Elasticsearch 很复杂!以下是如何在 Mac 上安装。

Elasticsearch 是一个用 Java 开发的开源全文搜索引擎。用户上传 JSON 格式的数据集。然后,Elasticsearch 在向集群索引中的文档添加可搜索的引用之前先保存原始文档。

Elasticsearch 创建还不到九年,但它是最受欢迎的企业搜索引擎。Elastic 在 2019 年 6 月 25 日发布了最新的更新版本 7.2.0。

Kibana 是 Elasticsearch 的开源数据可视化工具。此工具可帮助用户在 Elasticsearch 集群的内容索引之上创建可视化。

Sunbursts地理空间数据地图关系分析和实时数据面板只是其中几个功能。并且由于 Elasticsearch 的机器学习能力,你可以了解哪些属性可能会影响你的数据(如服务器或 IP 地址)并查找异常模式。

在上个月的 DevFest DC 中,Booz Allen Hamilton 的首席数据科学家 Summer Rankin 博士将 TED Talk 的内容数据集上传到了 Elasticsearch,然后使用 Kibana 快速构建了面板。出于好奇,几天后我去了一个 Elasticsearch 聚会。

由于本课程针对的是新手,因此我们从第一步开始:在我们的笔记本上安装 Elastic 和 Kibana。如果没有安装这两个包,我们无法将莎士比亚的文本数据集作为测试 JSON 文件创建可视化了。

接下来,我将分享在 MacOS 上下载、安装和运行 Elasticsearch V7.1.1 的分步说明。这是我在 2019 年 6 月中旬参加 Elasticsearch 聚会时的最新版本。

下载适合 MacOS 的 Elasticsearch

1、进入 https://www.elastic.co/downloads/elasticsearch,你会看到下面的页面:

 title=

2、在下载区,单击 MacOS,将 Elasticsearch TAR 文件(例如,elasticsearch-7.1.1-darwin-x86_64.tar)下载到 Downloads 文件夹。 3、双击此文件并解压到自己的文件夹中(例如,elasticsearch-7.1.1),这其中包含 TAR 中的所有文件。

提示:如果你希望 Elasticsearch 放在另一个文件夹中,现在可以移动它。

在 MacOS 命令行中运行 Elasticsearch

如果你愿意,你可以只用命令行运行 Elasticsearch。只需遵循以下流程:

1、打开终端窗口

2、在终端窗口中,输入你的 Elasticsearch 文件夹。例如(如果你移动了程序,请将 Downloads 更改为正确的路径):

$ cd ~Downloads/elasticsearch-1.1.0

3、切换到 Elasticsearch 的 bin 子文件夹,然后启动该程序。例如:

$ cd bin 
$ ./elasticsearch

这是我启动 Elasticsearch 1.1.0 时命令行终端显示的一些输出:

 title=

注意:默认情况下,Elasticsearch 在前台运行,这可能会导致计算机速度变慢。按 Ctrl-C 可以阻止 Elasticsearch 运行。

使用 GUI 运行 Elasticsearch

如果你更喜欢点击操作,你可以像这样运行 Elasticsearch:

1、打开一个新的 Finder 窗口。

2、在左侧 Finder 栏中选择 Downloads(如果你将 Elasticsearch 移动了另一个文件夹,请进入它)。

3、打开名为 elasticsearch-7.1.1 的文件夹(对于此例)。出现了八个子文件夹。

 title=

4、打开 bin 子文件夹。如上面的截图所示,此子文件夹中有 20 个文件。 5、单击第一个文件,即 elasticsearch

请注意,你可能会收到安全警告,如下所示:

 title=

这时候要打开程序需要:

  1. 在警告对话框中单击 OK
  2. 打开系统偏好
  3. 单击安全和隐私,打开如下窗口:

 title=

  1. 单击永远打开,打开如下所示的确认对话框:

 title=

  1. 单击打开。会打开一个终端窗口并启动 Elasticsearch。

启动过程可能需要一段时间,所以让它继续运行。最终,它将完成,你最后将看到类似这样的输出:

 title=

了解更多

安装 Elasticsearch 之后,就可以开始探索了!

该工具的 Elasticsearch:开始使用指南会根据你的目标指导你。它的介绍视频介绍了在 Elasticsearch Service 上启动托管集群,执行基本搜索查询,通过创建、读取、更新和删除(CRUD)REST API 等方式操作数据的步骤。

本指南还提供文档链接,开发控制台命令,培训订阅以及 Elasticsearch Service 的免费试用版。此试用版允许你在 AWS 和 GCP 上部署 Elastic 和 Kibana 以支持云中的 Elastic 集群。

在本文的后续内容中,我们将介绍在 MacOS 上安装 Kibana 所需的步骤。此过程将通过不同的数据可视化将你的 Elasticsearch 查询带到一个新的水平。 敬请关注!


via: https://opensource.com/article/19/7/installing-elasticsearch-macos

作者:Lauren Maffeo 选题:lujun9972 译者:geekpi 校对:wxy

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

想要进入 Linux 之门,试试这十个方法。

文章《什么是 Linux 用户?》的作者 Anderson Silva 明确表示,现今人们使用 Linux(在某种程度上)就像使用 Windows 一样,只要你对“使用 Linux”这个事情定义得足够广义。尽管如此,如果你的生活中没有太多的使用 Linux 的机会,现在正是以前所未有的方式尝试 Linux 的好时机。

以下是 Linux 入门的十种方法。你可以试试其中一个或者全部试试。

1、加入免费 shell 计划

 title=

有很多人在用不上的服务器上运行 Linux (请记住,“Linux 服务器”可以是从最新的超级计算机到丢弃的、已经用了 12 年的笔记本电脑中的任何一个)。为了充分利用多余的计算机,许多管理员用这些备用的机器提供了免费的 shell 帐户。

如果你想要登录到 Linux 终端中学习命令、shell 脚本、Python 以及 Web 开发的基础知识,那么免费的 shell 帐户是一种简单、免费的入门方式。下面是一个可以体验一下的简短列表:

  • Freeshell.de 是一个自 2002 年以来一直在线服务的公用 Linux 系统。你可以通过 SSH、IPv6 和 OpenSSL 进行访问,以获得 Linux shell 体验,并且可以使用 MySQL 数据库。
  • Blinkenshell 提供了一个学习 Unix、使用 IRC、托管简单网站和共享文件的 Linux shell。它自 2006 年以来一直在线服务。
  • SDF 公用 Unix 系统成立于 1987 年,提供了免费的 NetBSD 账户。当然,NetBSD 不是 Linux,但它是开源的 Unix,因此它提供了类似的体验。它也有几个自制应用程序,因此它不但有普通的免费 shell,还提供了老派 BBS。

免费 shell 帐户常会受到滥用,因此你表现出的可信程度和积极参与协作的意愿越多,你的体验就越好。你可以通过专门请求或小额捐赠来证明你的诚意,通常可以访问数据库引擎、编译器和高级编程语言。你还可以要求安装其他软件或库,但需经管理员批准。

如何使用

公用 shell 帐户是尝试真正的 Linux 系统的好方法。你无法获得 root 权限这一事实意味着你可以学习本地软件管理,而无需做更多的维护工作。你可以做很多实际操作,以完成真正的工作,尽管它们对于学习关键任务还不够。

2、试试 Windows WSL 2 里面的 Linux

不管你信不信,微软从 2019 年 6 月开始在 Windows 里面带上了 Linux,这意味着你可以从 Windows 运行 Linux 应用程序,这是 Windows 里的 Linux 子系统的第二版(WSL 2)。虽然它主要针对开发人员,但 Windows 用户可以发现 WSL 2 是一个来自于他们熟悉的桌面上的 Linux 环境,而没有被任何虚拟化占用额外资源。这是一个以进程方式运行在 Windows 机器上的 Linux。现阶段,它仍然是一个新的动向和正在进行中的工作,因此它可能会发生变化。如果你试图用它承担重任,你可能会遇到一两个错误,但是如果你只是想入门 Linux、学习一些命令,并感受在基于文本的环境如何完成工作,那么 WSL 2 可能正是你所需要的。

如何使用

WSL 还没有明确的用途或目的,但它在 Windows 机器上提供了 Linux 环境。你可以获得 root 访问权限,并可以运行 Linux 发行版和应用程序,因此这是一种简单而无缝的学习方式。但是,即使 WSL 是Linux,它也不能给你典型的 Linux 体验。它是由 Windows 提供的 Linux,而这不太会是你在现实世界中遇到的情况。WSL 是一个开发和教育工具,但如果你可以使用它,那么你应该试试它。

3、把 Linux 放到可启动的 U 盘上

 title=

便携 Linux 可以安装到 U 盘上随身携带,并用该 U 盘启动你遇到的任何计算机。你可以获得个性化的 Linux 桌面,而无需担心所用于启动的主机上的数据。该计算机上原有的系统不会与你的 Linux 系统相接触,并且你的 Linux 操作系统也不会影响计算机。它非常适合酒店商务中心、图书馆、学校的公共计算机,或者只是给自己一个不时启动 Linux 的借口。

与许多其他快速获得的 Linux shell 不同,此方法为你提供了一个完整而强大的 Linux 系统,包括桌面环境,可访问你需要的任何软件以及持久的数据存储。

这个系统永远不会改变。你要保存的任何数据都将写入压缩的文件系统中,然后在引导时将其作为覆盖层应用于该系统。这种灵活性允许你选择是以持久模式启动,将所有数据保存回 U 盘;还是以临时模式启动,以便一旦关闭电源,你所做的一切都会消失。换句话说,你可以将其用作不受信任的计算机上的安全信息亭或你信任的计算机上的便携式操作系统。

你可以尝试很多 U 盘发行版,有些带有精简的桌面环境,适用于低功耗计算机,而另一些带有完整的桌面环境。我偏爱 Porteus Linux。在过去的八年里,我每天都把它放在我的钥匙链上,在商务旅行中使用它作为我的主要计算平台,如果在工作场所或家中计算机发生问题,它也会用作工具盘。它是一个可靠而稳定的操作系统,有趣且易于使用。

在 Mac 或 Windows 上,下载 Fedora Media Writer 以创建你下载的任何便携式发行版的可启动 U 盘。

如何使用

从 U 盘启动一个 “实时 Linux” 可提供完整的 Linux 发行版环境。虽然数据存储与你安装到硬盘驱动器的系统略有不同,但其它的所有内容都与你在 Linux 桌面上所期望的一样。在便携式 Linux 操作系统上你几乎没有什么不能做的,所以在你的钥匙串上挂上一个以解锁你遇到的每台计算机的全部潜力吧。

4、在线游览

 title=

Ubuntu 的某个人想到了在浏览器中托管 Ubuntu GNOME 桌面的好主意。如果想要自己尝试一下,可以打开 Web 浏览器并导航到 tour.ubuntu.com。你可以选择要演示的活动,也可以跳过单个课程并单击 “ 四处看看 Show Yourself Around ” 按钮。

即使你是 Linux 桌面的新用户,你也可能会发现“四处看看”功能比你想象的更还简单。在线游览中,你可以四处看看,查看可用的应用程序,以及查看典型的默认 Linux 桌面。你不能在 Firefox 中调整设置或启动另一个在线游览(这是我尝试过的第一件事),虽然你可以完成安装应用程序的动作,但你无法启动它们。但是,如果你之前从未使用过 Linux 桌面,并且想要看到各种新奇的东西,那这就是一场旋风之旅。

如何使用

在线游览真的只是一次旅行。如果你从未见过 Linux 桌面,那么这是一个了解它的情况的机会。这不是一个正式的使用,而是一个吸引过客的展示。

5、在浏览器中用 JavaScript 运行 Linux

 title=

就在不久之前,虚拟化的计算成本还很高,还仅限于使用先进的硬件的用户。而现在虚拟化已被优化到可以由 JavaScript 引擎执行的程度,这要归功于 Fabrice Bellard,它是优秀的开源 QEMU 机器仿真器和虚拟器的创建者。

Bellard 还启动了 JSLinux 项目,该项目允许你在浏览器中运行 Linux 和其他操作系统,这算是闲暇时间的一个乐趣。它仍然是一个实验性项目,但它是一个技术奇迹。打开 Web 浏览器导航到 JSLinux 页面,你可以启动基于文本的 Linux shell 或精简的图形 Linux 环境。你可以上传和下载文件到 JSLinux 主机上或(在理论上可以)将文件发送到一个网络备份位置,因为 JSLinux 可以通过 VPN 套接字访问互联网(尽管上限速度取决于 VPN 服务)。

如何使用

你不会在 JSLinux 上正经使用多少时间,这个环境可能太不寻常了,无法学习 Linux 正常工作的广泛课程。但是,如果你厌倦了在一台普通的 PC 上运行 Linux 并想在一个真正独特的平台上试用 Linux,那么 JSLinux 就属于这种。

6、阅读关于它的书

并非每种 Linux 体验都要用到计算机。也许你是那种喜欢在开始新事物之前保持距离先观察和研究的人,或者你可能还不清楚 “Linux” 所包含的内容,或者你喜欢全情投入其中。关于 Linux 如何工作、运行 Linux 的方式以及 Linux 世界中有什么,有很多书可以读。

你越熟悉开源世界,就越容易理解常用术语,将城市神话与实际经验区分开来。我们不时会发布图书清单,但我的最爱之一是 Hazel Russman 的《The Charm of Linux》。这是一个从不同角度巡览 Linux 的过程,是由一位独立作者在发现 Linux 时兴奋之余写作的。

如何使用

没有什么能比一本好书更好。这是体验 Linux 的最不传统的方法,但对于喜欢印刷文字的人来说,它既舒适又有效。

7、弄块树莓派

 title=

如果你正在使用树莓派,那么你就正在运行 Linux。Linux 和低功耗计算很容易上手。关于树莓派的好处,除了价格低于 100 美元之外,它的网站是专为教育而设计的。你可以了解树莓派所能做的一切,当你了解之后,就知道了 Linux 可以为你做些什么。

如何使用

树莓派被设计为低功耗计算机。这意味着你不能像过去那样做那么多的多任务处理,但这是一种避免不堪重负的方便方法。树莓派是学习 Linux 及其附带的所有可能性的好方法,它是发现环保、小型、简化计算能力的有趣方式。并且一定要关注 Opensource.com 上的提示技巧有趣的活动,特别是在每年三月份的树莓派之周的期间。

8、赶上容器热潮

如果你从事于神话般的云服务的后端工作,那么你已经听说过容器热潮。虽然你可以在 Windows、Azure、Mac 和 Linux 上运行 Docker 和 Kubernetes,但你可能不知道容器本身就是 Linux。云计算应用和基础设施实际上是精简的 Linux 系统,部分虚拟化,部分基于裸机。如果启动容器,则会启动微型的超特定的 Linux 发行版。

容器与虚拟机或物理服务器不同。它们不打算用作通用操作系统。但是,如果你在容器中进行开发,你可以停下来四处打量一下,你将了解到 Linux 系统的结构、保存重要文件的位置以及最常见的命令。你甚至可以在线尝试容器,你可以在我的文章中深入到 Linux 容器的背后了解它们如何工作的。

如何使用

根据设计,容器特定于一个单一任务,但它们是 Linux,因此它们非常灵活。你可以如你预期的使用它们,也可以在你的 Linux 实验当中将容器构建到大部分完整系统中。它虽然不提供桌面 Linux 体验,但它是完整的 Linux 体验。

9、以虚拟机方式安装 Linux

虚拟化是尝试操作系统的简便方法,VirtualBox 是一种很好的开源虚拟化方法。VirtualBox 可以在 Windows 和 Mac 上运行,因此你可以将 Linux 安装为虚拟机(VM)并使用它,就好像它只是一个应用程序一样。如果你不习惯安装操作系统,VirtualBox 也是一种尝试 Linux 的非常安全的方式,而不会意外地将其安装覆盖在你通常的操作系统上。

如何使用

将 Linux 作为虚拟机运行既方便又简单,既可以作为试运行使用,也可以在需要 Linux 环境时进行双启动或重启进入。它功能齐全,因为它使用虚拟硬件,宿主操作系统负责驱动你的外围设备。将 Linux 作为虚拟机运行的唯一缺点主要是心理上的。如果你打算使用 Linux 作为主要操作系统,但最终默认在宿主操作系统上做除了特定于 Linux 的大多数任务,那么虚拟机就会让你失望。否则,虚拟机是现代技术的胜利,在 VirtualBox 中使用 Linux 可以为你提供 Linux 所提供的所有最佳功能。

10、安装一个 Linux

 title=

如果对上述方式有疑问,那么总会有传统的方式。如果你想给予 Linux 应有的关注,你可以下载 Linux,将安装程序刻录到 U 盘(或 DVD,如果你更喜欢光学介质的话),并将其安装在你的计算机上。Linux 是开源的,所以任何想要花时间打包 Linux 的人都可以分发 Linux,并且可以将所有可用的部分分配到通常称为发行版的内容中。无论问哪一个 Linux 用户什么发行版是“最好的”,你必然都会得到一个不同的答案(主要是因为这个术语“最佳”通常是尚未定义的)。大多数人都认可:你应该使用适合你的 Linux 发行版,这意味着你应该测试一些流行的发行版,并坚持使你的计算机按照你期望的行为行事。这是一种务实和功能性的方法。例如,如果发行版无法识别你的网络摄像头而你希望它可以正常工作,则可以使用一个可识别该网络摄像头的发行版。

如果你之前从未安装过操作系统,你会发现大多数 Linux 发行版都包含一个友好且简单的安装程序。只需下载一个发行版(它们以 ISO 文件提供),然后下载 Fedora Media Writer 来创建一个可启动的安装 U 盘。

如何使用

安装 Linux 并将其用作操作系统是迈向熟悉它的一步。怎么使用它都可以。你可能会发现一些你从未了解过的所需的必备功能,你可能会比你想象的更多地了解计算机,并且可能会改变你的世界观。你使用一个 Linux 桌面,或者是因为它易于下载和安装,或者是因为你想要削弱公司中某些人的霸主地位,或者只是因为它可以帮助你完成工作。

无论你的原因是什么,只需尝试使用上面这些任何(或所有)这些方式。


via: https://opensource.com/article/19/7/ways-get-started-linux

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

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