注意力!这是一个与我的学习相关的任务的问题。我的老师说这个任务可能没有解决方案,但我们需要尽一切努力来学习管理包。这意味着,请不要回答“没有解决方案”。如果没有解决办法,请告诉我原因,如果有半途而废的解决办法请说出来。
谢谢阅读
场景描述
我的虚拟机正在运行 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' or
sudo apt update , I'm not going to install any sid packages. I'll just install sid packages if I run
sudo 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=sid
a=sid
man apt_preferences