刚开始用 Ruyi 时,不知道支持哪些包,面对众多软件包不知道从哪里找起。后来发现了 ruyi list
概要
- 命令:
ruyi list - 作用:列出配置的 packages-index 中可用的软件包,支持按多种条件过滤并显示详细元数据。
- 源码位置:
- 参数定义:
ruyi/ruyipkg/list_cli.py(类ListCommand) - 列表逻辑:
ruyi/ruyipkg/list.py(函数do_list) - 过滤器:
ruyi/ruyipkg/list_filter.py(ListFilter与ListFilterAction)
- 参数定义:
可用选项
--verbose,-v- 含义:显示每个包的详细信息(版本、category、distfiles、service-level 等)。
- 类型:布尔开关。
--is-installed <y|n|true|false|1|0>- 含义:根据全局安装状态筛选包(已安装或未安装)。
- 说明:该判断依据 Ruyi 的安装状态存储(
ruyipkg的 state);若状态与磁盘目录不一致,结果可能不同于物理目录存在性。
--category-contains <str>- 含义:筛选 category 名称包含给定字符串的包(模糊匹配)。
--category-is <category>- 含义:精确匹配 package 的分类(category)。常见分类有
emulator、toolchain等,具体以仓库索引为准。
- 含义:精确匹配 package 的分类(category)。常见分类有
--name-contains <str>- 含义:筛选 package 名称包含给定字符串的包(模糊匹配)。
行为细节
- 多条件组合:支持多个过滤选项组合使用,
ListFilter会按所有条件过滤结果。 - 索引同步:
ruyi list依赖本地的 metadata repo(packages-index)。若本地没有最新索引,先运行ruyi update。配置里的repo.remote与repo.local会影响数据来源。 - 自动补全:当 CLI 自动补全模式开启时(
gc.is_cli_autocomplete),参数补全器会启用,list不同选项会参与补全交互。
常用示例
-
列出名称中包含
qemu的包:ruyi list --name-contains qemu -
列出
emulator分类下包含qemu的包并显示详细信息:ruyi list --category-is emulator --name-contains qemu --verbose -
只显示已安装的包:
ruyi list --is-installed y
排错建议
- 未找到预期包:先运行
ruyi update确保本地索引已同步。检查config.toml中的repo.remote是否指向正确的 packages-index。 - 安装状态不一致:
--is-installed使用的是状态存储(不是单纯检查目录),若安装记录丢失但目录存在,可能显示为“未安装”。遇到此类情况,请手动核对ruyipkg的安装状态存储或使用ruyi install进行恢复/重装。 - 网络不稳定就切换成切换为国内镜像源
