用于仅从特定存储库中清除所有包并将其删除的 apt 命令是什么?

用于仅从特定存储库中清除所有包并将其删除的 apt 命令是什么?

我使用的是 Trisquel 7,它是 Ubuntu 16.04 的一个变体,它使用自定义版本的 Mate 作为桌面环境。

我添加了一个https://deb.nodesource.com/node_8.x用于安装我们在黑客马拉松中使用的一些 npm 东西的存储库。我不再需要任何这些东西,并且我想清除从这些存储库安装的所有软件包并将其删除。但我不记得我安装了哪些软件包。

我尝试使用 Synaptic 中的“Origin”选项卡,它显示了从系统上每个存储库安装的软件包列表。但由于某种原因,deb.nodesource 存储库没有显示在那里(我所有其他默认和添加的存储库都在那里)。

所以我的问题是:1)如果我只是删除一个存储库,是否会自动删除从该存储库安装的所有软件包? 2)如果没有,如何清除从存储库安装的所有软件包并将其删除?

我更喜欢命令行答案,因为 Trisquel 中的 Mate GUI 与 Ubuntu 中的默认桌面 GUI 有很大不同。

答案1

删除存储库不会删除从中安装的软件包。如果您想从给定存储库中删除包,您应该这样做删除存储库本身。

系统不记得软件包是从哪里安装的,它只知道软件包现在在哪里可用。因此一种可能的方法如下:

  • aptitude如果尚未安装,请安装;
  • 列出要删除的存储库中可用的所有已安装软件包(在某些版本中):

    aptitude search '~O"Node Source" ~i'
    
  • 对于返回的每个包,检查安装了哪个版本,并记下从您要删除的存储库中安装的版本:

    apt policy nodejs
    
  • 删除存储库定义;

  • 删除上面列出的软件包。

另一种方法是删除存储库,然后列出存储库中不再匹配的包,使用apt-show-versions:这将列出这样的包“存档中没有可用版本”(在配置的存储库)或“比存档中的版本更新”(在配置的存储库中可用但在旧版本中的包);然后您可以删除和/或降级相应的软件包。

相关内容