标签 版本 下的文章

在 Ubuntu 中想安装一个软件包的一个特别指定的版本?你可以通过下面的方式来轻松地完成:

sudo apt install package_name=package_version

你如何知道某个软件包有哪些可用的版本?可以使用这个命令:

apt list --all-versions package_name

在下面的屏幕截屏中,你可以看到,我有两个可用的 VLC 版本,我使用命令来安装较旧的版本:

install specific versions apt ubuntu

听起来像一个简单的任务,对吧?但是事情并非看起来那么简单。这里有一些不确定是否会出现,但是可能会涉及的东西。

这篇教程将涵盖使用 aptapt-get 命令来安装一个具体指定的程序的版本的所有的重要的方面。

安装一个具体指定版本的程序需要知道的事

在基于 Ubuntu 和 Debian 发行版中,你需要知道一些关于 APT 和存储库是如何工作的知识。

同一个软件包源没有较旧的版本

Ubuntu 在其存储库中不保留较旧版本的软件包。在特殊的情况下,你可以暂时性地看到多个版本。例如,你运行 APT 更新(但不升级)时,可能会有一个可用的新版本。在 APT 缓存中,你可以看到同一个软件包的两个版本。但是,一旦软件包被升级到了新的版本,较旧版本的软件包将从 APT 缓存 和存储库中移除。

使用多个软件包源来使用不同的版本

为获取同一个的软件包的多个版本,你必须得添加多个软件包源。例如,VLC 是版本 3.x 系列。添加 VLC 每日构建 PPA 将会提供(不稳定的)版本 4.x 系列。

同样,你可以下载不同版本的 DEB 文件,并安装它

较高版本编号的版本通常有优先权

如果你有来自多个软件包源的相同名称的软件,默认情况下,Ubuntu 将安装可用的最高版本编号的版本。

在前面的示例中,如果我安装 VLC ,那么它将会安装 4.x 系列的版本,而不是 3.x 系列的版本。

较旧版本将升级到可用的较新版本

这是另外一个可能存在的问题。即使你安装较旧版本的软件包,它也会升级到较新的版本(如果存在可用的较新版本)。你必须 保留该软件包来防止其升级

依赖关系也需要安装

如果软件包有依赖关系,你也需要安装必要的依赖关系软件包。

现在,你已经知道一些可能存在的问题,让我们看看如何解决它们。

安装一个软件包的具体指定版本

在这篇教程中,我将以 VLC 为例。在 Ubuntu 的存储库中可获得 VLC 版本。我添加了每日构建 PPA ,它将向我提供 VLC 的 4.0 版本的候选版本。

如你所见,在现在的系统中,我有两个可用的 VLC 版本:

install specific versions apt ubuntu

~$ apt list -a vlc
Listing... Done
vlc/jammy 4.0.0~rc1~~git20220516+r92284+296~ubuntu22.04.1 amd64
vlc/jammy 3.0.16-1build7 amd64
vlc/jammy 3.0.16-1build7 i386

因为较高版本编号版本有优先权,使用 apt install vlc 命令将会导致安装 VLC 的 4.0 版本。但是,因为这篇教程的缘由,我想安装较旧的版本 3.0.16 。

sudo apt install vlc=3.0.16-1build7

但是,这里会有这样的事。VLC 软件包有一些依赖关系,并且这些依赖关系也需要具体指定的版本。因此,在 Ubuntu 为其尝试安装最新的版本时,你将会遇到经典的 你已保留残缺软件包 you have held broken packages 错误。

problem installing specific version apt ubuntu

为修复这个错误,你需要为其提供它所投诉的所有依赖关系的软件包的具体指定版本。因此,该命令会变成这样:

sudo apt install vlc=3.0.16-1build7 \
         vlc-bin=3.0.16-1build7 \
         vlc-plugin-base=3.0.16-1build7 \
         vlc-plugin-qt=3.0.16-1build7 \
         vlc-plugin-video-output=3.0.16-1build7 \
         vlc-l10n=3.0.16-1build7 \
         vlc-plugin-access-extra=3.0.16-1build7 \
         vlc-plugin-notify=3.0.16-1build7 \
         vlc-plugin-samba=3.0.16-1build7 \
         vlc-plugin-skins2=3.0.16-1build7 \
         vlc-plugin-video-splitter=3.0.16-1build7 \
         vlc-plugin-visualization=3.0.16-1build7

