当repo有更新版本时安装特定版本?

让我们有一个metapackage,它取决于以下包

Depends: A (=2), B (=2), C (=2) 

注意’=’ – 我想安装这些特定版本,而不是最新版本。

另外:

B取决于A (> = 1)

C取决于B (> = 1)和A (> = 1)

如果存储库中A,B,C的最新版本是2,那么这是有效的。

由于我已将版本3的A和版本3的B放入repo sudo apt-get install中,因此my-meta-package拒绝使用以下信息完成:

 The following packages have unmet dependencies: my-meta-package: Depends: B (= 2) but 3 is to be installed Depends: A (= 2) but 3 is to be installed 

如果我手动安装A和B的版本2,那么元数据包安装正确,这强烈暗示对A3或B3没有隐藏的依赖。 这不是问题的解决方案,因为元数据包是在许多机器上自动安装的。

问题:如何使sudo apt-get install my-meta-package安装版本2,2,2?

另外,有没有一种方法可以获得扩展信息实际上是什么产生了对A版本3和B版本3的需求?

您必须选择要安装的特定版本,并在安装元软件包的同时安装所有版本。

 sudo apt-get install meta-package package1=2 package2=2 package3=2 

就像int_ua的回答所说,你可以找到反向依赖关系:

 apt-cache rdepends package 

如果您想了解有关任何这些软件包的更多信息( 可用版本,依赖项等等 ),请使用以下命令:

 apt-cache show package 

完成安装后,并希望在进行系统升级时将它们保留在这些版本中,您需要使用belacqua建议的apt-pinning 。

APT钉扎

APT固定function允许管理员强制APT选择特定版本的软件包,这些软件包可能来自不同存储库的不同版本。 这允许管理员确保软件包不会升级到可能与系统上的其他软件包冲突的版本,或者尚未针对不受欢迎的更改进行充分测试的版本。 为此,必须修改APT首选项文件(/ etc / apt / preferences)中的引脚。

您可以先尝试安装依赖项

sudo apt-get install package=2其中2是版本

您可以找到哪些包依赖于包

apt-cache rdepends package