AWS がホストする CentOS Linux サーバーで RStudio Server を実行しています。サーバーには、それぞれ RStudio Server を使用する複数のユーザーがいます。次のように、すべてのユーザーがパッケージをインストールするための共通のパスを用意したいと考えています。
- 各ユーザーは、RStudio ユーザー プロファイルのすべてのパッケージをインストールする必要はありません。
- 1 人がパッケージを更新すると、すべてのユーザーが更新されたパッケージを使用します。
これを行うための最良の手順は何ですか?
私が提案した解決策は次のとおりでしたが、失敗しました。
既存のユーザー パッケージのリストを保存します。
> save.pkg.list <- installed.packages()[is.na(installed.packages()[ , "Priority"]), 1]
> save(save.pkg.list, file="pkglist.Rdata")
ユーザー パッケージを削除します。
> remove.packages(save.pkg.list)
save.pkg.list
次に、ルートの下のフォルダーにパッケージをインストールすることを考えました。/usr/share/R/library
ライブラリ パスに 1 つのパッケージを含む共有フォルダーのように見えるものが既にありました。
.libPaths() [1] "/home/ursus/R/x86_64-redhat-linux-gnu-library/3.1" "/usr/lib64/R/library" "/usr/share/R/library"
テストするために、1 つのパッケージを共有フォルダーにインストールして、サーバー上の他のユーザーが R インスタンスでそれを使用できるかどうかを確認してみました。おそらくルートの下にあり、sudo特権(私が持っている)を使用する必要があると想定していますが、パッケージインストールプロセスのためにそれらをRに渡す方法がわからないため、インストールは失敗しました:
install.packages("dlm", lib = "/usr/share/R/library") Warning in install.packages : 'lib = "/usr/share/R/library"' is not writable
最終的には、デフォルトのパッケージのインストール/ロード動作を制御するためにR_LIBS_SITE
、環境変数またはそのようなものにいくつかの変更が必要になると思います。R_LIBS_USER
しかし、私はまだそこにいません。