diff --git a/mx.fastr/mx_fastr_pkgs.py b/mx.fastr/mx_fastr_pkgs.py
index f45348f89c8b8acc476d7b0d1f166c5ec1b21eeb..9a489fd72b27198b597783accf6f8175d418a315 100644
--- a/mx.fastr/mx_fastr_pkgs.py
+++ b/mx.fastr/mx_fastr_pkgs.py
@@ -106,6 +106,13 @@ def _packages_test_project():
 def _packages_test_project_dir():
     return mx.project(_packages_test_project()).dir
 
+def _ensure_R_on_PATH(env, bindir):
+    '''
+    Some packages (e.g. stringi) require that 'R' is actually on the PATH
+    '''
+    env['PATH'] = join(bindir) + os.pathsep + os.environ['PATH']
+
+
 def installpkgs(args):
     _installpkgs(args)
 
@@ -120,10 +127,18 @@ def _installpkgs(args, **kwargs):
     by the FASTR_GRAALVM environment variable, we can't use mx to invoke
     FastR, but instead have to invoke the command directly.
     '''
+    if kwargs.has_key('env'):
+        env = kwargs['env']
+    else:
+        env = os.environ.copy()
+        kwargs['env'] = env
+
     script = _installpkgs_script()
     if _graalvm() is None:
+        _ensure_R_on_PATH(env, join(_fastr_suite_dir(), 'bin'))
         return mx_fastr.rscript([script] + args, **kwargs)
     else:
+        _ensure_R_on_PATH(env, os.path.dirname(_graalvm_rscript()))
         return mx.run([_graalvm_rscript(), script] + args, **kwargs)
 
 
@@ -352,8 +367,10 @@ def _gnur_install_test(forwarded_args, pkgs, gnur_libinstall, gnur_install_tmp):
     args += ['--testdir', 'test.gnur']
     _log_step('BEGIN', 'install/test', 'GnuR')
     if _graalvm():
+        _ensure_R_on_PATH(env, os.path.dirname(_gnur_rscript()))
         mx.run(args, nonZeroIsFatal=False, env=env)
     else:
+        _ensure_R_on_PATH(env, mx_fastr._gnur_path())
         mx_fastr.gnu_rscript(args, env=env)
     _log_step('END', 'install/test', 'GnuR')