此仓库由 r2pm -U 获取,并提供软件包数据库。
这些软件包安装在用户主目录中,可以是 radare2 的插件/脚本,甚至可以是与 r2 相关的实用工具/程序。
有关 r2pm,请参见 https://github.com/radareorg/radare2
$ r2pm -U
$ r2pm -ci r2frida
export R2PM_DBDIR="$PWD/db"
# export R2PM_GITDIR="/path/to/the/root/folder/of/the/local/repository"
# export R2PM_USRDIR="/path/to/usr/dir"
Windows 安装和卸载钩子使用原生批处理语法。使用 command || exit /b 1 在失败时显式停止;这也能捕获负退出码。调用另一个批处理文件时,使用 call helper.cmd || exit /b 1,以便执行返回到钩子。环境更改会跨行保留;多行 if/else 块和 ^ 续行遵循常规 CMD 规则。
使用 r2pm -bi r2frida 安装已发布的二进制文件,而无需克隆或编译源代码。R2V 选择发布版本,默认使用已安装的 radare2 版本:
R2V=6.2.2 r2pm -bi r2frida
可选地使用 R2PM_PLATFORMS 声明支持的操作系统、运行时或确切目标:
R2PM_PLATFORMS "linux darwin windows"
# For a portable r2js script instead:
R2PM_PLATFORMS "r2js"
# For a package restricted to 32-bit x86 Linux instead:
R2PM_PLATFORMS "linux-x86-32"
以空格分隔的标签控制软件包搜索过滤,并填充 r2pm -sj 中的 platforms 数组。在支持的情况下,可以声明其他标签,例如 termux。该声明是可选的:未声明或值为空的软件包会保留从其安装钩子推断的平台,并保持其现有的安装行为。确切的 os-arch-bits 三元组会与 r2pm -H R2PM_TRIPLET 进行匹配,包括架构和位数。多个条目是备选方案,因此将 linux 与某个三元组并列添加可允许所有 Linux 架构。当存在 R2PM_BINSTALL* 钩子时,JSON 还会暴露 binary: true;即用型脚本也算作二进制安装。平台标签并不保证每个发布版本都有二进制文件。
软件包为 Unix shell 命令提供 R2PM_BINSTALL(),为 Windows 命令提供 R2PM_BINSTALL_WINDOWS()。这些钩子无需源代码检出即可运行,接收 R2V、R2PM_OS(linux、darwin、windows 等)、R2PM_ARCH(x86、arm 等)、R2PM_BITS(32 或 64)和 R2PM_TRIPLET(<os>-<arch>-<bits>,例如 linux-x86-64),并安装到通常的 R2PM_PLUGDIR、R2PM_BINDIR 及其他 r2pm 目录中。-g 选择系统插件目录,并在 Unix 上提供 R2PM_SUDO。
二进制钩子必须选择确切的版本和目标,处理自己的工具和运行时依赖,遵守 R2PM_OFFLINE,并在二进制文件不可用或安装失败时返回非零值。R2PM_NEEDS 和 R2PM_DEPS 是源代码构建的先决条件,会被跳过。没有源代码回退:r2pm 会报告错误并要求用户在不带 -b 的情况下重新运行。
r2frida 钩子会将 Linux .deb、macOS .pkg 和 Windows .zip 发布资产解压到 r2pm 目录中。可用性取决于所选的发布版本;缺少的架构或版本会失败,而不会使用其他发布版本。