标签 版本 下的文章

几天前,我们曾经讨论如何在不同的 PHP 版本之间进行切换。在那篇文章中,我们使用 update-alternatives 命令实现从一个 PHP 版本切换到另一个 PHP 版本。也就是说,update-alternatives 命令可以将 系统范围 system wide 默认使用的 PHP 版本设置为我们希望的版本。通俗的来说,你可以通过 update-alternatives 命令从系统范围设置程序的版本。如果你希望可以在不同目录动态设置不同的程序版本,该如何完成呢?在这种情况下,alt 工具可以大显身手。alt 是一个命令行工具,可以让你在类 Unix 系统中切换相同程序的不同版本。该工具简单易用,是 Rust 语言编写的自由、开源软件。

安装

安装 alt 工具十分简单。

运行如下命令,即可在 Linux 主机上安装 alt

$ curl -sL https://github.com/dotboris/alt/raw/master/install.sh | bash -s

下一步,将 shims 目录添加到你的 PATH 环境变量中,具体操作取决于你使用的 Shell。

对于 Bash:

$ echo 'export PATH="$HOME/.local/alt/shims:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

对于 Zsh:

$ echo 'export PATH="$HOME/.local/alt/shims:$PATH"' >> ~/.zshrc
$ source ~/.zshrc

对于 Fish:

$ echo 'set -x PATH "$HOME/.local/alt/shims" $PATH' >> ~/.config/fish/config.fish

现在 alt 已经安装完毕!

使用 alt 工具在 Linux 系统中切换相同程序的不同版本

如我之前所述,alt 只影响当前目录。换句话说,当你进行版本切换时,只在当前目录生效,而不是整个系统范围。

下面举例说明。我在我的 Ubuntu 系统中安装了两个版本的 PHP,分别为 PHP 5.6 和 PHP 7.2;另外,在 myproject 目录中包含一些 PHP 应用。

首先,通过命令查看系统范围默认的 PHP 版本:

$ php -v

示例输出:

查找 PHP 版本

如截图中所示,我系统中默认的 PHP 版本为 PHP 7.2。

然后,我将进入放置 PHP 应用的 myproject 目录。

$ cd myproject

使用如下命令扫描可用的 PHP 版本:

$ alt scan php

示例输出:

扫描 PHP 版本

可见,我有两个 PHP 版本,即 PHP 5.6 和 PHP 7.2。按下 <空格> 键选中当前可用的版本。选中全部可用版本后,你可以看到图中所示的 叉号 cross mark 。使用上下方向键在版本间移动,点击回车即可保存变更。

选取 PHP 版本

下面运行该命令并选取我们希望在 myproject 目录中使用的 PHP 版本:

$ alt use php

我希望使用 PHP5.6 版本,故我(使用方向键)选取该版本并点击回车键。

设置 PHP 版本

现在,你可以在 /home/sk/myproject 目录下使用 PHP 5.6 版本啦。

让我们检查一下,在 myproject 目录下是否默认使用 PHP 5.6 版本:

$ php -v

示例输出:

检查 PHP 版本

只要你不设置成其它版本,(在该目录下)将一直使用 PHP 5.6 版本。清楚了吗?很好!请注意,我们仅在这个目录下使用 PHP 5.6 版本。在系统范围内(LCTT 译注:当然是没单独设置过其它版本的目录下),PHP 7.2 仍是默认的版本。让我们检验一下,请看下图。

比对 PHP 版本

从上面的截图中可以看出,我有两个版本的 PHP:在 myproject 目录下,使用的版本为 PHP 5.6;在 myproject 外的其它目录,使用的版本为 PHP 7.2。

同理,你可以为每个目录设置你希望的程序版本。我这里使用 PHP 仅用于说明操作,但方法适用于任何你打算使用的软件,例如 NodeJS 等。

下面是 NodeJS 的示例视频。

如果你希望在不同软件包版本下测试你的应用,那么 alt 是你不错的选择。

本次分享到此结束。后续还有更多内容,敬请期待!

干杯!


via: https://www.ostechnix.com/how-to-switch-between-different-versions-of-commands-in-linux/

作者:SK 选题:lujun9972 译者:pinewall 校对:wxy

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

摘要:想知道你正在使用的 Ubuntu 具体是什么版本吗?这篇文档将告诉你如何检查你的 Ubuntu 版本、桌面环境以及其他相关的系统信息。

通常,你能非常容易的通过命令行或者图形界面获取你正在使用的 Ubuntu 的版本。当你正在尝试学习一篇互联网上的入门教材或者正在从各种各样的论坛里获取帮助的时候,知道当前正在使用的 Ubuntu 确切的版本号、桌面环境以及其他的系统信息将是尤为重要的。

在这篇简短的文章中,作者将展示各种检查 Ubuntu 版本以及其他常用的系统信息的方法。

如何在命令行检查 Ubuntu 版本

这个是获得 Ubuntu 版本的最好的办法。我本想先展示如何用图形界面做到这一点,但是我决定还是先从命令行方法说起,因为这种方法不依赖于你使用的任何桌面环境。 你可以在 Ubuntu 的任何变种系统上使用这种方法。

