Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

使用 Github Actions 作为免费虚拟机调试不同平台上的 R 问题

Posted on 2022-12-22

标志.png

作为一名开发者,我的工作机器是Macbook,但经常需要在其他平台调试R问题。多年来,我一直在使用 VirtualBox 和 VMware 等工具安装不同的操作系统并在我的 Macbook 上运行它们。我注意到 VMware 上的 Windows 需要越来越多的内存。我总共有 16Gb 内存,必须给 VMware 至少 10Gb 才能运行 Windows。我不确定我是否应该将其归咎于 VMware 或 Windows,但这肯定会在我启动虚拟机时减慢我的计算机速度。

一两年前,我发现了 Github action mxschmitt/action-tmate ,从那以后我就越来越少用 VMware 了。通过这个简单的操作,您可以在 Github Actions 支持的任何平台上调试问题,包括 Windows、macOS 和 Ubuntu。当然,您也可以调试 R 问题。

我创建了一个示例 repo yihui/tmate-r来展示如何设置一个 Github 操作.github/workflows/debug.yaml ,它首先安装 R、Pandoc 和 TinyTeX,然后使用tmate操作,这样你就可以能够通过ssh进入 Github 操作的虚拟机(或单击 web shell 的链接)来调试 R 问题。您可以将config中的os更改为ubuntu-latest 、 windows-latest或macOS-latest ,具体取决于您要调试的平台。同样,你也可以将R版本改为devel 、 release和oldrel-1等,这样你就可以使用不同版本的R进行调试。大多数时候我使用devel (即开发)版本,因为我不我不想将它安装在我自己的计算机上,并且我的软件包中的 CRAN 问题很可能出现在 R 的devel版本中。

使用ISO-8859-15语言环境进行调试的示例

我最近尝试调试的一个问题是knitr的反向依赖未能通过 CRAN 的 Debian 机器上的R CMD check 。这台机器有一个特殊的语言环境en_US.iso8859-15 。我无法在我的 macOS 上重现该问题,但这一定是因为我没有使用 R 的devel版本。我使用 Github 操作启动了一台 Ubuntu 机器。我花了好几个小时才弄清楚如何正确设置语言环境:

 sudo locale-gen en_US.ISO-8859-15 # then start R with this locale LANG=en_US.ISO-8859-15 R

也就是说,我花了几个小时终于弄清楚我需要ISO-8859而不是iso8859 ……在CRAN 页面上, LC_CTYPE是en_US.iso885915 ,我也尝试过但失败了。我不知道这是否是 Debian 和 Ubuntu 之间的区别。我写下这篇笔记以防其他任何糟糕的包作者遇到同样的问题。

关于 Windows 上符号链接的另一个例子

昨天用Windows机器调试一个符号链接问题,发现file.symlink()在Github的Windows机器上可以,但是在CRAN的机器上就不行了。再一次,我不知道为什么会这样,但我只是在这里写下一张纸条。

Windows 上的警告

我不确定为什么,但是如果您在 Windows 上运行R ,则 CRAN 存储库未按预期设置(这可能是 shell 的问题)。你必须自己设置它,否则install.packages()会挂起你的会话并且无法从 shell 退出。您将需要取消 Github 操作。为避免这种情况,您可以先运行:

 if (identical(getOption('repos'), c(CRAN = '@CRAN@'))) options(repos = 'https://cran.rstudio.com')

概括

您不必购买虚拟机工具,或某个操作系统 (Windows) 的副本,或 Macintosh 计算机来调试其他平台上的问题。运行 Github 操作,并等待在 Github 操作日志中设置tmate会话。然后,您只需要一个运行ssh的终端,或者只需单击链接即可在浏览器中使用 web shell(首次登录时按q )。你有大约六个小时的时间,这可能足以解决大多数问题。调试完成后,一定要注销,以免浪费Github资源。

原文: https://yihui.org/en/2022/12/gha-debug/

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • eighty twenty
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Steve Blank
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • Wes Kao
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme