如何从存储库中获取特定的软件包版本?

如何从存储库中获取特定的软件包版本?

添加 PPA 然后运行apt-get update获取似乎只能从该 PPA 获取最新版本,但我想安装特定版本。

例如:我正在添加ondrej/php5-5.6ppa。更新后,apt-cache policy php5显示可用的版本是:

  • 5.6.9+dfsg-1+deb.sury.org~trusty+2
  • 5.5.9+dfsg-1ubuntu4.9
  • 5.5.9+dfsg-1ubuntu4

几天前,PPA 的最新版本是5.6.8+dfsg-1+deb.sury.org~trusty+4,但现在已更新。这意味着我无法运行apt-get install并安装我想要的特定版本。

使用 apt 可以实现这个吗?

答案1

似乎使用apt-get install php5=5.6.*匹配版本号可以解决问题。

查看启动板,版本 4.6.8 不再存在,仅存在版本 4.6.9。

同样,ppa:git-core/ppalaunchpad 上的 PPA 也只包含 2.4.2 和 2.3.7 版本。似乎保留了每个小版本的最新补丁版本。

使用这个含义我可以将安装与特定的次要版本绑定,同时仍然接收补丁更新。

答案2

您只能从 PPA 安装最新版本,因为在 PPA 中构建和发布包的新版本时,旧版本会被删除。

答案3

@Dobey 的回答似乎是您遇到的最佳解决方案。不过,如果您从特定 PPA 安装了软件包,您可以做的是在安装时标记该软件包,以便保留该版本。例如,运行:

sudo apt-mark hold packagename

答案4

有时您可能会得到旧版本,具体取决于来源。大多数情况下,当软件包更新时,它会替换上一个更新版本(某些存储库会保留该版本的第一个版本,直到该版本终止使用)。这还取决于较新版本是否包含安全更新,或者不再支持“上游”(包裹的来源地)。

如果要安装的版本仍在存储库中,则可以使用这个语法安装该包:

sudo apt-get install apache2=2.2.20-1ubuntu1

如果您使用的 repo 中没有可用包,您可能可以从其他地方获取该包。

电力购买协议你可能正在使用,目前可以获得版本 5.6.9。但是另一个 PPA由作者提供,您可以从中获取版本 5.5.25。(还有这个与 5.4.41 兼容,但实际上只适用于 12.04)

第三方网站也经常提供旧版本(有时也有新版本)。对于 Ubuntu,Ubuntu 更新(还有其他网站 - 例如 Fedora 等rpm查找 (是的,RPM... - 您可以使用 alien(见下文),或者获取 src.rpm 并使用其中的内容来构建可在非 RPM 系统中使用的东西:D)。

如果其他方法都失败了,你可以尝试获取所需版本的源版本(对于 PHP,请参阅这里),然后以此为基础制作包装。这样您就可以直接构建并安装或者从中构建 deb 包并安装它们。

您还可以使用外星人安装非 deb 格式的软件包(这似乎包括 tar.gz)。

相关内容