打开你的命令行终端 (Ctrl+Alt+T), 键入下面的命令:

lsb_release -a

上面命令的输出应该如下:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:    16.04
Codename:   xenial

How to check Ubuntu version in command line

正像你所看到的,当前我的系统安装的 Ubuntu 版本是 Ubuntu 16.04, 版本代号: Xenial。

且慢!为什么版本描述中显示的是 Ubuntu 16.04.4 而发行版本是 16.04?到底哪个才是正确的版本?16.04 还是 16.04.4? 这两者之间有什么区别?

如果言简意赅的回答这个问题的话,那么答案应该是你正在使用 Ubuntu 16.04。这个是基准版本,而 16.04.4 进一步指明这是 16.04 的第四个补丁版本。你可以将补丁版本理解为 Windows 世界里的服务包。在这里,16.04 和 16.04.4 都是正确的版本号。

那么输出的 Xenial 又是什么?那正是 Ubuntu 16.04 的版本代号。你可以阅读下面这篇文章获取更多信息:了解 Ubuntu 的命名惯例

其他一些获取 Ubuntu 版本的方法

你也可以使用下面任意的命令得到 Ubuntu 的版本:

cat /etc/lsb-release

输出如下信息:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"

How to check Ubuntu version in command line

你还可以使用下面的命令来获得 Ubuntu 版本:

cat /etc/issue

命令行的输出将会如下:

Ubuntu 16.04.4 LTS \n \l

不要介意输出末尾的\n \l. 这里 Ubuntu 版本就是 16.04.4,或者更加简单:16.04。

如何在图形界面下得到 Ubuntu 版本

在图形界面下获取 Ubuntu 版本更是小事一桩。这里我使用了 Ubuntu 18.04 的图形界面系统 GNOME 的屏幕截图来展示如何做到这一点。如果你在使用 Unity 或者别的桌面环境的话,显示可能会有所不同。这也是为什么我推荐使用命令行方式来获得版本的原因:你不用依赖形形色色的图形界面。

下面我来展示如何在桌面环境获取 Ubuntu 版本。

进入‘系统设置’并点击下面的‘详细信息’栏。

Finding Ubuntu version graphically

你将会看到系统的 Ubuntu 版本和其他和桌面系统有关的系统信息 这里的截图来自 GNOME

Finding Ubuntu version graphically

如何知道桌面环境以及其他的系统信息

你刚才学习的是如何得到 Ubuntu 的版本信息,那么如何知道桌面环境呢? 更进一步, 如果你还想知道当前使用的 Linux 内核版本呢?

有各种各样的命令你可以用来得到这些信息,不过今天我想推荐一个命令行工具, 叫做 Neofetch。 这个工具能在命令行完美展示系统信息,包括 Ubuntu 或者其他 Linux 发行版的系统图标。

用下面的命令安装 Neofetch:

sudo apt install neofetch

安装成功后,运行 neofetch 将会优雅的展示系统的信息如下。

System information in Linux terminal

如你所见,neofetch 完全展示了 Linux 内核版本、Ubuntu 的版本、桌面系统版本以及环境、主题和图标等等信息。

希望我如上展示方法能帮到你更快的找到你正在使用的 Ubuntu 版本和其他系统信息。如果你对这篇文章有其他的建议,欢迎在评论栏里留言。

再见。:)


via: https://itsfoss.com/how-to-know-ubuntu-unity-version/

作者:Abhishek Prakash 选题:lujun9972 译者:DavidChenLiang 校对:wxy

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

掌握这些快捷命令以找出你正在运行的 Linux 系统的内核版本和发行版。

“什么版本的 Linux ?”这个问题可能意味着两个不同的东西。严格地说,Linux 是内核,所以问题可以特指内核的版本号,或者 “Linux” 可以更通俗地用来指整个发行版,就像在 Fedora Linux 或 Ubuntu Linux 中一样。

两者都很重要,你可能需要知道其中一个或全部答案来修复系统中的问题。例如,了解已安装的内核版本可能有助于诊断带有专有驱动程序的问题,并且确定正在运行的发行版将帮助你快速确定是否应该使用 aptdnfyum 或其他命令来安装软件包。

以下内容将帮助你了解 Linux 内核的版本和/或系统上正在运行的 Linux 发行版是什么。

如何找到 Linux 内核版本

要找出哪个 Linux 内核版本正在运行,运行以下命令:

uname -srm

或者,可以使用更长,更具描述性的各种标志的版本来运行该命令:

uname --kernel-name --kernel-release --machine

无论哪种方式,输出都应该类似于以下内容:

Linux 4.16.10-300.fc28.x86_64 x86_64

这为你提供了(按顺序):内核名称、内核版本以及运行内核的硬件类型。在上面的情况下,内核是 Linux ,版本 4.16.10-300.fc28.x8664 ,运行于 x8664 系统。

有关 uname 命令的更多信息可以通过运行 man uname 找到。

如何找出 Linux 发行版

有几种方法可以确定系统上运行的是哪个发行版,但最快的方法是检查 /etc/os-release 文件的内容。此文件提供有关发行版的信息,包括但不限于发行版名称及其版本号。某些发行版的 os-release 文件包含比其他发行版更多的细节,但任何包含 os-release 文件的发行版都应该提供发行版的名称和版本。

