メインコンテンツまでスキップ

功能说明

ruyi 包管理器提供以下功能。

命令查询

命令含义注意事项
ruyi update更新软件包缓存,使用默认镜像。软件包缓存将存放在用户目录中,通常为 ~/.cache/ruyi
ruyi news list -h查看新闻命令的帮助信息。
ruyi news list列出所有新闻。
ruyi news list --new仅列出未读新闻。
ruyi news read -h查看新闻阅读命令的帮助信息。
ruyi news read 1读取特定序号的新闻。1 为要读取的新闻条目的序号或 ID。
ruyi news read读取下一条新闻。
ruyi news read --quiet标记新闻为已读,不输出任何信息。不输出任何东西,只标记为已读。
ruyi list列出所有可用软件包。
ruyi list -v列出所有软件包的详细信息。
ruyi list profiles查看预置的编译环境配置。与 Python 虚拟环境类似。
ruyi install gnu-upstream安装最新的 GNU 上游工具链。默认安装最新版本的 gnu-upstream。
ruyi install 'gnu-upstream(0.20231118.0)'安装指定版本的 GNU 上游工具链。通过指定版本号安装历史版本。
ruyi install 'gnu-upstream(==0.20231118.0)'安装特定版本的 GNU 上游工具链。版本匹配格式应为 <op><ver>
ruyi install --reinstall gnu-upstream重新安装 GNU 上游工具链。
ruyi extract ruyisdk-demo下载并解包 ruyisdk-demo 源码包。解包到当前目录。
ruyi venv --toolchain gnu-upstream --emulator qemu-user-riscv-upstream generic ./ruyi_venv在指定目录建立包含工具链和模拟器的编译环境。使用预置的 generic 配置。
ruyi self uninstall卸载 ruyi 包管理器。命令会询问确认操作。
ruyi self uninstall -y无需确认直接卸载 ruyi 包管理器。无需确认直接执行。
ruyi self uninstall --purge彻底卸载 ruyi 包管理器,包括缓存和安装的软件包。包括缓存和已安装的软件包。
ruyi self uninstall --purge -y无需确认彻底卸载 ruyi 包管理器。无需确认直接执行。
ruyi device provision下载所需系统镜像,并为设备安装系统。按照引导进行系统安装。

以下内容为表格内容详细说明。

刷新软件包缓存

更新软件包缓存,使用默认镜像即可:

$ ruyi update

软件包缓存将存放在用户目录中,通常为 ~/.cache/ruyi ;在 XDG_CACHE_HOME 环境变量被设置时,目录为 $XDG_CACHE_HOME/ruyi 。 在本文档中家目录为 /home/myon

查询包管理器更新内容

查看 ruyi 包管理器的更新信息、阅读新闻或将信息设置为已读:

$ ruyi news list -h
$ ruyi news list
$ ruyi news list --new # 仅列出未读新闻

$ ruyi news read -h
$ ruyi news read 1 # 1为要读取的新闻条目的序号或ID
$ ruyi news read # 读取下一条新闻
$ ruyi news read --quiet # 不输出任何东西,只标记为已读

查询可用软件包

查看可用的软件包,该命令将列出所有可用的软件包:

$ ruyi list
List of available packages:

* source/ruyisdk-demo
- 0.20231114.0 (latest)
* source/coremark
- 1.0.2-pre.20230125 (prerelease, latest-prerelease)
- 1.0.1 (latest)
* emulator/qemu-user-riscv-xthead
- 6.1.0-ruyi.20231207+g03813c9fe8 (latest)
* emulator/qemu-user-riscv-upstream
- 8.1.2-ruyi.20231121 (latest)
* toolchain/gnu-plct
- 0.20231212.0 (latest) slug: gnu-plct-20231212
- 0.20231118.0 () slug: gnu-plct-20231118
* toolchain/gnu-plct-xthead
- 0.20231212.0 (latest) slug: gnu-plct-xthead-20231212
- 0.20231118.0 () slug: gnu-plct-xthead-20231118
* toolchain/gnu-upstream
- 0.20231212.0 (latest) slug: gnu-upstream-20231212
- 0.20231118.0 () slug: gnu-upstream-20231118
* toolchain/llvm-upstream
- 17.0.5-ruyi.20231121 (latest) slug: llvm-upstream-20231121

