2015-10-30 85 views
1

我有幾個unix服務器使用安裝在共享R庫文件夾上的R包。這個包從這個共享文件夾延遲加載(這是默認的)。懶惰加載的R包的更新

現在我想更新軟件包:

1)是否有可能(和清潔)這樣做,無需關閉所有的R實例?

2)更確切地說,我關注以下內容:
2)),我從用戶界面獲得當我嘗試安裝一個已加載的包的警告: enter image description here
2)B) 從https://cran.r-project.org/doc/manuals/r-release/R-ints.html#Lazy-loading

當加載一個軟件包/命名空間,它使用它,包/命名空間環境中填充承諾爲所有的命名對象:當這些承諾進行評估,他們從數據庫加載的實際代碼。

這是否意味着,在做每個對象的實際評價時(將R實例將再次從庫文件夾讀在這種情況下,這意味着我需要在更新之前,要麼禁用延遲加載,或者關閉所有的R實例包)

3)有維護服務器,運行腳本的時候,網絡上的R程序包,而無需通過一個到每個服務器脫機一個放)

感謝的另一種方式你輸入

+0

這是一個_RStudio_禮貌消息。你需要用RStudio來完成。它基本上告訴你,_已經加載的sessions_不能被刷新。如果你想要剛剛升級的軟件包版本,你需要重新啓動(以確保獲得它們)。 –

+0

我認爲你讀的錯誤信息太多 - 你不應該安裝當前加載/附加在當前會話中的軟件包。 – hadley

+0

我仍然不同意@Hadley剛纔所說的,因爲a)當然你可以並且應該(在合理的操作系統上,除了Windows之外),但是b)不應該期望已經運行的會話被改變。您無法更改正在運行的R流程。句號。但是有些操作系統允許你升級一個軟件包,即使它被加載了(好的操作系統),有些操作系統也不會(壞的操作系統)。我想你現在是哪個。 –

回答

2

您問

1)是否有可能(和乾淨)做到這一點,而不關閉所有R實例?

我可以保證,是的,它是如何在任何地方工作和完成。

至於

2)更確切地說,我關注以下內容:

你正在讀錯了。只需建議R重新啓動,以確保新軟件包已加載,因爲您無法將其插入正在運行的會話中。

此外

3)是有保持服務器,運行腳本的所有時間,在網絡上R封裝,而不必到每個服務器脫機逐個)

把一個替代的方式

從來沒有必須離線服務器來更新用戶空間包。例如。當我們每年升級整個Ubuntu版本兩次時,我們甚至不會將它們脫機。