说明一下,每行结尾处的 \ 只是用来将多行命令来写入同一个命令的一种方式。

它有作用吗?在很多情况下,它是有作用的。 但是,我选择了一个复杂的 VLC 示例,它有很多依赖关系。甚至这些所涉及的依赖关系也依赖于其它的软件包。所以,它就变得令人难以处理。

一种替代的方法是在安装时指定软件包源。

替代方式,指定存储库

你已经添加多个软件包源,因此,你应该对这些软件包的来源有一些了解。

使用下面的命令来搜索存储库:

apt-cache policy | less

注意存储库名称后面的行:

500 http://security.ubuntu.com/ubuntu jammy-security/multiverse i386 Packages
     release v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=multiverse,b=i386
     origin security.ubuntu.com

你可以具体指定 ola 等参数。

在我原来的示例中,我想安装来自 Ubuntu 存储库的 VLC(获取版本 3.16),而不是安装来 PPA 的版本(它将向我提供版本 4)。

因此,下面的命令将安装 VLC 版本 3.16 及其所有的依赖关系:

sudo apt install -t "o=ubuntu" vlc

install from repository source

看起来令人满意?但是,当你必须更新系统时,问题就来了。它接下来会控诉找不到指定的软件包版本。

还能做什么?

为安装较旧的软件包版本,从你的系统中移除较新版本的软件包源(如果可能的话)。它将有助于逃脱这些依赖关系地狱。

如果不能这么做,检查你是否可以从其它一些软件包的打包格式来获取,像 Snap、Flatpak、AppImage 等等。事实上,Snap 和 Flatpak 也允许你从可用的版本中选择和安装。因为这些应用程序是沙盒模式的,所以它很容易管理不同版本的依赖关系。

保留软件包,防止升级

如果你完成安装一个指定的程序版本,你可能想避免意外地升级到较新的版本。实现这一点并不太复杂。

sudo apt-mark hold package_name

你可以免除保留软件包,以便它能稍后升级:

sudo apt-mark unhold package_name

注意,软件包的依赖关系不会自动地保留。它们需要单独地指明。

结论

如你所见,安装选定软件包版本有一定之规。只有当软件包有依赖关系时,那么事情就会变得复杂,然后,你就会进入依赖关系地狱。

我希望你在这篇教程中学到一些新的东西。如果你有问题或建议来改善它,请在评论区告诉我。


via: https://itsfoss.com/apt-install-specific-version-2/

作者:Abhishek Prakash 选题:lkxed 译者:robsean 校对:wxy

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

显示和解释有关 Linux 版本的信息比看起来要复杂一些。

与引用一个简单的版本号不同,识别 Linux 版本有很多种方法。即使只是快速查看一下 uname 命令的输出,也可以告诉你一些信息。这些信息是什么,它告诉你什么?

在本文中,我们将认真研究 uname 命令的输出以及其他一些命令和文件提供的版本说明。

使用 uname

每当在 Linux 系统终端窗口中执行命令 uname -a 时,都会显示很多信息。那是因为这个小小的 a 告诉 uname 命令你想查看该命令能提供的全部输出。结果显示的内容将告诉你许多有关该系统的各种信息。实际上,显示的每一块信息都会告诉你一些关于系统的不同信息。

例如,uname -a 输出看起来像这样:

$ uname -a
Linux dragonfly 5.4.0-37-generic #41-Ubuntu SMP Wed Jun 3 18:57:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

尽管这可能不太重要,但你可以使用一个按适当的顺序包含 uname 所有选项来显示相同的信息:

$ uname -snmrvpio
Linux dragonfly 5.4.0-37-generic #41-Ubuntu SMP Wed Jun 3 18:57:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

要将这一长串信息分解为单独的块,可以使用类似这样的 for 循环来遍历每个选项:

$ for option in s n m r v p i o; do echo -n "$option: "; uname -$option; done
s: Linux
n: dragonfly
m: x86_64
r: 5.4.0-37-generic
v: #41-Ubuntu SMP Wed Jun 3 18:57:02 UTC 2020
p: x86_64
i: x86_64
o: GNU/Linux

