如何通过 apt-get 降级软件包?

371 package-management apt versions downgrade

如何通过 将软件包降级到旧版本apt-get

其他工具也可以接受,但apt-get最好使用。

Mah*_*esh 351

如果您有版本号或目标版本,则 apt-get支持选择特定版本或目标版本。更多细节可以在apt-get 的手册页上找到。它也可以通过键入从终端访问man apt-get

sudo apt-get install <package-name>=<package-version-number> 或者

sudo apt-get -t=<target release> install <package-name>

是要运行的命令。这可用于将软件包降级到特定版本。

请注意,当使用目标版本(选项-t)时,版本优先级必须大于 1000 以允许降级(请参阅man 5 apt_preferences),否则将保留当前安装的版本。

在评论中已经有帮助地指出

  • apt-cache showpkg <package-name>列出所有可用版本。(h/t Sparhawk )
  • apt-mark hold <package-name> “保留”当前版本的软件包,防止自动升级。(h/t Luís de Sousa )

  • 如果`showpkg` 没有显示您感兴趣的版本怎么办? (35认同)
  • `apt-cache policy &lt;package-name&gt;` 只显示已安装和可用的版本 (7认同)
  • 我发现 `aptitude` 比 `apt-get` 更好地降低了依赖关系。 (5认同)

小智 154

用:

apt-get install «pkg»=«version»
Run Code Online (Sandbox Code Playgroud)

或者:

sudo aptitude install «pkg»=«version»
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • «pkg» 是包的名称。
  • «version» 是版本号。

  • 当我输入 `apt-get install pkg=version` 时,apt-get 会删除几乎一半的已安装软件包,这当然不是我想要做的 (5认同)
  • 正如获得更多选票的(其他相同的)答案所指出的,这似乎是“aptitude”比“apt-get”做得更好的关键案例之一。在我的例子中,`apt-get` 断然拒绝了降级请求,而 `aptitude` 指出还有其他依赖于较新版本的包(因此需要同时降级)。 (4认同)
  • 提示:运行 `apt list -a &lt;pkg&gt;` 来找出可用的版本 (4认同)

Apu*_*rba 31

如果您使用 ppa 升级了软件,您可以使用ppa-purge. 首先,您必须ppa-purge使用以下代码进行安装:

sudo apt-get install ppa-purge

然后你可以使用命令删除ppa

sudo ppa-purge ppa:user/ppa-name

这将自动将软件降级到 Ubuntu 附带的原始版本。

  • 如果包具有也必须降级的依赖项,则此解决方案是无与伦比的。谢谢! (2认同)
  • 是的,这是最适合我从 kubuntu-ppa/backports 降级 KDE/Plasma 桌面的解决方案 - 我注意到的一件事是 PPA 的 .list 文件不能注释掉 deb,因此 ppa-purge 可以引用所有文件需要将其移除以进行清除。我花了一分钟才弄清楚为什么它一开始不起作用。希望对其他人有帮助! (2认同)

rɑː*_*dʒɑ 12

要降级,您必须执行类似的命令

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

在您的终端中。

在放置version您要降级到的先前版本的地方。

  • 它至少对 linux-generic 不起作用,它取决于也应该降级的软件包。我得到 https://paste.ubuntu.com/p/NWSmf2ZwTy/ (2认同)

小智 11

在我看来,您应该首先卸载或清除软件包,例如:

sudo apt-get remove <package>
Run Code Online (Sandbox Code Playgroud)

或者

sudo apt-get purge <package>
Run Code Online (Sandbox Code Playgroud)

然后,您可以下载要安装的版本并将其保存在一个文件夹中,例如abc.deb在“下载”中。打开终端,使用cd命令移动到文件夹并使用以下命令安装以前的版本dpkg

sudo dpkg -i abc.deb
Run Code Online (Sandbox Code Playgroud)

或者,ppa-purge如果您要降级通过 PPA 更新的软件包,则会调用一个小实用程序。

请参阅此线程:http : //www.webupd8.org/2009/12/remove-ppa-repositories-via-command.html

  • 你能解释一下*为什么*你认为我们应该在安装旧版本之前先卸载软件包(作为一个单独的步骤)吗? (13认同)
  • 删除一个软件包可能会删除许多依赖的软件包,从而导致系统无法使用。ppapurge 听起来很有趣。 (6认同)

小智 11

这个问题很老了,但谷歌引导我来到这里,我没有找到在将一堆软件包降级到旧版本时不需要手动版本传递的简单解决方案。

因此,也许也有需要的人会发现我的解决方案也很有用。

有一个名为apt-show-versions显示已安装版本的工具。要安装它:

$ sudo apt install apt-show-versions
Run Code Online (Sandbox Code Playgroud)

确保 APT 的缓存是最新的:

$ sudo apt-show-versions -i
Run Code Online (Sandbox Code Playgroud)

您可以通过微调正则表达式轻松降级所有必需的软件包,但这里是:

$ sudo apt install apt-show-versions
Run Code Online (Sandbox Code Playgroud)

您应该lsb-release安装后者。