apt-get install -t testing appX VS apt-get install appX/testing

eug*_*evd 8 debian aptitude apt

我一直试图了解这两个命令之间的区别,并注意到我得到了不同的结果。

apt-get install -t testing appX
apt-get install appX/testing
Run Code Online (Sandbox Code Playgroud)

背景

我按照https://serverfault.com/a/382101/132528设置了我的源列表和固定配置

目前的成果

root@home:/etc/apt# apt-cache policy i3
i3:
Installed: (none)
Candidate: 4.2-2
Version table:
   4.8-1 0
    750 http://debian.mirror.ac.za/debian/ testing/main amd64 Packages
    750 http://ftp.us.debian.org/debian/ testing/main amd64 Packages
    50 http://debian.mirror.ac.za/debian/ unstable/main amd64 Packages
    50 http://ftp.us.debian.org/debian/ unstable/main amd64 Packages
   4.8-1~bpo70+1 0
    100 http://debian.mirror.ac.za/debian/ wheezy-backports/main amd64 Packages
   4.2-2 0
    995 http://debian.mirror.ac.za/debian/ wheezy/main amd64 Packages
    995 http://debian.mirror.ac.za/debian/ stable/main amd64 Packages
    995 http://ftp.us.debian.org/debian/ stable/main amd64 Packages
Run Code Online (Sandbox Code Playgroud)

它选择4.2-2,当做

apt-get install -t testing appX
Run Code Online (Sandbox Code Playgroud)

并且在做的时候选择4.8

apt-get install appX/testing
Run Code Online (Sandbox Code Playgroud)

Debian 手册:

-t 目标释放

要在搜索升级包时告诉 apt-get 使用特定发行版,您需要使用 -t 或 --target-release 选项,后跟您想要的发行版名称(例如:apt-get -t stable升级)。

包装/分发

如果文件 sources.list 提到了多个发行版,则可以提供要安装的软件包版本。可以使用 apt-get install package=version 请求特定的版本号,但通常首选使用 apt-get install package/distribution 指示其来源分发(稳定、​​测试或不稳定)。

在这两种情况下,您都指定了所需的分布,但两种情况下手头的行为不一致?

Ale*_*yan 11

我遇到了同样的问题,但我想通了!!!

(我原本想对原始答案发表评论,因为其他人似乎也有这个问题,但当时我没有足够的魔法“声誉”点使我的意见有价值,所以这里是。)

这是他为 apt-pinning 选择的价值观的一个怪癖。当您运行 时apt-get install my_package,apt 会根据固定优先级最高的源选择安装该软件包的源。

您的整体系统设置(默认版本)的优先级为 990。

添加-t unstable到 apt-get 命令暂时使“不稳定”成为该命令的默认版本。

他将“稳定”的固定优先级设置为995。这意味着无论如何,软件包将始终从 stable 安装,因为它的优先级甚至高于 Default Release 优先级。

那么修复?简单 - 只需将引脚优先级/etc/apt/preferences.d/security.pref从 995更改为 900。