安装特定版本的软件包

我需要安装一个 tofrodos 1.17.3 版本,用于 i386。我正在运行 Ubuntu 16.04.2,我知道如果我运行 sudo apt-get install tofrodos:i386,它会安装版本 1.17.3。但是这将在一个脚本中,可能会在很久之后使用,我需要修复版本为 1.17.3 和 32 位架构为 i386。有人知道怎么做吗?

我已经尝试过

sudo apt-get install tofrodos=1.17.3:i386
sudo apt-get install tofrodos:i386=1.17.3

而且它们都没有起作用。

感激任何帮助。


请使用软件中心或aptitude获取完整的版本名称。通常类似于1.17.3-ubuntu#。 - ravery
2个回答

没有人能保证存储库中的软件包是一个固定版本。
可以阻止已安装的软件包升级,但是apt始终会安装存储库中可用的版本。没有人会保留旧版本。
实际上可能会有两个版本,初始版本和“升级”版本。
但是在LTS存储库中,很不可能将软件包升级到新的主要版本。可能会发布一些次要修复,但我认为这不会影响功能。
The
sudo apt-get install tofrodos:i386=version

是正确的命令。但是在软件源中没有 1.17.3 版本。

正确的版本是 1.7.13+ds-2ubuntu1

pilot6@Pilot6:~$apt-cache policy tofrodos
tofrodos:
  Installed: (none)
  Candidate: 1.7.13+ds-2ubuntu1
  Version table:
     1.7.13+ds-2ubuntu1 500
        500 http://ru.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages

所以
sudo apt-get install tofrodos:i386=1.7.13+ds-2ubuntu1

应该可以工作。
这是“初始”版本适用于xenial。即使在xenial-updates中升级了软件包,该命令也会安装此版本。

如果软件包可在软件源中获取,则可以使用以下命令安装特定架构的特定版本软件包:
sudo apt-get install package:i386=version

要查看您所需的版本是否可用,请使用:

apt-cache madison package-name

或者

apt-cache policy package-name

你的情况的另一个选择是:
apt list -a i386 tofrodos

似乎您所需的软件包版本在存储库中不存在。

这个怎么能行呢? - Pilot6
怎么会不行呢?是包裹有问题吗?因为我觉得命令写错了...!? - Ravexina
Ubuntu仓库为每个发行版提供一个软件包版本。因此,指定一个版本是没有意义的。 - Pilot6
1你确定吗?因为dist仓库中始终有一个基础版本可用,更新将放置在dist-updates中,所以你应该至少有一个版本,在大多数情况下会有两个版本。然而,根据我看到的,OP的命令是错误的,所以我提供另一个我知道有效的命令(如果软件包存在于仓库中)。 - Ravexina
哦,你说得对。实际上有两个版本。 - Pilot6
@Ravexina 这个方法不起作用。我遇到了以下错误:E: 命令行选项 'a' [来自 -a] 与其他选项的组合无法理解。 - flashburn
@flashburn 看起来 -a 选项无法与 install 命令一起使用,我已经更新了命令,但是你的版本在软件库中根本不可用... - Ravexina
@flashburn 看看我的回答,它包含了所有的信息。 - Pilot6