Inf*_*ien 0 debian apt dependencies
我试图掌握 APT 固定在 Debian 下的工作原理,但我很难理解它如何解决优先级问题。
我有一个source.list
文件,其中按此确切顺序包含以下条目:
deb <repository> stretch main
deb <repository> testing main
deb <repository> unstable main
Run Code Online (Sandbox Code Playgroud)
以下存储库包含每个分支的这些包:
dependency version 1.0
;dependency version 2.0
;program
和dependency version 2.0
;包program
取决于dependency version 2.0
.
我需要安装包program
,但我想安装尽可能少的包unstable
,所以我创建了以下preferences
文件来固定这个分支:
Package: *
Pin: release a=unstable
Pin-Priority: -1
Run Code Online (Sandbox Code Playgroud)
如果我正确理解它是如何工作的,它应该unstable
只在我明确告诉 APT 时安装软件包。
我还创建了一个apt.conf
文件来确保stable
分支是默认的:
APT::Default-Release "stable";
Run Code Online (Sandbox Code Playgroud)
运行命令后apt-get update
,分支应具有以下优先级:
stable: 990
testing: 500
unstable: -1
Run Code Online (Sandbox Code Playgroud)
现在我想安装包program
,为此,我运行以下命令:
apt-get install -t unstable program
Run Code Online (Sandbox Code Playgroud)
所以现在我的问题是,APT 将从哪个分支拉包dependency version 2.0
?由于两个testing
和unstable
有包装的同一版本,其中之一将得到回升?
如果我理解正确,带有该-t unstable
选项的APT将为属于 的包设置 990 优先级unstable
,但根据我的经验,它会将其从testing
.
那么为什么 APT 从testing
优先级为 500 而unstable
设置为 990 的包中提取包呢?另外,安装尽可能少的软件包的最佳方法是unstable
什么?
这是在解释该apt_preferences
手册页:
当sources.list(5) 文件包含对多个发行版(例如,稳定版和测试版)的引用时,一个包的多个版本可能可供安装。APT 为每个可用版本分配优先级。受依赖性约束,
apt-get
选择安装优先级最高的版本。默认情况下,APT 首选项会覆盖 APT 分配给软件包版本的优先级,从而使用户可以控制选择安装哪个版本。当sources.list(5) 文件包含对多个源的引用时,同一版本包的多个实例可能可用。在这种情况下,
apt-get
下载在 sources.list(5) 文件中最早列出的实例。APT 偏好不影响实例的选择,只影响版本的选择。
优先级仅决定安装包的哪个版本(由版本号指定)。确定后,将使用第一个可用的软件包存储库来下载它。
归档时间: |
|
查看次数: |
775 次 |
最近记录: |