该循环显示了该选项提供了哪些信息。uname 手册页提供了每个选项的描述。以下是清单:

  • Linux –- 内核名称(选项 s
  • dragonfly –- 节点名(选项 n
  • x86\_64 –- 机器硬件名(选项 m
  • 5.4.0-37-generic –- 内核发布版本(选项 r
  • 41-Ubuntu SMP Wed Jun 3 18:57:02 UTC 2020 -- 内核版本(选项 v

  • x86\_64 –- 处理器(选项 p
  • x86\_64 –- 硬件平台(选项 i
  • GNU/Linux –- 操作系统(选项 o

要更深入地研究显示的信息,请认真查看显示的内核发行数据。第四行中的 5.4.0-37 不仅仅是一串任意数字。每个数字都很重要。

  • 5 表示内核版本
  • 4 表示主要版本
  • 0 表示次要版本
  • 37 表示最新补丁

此外,在上面的循环中输出的第 5 行(内核版本)中的 #41 表示此发布版本已编译 41 次。

如果你只想显示所有信息中的一项,那么单个选项可能很有用。例如,命令 uname -n 可以仅告诉你系统名称,而 uname -r 仅可以告诉你内核发布版本。在盘点服务器或构建脚本时,这些和其他选项可能很有用。

在 Red Hat 系统时,uname -a 命令将提供相同种类的信息。这是一个例子:

$ uname -a
Linux fruitfly 4.18.0-107.el8.x86_64 #1 SMP Fri Jun 14 13:46:34 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

发行版信息

如果你需要了解运行的发行版是什么,那么 uname 的输出不会对你有太大帮助。毕竟,内核版本与发行版不同。关于这个信息,你可以在 Ubuntu 和其他基于 Debian 的系统上使用 lsb_release -r 命令,而在 Red Hat 上可以显示 /etc/redhat-release 文件的内容。

对于 Debian 系统:

$ lsb_release -r
Release: 20.04

对于 Red Hat 及相关系统:

$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.1 Beta (Ootpa)

使用 /proc/version

/proc/version 文件还可以提供有关 Linux 版本的信息。该文件中提供的信息与 uname -a 输出有很多共同点。以下是例子。

在 Ubuntu 上:

$ cat /proc/version
Linux version 5.4.0-37-generic (buildd@lcy01-amd64-001) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #41-Ubuntu SMP Wed Jun 3 18:57:02 UTC 2020

在 RedHat 上:

$ cat /proc/version
Linux version 4.18.0-107.el8.x86_64 ([email protected]) (gcc version 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)) #1 SMP Fri Jun 14 13:46:34 UTC 2019

总结

Linux 系统提供了很多关于内核和发行版安装的信息。你只需要知道在哪里或如何寻找并理解它的含义。


via: https://www.networkworld.com/article/3565432/how-to-decipher-linux-release-info.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

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

Linux Mint 每两年发布一次主版本(如 Mint 19),每六个月左右发布一次次版本(如 Mint 19.1、19.2 等)。 你可以自己升级 Linux Mint 版本,而次版本也会自动更新。

在所有这些版本中,你可能想知道你正在使用的是哪个版本。了解 Linux Mint 版本号可以帮助你确定某个特定软件是否适用于你的系统,或者检查你的系统是否已达到使用寿命。

你可能需要 Linux Mint 版本号有多种原因,你也有多种方法可以获取此信息。让我向你展示用图形和命令行的方式获取 Mint 版本信息。

使用终端查看 Linux Mint 版本号的方法

我将介绍几种使用非常简单的命令查看 Linux Mint 版本号和代号的方法。 你可以从 “菜单” 中打开终端,或按 CTRL+ALT+T(默认热键)打开。

本文中的最后两个命令还会输出你当前的 Linux Mint 版本所基于的 Ubuntu 版本。

1、/etc/issue

从最简单的 CLI 方法开始,你可以打印出 /etc/issue 的内容来检查你的版本号和代号:

[email protected]:~$ cat /etc/issue
Linux Mint 19.2 Tina \n \l

2、hostnamectl

hostnamectl

这一个命令(hostnamectl)打印的信息几乎与“系统信息”中的信息相同。 你可以看到你的操作系统(带有版本号)以及你的内核版本。

3、lsb\_release

lsb_release 是一个非常简单的 Linux 实用程序,用于查看有关你的发行版本的基本信息:

[email protected]:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    LinuxMint
Description:    Linux Mint 19.2 Tina
Release:    19.2
Codename:    tina

注: 我使用 –a 标签打印所有参数, 但你也可以使用 -s 作为简写格式,-d 用于描述等 (用 man lsb_release 查看所有选项)

4、/etc/linuxmint/info

/etc/linuxmint/info

这不是命令,而是 Linux Mint 系统上的文件。只需使用 cat 命令将其内容打印到终端,然后查看你的版本号和代号。

5、使用 /etc/os-release 命令也可以获取到 Ubuntu 代号

/etc/os-release

Linux Mint 基于 Ubuntu。每个 Linux Mint 版本都基于不同的 Ubuntu 版本。了解你的 Linux Mint 版本所基于的 Ubuntu 版本有助你在必须要使用 Ubuntu 版本号的情况下使用(比如你需要在 Linux Mint 中安装最新的 Virtual Box添加仓库时)。

os-release 则是另一个类似于 info 的文件,向你展示 Linux Mint 所基于的 Ubuntu 版本代号。

6、使用 /etc/upstream-release/lsb-release 只获取 Ubuntu 的基本信息

如果你只想要查看有关 Ubuntu 的基本信息,请输出 /etc/upstream-release/lsb-release

[email protected]:~$ cat /etc/upstream-release/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04 LTS"

特别提示:你可以使用 uname 命令查看 Linux 内核版本

[email protected]:~$ uname -r
4.15.0-54-generic

注: -r 代表 release,你可以使用 man uname 查看其他信息。

使用 GUI 查看 Linux Mint 版本信息

如果你对终端和命令行不满意,可以使用图形方法。如你所料,这个非常明了。

打开“菜单” (左下角),然后转到“偏好设置 > 系统信息”:

Linux Mint 菜单

或者,在菜单中,你可以搜索“System Info”:

Menu Search System Info

在这里,你可以看到你的操作系统(包括版本号),内核和桌面环境的版本号:

System Info

总结

我已经介绍了一些不同的方法,用这些方法你可以快速查看你正在使用的 Linux Mint 的版本和代号(以及所基于的 Ubuntu 版本和内核)。我希望这个初学者教程对你有所帮助。请在评论中告诉我们你最喜欢哪个方法!


via: https://itsfoss.com/check-linux-mint-version/

作者:Sergiu 选题:lujun9972 译者:Morisun029 校对:wxy

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

Find The Linux Distribution Name, Version And Kernel Details

本指南介绍了如何查找 Linux 发行版名称、版本和内核详细信息。如果你的 Linux 系统有 GUI 界面,那么你可以从系统设置中轻松找到这些信息。但在命令行模式下,初学者很难找到这些详情。没有问题!我这里给出了一些命令行方法来查找 Linux 系统信息。可能有很多,但这些方法适用于大多数 Linux 发行版。

1、查找 Linux 发行版名称、版本

有很多方法可以找出 VPS 中运行的操作系统。

方法 1:

打开终端并运行以下命令:

$ cat /etc/*-release

CentOS 7 上的示例输出:

CentOS Linux release 7.0.1406 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CentOS Linux release 7.0.1406 (Core)
CentOS Linux release 7.0.1406 (Core)

Ubuntu 18.04 上的示例输出:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

方法 2:

以下命令也能获取你发行版的详细信息。

$ cat /etc/issue

Ubuntu 18.04 上的示例输出:

Ubuntu 18.04.2 LTS \n \l

方法 3:

以下命令能在 Debian 及其衍生版如 Ubuntu、Linux Mint 上获取发行版详细信息。

$ lsb_release -a

示例输出:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:    18.04
Codename:   bionic

2、查找 Linux 内核详细信息

方法 1:

要查找 Linux 内核详细信息,请在终端运行以下命令。

$ uname -a

CentOS 7 上的示例输出:

Linux server.ostechnix.lan 3.10.0-123.9.3.el7.x86_64 #1 SMP Thu Nov 6 15:06:03 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Ubuntu 18.04 上的示例输出:

Linux ostechnix 4.18.0-25-generic #26~18.04.1-Ubuntu SMP Thu Jun 27 07:28:31 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

或者,

$ uname -mrs

示例输出:

Linux 4.18.0-25-generic x86_64

这里,

  • Linux – 内核名
  • 4.18.0-25-generic – 内核版本
  • x86_64 – 系统硬件架构(即 64 位系统)

有关 uname 命令的更多详细信息,请参考手册页。

$ man uname

方法2:

在终端中,运行以下命令:

$ cat /proc/version

CentOS 7 上的示例输出:

Linux version 3.10.0-123.9.3.el7.x86_64 ([email protected]) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Thu Nov 6 15:06:03 UTC 2014

Ubuntu 18.04 上的示例输出:

Linux version 4.18.0-25-generic ([email protected]) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #26~18.04.1-Ubuntu SMP Thu Jun 27 07:28:31 UTC 2019

这些是查找 Linux 发行版的名称、版本和内核详细信息的几种方法。希望你觉得它有用。


via: https://www.ostechnix.com/find-out-the-linux-distribution-name-version-and-kernel-details/

作者:sk 选题:lujun9972 译者:geekpi 校对:wxy

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

Check Linux Package Version

大多数人都知道如何在 Linux 中查找已安装软件包的版本,但是,你会如何查找那些还没有安装的软件包的版本呢?很简单!本文将介绍在 Debian 及其衍生品(如 Ubuntu)中,如何在软件包安装之前检查它的版本。对于那些想在安装之前知道软件包版本的人来说,这个小技巧可能会有所帮助。

在安装之前检查 Linux 软件包版本

在基于 DEB 的系统中,即使软件包还没有安装,也有很多方法可以查看他的版本。接下来,我将一一介绍。

方法 1 – 使用 Apt

检查软件包的版本的懒人方法:

$ apt show <package-name>

示例:

$ apt show vim

示例输出:

Package: vim
Version: 2:8.0.1453-1ubuntu1.1
Priority: optional
Section: editors
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian Vim Maintainers <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 2,852 kB
Provides: editor
Depends: vim-common (= 2:8.0.1453-1ubuntu1.1), vim-runtime (= 2:8.0.1453-1ubuntu1.1), libacl1 (>= 2.2.51-8), libc6 (>= 2.15), libgpm2 (>= 1.20.7), libpython3.6 (>= 3.6.5), libselinux1 (>= 1.32), libtinfo5 (>= 6)
Suggests: ctags, vim-doc, vim-scripts
Homepage: https://vim.sourceforge.io/
Task: cloud-image, server
Supported: 5y
Download-Size: 1,152 kB
APT-Sources: http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
Description: Vi IMproved - enhanced vi editor
 Vim is an almost compatible version of the UNIX editor Vi.
 .
 Many new features have been added: multi level undo, syntax
 highlighting, command line history, on-line help, filename
 completion, block operations, folding, Unicode support, etc.
 .
 This package contains a version of vim compiled with a rather
 standard set of features.  This package does not provide a GUI
 version of Vim.  See the other vim-* packages if you need more
 (or less).

N: There is 1 additional record. Please use the '-a' switch to see it

正如你在上面的输出中看到的,apt show 命令显示了软件包许多重要的细节,例如:

  1. 包名称,
  2. 版本,
  3. 来源(vim 来自哪里),
  4. 维护者,
  5. 包的主页,
  6. 依赖,
  7. 下载大小,
  8. 简介,
  9. 其他。

因此,Ubuntu 仓库中可用的 Vim 版本是 8.0.1453。如果我把它安装到我的 Ubuntu 系统上,就会得到这个版本。

或者,如果你不想看那么多的内容,那么可以使用 apt policy 这个命令:

$ apt policy vim
vim:
  Installed: (none)
  Candidate: 2:8.0.1453-1ubuntu1.1
  Version table:
     2:8.0.1453-1ubuntu1.1 500
        500 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
     2:8.0.1453-1ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages

甚至更短:

$ apt list vim
Listing... Done
vim/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.1 amd64
N: There is 1 additional version. Please use the '-a' switch to see it

apt 是 Ubuntu 最新版本的默认包管理器。因此,这个命令足以找到一个软件包的详细信息,给定的软件包是否安装并不重要。这个命令将简单地列出给定包的版本以及其他详细信息。

方法 2 – 使用 Apt-get

要查看软件包的版本而不安装它,我们可以使用 apt-get 命令和 -s 选项。

$ apt-get -s install vim

示例输出:

NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  ctags vim-doc vim-scripts
The following NEW packages will be installed:
  vim
0 upgraded, 1 newly installed, 0 to remove and 45 not upgraded.
Inst vim (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Conf vim (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])

这里,-s 选项代表 模拟。正如你在输出中看到的,它不执行任何操作。相反,它只是模拟执行,好让你知道在安装 Vim 时会发生什么。

你可以将 install 选项替换为 upgrade,以查看升级包时会发生什么。

$ apt-get -s upgrade vim

方法 3 – 使用 Aptitude

在 Debian 及其衍生品中,aptitude 是一个基于 ncurses(LCTT 译注:ncurses 是终端基于文本的字符处理的库)和命令行的前端 APT 包管理器。

使用 aptitude 来查看软件包的版本,只需运行:

$ aptitude versions vim
p   2:8.0.1453-1ubuntu1                                                              bionic                                                        500
p   2:8.0.1453-1ubuntu1.1                                                            bionic-security,bionic-updates                                500

你还可以使用模拟选项(-s)来查看安装或升级包时会发生什么。

$ aptitude -V -s install vim
The following NEW packages will be installed:
  vim [2:8.0.1453-1ubuntu1.1]
0 packages upgraded, 1 newly installed, 0 to remove and 45 not upgraded.
Need to get 1,152 kB of archives. After unpacking 2,852 kB will be used.
Would download/install/remove packages.

这里,-V 标志用于显示软件包的详细信息。

$ aptitude -V -s upgrade vim

类似的,只需将 install 替换为 upgrade 选项,即可查看升级包会发生什么。

$ aptitude search vim -F "%c %p %d %V"

这里,

  • -F 用于指定应使用哪种格式来显示输出,
  • %c – 包的状态(已安装或未安装),
  • %p – 包的名称,
  • %d – 包的简介,
  • %V – 包的版本。

当你不知道完整的软件包名称时,这非常有用。这个命令将列出包含给定字符串(即 vim)的所有软件包。

以下是上述命令的示例输出:

[...]
p vim                                                           Vi IMproved - enhanced vi editor                                         2:8.0.1453-1ub
p vim-tlib                                                      Some vim utility functions                                               1.23-1
p vim-ultisnips                                                 snippet solution for Vim                                                 3.1-3
p vim-vimerl                                                    Erlang plugin for Vim                                                    1.4.1+git20120
p vim-vimerl-syntax                                             Erlang syntax for Vim                                                    1.4.1+git20120
p vim-vimoutliner                                               script for building an outline editor on top of Vim                      0.3.4+pristine
p vim-voom                                                      Vim two-pane outliner                                                    5.2-1
p vim-youcompleteme                                             fast, as-you-type, fuzzy-search code completion engine for Vim           0+20161219+git

方法 4 – 使用 Apt-cache

apt-cache 命令用于查询基于 Debian 的系统中的 APT 缓存。对于要在 APT 的包缓存上执行很多操作时,它很有用。一个很好的例子是我们可以从某个仓库或 ppa 中列出已安装的应用程序

不仅是已安装的应用程序,我们还可以找到软件包的版本,即使它没有被安装。例如,以下命令将找到 Vim 的版本:

$ apt-cache policy vim

示例输出:

vim:
  Installed: (none)
  Candidate: 2:8.0.1453-1ubuntu1.1
  Version table:
     2:8.0.1453-1ubuntu1.1 500
        500 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
     2:8.0.1453-1ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages

正如你在上面的输出中所看到的,Vim 并没有安装。如果你想安装它,你会知道它的版本是 8.0.1453。它还显示 vim 包来自哪个仓库。

方法 5 – 使用 Apt-show-versions

在 Debian 和基于 Debian 的系统中,apt-show-versions 命令用于列出已安装和可用软件包的版本。它还显示所有可升级软件包的列表。如果你有一个混合的稳定或测试环境,这是非常方便的。例如,如果你同时启用了稳定和测试仓库,那么你可以轻松地从测试库找到应用程序列表,还可以升级测试库中的所有软件包。

默认情况下系统没有安装 apt-show-versions,你需要使用以下命令来安装它:

$ sudo apt-get install apt-show-versions

安装后,运行以下命令查找软件包的版本,例如 Vim:

$ apt-show-versions -a vim
vim:amd64 2:8.0.1453-1ubuntu1   bionic          archive.ubuntu.com
vim:amd64 2:8.0.1453-1ubuntu1.1 bionic-security security.ubuntu.com
vim:amd64 2:8.0.1453-1ubuntu1.1 bionic-updates  archive.ubuntu.com
vim:amd64 not installed

这里,-a 选项打印给定软件包的所有可用版本。

如果已经安装了给定的软件包,那么就不需要使用 -a 选项。在这种情况下,只需运行:

$ apt-show-versions vim

差不多完了。如果你还了解其他方法,在下面的评论中分享,我将检查并更新本指南。


via: https://www.ostechnix.com/how-to-check-linux-package-version-before-installing-it/

作者:sk 选题:lujun9972 译者:MjSeven 校对:wxy

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

有时,最新版本的安装包可能无法按预期工作。你的程序可能与更新的软件包不兼容,并且仅支持特定的旧版软件包。在这种情况下,你可以立即将有问题的软件包降级到其早期的工作版本。请参阅我们的旧指南,在这了解如何降级 Ubuntu 及其衍生版中的软件包以及在这了解如何降级 Arch Linux 及其衍生版中的软件包。但是,你无需降级某些软件包。我们可以同时使用多个版本。例如,假设你在测试部署在 Ubuntu 18.04 LTS 中的LAMP 栈的 PHP 程序。过了一段时间,你发现应用程序在 PHP 5.6 中工作正常,但在 PHP 7.2 中不正常(Ubuntu 18.04 LTS 默认安装 PHP 7.x)。你打算重新安装 PHP 或整个 LAMP 栈吗?但是没有必要。你甚至不必将 PHP 降级到其早期版本。在这个简短的教程中,我将向你展示如何在 Ubuntu 18.04 LTS 中切换多个 PHP 版本。它没你想的那么难。请继续阅读。

在多个 PHP 版本之间切换

要查看 PHP 的默认安装版本,请运行:

$ php -v
PHP 7.2.7-0ubuntu0.18.04.2 (cli) (built: Jul 4 2018 16:55:24) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.7-0ubuntu0.18.04.2, Copyright (c) 1999-2018, by Zend Technologies

如你所见,已安装的 PHP 的版本为 7.2.7。在测试你的程序几天后,你会发现你的程序不支持 PHP7.2。在这种情况下,同时使用 PHP5.x 和 PHP7.x 是个不错的主意,这样你就可以随时轻松地在任何支持的版本之间切换。

你不必删除 PHP7.x 或重新安装 LAMP 栈。你可以同时使用 PHP5.x 和 7.x 版本。

我假设你还没有在你的系统中卸载 PHP 5.6。万一你已将其删除,你可以使用下面的 PPA 再次安装它。

你可以从 PPA 中安装 PHP 5.6:

$ sudo add-apt-repository -y ppa:ondrej/php
$ sudo apt update
$ sudo apt install php5.6

从 PHP 7.x 切换到 PHP 5.x.

首先使用命令禁用 PHP 7.2 模块:

$ sudo a2dismod php7.2
Module php7.2 disabled.
To activate the new configuration, you need to run:
systemctl restart apache2

接下来,启用 PHP 5.6 模块:

$ sudo a2enmod php5.6

将 PHP 5.6 设置为默认版本:

$ sudo update-alternatives --set php /usr/bin/php5.6

或者,你可以运行以下命令来设置默认情况下要使用的全局 PHP 版本。

$ sudo update-alternatives --config php

输入选择的号码将其设置为默认版本,或者只需按回车键保持当前选择。

如果你已安装其他 PHP 扩展,请将它们设置为默认值。

$ sudo update-alternatives --set phar /usr/bin/phar5.6

最后,重启 Apache Web 服务器:

$ sudo systemctl restart apache2

现在,检查 PHP 5.6 是否是默认版本:

$ php -v
PHP 5.6.37-1+ubuntu18.04.1+deb.sury.org+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

从 PHP 5.x 切换到 PHP 7.x.

同样,你可以从 PHP 5.x 切换到 PHP 7.x 版本,如下所示。

$ sudo a2enmod php7.2
$ sudo a2dismod php5.6
$ sudo update-alternatives --set php /usr/bin/php7.2
$ sudo systemctl restart apache2

提醒一句:

最终稳定版 PHP 5.6 于 2017 年 1 月 19 日达到活跃支持截止。但是,直到 2018 年 12 月 31 日,PHP 5.6 将继续获得对关键安全问题的支持。所以,建议尽快升级所有 PHP 程序并与 PHP 7.x 兼容。

如果你希望防止 PHP 将来自动升级,请参阅以下指南。

就是这些了。希望这有帮助。还有更多的好东西。敬请关注!

干杯!


via: https://www.ostechnix.com/how-to-switch-between-multiple-php-versions-in-ubuntu/

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

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