要查看 os-release 文件的内容,运行以下命令:

cat /etc/os-release

在 Fedora 28 中,输出如下所示:

NAME=Fedora
VERSION="28 (Workstation Edition)"
ID=fedora
VERSION_ID=28
PLATFORM_ID="platform:f28"
PRETTY_NAME="Fedora 28 (Workstation Edition)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:fedoraproject:fedora:28"
HOME_URL="https://fedoraproject.org/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=28
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=28
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="Workstation Edition"
VARIANT_ID=workstation

如上面那个例子展示的那样,Fedora 的 os-release 文件提供了发行版的名称和版本,但它也标识这个安装的变体(“Workstation Edition”)。如果我们在 Fedora 28 服务器版本上运行相同的命令,os-release 文件的内容会反映在 VARIANTVARIANT_ID 行中。

有时候知道一个发行版是否与另一个发行版相似非常有用,因此 os-release 文件可以包含一个 ID_LIKE 行,用于标识正在运行的是基于什么的发行版或类似的发行版。例如,Red Hat Linux 企业版的 os-release 文件包含 ID_LIKE 行,声明 RHEL 与 Fedora 类似;CentOS 的 os-release 文件声明 CentOS 与 RHEL 和 Fedora 类似。如果你正在使用基于另一个发行版的发行版并需要查找解决问题的说明,那么 ID_LIKE 行非常有用。

CentOS 的 os-release 文件清楚地表明它就像 RHEL 一样,所以在各种论坛中关于 RHEL 的文档,问题和答案应该(大多数情况下)适用于 CentOS。CentOS 被设计成一个 RHEL 近亲,因此在某些字段它更兼容其 ID_LIKE 系统的字段。如果你找不到正在运行的发行版的信息,检查有关 “类似” 发行版的答案总是一个好主意。

有关 os-release 文件的更多信息可以通过运行 man os-release 命令来查找。


via: https://opensource.com/article/18/6/linux-version

作者:Joshua Allen Holm 选题:lujun9972 译者:MjSeven 校对:wxy

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

如果你加入了一家新公司,要为开发团队安装所需的软件并重启服务,这个时候首先要弄清楚它们运行在什么发行版以及哪个版本的系统上,你才能正确完成后续的工作。作为系统管理员,充分了解系统信息是首要的任务。

查看 Linux 发行版名称和版本号有很多种方法。你可能会问,为什么要去了解这些基本信息呢?

因为对于诸如 RHEL、Debian、openSUSE、Arch Linux 这几种主流发行版来说,它们各自拥有不同的包管理器来管理系统上的软件包,如果不知道所使用的是哪一个发行版的系统,在软件包安装的时候就会无从下手,而且由于大多数发行版都是用 systemd 命令而不是 SysVinit 脚本,在重启服务的时候也难以执行正确的命令。

下面来看看可以使用那些基本命令来查看 Linux 发行版名称和版本号。

