何时更新软件包?

何时更新软件包?

我正在使用 KPackageKit 来维护我的系统,并且我试图让所有包保持最新(但我没有启用任何实验性或测试版存储库)。

我认为这样的设置不会破坏任何东西,但事实似乎并非如此。两周前更新后,Flash Player 停止工作。另一次更新后,又出现了其他问题。

那么,问题是:如何知道何时更新软件包,但又不破坏任何东西?即使出现损坏,有没有办法恢复更改?

答案1

您应该在更新出现后立即安装。更新在向公众发布之前会进行测试。这些未发布的更新称为建议更新。有时更新会破坏某些东西,这被称为回归。由于之前经过了测试,这些回归很少见,但这并不会降低完全破坏软件包的可能性。

对于 Flash,安装程序有时不起作用。我注意到flashplugin-installer使用 KPackageKit 进行升级有时会删除 Flash 而不安装新版本。解决方案是重新安装它,为此我更喜欢使用终端,这样我可以看到任何错误消息:

sudo apt-get install --reinstall flashplugin-installer

请注意,此安装程序比较特殊,由于许可原因,Flash 库不能在包中分发,因此包从 下载 Flash archive.canonical.com

与其他软件包一样,这可能是回归类型如前所述。大多数软件包都有一个Launchpad.net 上的错误跟踪器,也可能有解决方案。回归问题通常很快就能得到解决。

要“恢复”更新,您需要知道先前安装的软件包的版本。/var/log/apt/history.log包含对软件包及其版本的更改。

我编写了一个 bash 命令,你必须执行它并输入包名。然后会显示以前版本的列表。可以使用 更简洁地完成awk,但我还没有学会 :D

oIFS="$IFS";IFS=$',\n';read -p 'Package name: ' package;for w in $(grep "^Upgrade: " /var/log/apt/history.log | cut -c9-);do [[ ${w/:*/} == \ $package ]] && echo "$w" | cut -d"(" -f2; done;IFS="$oIFS"

确定旧版本后,您必须在终端中运行下一个命令:

sudo apt-get install packagename=version

要降级firefox到版本4.0.1+build1+nobinonly-0ubuntu0.11.04.1,您必须运行:

sudo apt-get install firefox=4.0.1+build1+nobinonly-0ubuntu0.11.04.1

相关内容