我很惊讶地看到,自 Natty 11.04 以来,即使我们启用了 backports 存储库,也不会从该存储库自动安装更新的软件包。我们必须手动安装个别更新,例如通过
apt-get install ipython/precise-backports
Run Code Online (Sandbox Code Playgroud)
如UbuntuBackports - 社区 Ubuntu 文档中所述。我想我只是没有得到备忘录......
第一个问题:我们如何找出通过向后移植进行升级的选项?我很惊讶,即使我要求状态,例如通过
wajig status ipython
Run Code Online (Sandbox Code Playgroud)
它没有告诉我有可用的新版本。我想要一份我已经安装的软件包的所有升级列表。
接下来,如何避免仅仅因为通过反向移植升级而丢失现有软件包?
例如,上面的 ipython 安装告诉我:
The following packages will be REMOVED:
ipython-notebook ipython-qtconsole
Run Code Online (Sandbox Code Playgroud)
我怎么说我想要最新的向后移植的 ipython,以及任何其他依赖它的可用更新包,而无需手动找出所有这些并安装它们?
我知道我可以更改固定以便我获得所有更新,但我很犹豫要不要违背一般建议。但是,如果用户要求更新一个包,那么更新所有依赖项不是很自然,就像您从 ppa 中得到的一样?
我们如何找出通过向后移植进行升级的选项?
使用--default-release
或-t
开关运行 apt-get :
sudo apt-get -t precise-backports upgrade
Run Code Online (Sandbox Code Playgroud)
与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
Run Code Online (Sandbox Code Playgroud)
接下来,如何避免仅仅因为通过反向移植升级而丢失现有软件包?
如果您要升级的软件包破坏了以前的依赖关系,那么您应该决定是升级还是保持原样。或者您只是强行关闭并破坏您的安装,这完全取决于您。
我怎么说我想要最新的向后移植的 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
从 backports安装而使其依赖项中断的任何包。正确的方法是:
sudo apt-get -t precise-backports install ipython-notebook ipython
Run Code Online (Sandbox Code Playgroud)
或者
sudo apt-get -t precise-backports upgrade
Run Code Online (Sandbox Code Playgroud)
第一个将告诉 apt-get 安装ipython-notebook
并ipython
从 backports,第二个将告诉 apt 升级任何在precise-backports
存储库中有升级的已安装包。
归档时间: |
|
查看次数: |
3504 次 |
最近记录: |