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


Answers:


306

如果您具有版本号或目标版本,则 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>

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

评论中有帮助地指出

  • apt-cache showpkg <package-name>列出所有可用的版本。(每小时Sparhawk
  • apt-mark hold <package-name> 将软件包“保留”为当前版本,以防止自动升级。(h / t 路易斯·德·索萨

57
另外,用于apt-cache showpkg <package-name>列出可用版本。
Sparhawk

16
然后,您可能还希望运行:apt-mark hold <package-name>以避免自动升级。
路易斯·德索萨

4
我发现aptitude降级依赖性要好于apt-get
krispy

5
apt-cache policy <package-name>仅显示已安装和可用的版本
Michael Lawton'Aug

18
如果showpkg没有显示您感兴趣的版本怎么办?
demongolem

103

采用

apt-get install «pkg»=«version»

要么

sudo aptitude install «pkg»=«version»

其中,“ pkg”是软件包的名称,而“ version”是版本号。


3
当我键入apt-get install pkg=versionapt-get时,提供删除几乎所有已安装软件包的一半的功能,这当然不是我想要执行的操作
Dfr

正如在(否则,相同的)答案中以更高的票数所指出的那样,这似乎是aptitude比处要好得多的关键案例之一apt-get。就我而言,apt-get断然拒绝了降级请求,但aptitude指出还有其他pkg依赖于较新的版本(因此需要同时降级)。
sxc731

28

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

须藤apt-get install ppa-purge

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

须藤ppa-purge ppa:user / ppa-name

这将自动将该软件降级为Ubuntu随附的原始版本。


1
如果该程序包具有依赖项,而该依赖项也必须降级,则该解决方案是无与伦比的。谢谢!
以及

1
是的,这是最适合我从kubuntu-ppa / backports降级KDE / Plasma桌面的解决方案-我注意到的一件事是PPA的.list文件一定不能注释掉deb,因此ppa-purge可以引用所有文件需要将其清除以进行净化。花了我几分钟来弄清楚为什么它最初不起作用。希望对别人有帮助!
AveryFreeman

10

要降级,您必须执行以下命令

 sudo apt-get install pkg_name=version

在您的终端中。

代替version您要降级的先前版本。


至少对于依赖于也应该降级的软件包的linux-generic,它不起作用。我得到了paste.ubuntu.com/p/NWSmf2ZwTy
mymedia

9

我认为,您应该首先卸载或清除该软件包,例如:

sudo apt-get remove <package>

要么

sudo apt-get purge <package>

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

sudo dpkg -i abc.deb

否则,ppa-purge如果您要降级通过PPA更新的软件包,则有一个名为的小实用程序。

看到此线程:http : //www.webupd8.org/2009/12/remove-ppa-repositories-via-command.html


3
删除软件包可能会删除许多相关的软件包,从而导致系统无法使用。ppapurge听起来很有趣。
输入

12
您能否解释一下为什么您认为我们应该在安装旧版本的软件包之前先卸载软件包(作为单独的步骤)?
伊莱亚·卡根


1
@temoto该链接用于降级发行版unstable-> testing-> stable而不是降级单个软件包。
Braiam

0

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

因此,也许也有需要的人也会找到有用的我的解决方案。

有一个工具apt-show-versions可以显示安装的版本。

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

$ sudo apt-get install $(apt-show-versions | grep -P 'newer than version in archive' | awk -F: '{print $1"/jessie"}')

jessie您可以根据需要使用buster/ xenial/ etc 代替。


或自动降级为最新的已安装发行版:sudo apt-get install -V $(apt-show-versions | grep -F 'newer than version in archive' | awk -F: '{print $1"/'$(lsb_release -cs)'"}')。我更喜欢-Fgrep这里使用。
jarno

sudo apt-show-versions -i如果程序包缓存已过期,则应首先运行。
亚诺
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.