获取可在 Portage 中安装的软件包名称列表

获取可在 Portage 中安装的软件包名称列表

我正在开发 Chromebook。由于Chrome OS基于Gentoo,因此开发者模式下可用的包管理系统是Portage。emerge是用于安装软件包的命令,但它是一个非常复杂且难以理解的命令,并且我没有关于如何做我想做的事情的明确说明。

我希望能够做两件事:

  1. 列出已安装的软件包的名称。
  2. 列出可以安装的软件包的名称。

NAME在这两种情况下,包的“名称”都是在命令中替换的确切字符串,emerge NAME以便安装所述包。

我写了我认为第一个问题的解决方案,而第二个问题的解决方案并不是真正令人满意的。

这是我的用于列出已安装软件包的脚本(lipkgs):

#!/bin/bash

cat /usr/local/var/lib/portage/world | sed "s/^.*\\///" | sort

这是我列出可用软件包的脚本 ( lapkgs):

#!/bin/bash

cat /usr/local/portage/packages/Packages | grep "^CPV: " | sed "s/^CPV: .*\\///g" | sort

当我第一次写这篇文章时lapkgs,我以为这/usr/local/portage/packages/Packages是一种缓存文件,其中包含从设置为与 Portage 连接的任何存储库中可用的所有包。我的第一个问题是输出包含类似的名称xxd-1.10-r3,这不是我输入要安装的名称xxd,而是当前的包修订名称或其他名称;这个名称将在包与包之间变化,因此我无法编写任何通用程序来清理它们。我后来意识到的第二个问题是,其中的名称/usr/local/portage/packages/Packages可能不是可用包的列表,而是某种已安装包以及虚拟包的列表。

我该如何做我想要实现的目标?

答案1

列出所有包: equery list '*'

如果它旁边有一个 I 则表示已安装。

从:https://wiki.gentoo.org/wiki/Equery

相关内容