软件包前缀表示分类,其中 source 代表软件源码包, toolchain 代表工具链二进制包, emulator 代表模拟器二进制包,board-image 代表开发板镜像,analyzer 代表分析工具。

如果软件包显示 “no binary for current host” 则该软件包的当前版本不支持本机架构。

列出所有软件包的详细信息:

$ ruyi list -v

查询可用编译环境

与 python 的虚拟环境类似,RUYI 包管理器工具使用 venv 命令应用配置到指定的工具链以建立编译环境。

RUYI 包管理预置的配置可以使用 ruyi list profiles 命令查看:

$ ruyi list profiles
generic
baremetal-rv64ilp32 (needs flavor(s): {'rv64ilp32'})
sipeed-lpi4a (needs flavor(s): {'xthead'})
milkv-duo

安装软件包

使用 install 命令安装软件包,如 GNU 上游工具链:

$ ruyi install gnu-upstream

上述通过指定软件包名安装的方式默认会安装 latest 的 gnu-upstream,如果想安装某个历史版本的 gnu-upstream,则可以通过指定版本来安装:

$ ruyi install 'gnu-upstream(0.20231118.0)'
$ ruyi install 'gnu-upstream(==0.20231118.0)'

# match_expr parameter should be in format `<op><ver>`, where `<op>` is one of ['<', '>', '==', '<=', '>=', '!='].

若希望重装一个软件包,则可以加上 --reinstall 参数:

$ ruyi install --reinstall gnu-upstream

安装源码包

ruyi 包管理器同时管理一些源码包,使用 extract 命令下载一个源码包并解包到当前目录:

$ ruyi extract ruyisdk-demo
$ ls
README.md rvv-autovec

搭建编译环境

已经安装的工具链与模拟器需要在 ruyi 编译环境中使用,这和 python 的虚拟环境十分类似。 这是由 venv 命令实现的:

$ ruyi venv --toolchain gnu-upstream --emulator qemu-user-riscv-upstream generic ./ruyi_venv

这个命令使用预置的 generic 配置,在 ./ruyi_venv 目录建立包含 gnu-upstream 工具链和 qemu-user-riscv-upstream 模拟器的编译环境。

具体使用参见“编译环境”与“具有 QEMU 支持的编译环境”章节。

卸载软件包

注意 ruyi 包管理器没有实现卸载 ruyi 软件包的功能。若您强制中断 ruyi 软件包安装进程或做了其他非预期操作 而会导致软件包功能异常时,请使用 install --reinstall 以尝试重试安装该软件包。

卸载 RUYI 包管理器

使用下面的命令卸载 Ruyi 包管理器:

$ ruyi self uninstall

这个命令将会询问您以二次确认该操作,如果希望 Ruyi 包管理不询问而直接执行:

$ ruyi self uninstall -y

上面的命令只是删除 Ruyi 本身,并不会删除软件包缓存和安装的 Ruyi 软件包。

如果希望删除所有缓存和安装了的软件包以实现干净的卸载:

$ ruyi self uninstall --purge

同样的这个命令将会询问您以二次确认该操作,如果希望 Ruyi 包管理不询问而直接执行:

$ ruyi self uninstall --purge -y

实现 Ruyi 包管理自身的升级可能会需要 sudo,而 Ruyi 包管理被设计为避免进行需要超级用户权限的操作。 故在需要升级 Ruyi 包管理时您需要手动进行该操作,即首先卸载 Ruyi 包管理器,再执行安装 Ruyi 包管理器的过程, 这个过程中您可以自主选择是否保留旧的软件包缓存和 Ruyi 软件包。

镜像信息的维护与下载、开发板系统的安装引导

执行如下命令并按照引导执行即可下载所需系统镜像,为设备安装系统:

$ ruyi device provision