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

我的问题分为两部分:
1. 如何知道已安装软件包的版本? 2. 如何安装特定版本的软件包?

23请不要投票删除此帖子。它作为一个指示牌非常有用。重复的帖子可以引导他人找到正确的问答。 - terdon
2个回答

如何知道已安装软件包的版本?
apt-cache policy <package name>

上述命令将显示已安装的软件包版本,以及根据您所运行的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

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

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

sudo apt-get install <package name>=<version>

例子:

$ 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.

1你能否请提供第二个命令的更多细节?有没有任何限制?例如,12.04版本的用户是否可以安装13.10版本中可用的软件包的版本? - DK Bose
1aptitude中,按下回车键会显示有关软件包的信息,并且在屏幕底部会列出可用版本的列表。 - karatedog
在Cygwin中,类似的apt-cyg用法是否适用:“apt-cyg install package=version”? - Danijel
8每次我试过这个的时候都会始终收到错误信息 以下软件包存在未满足的依赖关系:,随后是一系列软件包的列表。有没有办法让它自动解决这个问题? - Hubro
6请注意,这很可能会失败,因为存储库中通常只有1或2个版本的软件包可用。如果您想要与当前为您的发行版设计的版本不同的版本,您可能需要下载并使用sudo dkpg -i <package-file>进行安装。依赖错误需要通过下载和安装(也使用dkpg)所有缺失的软件包来解决(这可能需要多次迭代)。或者,您可以下载程序源代码,编译并安装它(这也需要手动解决依赖关系)。 - nuoritoveri
3列出所有选项: apt list madison <软件包名称> - FabricioFCarv
3@FabricioFCarv 什么是 madison?我发现 apt list -a <packagename> 的用法(当有多个包版本可用时,apt list 甚至会提示 -a 开关)。 - dualed
4@dualed apt理解madison作为一个*<软件包名>*,所以如果该软件包不存在,它就不会执行任何操作(您可以使用apt list asdasdas <软件包名>来进行测试)。您的命令是正确的-> apt list -a <软件包名> - Madacol
只是一个使用旧版本包的例子,所以"apt list"命令可以接受多个参数: 可以使用以下命令替代旧的madison:apt list tmux gcc mtr-tiny...就像这样。 使用"-a"参数,您可以获取所有版本。 - FabricioFCarv
我没有找到明确的文件记录,但是通配符可能是一种有用的方法来保持稳定的主次版本,并允许进行补丁升级。 - Brent Bradburn
这似乎不起作用。```sudo apt install openssh-client=9.2p1-2 正在读取软件包列表... 完成 正在构建依赖关系树... 完成 正在读取状态信息... 完成 无法找到软件包 openssh-client,但可以通过另一个软件包引用。 这可能意味着该软件包已丢失、已被淘汰或仅在其他来源中可用。 然而,以下软件包可以替代它: openssh-serverE: 找不到 'openssh-client' 的版本 '9.2p1-2'```但这是我当前安装的版本!应该能找到的。 - majorgear

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

例如,要了解apache2的版本:
apache2 -v

但这可能不适用于其他软件包,所以最好的做法是查阅手册。

man XXX

搜索显示版本选项。
安装特定版本的软件包:
sudo apt-get install package=version

例如:

sudo apt-get install apache2=2.3.35-4ubuntu1

17我们还可以使用dpkg -l package-name命令来检查已安装软件包的版本。 - Nischay
12当指定版本时,你从哪里找到/追踪元2.3.35-4ubuntu1 - Erutan409
9@Erutan409 - 使用 apt-cache madison packagename 命令 - 它将显示所有版本,这些版本可以被您已安装/配置的任何存储库(包括PPA)看到。 - ivanivan
-v不起作用时,你也可以尝试使用--version - MSpreij
  • V会生效。不是小写的'v'。
- Malavan