限制可从存储库安装哪些软件包

限制可从存储库安装哪些软件包

我有我的官方 Debian 存储库(比如说repo1)。现在我添加来自package X( )的供应商的仓库repo2。 Package X 不在官方 Debian 存储库中。当然,repo 2可以有一些与 重叠的包repo 1,例如package Y,有些甚至可能从来没有,并且需要package X运行(repo 1::package Yhas version 1.0repo 2::package Yhas version 2.0)。

我想知道,当package Xrepo 2.最好甚至阻止从安装任何软件包repo 2,以避免它弄乱我的系统。

我目前的想法是限制repo2,以便只能package X从那里安装,但我不知道该怎么做。

为什么我可能想要这个:

  • 我可能不完全信任repo2,并且我想跟踪来自那里的包裹

  • 如果有除package X来自之外的软件包repo2,而我不允许安装这些软件包,它就会中断package X,但那没问题,我可以在那时决定是否允许来自该来源的这些软件包,但我会提前了解正在发生的事情

基本上我想apt告诉我,如果有其他内容,除了Package Xrepo 2.


我考虑过的一些解决方案:

apt-固定:

  • 我认为行不通,因为 if package Xrequire version 2.0ofpackage Yrepo1has version 1.0repo 2将被使用,无论固定如何

调整Packages.gz来自repo 2

  • 我不知道这如何实现

答案1

apt固定可以在这里工作。添加一个条目,例如

Package: *
Pin: origin repo2
Pin-Priority: 100

这将允许从 进行安装repo2,但将确保两个版本中都存在软件包repo1,并且repo2首选repo1升级版本。如果repo2另一个包需要某个版本repo2apt可以要求将其与适当的-t选项一起使用。这与向后移植存储库使用的设置相同。

您最终会出现以下行为:

$ sudo apt install moosefs-client/bullseye-backports
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Selected version '3.0.116-1~bpo11+1' (Debian Backports:bullseye-backports [amd64]) for 'moosefs-client'
Starting pkgProblemResolver with broken count: 0
Starting 2 pkgProblemResolver with broken count: 0
Done
The following packages were automatically installed and are no longer required:
  gconf2 libgsf-bin
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libmfsio1
The following NEW packages will be installed:
  libmfsio1 moosefs-client
0 upgraded, 2 newly installed, 0 to remove and 15 not upgraded.
Need to get 504 kB of archives.
After this operation, 1,580 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://deb.debian.org/debian bullseye/main amd64 libmfsio1 amd64 3.0.115-1 [171 kB]
Get:2 http://deb.debian.org/debian bullseye-backports/main amd64 moosefs-client amd64 3.0.116-1~bpo11+1 [333 kB]
Fetched 504 kB in 0s (1,395 kB/s)       
...

我要求提供 的向后移植版本moosefs-client,并apt选择了默认版本libmfsio1而不是向后移植版本。如果我指定了-t bullseye-backports,它会从向后移植中选择两者。对于仅在 中可用的包,您根本repo2不需要指定;/repo2如果该软件包可以卸载,而无需从中提取repo2包含旧版本的其他软件包repo1apt则除非您指定,否则将失败-t repo2

相关内容