如何找出哪些反向移植的软件包可用,并避免在手动升级时丢失软件包?

如何找出哪些反向移植的软件包可用,并避免在手动升级时丢失软件包?

我很惊讶地发现,自 Natty 11.04 以来,即使我们已经已启用一个 backports 存储库,更新的软件包不是自动安装来自该存储库。我们必须手动安装单个更新,例如通过

apt-get install ipython/precise-backports

解释如下UbuntuBackports - 社区 Ubuntu 文档。我想我只是没有收到备忘录……

第一个问题:我们如何才能知道通过反向移植进行升级的选项是什么?我很惊讶,即使我询问状态,例如通过

wajig status ipython

它没有告诉我有新版本可用。我想要一份已安装软件包的所有升级列表。

接下来,如何避免因为通过反向移植升级而丢失现有软件包?

例如上面的 ipython install 告诉我:

The following packages will be REMOVED:
   ipython-notebook ipython-qtconsole

我该如何表示我想要最新的反向移植的 ipython,以及依赖于它的任何其他可用更新的软件包,而无需手动弄清楚它们并安装它们?

我知道我可以改变固定,这样我就能全部更新,但我犹豫着是否要违背一般建议。但如果用户要求更新一个包,那么更新所有依赖项不是很自然吗,就像您从 ppa 中获取的那样?

答案1

我们如何知道通过反向移植进行升级的选项有哪些?

使用--default-release-t开关运行 apt-get:

sudo apt-get -t precise-backports upgrade

apt-get install ipython/precise-backports与您不必插入零件相同precise-backports

令我惊讶的是,即使我询问状态,例如通过wajig status ipython它也没有告诉我有可用的新版本。

为此我使用apt-cache policy

apt-cache policy iceweasel
iceweasel:
  Installed: 25.0~a2+20130816004007-1~bpo70+1
  Candidate: 25.0~a2+20130816004007-1~bpo70+1
  Package pin: 25.0~a2+20130816004007-1~bpo70+1
  Version table:
 *** 25.0~a2+20130816004007-1~bpo70+1 1990
       1990 http://mozilla.debian.net/ wheezy-backports/iceweasel-aurora i386 Packages
        100 /var/lib/dpkg/status
     23.0-2 1990
         -1 http://ftp.us.debian.org/debian/ experimental/main i386 Packages
     17.0.8esr-2 1990
        990 http://ftp.utexas.edu/debian/ testing/main i386 Packages
         -1 http://ftp.de.debian.org/debian/ sid/main i386 Packages

接下来,如何避免因为通过反向移植升级而丢失现有软件包?

如果您要升级的软件包破坏了之前的依赖关系,那么您应该决定是升级还是保持原样。或者您只是强行关闭并破坏您的安装,这完全取决于您。

我该如何表示我想要最新的反向移植的 ipython,以及依赖于它的任何其他可用更新的软件包,而无需手动弄清楚它们并安装它们?

同上。

但是如果用户要求更新一个包,那么更新所有依赖项不是很自然吗,就像从 ppa 中获取的那样?

如果没有更新候选,则不会。这种情况在滚动发布版本中经常发生,一些软件包依赖于存储库中尚未提供的其他软件包,因此 apt 决定不升级,因为它会破坏依赖关系。

对于您在评论中提到的情况ipython

软件包依赖项页面 ipython-notebook=0.13.2-1~ubuntu12.04.1取决于ipython=0.13.2-1~ubuntu12.04.1,但如果您尝试ipython单独升级,apt 将优先考虑您的操作并不惜一切代价完成它们。由于您只是告诉 aptipython从 backports 安装,因此他理解:

实现仅有的不惜一切代价

因此,唯一的方法是删除/降级由于此操作而导致依赖关系中断的任何软件包(ipython-notebook),然后ipython从反向移植中安装。正确的方法是:

sudo apt-get -t precise-backports install ipython-notebook ipython

或者

sudo apt-get -t precise-backports upgrade

第一个命令会告诉 apt-get 安装ipython-notebookipython从 backports 进行安装,第二个命令会告诉 apt 升级precise-backports存储库中任何已安装且有升级的包。

相关内容