# A Survival Guide To Install rlang From GitHub On Windows

## January 25, 2019 by Hiroaki Yutani

I don’t have any strong feelings about OSs. They are just tools. I had been a Mac user for 10+ years since I was 10, and now I’m using Windows for no reason. All OSs have their pros and cons. For example, I like Mac, but, in the late 90s, I was very disappointed at Mac because it didn’t have fonts to display Shift_JIS art nicely.

Anyway, I’m using Windows and I need to survive. Here’s an error I often see when I try to install rlang package from GitHub by devtools::install_github():

installing to C:/path/to/R/win-library/3.5/rlang/libs/x64
Error in file.copy(files, dest, overwrite = TRUE) :
(converted from warning) problem copying .\rlang.dll to
C:\path\to\R\win-library\3.5\rlang\libs\x64\rlang.dll: Permission denied


This is because rlang.dll is used by the current R session (or other session?), so Windows won’t let me overwrite it. What should I do? Here’s some advice.

## Restart the R session

This is always necessary. Since rlang is very fundamental package, it might be loaded as a dependency of some attached or loaded package (if you are curious about the differences between load and attach, R Packages helps). You need a fresh session with no packages (except for base packages) loaded. On RStudio, Ctrl+Shift+F10, or “Restart R” in “Session” menu.

For usual packages, this is enough. But, rlang is not the case…

## Use remotes::install_github() instead of devtools

devtools::install_github() is just re-exported from remotes package. So, are the same one. But, if I use devtools::, devtools’s dependencies are loaded, and, at the moment, rlang is included here. So, the same error will occur.

On the other hand, remotes:: doesn’t need rlang directly or indirectly. So, run

remotes::install_github("r-lib/rlang")


(You might also need remotes::install_github() for other dependency packages like glue.)

Note that, pkg package seems aware of this kind of problems, so we’ll be free from this kind of problems when pkg is mature!

## Extra steps?

Usually, restarting the session + using remotes::install_github() works. But, in the past, I needed some extra steps. I don’t know why, but it seemed RStudio loads rlang in background (c.f. https://github.com/r-lib/remotes/issues/131). So, for future references, I note some. Hope this will never be needed again…

### Remove rlang

Removing package might help, since removed package cannot be loaded.

remove.packages("rlang")


### Use git clone, R CMD build and R CMD INSTALL

If you really need to be away from RStudio, or even from any R sessions. In those cases, you can use git and R CMD build and R CMD INSTALL on console.

git clone https://github.com/r-lib/rlang
R.exe CMD build --no-manual --no-build-vignettes rlang/
R.exe CMD INSTALL [--some-options-i-dont-remember] rlang_*.tar.gz