如何安装某些软件包的特定版本?

364 package-management software-installation

我的问题分为两部分:

  1. 如何知道安装包的版本?
  2. 如何安装特定的软件包版本?

Avi*_*Raj 457

如何知道安装包的版本?

apt-cache policy <package name>
Run Code Online (Sandbox Code Playgroud)

上面的命令将根据您运行的 Ubuntu 版本显示已安装的软件包版本以及存储库中的所有可用版本。它不显示用于另一个版本的 Ubuntu(不是您的)的软件包版本。

例子:

$ apt-cache policy gparted
gparted:
  Installed: 0.16.1-1
  Candidate: 0.16.1-1
  Version table:
 *** 0.16.1-1 0
        500 http://ubuntu.inode.at/ubuntu/ saucy/main amd64 Packages
        100 /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)

所以安装的 gparted 版本是0.16.1-1.

如何安装特定的软件包版本?

sudo apt-get install <package name>=<version>
Run Code Online (Sandbox Code Playgroud)

例子:

$ sudo apt-get install gparted=0.16.1-1
Reading package lists... Done
Building dependency tree       
Reading state information... Done
gparted is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 265 not upgraded.
Run Code Online (Sandbox Code Playgroud)

  • 在我尝试过的每种情况下,我 ** 总是** 收到错误“以下包具有未满足的依赖项:”,后跟包列表。有什么办法让它自动解决吗? (6认同)
  • @FabricioFCav 什么是“麦迪逊”?我发现 `apt list -a &lt;packagename&gt;` 有效(当多个软件包版本可用时,`apt list` 甚至提示 `-a` 开关) (3认同)
  • 请注意,它很可能会失败,因为存储库中通常只有 1 或 2 个版本的软件包可用。如果你想要一个不同于当前为你的发行版设计的版本,你可能需要下载它并使用 `sudo dkpg -i &lt;package-file&gt;` 安装。依赖错误需要通过下载和安装(也使用`dkpg`)所有丢失的包来解决(这可能需要多次迭代)。或者,您可以下载程序源代码,编译并安装它(这也需要手动解析依赖项)。 (2认同)
  • 列出所有选项: apt list madison &lt;package name&gt; (2认同)
  • @dualed **apt** 将 `madison` 理解为 *&lt;packagename&gt;*,因此如果该包不存在,它不会执行任何操作(您可以使用 `apt list asdasdas &lt;packagename&gt;` 对其进行测试)。你的命令是正确的 -&gt; `apt list -a &lt;packagename&gt;` (2认同)

May*_*hux 20

没有通用的方法来检查已安装软件包的版本,但大多数都可以使用以下命令进行检查:

command -v 
Run Code Online (Sandbox Code Playgroud)

例如要知道 apache2 的版本:

apache2 -v
Run Code Online (Sandbox Code Playgroud)

但这可能不适用于其他软件包,因此最佳做法是搜索手册。

man XXX
Run Code Online (Sandbox Code Playgroud)

并搜索显示版本的选项。

要安装特定版本的软件包:

sudo apt-get install package=version
Run Code Online (Sandbox Code Playgroud)

例如:

sudo apt-get install apache2=2.3.35-4ubuntu1
Run Code Online (Sandbox Code Playgroud)

  • 我们还可以使用 dpkg -l package-name 检查已安装软件包的版本 (13认同)
  • 指定版本时,您在哪里找到/追踪元“2.3.35-4ubuntu1”? (10认同)
  • @Erutan409 - 使用 `apt-cache madison packagename` - 它将显示您安装/配置的任何存储库(包括 PPA)可以看到的所有版本 (6认同)
  • @Erutan409 您上面的评论是您如何做到这一点。 (2认同)