ruyi list 命令

刚开始用 Ruyi 时,不知道支持哪些包,面对众多软件包不知道从哪里找起。后来发现了 ruyi list

概要

  • 命令:ruyi list
  • 作用:列出配置的 packages-index 中可用的软件包,支持按多种条件过滤并显示详细元数据。
  • 源码位置:
    • 参数定义:ruyi/ruyipkg/list_cli.py(类 ListCommand
    • 列表逻辑:ruyi/ruyipkg/list.py(函数 do_list
    • 过滤器:ruyi/ruyipkg/list_filter.pyListFilterListFilterAction

可用选项

  • --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)。常见分类有 emulatortoolchain 等,具体以仓库索引为准。
  • --name-contains <str>
    • 含义:筛选 package 名称包含给定字符串的包(模糊匹配)。

行为细节

  • 多条件组合:支持多个过滤选项组合使用,ListFilter 会按所有条件过滤结果。
  • 索引同步:ruyi list 依赖本地的 metadata repo(packages-index)。若本地没有最新索引,先运行 ruyi update。配置里的 repo.remoterepo.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 进行恢复/重装。
  • 网络不稳定就切换成切换为国内镜像源
4 个赞

感谢分享~ 虽然官网doc有这个命令的介绍但没有特别详细,这个介绍太全啦

1 个赞

我之前录制过ruyi相关命令的实操视频,跟着官方教程里的命令跑了一遍,用起来真的很方便~

1 个赞

研究源码写出来的使用说明,真是用心了,优秀 :+1: