是否有任何命令可以列出“本地”包? 就像在 Synaptic GUI 中一样?

是否有任何命令可以列出“本地”包? 就像在 Synaptic GUI 中一样?

我曾经使用 Synaptic 查找本地软件包。这些软件包是本地安装的,但在当前活动存储库中没有完全匹配的软件包。正如这篇文章中解释的那样:Synaptic 中的“本地或过时”是什么意思

我发现这个功能在调试时非常有用未满足的依赖关系问题。虽然我知道如何过时软件包列表,我找不到本地包裹的方法。

那么,是否有任何等效的命令行可以列出所有本地包?

笔记解释我使用的习语。

  • 孤儿包裹:已安装自动作为依赖项,然后依赖项被删除。
  • 过时的包裹:已安装但存储库中没有具有相同(名称、架构)的包。
  • 当地的包裹:已安装但没有具有相同名称、架构、版本) 在存储库中。

所以我的意思不是所有已安装的软件包

测试用例

  1. Synaptic → 菜单:设置 → 存储库 → 更新:启用不支持的更新(反向移植)(注意:我将其用作 PPA 示例)
  2. 重新加载软件包列表
  3. 搜索debhelper并选择它。菜单:软件包 → 强制版本...:从反向移植中选择并安装版本(通常是最高版本)
  4. 菜单:设置 → 存储库 → 更新:禁用不支持的更新(反向移植)(注意:我将其用作 PPA 示例)
  5. 重新加载软件包列表

现在比较一下这两个列表:

  1. Synaptic → SideBar:状态 → 已安装(本地且已过时)

    Synaptic - 本地和过时的软件包

  2. aptitude search '~o'

    user@user-vb:~$ aptitude search '~o'
    i A linux-headers-4.15.0-19                          - Header files related to Linux kernel version 4.15.0        
    i A linux-headers-4.15.0-19-generic                  - Linux kernel headers for version 4.15.0 on 64 bit x86 SMP  
    i A linux-image-4.15.0-19-generic                    - Signed kernel image generic                                
    i A linux-modules-4.15.0-19-generic                  - Linux kernel extra modules for version 4.15.0 on 64 bit x86
    i A linux-modules-extra-4.15.0-19-generic            - Linux kernel extra modules for version 4.15.0 on 64 bit x86
    user@user-vb:~$ 
    

答案1

查找不是来自任何 source.list 或无法下载的已安装软件包。

$ aptitude search \
  '?narrow(?or(!?origin(), ?obsolete), ?installed)'

或简写形式:

$ aptitude search '~S (!~O|~o)  ~i'
  • ?narrow(过滤器,模式)
    选择符合过滤器和模式的包。
  • ?or(模式,模式)
    匹配任意一个模式或者两者。
  • ?origin(模式)
    选择具有给定来源的包。
  • ?obsolete
    匹配无法下载的已安装软件包。
  • ?installed
    选择已安装的包。
  • ?not(模式)或!
    选择任何与模式不匹配的包。

答案2

apt list --installed标签包的local方式似乎与您的定义一致(请参阅我的答案在这里)你可以使用 ask、grep 等来过滤带有标签的包:

apt list --installed | awk -F/ '/local]/{print $1}'

你也可以使用Python APT API

答案3

apt-show-versions | grep -e 'No available version' -e 'newer than version'将获得软件包列表:

  • 没有任何仓库中的版本。
  • 或者具有比 repo 中的版本更高的版本。

可能需要先安装sudo apt install apt-show-versions

相关内容