方法总览

  • lsb_release 命令
  • /etc/*-release 文件
  • uname 命令
  • /proc/version 文件
  • dmesg 命令
  • YUM 或 DNF 命令
  • RPM 命令
  • APT-GET 命令

方法 1: lsb\_release 命令

LSB( Linux 标准库 Linux Standard Base )能够打印发行版的具体信息,包括发行版名称、版本号、代号等。

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial

方法 2: /etc/*-release 文件

release 文件通常被视为操作系统的标识。在 /etc 目录下放置了很多记录着发行版各种信息的文件,每个发行版都各自有一套这样记录着相关信息的文件。下面是一组在 Ubuntu/Debian 系统上显示出来的文件内容。

# cat /etc/issue
Ubuntu 16.04.3 LTS \n \l

# cat /etc/issue.net
Ubuntu 16.04.3 LTS

# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

# cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

# cat /etc/debian_version
9.3

下面这一组是在 RHEL/CentOS/Fedora 系统上显示出来的文件内容。其中 /etc/redhat-release/etc/system-release 文件是指向 /etc/[发行版名称]-release 文件的一个连接。

# cat /etc/centos-release
CentOS release 6.9 (Final)

# cat /etc/fedora-release
Fedora release 27 (Twenty Seven)

# cat /etc/os-release
NAME=Fedora
VERSION="27 (Twenty Seven)"
ID=fedora
VERSION_ID=27
PRETTY_NAME="Fedora 27 (Twenty Seven)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:fedoraproject:fedora:27"
HOME_URL="https://fedoraproject.org/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=27
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=27
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"

# cat /etc/redhat-release
Fedora release 27 (Twenty Seven)

# cat /etc/system-release
Fedora release 27 (Twenty Seven)

方法 3: uname 命令

uname(unix name 的意思) 是一个打印系统信息的工具,包括内核名称、版本号、系统详细信息以及所运行的操作系统等等。

# uname -a
Linux localhost.localdomain 4.12.14-300.fc26.x86_64 #1 SMP Wed Sep 20 16:28:07 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

以上运行结果说明使用的操作系统版本是 Fedora 26。

方法 4: /proc/version 文件

这个文件记录了 Linux 内核的版本、用于编译内核的 gcc 的版本、内核编译的时间,以及内核编译者的用户名。

# cat /proc/version
Linux version 4.12.14-300.fc26.x86_64 ([email protected]) (gcc version 7.2.1 20170915 (Red Hat 7.2.1-2) (GCC) ) #1 SMP Wed Sep 20 16:28:07 UTC 2017

方法 5: dmesg 命令

dmesg( 展示信息 display message 驱动程序信息 driver message )是大多数类 Unix 操作系统上的一个命令,用于打印内核的消息缓冲区的信息。

# dmesg | grep "Linux"
[ 0.000000] Linux version 4.12.14-300.fc26.x86_64 ([email protected]) (gcc version 7.2.1 20170915 (Red Hat 7.2.1-2) (GCC) ) #1 SMP Wed Sep 20 16:28:07 UTC 2017
[ 0.001000] SELinux: Initializing.
[ 0.001000] SELinux: Starting in permissive mode
[ 0.470288] SELinux: Registering netfilter hooks
[ 0.616351] Linux agpgart interface v0.103
[ 0.630063] usb usb1: Manufacturer: Linux 4.12.14-300.fc26.x86_64 ehci_hcd
[ 0.688949] usb usb2: Manufacturer: Linux 4.12.14-300.fc26.x86_64 ohci_hcd
[ 2.564554] SELinux: Disabled at runtime.
[ 2.564584] SELinux: Unregistering netfilter hooks

方法 6: Yum/Dnf 命令

Yum( Yellowdog 更新器修改版 Yellowdog Updater Modified )是 Linux 操作系统上的一个包管理工具,而 yum 命令被用于一些基于 RedHat 的 Linux 发行版上安装、更新、查找、删除软件包。

# yum info nano
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: centos.zswap.net
 * extras: mirror2.evolution-host.com
 * updates: centos.zswap.net
Available Packages
Name : nano
Arch : x86_64
Version : 2.3.1
Release : 10.el7
Size : 440 k
Repo : base/7/x86_64
Summary : A small text editor
URL : http://www.nano-editor.org
License : GPLv3+
Description : GNU nano is a small and friendly text editor.

下面的 yum repolist 命令执行后显示了 yum 的基础源仓库、额外源仓库、更新源仓库都来自 CentOS 7 仓库。

# yum repolist
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: centos.zswap.net
 * extras: mirror2.evolution-host.com
 * updates: centos.zswap.net
repo id repo name status
base/7/x86_64 CentOS-7 - Base 9591
extras/7/x86_64 CentOS-7 - Extras 388
updates/7/x86_64 CentOS-7 - Updates 1929
repolist: 11908

使用 dnf 命令也同样可以查看发行版名称和版本号。

# dnf info nano
Last metadata expiration check: 0:01:25 ago on Thu Feb 15 01:59:31 2018.
Installed Packages
Name : nano
Version : 2.8.7
Release : 1.fc27
Arch : x86_64
Size : 2.1 M
Source : nano-2.8.7-1.fc27.src.rpm
Repo : @System
From repo : fedora
Summary : A small text editor
URL : https://www.nano-editor.org
License : GPLv3+
Description : GNU nano is a small and friendly text editor.

方法 7: RPM 命令

RPM( 红帽包管理器 RedHat Package Manager )是在 CentOS、Oracle Linux、Fedora 这些基于 RedHat 的操作系统上的一个强大的命令行包管理工具,同样也可以帮助我们查看系统的版本信息。

# rpm -q nano
nano-2.8.7-1.fc27.x86_64

方法 8: APT-GET 命令

Apt-Get( 高级打包工具 Advanced Packaging Tool )是一个强大的命令行工具,可以自动下载安装新软件包、更新已有的软件包、更新软件包列表索引,甚至更新整个 Debian 系统。

# apt-cache policy nano
nano:
 Installed: 2.5.3-2ubuntu2
 Candidate: 2.5.3-2ubuntu2
 Version table:
 * 2.5.3-2ubuntu2 500
 500 http://nova.clouds.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
 100 /var/lib/dpkg/status
 2.5.3-2 500
 500 http://nova.clouds.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

via: https://www.2daygeek.com/check-find-linux-distribution-name-and-version/

作者:Magesh Maruthamuthu 译者:HankChow 校对:wxy

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

PHP 配置默认允许服务器在 HTTP 响应头 X-Powered-By 中显示安装在服务器上的 PHP 版本。

出于服务器安全原因(虽然不是主要的要担心的威胁),建议你禁用或隐藏此信息,避免那些针对你的服务器的攻击者知道你是否运行了 PHP。

假设你服务器上安装的特定版本的 PHP 具有安全漏洞,而攻击者了解到这一点,他们将更容易利用漏洞并通过脚本访问服务器。

在我以前的文章中,我已经展示了如何隐藏 apache 版本号,你已经看到如何不再显示 apache 的安装版本。但是如果你在你的 apache 服务器上运行 PHP,你还需要隐藏 PHP 的安装版本,这我们将在本文中展示。

因此,在本文中,我们将解释如何隐藏或关闭服务器 HTTP 响应头中的 PHP 版本号。

此设置可以在加载的 PHP 配置文件中配置。如果你不知道此配置文件在服务器上的位置,请运行以下命令找到它:

$ php -i | grep "Loaded Configuration File"

PHP 配置文件位置

---------------- 在 CentOS/RHEL/Fedora 上---------------- 
Loaded Configuration File => /etc/php.ini
---------------- 在 Debian/Ubuntu/Linux Mint 上---------------- 
Loaded Configuration File => /etc/php/7.0/cli/php.ini

在对 PHP 配置文件进行任何更改之前,我建议您首先备份您的 PHP 配置文件,如下所示:

----------------在 CentOS/RHEL/Fedora 上---------------- 
$ sudo cp /etc/php.ini /etc/php.ini.orig
---------------- 在 Debian/Ubuntu/Linux Mint 上---------------- 
$ sudo cp /etc/php/7.0/cli/php.ini  /etc/php/7.0/cli/php.ini.orig  

用你最喜欢的编辑器,使用超级用户权限打开文件:

---------------- 在 CentOS/RHEL/Fedora 上---------------- 
$ sudo vi /etc/php.ini
----------------在 Debian/Ubuntu/Linux Mint 上---------------- 
$ sudo vi /etc/php/7.0/cli/php.ini

定位到关键词 expose_php,并将值设置成 Off

expose_php = Off

保存并退出文件。之后,重启 web 服务器:

---------------- 使用 SystemD ---------------- 
$ sudo systemctl restart httpd  
或
$ sudo systemctl restart apache2 
---------------- 使用 SysVInit ---------------- 
$ sudo service httpd restart  
或
$ sudo service apache2 restart

最后,不过同样重要,使用下面的命令检查服务器 HTTP 响应头是否仍然显示你的 PHP 版本号。

$ lynx -head -mime_header http://localhost 
或者
$ lynx -head -mime_header http://server-address

这里的标志含义是:

  • -head – 发送一个请求 mime 报头的 HEAD 请求。
  • -mime_header – 打印所提取文档的 MIME 标头及其源代码。

注意: 确保你系统中已经安装了命令行 web 浏览器 lynx

就是这样了!在本文中,我们解释了如何隐藏服务器 HTTP 响应头中的 PHP 版本号以保护 web 服务器免受可能的攻击。你可以在下面的评论栏中留下你的想法或者相关的问题。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 及 web 开发者,目前是 TecMint 的内容创作者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/hide-php-version-http-header/

作者:Aaron Kili 译者:geekpi 校对:jasminepeng

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

你是否对你喜爱的 Linux 发行版的最新发布版本的代号感到好奇?

比如说今年发布的 Linux Mint 18 的代号是 Sarah,而 Ubuntu 16.10 则叫做 Yakkety Yak,这样的名字还有很多很多。

代号这个问题真不是一个大事,毕竟这些代号不能代表不同的发行版功能之间的不同。然而,对于一个好奇的 Linux 用户来说,你或许想知道每个发行版本代号背后的逻辑。不管怎么说,代号都是每个版本不可分割的一部分,而开发团队也为此付出了不少的努力,对吧?

下面我将会告诉你这些最流行的 Linux 发行版的代号背后的故事,请安坐,有趣的部分即将来到 :)

Ubuntu 的版本号和代号

作为最流行的 Linux 发行版之一,Ubuntu 有着一个稳定的开发周期,每年 4 月份和 10 月份各发布一个主要版本。

其所发布的年份和月份构成了 Ubuntu 发布版本的版本号。它的版本号格式是 XX.YY,其中 XX 是年份后两位,YY 是月份。比如说 Ubuntu 16.04 就是 2016 年 4 月份发布的版本,而 Ubuntu 16.10 则是该年 10 月份发布的。之所以 Ubuntu 没有像其它软件一样有 1.0 版本,也只是因为其第一个版本是发布于 2004 年而已。

这么久以来,在过去的 11 年之中, 除了一次例外之外,Ubuntu 的所有版本都是 4 月份和 10 月份发布的。这唯一的一次例外是 Ubuntu 在 2006 年 4 月份的版本延迟了两个月,并因此其版本号叫做 Ubuntu 6.06,而不是 6.04。

另外,顺便提一句,每两年的 4 月份,都会推出一个长期支持版本(LTS),其支持期长达五年,而非 LTS 版本的支持期通常只有半年。

现在让我们看看 Ubuntu 的代号,你也许注意到了每个 Ubuntu 版本的代号都是两个相同首字母的单词,比如说, Ubuntu 14.04 叫做 Trusty Tahr,就是以两个“T”字母开头的。

Ubuntu 的代号一直遵循两个单词的规则,第一个是一个形容词,第二个则是一种濒危物种的名称(后来也包含一些传说生物,比如 独角兽 Unicorn 狼人 Werewolf )。在前面的例子中,Trusty 是一个表示“忠实的”的形容词,而 Tahr (塔尔羊)则是一种濒危的小物种动物。

另外一个有趣的事情是,这些字母的顺序是按字母表排列的(除了最开始时的两个),所以我们看到,Ubuntu 14.04 是 Trusty Tahr, Ubuntu 14.10 是 Utopic Unicorn, Ubuntu 15.04 是 Vivid Vervet ,明年即将发布的 Ubuntu 17.04 则是 Zesty Zapus 等等。至于再之后的版本,字母“Z”之后该用哪个,目前还没有得到 Canonical 官方的消息,我猜测或许是将没有用过的 A 和 C 用上,或许是从头开始循环,抑或是其它的可能也未尝可知。

如下是当前的 Ubuntu 的版本号和代号:

版本号代号发布日期支持期内核版本
桌面版服务器版
4.10Warty Warthog2004-10-202006-04-302.6.8
5.04Hoary Hedgehog2005-04-082006-10-312.6.10
5.10Breezy Badger2005-10-132007-04-132.6.12
6.06 LTSDapper Drake2006-06-012009-07-142011-06-012.6.15
6.10Edgy Eft2006-10-262008-04-252.6.17
7.04Feisty Fawn2007-04-192008-10-192.6.20
7.10Gutsy Gibbon2007-10-182009-04-182.6.22
8.04 LTSHardy Heron2008-04-242011-05-122013-05-092.6.24
8.10Intrepid Ibex2008-10-302010-04-302.6.27
9.04Jaunty Jackalope2009-04-232010-10-232.6.28
9.10Karmic Koala2009-10-292011-04-302.6.31
10.04 LTSLucid Lynx2010-04-292013-05-092015-04-302.6.32
10.10Maverick Meerkat2010-10-102012-04-102.6.35
11.04Natty Narwhal2011-04-282012-10-282.6.38
11.10Oneiric Ocelot2011-10-132013-05-093.0.0
12.04 LTSPrecise Pangolin2012-04-262017-04-263.2.0
12.10Quantal Quetzal2012-10-182014-05-163.5.0
13.04Raring Ringtail2013-04-252014-01-273.8.0
13.10Saucy Salamander2013-10-172014-07-173.11.0
14.04 LTSTrusty Tahr2014-04-172019-043.13.0
14.10Utopic Unicorn2014-10-232015-07-233.16.0
15.04Vivid Vervet2015-04-232016-02-043.19
15.10Wily Werewolf2015-10-222016-07-284.2
16.04 LTSXenial Xerus2016-04-212021-044.4
16.10Yakkety Yak2016-10-132017-074.8
17.04Zesty ZapusTBATBATBA

(表格来自维基百科

哈,Ubuntu 每次发布新版本都能扩充我们的英语词汇,也会让我们了解一种世界上需要关注的的濒危动物。

Linux Mint 的版本号和代号

作为 Ubuntu 的远亲,Linux Mint 也是一个 Debian 族系的流行发行版。现在让我们深挖一下 Linux Mint 的版本号和代号。

Linux Mint 是基于 Ubuntu 的,通常在 Ubuntu 发布后几个月内,Linux Mint 就会发布它基于 Ubuntu 衍生的版本。

但是不像 Ubuntu,Linut Mint 的版本号并没有遵循年和月的规则,只是简单的递增。所以 Linux Mint 15 之后就是 Linux Mint 16,Linux Mint 17 等等。这是主要版本,还会有维护的小版本,比如 Linux Mint 17.1、Linux Mint 17.2 等等。

这就是 Linux Mint 的版本号,现在让我们看看代号。每个 Linux Mint 版本,无论是主要版本还是维护版本,都有一个代号,而且和 Ubuntu 一样,都是按字母顺序递增的。

更有意思的一点是 Linux Mint 的代号都是女性名,而且以字母“a”结尾,而这些名字都来自于亚伯拉罕诸教。比如说 Linux Mint 17 的代号是 Qiana(国内戏称“钱啊”,其实发言应该是“奎阿纳”)。

主要版本会递增代号的首字母顺序,而通常维护版本会使用相同的首字母,不过在 Linux Mint 17.x 发生了变化,没有继续使用 Linux Mint 17 的“Q”,而是使用了“R”:Linux Mint 17.1 是 Rebecca, 17.2 是 Rafaela,17.3 是 Rosa。

如下是当前的 Linux Mint 的版本号和代号:

版本代号分支上游默认桌面环境发布日期LTS支持期
1.0AdaMainKubuntu 6.06KDE2006-08-27 未知
2.0BarbaraMainUbuntu 6.10GNOME2006-11-13 2008-04
2.1BeaMainUbuntu 6.10GNOME2006-12-20 2008-04
2.2BiancaMainUbuntu 6.10GNOME2007-02-20 2008-04
LightUbuntu 6.10GNOME2007-03-29
KDE CEKubuntu 6.10KDE2007-04-20
3.0CassandraMainBianca 2.2GNOME2007-05-30 2008-10
LightBianca 2.2GNOME2007-06-15
KDE CEBianca 2.2KDE2007-08-14
MiniKDE CEBianca 2.2KDE2007-08-14
Xfce CECassandra 3.0Xfce2007-08-07
3.1CelenaMainBianca 2.2GNOME2007-09-24 2008-10
LightBianca 2.2GNOME2007-10-01
4.0DarynaMainCelena 3.1GNOME2007-10-15 2009-04
LightCelena 3.1GNOME2007-10-15
KDE CECassandra 3.0KDE2008-03-03
5ElyssaMainDaryna 4.0GNOME2008-06-082011-04
LightDaryna 4.0GNOME2008-06-08
x64Ubuntu 8.04GNOME2008-10-18
KDE CEDaryna 4.0KDE2008-09-15
Xfce CEDaryna 4.0Xfce2008-09-08
Fluxbox CEUbuntu 8.04Fluxbox2008-10-21
6FeliciaMainUbuntu 8.10GNOME2008-12-152010-04
Universal (Light)Ubuntu 8.10GNOME2008-12-15
x64Ubuntu 8.10GNOME2009-02-06
KDE CEElyssa 5KDE2009-04-08
Xfce CEXubuntu 8.10Xfce2009-02-24
Fluxbox CEXubuntu 8.10Fluxbox2009-04-07
7GloriaMainUbuntu 9.04GNOME2009-05-262010-10
Universal (Light)Ubuntu 9.04GNOME2009-05-26
x64Ubuntu 9.04GNOME2009-06-24
KDE CEKubuntu 9.04KDE2009-08-03
Xfce CEXubuntu 9.04Xfce2009-08-13
8HelenaMainUbuntu 9.10GNOME2009-11-282011-04
Universal (Light)Ubuntu 9.10GNOME2009-11-28
Gnome x64Ubuntu 9.10GNOME2009-12-14
KDEKubuntu 9.10KDE2010-02-06
KDE x64Kubuntu 9.10KDE2010-02-12
FluxboxHelena MainFluxbox2010-02-12
XfceXubuntu 9.10Xfce2010-03-31
LXDEHelena MainLXDE2010-03-31
9IsadoraMainUbuntu 10.04GNOME2010-05-182013-04
Gnome x64Ubuntu 10.04GNOME2010-05-18
LXDELubuntu 10.04LXDE2010-07-18
KDEKubuntu 10.04KDE2010-07-27
KDE x64Kubuntu 10.04KDE2010-07-27
XfceXubuntu 10.04Xfce2010-08-24
FluxboxLubuntu 10.04Fluxbox2010-09-06
10JuliaMainUbuntu 10.10GNOME2010-11-122012-04
Gnome x64Ubuntu 10.10GNOME2010-11-12
KDEKubuntu 10.10KDE2011-02-23
KDE x64Kubuntu 10.10KDE2011-02-23
LXDELubuntu 10.10LXDE2011-03-11
11KatyaMainUbuntu 11.04GNOME2011-05-262012-10
Gnome x64Ubuntu 11.04GNOME2011-05-26
LXDELubuntu 11.04LXDE2011-08-16
12LisaMainUbuntu 11.10GNOME 3 with MGSE,MATE2011-11-262013-04
KDEKubuntu 11.10KDE2012-02-02
LXDELubuntu 11.10LXDE2012-03-09
13MayaMainUbuntu 12.04Cinnamon, MATE2012-05-222017-04
XfceXubuntu 12.04Xfce2012-07-21
KDEKubuntu 12.04KDE2012-07-23
14NadiaMainUbuntu 12.10Cinnamon, MATE2012-11-202014-05
XfceXubuntu 12.10Xfce2012-12-21
KDEKubuntu 12.10KDE2012-12-23
15OliviaMainUbuntu 13.04Cinnamon, MATE2013-05-292014-01
XfceXfce2013-07-12
KDEKDE2013-07-21
16PetraMainUbuntu 13.10Cinnamon, MATE2013-11-302014-07
KDEKDE2013-12-22
XfceXfce2013-12-22
17QianaMainUbuntu 14.04Cinnamon, MATE2014-05-312019-04
KDEKDE2014-06-23
XfceXfce2014-06-15
17.1RebeccaMainCinnamon, MATE2014-11-29
KDEKDE2015-01-08
XfceXfce2015-01-11
17.2RafaelaMainCinnamon, MATE2015-06-30
KDEKDE2015-07-23
XfceXfce2015-07-23
17.3RosaMainCinnamon, MATE2015-12-04
KDEKDE2016-01-09
XfceXfce2016-01-09
18SarahMainUbuntu 16.04Cinnamon, MATE2016-06-302021

不过,Sarah 是上述列表中唯一不以“a”结尾的代号,可能是因为没有合适的名称。

elementary OS 的版本号和代号

因为我们谈过了 Ubuntu 和 Linux Mint,让我们继续看看 Ubuntu 家族的另外一位: elementary OS ,它也是基于 Ubuntu 的一个以优美著称的 Linux 发行版。

elementary OS 的版本号都是 0.X 这样递增的,第一个稳定版本是 0.1,然后是 0.2,现在的稳定版本是 0.3——不知道什么时候可以变成 1.0。

开源软件界之前一直有个传统就是使用极其微小的版本,比如 0.1,0.01 这样的,直到作者或开发团队觉得已经非常成熟了,才有可能变成 1.0 这样的看起来正式一些的版本号。当然,也有的软件从未进化到 1.0 就消亡了。不过虽然是这种看起来像是测试版本的版本号,却往往并不代表其质量和功能不可靠。而现在也有一些软件开始飙版本号,比如 Chrome、Firefox 之类的,我觉得用不了几年,或许我们就会见到 xx 100 这样的软件了。

而 elementary OS 的代号则是采用神话中神的名字,通常这些来自于罗马神话或北欧神话中。比如现在已有的三个版本的代号是 Jupiter(罗马神话中的神王)、 Luna (月神,不是“撸哪” )、 Freya(北欧神话中的爱与美之女神,不过 0.3 之前的代号名是 ISIS ,后因避讳而改名),以及现在的 0.4 Loki(北欧神话中的火与恶之神)。

Debian 的版本号和代号

让我们回到 Ubuntu 、Linux Mint 和 elementary OS 的父系看看。Debian 是 Ubuntu 及其族系派生的来源,它的代号命名非常有意思。事实上,Debian 这个发行版本身的名字就来源于其创始人 Ian 及其女朋友 Debra 的名词合写,虽然 Ian 已经去世,但是其名字却会随着 Debian 而长存。

Debian 的版本号是递增的,这并没什么特殊的,不过有趣的是所有的 Debian 发行版本的代号都来自于《玩具总动员》这个动画片中的角色名。这就是你为什么看到 Debian 的代号是 Jessie) 和 Woody 这样的原因。

如下是当前的 Debian 的版本号和代号:

版本代号发布日期Linux 内核安全支持期长期支持期
1.1Buzz1996-06-172.0N/A
1.2Rex1996-12-12N/AN/A
1.3Bo1997-06-052.0.33N/A
2.0Hamm1998-07-242.0.34N/A
2.1Slink1999-03-092.0.34, 2.0.35, 2.0.36, 2.0.382000-10-30
2.2Potato2000-08-142.0.38, 2.2.192003-06-30
3.0Woody2002-07-192.2.20, 2.4.62006-03-30
3.1Sarge6 June 20052.4.27, 2.6.82008-03-31
4.0Etch8 April 20072.6.182010-02-15
5.0Lenny14 February 20092.6.262012-02-06
6.0Squeeze6 February 20112.6.322014-07-192016-02-29
7Wheezy4 May 20133.22016-04-262018-05
8Jessie25–26 April 20153.162018-052020-04
9StretchTBA4.10TBATBA
10BusterTBATBATBATBA
11BullseyeTBATBATBATBA

我觉得动画片《玩具总动员》里面还有很多角色,所以我们不用担心不够用了。

openSUSE 的版本号和代号

openSUSE 的第一个版本 10.2 发布于 2006 年。

SUSE 家族的 Linux 发行版的版本号相当的任性,包括发行版的名字也换来换去。最初,该发行版的名字叫做 S.u.S.E Linux,这个名字从 1994 年用到了 1998 年,后来改成了 SuSE Linux(把名字中的“.”去掉了),然后到了 2003 年的时候变成了 SUSE Linux Enterprise。在 2005 年的时候,Novell 公司宣布将 SUSE 专业版系列变为开源项目,由于当时 SUSE 的版本是 9.X,所以第一个 SUSE Linux 的版本是以 10.0 开始的。到 2006 年底的时候,再次决定改名为 openSUSE,第一个版本是 10.2。接下来将近十年倒是没再改名称,直到 2015 年 openSUSE 已经发展到 13.2 时,又又又改名成 openSUSE Leap,版本号嘛,好吧,就是这么任性,直接变成了 42.1(当然这个数字是有说法的)。

SUSE 家族最初发布的 Linux 发行版是没有代号的,后来可能是受到了其它 Linux 发行版的启发,从 openSUSE 11.2 开始有了代号。由于 openSUSE 以绿色为代表色,所以它的代号也都是各种绿色色调。

如下是当前的 openSUSE 的版本号和代号:

名字版本代号发布日期生命周期内核版本
标准Evergreen/ Major
SUSE Linux10.0N/A2005-10-062007-11-30N/A2.6.13
10.1N/A2006-05-112008-05-31N/A2.6.16
openSUSE10.2N/A2006-12-072008-11-30N/A2.6.18
10.3N/A2007-10-042009-10-31N/A2.6.22
11.0N/A2008-06-192010-06-26N/A2.6.25
11.1N/A2008-12-182011-01-142012-04-132.6.27
11.2Emerald2009-11-122011-05-122013-112.6.31
11.3Teal2010-07-152012-01-16N/A2.6.34
11.4Celadon2011-03-102012-11-052015-072.6.37
12.1Asparagus2011-11-162013-05-15N/A3.1.0
12.2Mantis2012-09-052014-01-15N/A3.4.6
12.3Dartmouth2013-03-132015-01-01N/A3.7.10
13.1Bottle2013-11-192016-012016-113.11.6
13.2Harlequin2014-11-04Q1 2017N/A3.16.6
openSUSE Leap42.1Malachite2015-11-04Q2 2017N/A4.1
42.2N/A2016-11-16Q2 2018N/A4.4

可能你都从来没听说过这么多的绿色色调,或许你会担心 openSUSE 会把绿色都用完,不过我觉得不用担心,毕竟连灰色都有 15 种之多,何况绿色呢?

你怎么看?

你喜欢哪个代号呢?你觉得是代号好记还是版本号好记呢?你认为需要代号吗?你又喜欢哪个发行版的代号命名方式呢?请在下面发表您的留言吧。