首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么一个新的存储库会自动安装软件包?

为什么一个新的存储库会自动安装软件包?
EN

Ask Ubuntu用户
提问于 2018-07-14 20:43:16
回答 2查看 132关注 0票数 1

新添加的存储库在被要求安装任何新的程序之前,是否需要安装“依赖”包?

我刚刚遇到了以下情况:

当我的系统是最新的,我添加了Certbot存储库(http://ppa.launchpad.net/certbot/certbot/ubuntu),在运行更新之后,据报告有9个包可以升级。我试图进行升级,得到了以下信息:

代码语言:javascript
运行
复制
$ 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检查了反向依赖;例如,

代码语言:javascript
运行
复制
$ sudo apt-cache rdepends python3-certifi
python3-certifi
Reverse Depends:
python3-requests

在Certbot存储库被禁用后,我得到

代码语言:javascript
运行
复制
$ apt-cache depends python3-requests
python3-requests
Depends: python3-urllib3
Depends: 
    python3:i386
    python3
Depends: ca-certificates
Depends: python3-chardet
Depends: python3-urllib3

当我启用它时,我得到

代码语言:javascript
运行
复制
$ apt-cache depends python3-requests
python3-requests
Depends: python3-certifi
Depends: python3-chardet
Depends: python3-idna
Depends: python3-urllib3
Depends: 
    python3:i386
    python3
Depends: ca-certificates
Depends: python3-urllib3

因此,我猜真正的问题是:<#>are包依赖关系是可用包/存储库的函数?我认为应该修复依赖关系:一个包要么需要另一个包才能工作(不管它是否对您可用),要么不需要(在这种情况下,它并不是一个依赖项)。

系统

  • 库本图16.04
  • 内核4.13.0-45-泛型#50~16.04.1-Ubuntu 64位
EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2018-07-28 08:44:27

使用N0rbert建议的命令,并在OFTC #debian频道的优秀人员的帮助下,我通过这些包追溯了这些命令,并找出了发生这种情况的原因,这可能是在看到未知的新包自动安装时最可能出现的情况:

新添加的存储库包含一个更新版本的现有包,该包被标记为升级。升级包的The新版本有一个新的依赖项(旧版本没有),因此新的依赖项被标记为自动安装

例如,现有包python3-requests的升级版本将python3-certifi作为新的依赖项,因此后者被标记为安装。

这是我的错,我最初忽略了一个事实,即python3-certifi (python3-requests)的反向依赖是正在升级的包之一。

票数 0
EN

Ask Ubuntu用户

发布于 2018-07-14 20:51:22

您已经回答了您的问题: PPA已经安装了较新版本的包,因此在添加PPA并运行apt-get update之后,APT会看到较新的版本是可用的,并列出了一些具有更新的包。

您可以通过运行apt-cache policy获得详细信息:

代码语言:javascript
运行
复制
apt-cache policy python-chardet python-pkg-resources python-six \
python3-chardet python3-configobj python3-pkg-resources python3-requests \
python3-six python3-urllib3 

并检查它们的来源(见版本表)。

此外,您还可以从安装两个新包的位置以及安装它们的原因进行检查(请与apt-cache rdepends检查):

代码语言:javascript
运行
复制
apt-cache policy python3-certifi python3-idna
apt-cache rdepends python3-certifi python3-idna

有关详细信息,您可以咨询man apt-cache

票数 4
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1056163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档