我很惊讶地发现,自 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-notebook
并ipython
从 backports 进行安装,第二个命令会告诉 apt 升级precise-backports
存储库中任何已安装且有升级的包。