Global Package Storage in RStudio Teams

Lets assume we have a RS Teams environment with RSPro, Connect and RSPackage Manager installed and configured.

Normally, when a user installs a package - RSPro downloads that package from PackMan and stores the files in the users home.

Now - lets say we want to instead have a global install location, where lets say a super user comes in and installs all those packages - so instead of all the analysts individually installing - they would simply load their packages from this one location.

If I could separate my question in to two parts:

  1. Ignore whether or not you think this is good/bad practice. From a purely system level - will taking an approach like this have any negative effects? Will it cause the Teams suite to break in any way? Or is it safe to take this approach.

  2. Asssuming then it is safe to do the above - how good/bad of a practice would this be? Would it significantly impact user experience? Or would it be seamless?

As for the 'why?'. Well, the users want to not have to install the same version of a package 100 times for 100 different people.

I have a sense for some of the pros/cons of this - but I would really like to hear the communities opinion on this.

1 Like

Hi ! great question !

First you may find this resource useful

It offers different strategies among them the one you are describing.

Second, I can share experience.

In our setup, as R admin, I installed a set of packages in a share library so that new users can start right away. This shared library is configured in the by default on the servers so that everyone has read access. We decided to have one shared library per R version. This insure our user that if they use this shared library exclusively, work will be reproducible.

The challenge is adding a new package in this library when needed. It was not easy at first we a lot of custom functions, but since we are using now snapshot repository from our package manager, it is now easy. It means we have our share library configured using a frozen cran url from the package manager so that we can later in time install non already installed packages without having the risk of breaking anything.
I believe this is this strategy Solutions - Shared Baselines

Apart from that, users can install missing or newer packages in their own library path.

Everything works fine and user (specifically new users) are very happy with this approach.

Another approach we have use too, is configuring new renv :package: to have a shared renv cache on the servers so that every user that needs to use renv for its development won't have to install the package if already in the cache (if another user was needing it before for example). This helps to setup very quick some new renv project.

Hope it helps answer some of your questions. I am happy to share further details if you have some questions.

1 Like

Hey @kevinwtbolger,

Great question! We do something very similar to what @cderv described for the RStudio internal installs of RStudio Team.

If we know people are going to want a package, we can install it centrally.

We definitely don’t stress about trying to get all the packages though. People can still install packages they need in a user or project library. If you’re using package binaries, installs of CRAN packages are really nice and fast, so it’s way more manageable for users to install a whole bunch of packages if they need.

2 Likes

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.