用于检查 R 包的虚拟 Windows 计算机



Microsoft 提供免费的 Windows 10 虚拟机用于测试。在 Linux 和 MacOS 上工作的包维护人员可以使用它在 Windows 上测试他们的包。请参阅 说明,了解如何自动设置计算机以检查 R 包。

设置提供了使用 bash 的 SSH 访问,以便用户可以从他们首选的终端模拟器执行大多数任务。从源代码构建 R 和许多 R 包所需的命令行工具已预先安装。其他工具可通过 pacman 包管理器获得,包括例如 vim 编辑器。

说明显示了如何下载 R 和带有库的实验性 UCRT 工具链以构建 R 和 R 包。

详细信息

还可以使用远程桌面客户端通过图形界面登录计算机,该客户端可免费用于 Linux 和 MacOS。有一个用于传输文件的共享文件夹。

与例如 Docker 容器不同,这是一台用于交互式使用的普通计算机,其状态保存在(虚拟)硬盘上,该硬盘在虚拟机以及主机(Linux 或 macOS)计算机重新启动后仍能保留。可以创建/还原该状态的快照。

但是,不应在计算机上保存重要状态,因为测试的使用期限为 90 天。下载时请查看许可条款。

现在已在 Ubuntu 20.04 和 macOS 11.2.3 上测试了这些说明。

建议仅通过快速无计量连接安装计算机。预计下载量接近 10G,包括原始 VM 映像本身和工具链。

请参阅 说明 以开始。

内部

设置使用 vagrantvirtualbox 中配置(“预配”)和管理虚拟机。

预配包括

  • 设置 SSH:允许传入连接,插入公钥以在不使用密码的情况下连接,在启动时启动 SSH 服务器

  • 设置 RDP:允许传入连接,禁用 NLA 以允许较旧的客户端连接

  • 安装 MSys2,包括 bash,以及 unzip、diffutils、make、winpty、rsync、texinfo、tar、texinfo-tex、zip、subversion、bison、moreutils、xz、patch

  • 安装 Inno Setup 和 MikTeX

然后在 PowerShell 中实现各个预置步骤。Vagrant 使用 WinRM 协议与 VM 通信,该协议在此 VM 中默认启用。

限制

存在 90 天限制,但即使是 VM 背景中的说明也建议在到期后重新安装。

某些控制台应用程序无法在 SSH 中运行,包括 MikTeX。因此,无法从 SSH 连接构建 R 安装程序。但是,仍然可以构建 R 以及可能的大多数 R 包。

Windows 上的某些 R 操作默认使用图形界面。在 SSH 中工作时,有时可以禁用该功能,例如在安装包之前使用 options(menu.graphics=FALSE)

该机器的设置注重简单性,而非安全性。预期用途是在受信任的家用/办公网络中运行的笔记本电脑或单用户工作站,理想情况下机器上仍然有防火墙,用于测试和调试 R 包。有关详细信息,请参阅 Vagrantfile 中的注释。

此机器中的 Windows 10 版本非常旧,以至于 R 无法使用 UTF-8 作为本机编码。它仍然适用于使用 UCRT 工具链测试包,许多潜在问题与编码无关。此外,当前的 CRAN 检查也使用 Latin 1 编码运行。

参考

  1. 设置虚拟机以检查 R 包。 设置和使用 VM 的说明。包括 R 和工具链的实验性 UCRT 构建,但 [2] 中有更多详细信息。

  2. 操作方法:在 Windows 上的 R 中将 UTF-8 作为本机编码。 R 和工具链的实验性 UCRT 构建说明。