是否存在新添加的存储库需要在被要求安装任何新东西之前安装“依赖”包的情况?
我刚刚遇到以下情况:
虽然我的系统是最新的,但我添加了Certbot存储库 ( http://ppa.launchpad.net/certbot/certbot/ubuntu ),并且在运行更新后,据报道有九个软件包可以升级。我尝试进行升级并得到以下结果:
$ sudo aptitude safe-upgrade
Resolving dependencies...
The following NEW packages will be installed:
python3-certifi{a} python3-idna{a}
The following packages will be upgraded:
python-chardet python-pkg-resources python-six python3-chardet python3-configobj python3-pkg-resources python3-requests python3-six python3-urllib3
9 packages upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 906 kB of archives. After unpacking 1,183 kB will be used.
我可以理解正在升级的软件包:新存储库已经在我的系统上安装了更新版本的软件包,因此它们被标记为升级。但是为什么要尝试安装新软件包?有问题的软件包似乎与存储库中的软件相关,但为什么会自动安装它们呢?
如果它们是我系统上某些东西的依赖项,那么它以前是如何工作的?我该如何调查到底发生了什么?
更新
我检查了反向依赖项apt-cache
;例如,
$ sudo apt-cache rdepends python3-certifi
python3-certifi
Reverse Depends:
python3-requests
禁用 Certbot存储库后,我得到
$ apt-cache depends python3-requests
python3-requests
Depends: python3-urllib3
Depends: <python3:any>
python3:i386
python3
Depends: ca-certificates
Depends: python3-chardet
Depends: python3-urllib3
当我启用它时,我得到
$ apt-cache depends python3-requests
python3-requests
Depends: python3-certifi
Depends: python3-chardet
Depends: python3-idna
Depends: python3-urllib3
Depends: <python3:any>
python3:i386
python3
Depends: ca-certificates
Depends: python3-urllib3
所以,我想,真正的问题变成了:包依赖是可用包/存储库的函数吗?我认为应该修复依赖关系:一个包要么需要另一个包才能工作(无论它是否对您可用),要么不需要(在这种情况下,它不是真正的依赖项)。
系统:
- 库本图 16.04
- 内核 4.13.0-45-generic #50~16.04.1-Ubuntu 64 位
您已经回答了您的问题:PPA 具有已安装软件包的较新版本,因此在添加 PPA 并运行
apt-get update
APT 后会看到较新的版本可用并将一些软件包列为具有更新。您可以通过运行获取详细信息
apt-cache policy
:并检查它们的来源(参见版本表)。
您还可以检查两个新软件包的安装位置以及安装原因(检查
apt-cache rdepends
):详情可咨询
man apt-cache
。使用N0rbert建议的命令并在 OFTC #debian IRC 频道的好心人的帮助下,我通过软件包追溯并找出了发生这种情况的原因,这可能是看到自动安装的无法解释的新软件包时最可能出现的情况:
新添加的存储库包含现有软件包的更新版本,已标记为升级。升级包的新版本有一个新的依赖(旧版本没有),所以新的依赖被标记为自动安装。
例如,现有包的升级版本
python3-requests
作为python3-certifi
一个新的依赖,所以后者被标记为安装。python3-certifi
这是我的错,我最初错过了(python3-requests
) 的反向依赖是正在升级的软件包之一这一事实。