当我有buster和sid的存储库时,如何通过apt更新和升级来安装特定版本的软件包?

当我有buster和sid的存储库时,如何通过apt更新和升级来安装特定版本的软件包?

注意力!这是一个与我的学习相关的任务的问题。我的老师说这个任务可能没有解决方案,但我们需要尽一切努力来学习管理包。这意味着,请不要回答“没有解决方案”。如果没有解决办法,请告诉我原因,如果有半途而废的解决办法请说出来。
谢谢阅读

场景描述

我的虚拟机正在运行 Debian 10,并且在其中/etc/apt/sources.list我有用于 buster 和 sid 版本的存储库。
在这里你有我的sources.list

# 

# deb cdrom:[Debian GNU/Linux 10.0.0 _Buster_ - Official amd64 NETINST 20190706-10:23]/ buster main

#deb cdrom:[Debian GNU/Linux 10.0.0 _Buster_ - Official amd64 NETINST 20190706-10:23]/ buster main

deb http://deb.debian.org/debian buster main
deb-src http://deb.debian.org/debian buster main

deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main

# This system was installed using small removable media
# (e.g. netinst, live or single CD). The matching "deb cdrom"
# entries were disabled at the end of the installation process.
# For information about how to configure apt package sources,
# see the sources.list(5) manual.

#SID repos
deb http://deb.debian.org/debian sid main
deb-src http://deb.debian.org/debian sid main

其次,在我的/etc/apt/preferences.d目录中我有一个名为sid_priority.这些是它的内容

Package: *
Pin: release a=sid
Pin-Priority: -1

关于这个文件的一些解释

该文件“意味着”将所有 sid 软件包的优先级降低到 -1,因此当我运行sudo apt update和 时sudo apt upgrade,我最终只安装和升级 buster 的软件包。 sid 存储库仅用于手动安装和升级,比方说,运行sudo apt install(另请注意,我几乎不知道包优先级如何工作,我只看到了一点互联网,我只能理解基础知识的基础知识)。

我想要实现什么

我想默认情况下仅通过巴斯特存储库安装和升级。这意味着,如果我运行sudo apt update' orsudo apt update , I'm not going to install any sid packages. I'll just install sid packages if I runsudo apt install`

我发生什么事了

我认为优先级是有效的,但通过执行sudo apt upgrade我最终得到了 sid 包。你可以看一个例子:

libc6:
  Installed: 2.29-2
  Candidate: 2.29-2
  Version table:
 *** 2.29-2 500
        500 http://deb.debian.org/debian sid/main amd64 Packages
        100 /var/lib/dpkg/status
     2.28-10 500
        500 http://deb.debian.org/debian buster/main amd64 Packages

顺便说一句,不要害怕提出任何建议,无论你想要什么,因为我正在使用虚拟机,并且我正在使用一个专门用于此任务的虚拟机。如果我需要删除它,我会这样做。
感谢您的帮助

答案1

手册页中的第一个示例回答了您的问题:

例子

跟踪稳定

以下 APT 首选项文件将导致 APT 为属于稳定发行版的所有软件包版本分配高于默认值 (500) 的优先级,并为属于其他 Debian 发行版的软件包版本分配极低的优先级。

说明:卸载或不安装稳定发行版以外的任何源自 Debian 的软件包版本

Package: *
Pin: release a=stable
Pin-Priority: 900
Package: *
Pin: release o=Debian
Pin-Priority: -10

你的sid_preference应该是:

Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -1

核实:

sudo apt update
apt policy libc6

示例输出:

libc6:
  Installed: 2.28-10
  Candidate: 2.28-10
  Version table:
     2.29-2 -1
         -1 http://deb.debian.org/debian sid/main amd64 Packages
 *** 2.28-10 900
        900 http://deb.debian.org/debian buster/main amd64 Packages
        100 /var/lib/dpkg/status

man apt_preferences:

the Origin: line

names the originator of the packages in the directory tree of 
the Release file. Most commonly, this is Debian. Specifying this
origin in the APT preferences file would require the line:

    Pin: release o=Debian

答案2

在基于版本的引脚配置中使用a=unstable(套件匹配)或(代号匹配);不匹配任何内容,请参阅.n=sida=sidman apt_preferences

相关内容