2011-12-18 33 views
6

Câu hỏi: Làm cách nào để di chuyển tất cả các gói R cập nhật nhất thành một vị trí đơn giản mà R (và mọi thứ khác) sẽ sử dụng từ bây giờ và mãi mãi cho các gói của tôi?R: kết hợp các vị trí thư viện với hầu hết các gói cập nhật

Tôi đã chơi xung quanh với R trên Ubuntu 10.04 sử dụng nhiều RGedit, RCmdr, R shell và RStudio. Trong khi đó, tôi đã cài đặt các gói, các gói cập nhật và các gói được cập nhật lại thông qua apt, synaptic, install.packages(), v.v ... có nghĩa là các gói này được đặt ở mọi nơi, và (thỉnh thoảng sudo được gửi vào) với quyền.

Hiện nay tôi có các phiên bản khác nhau của các gói khác nhau (và lặp đi lặp lại) trong:

/home/me/R/i486-pc-linux-gnu-library/2.10 
/home/me/R/i486-pc-linux-gnu-library/2.14 
/home/me/R/i486-pc-linux-gnu-library/ 
/usr/local/lib/R/site-library    
/usr/lib/R/site-library      
/usr/lib/R/library 

Đệ Nhất - Tôi là một người dùng duy nhất, trên một máy duy nhất - Tôi không muốn nhiều địa điểm thư viện, tôi chỉ muốn nó hoạt động.

Thứ hai - Tôi đang sử dụng kết nối cực kỳ chậm và không thể chỉ tải xuống các gói liên tục.

Vậy - có cách nào dễ dàng hợp nhất tất cả các vị trí thư viện này vào một vị trí đơn giản không? Tôi có thể sao chép các thư mục đó không?

Làm thế nào để đặt nó trong bê tông rằng đây là và luôn luôn sẽ là nơi mà bất cứ điều gì R có liên quan tìm và cập nhật các gói?

Điều này thật đáng buồn.

Cảm ơn sự giúp đỡ của bạn.

Trả lời

4

Sau khi vẽ ra bit cùng nhiều thông tin ở đây đi: Hướng dẫn Một moron hoàn chỉnh để tổ chức các gói R thư mục:

NB1 - đây là của tôi trải nghiệm với Ubuntu - số dặm của bạn có thể thay đổi NB2 - Tôi là một người dùng duy nhất trên một máy tính duy nhất và tôi thích những thứ đơn giản.

Ubuntu đặt bất cứ điều gì được cài đặt qua apt, hoặc khớp thần kinh trong:

/usr/lib/R/site-library      
/usr/lib/R/library 

thư mục. Các vani mặc định R cài đặt sẽ cố gắng cài đặt các gói ở đây:

/usr/local/lib/R/site-library 

Kể từ đây là những thư mục hệ thống người dùng không có quyền ghi vào, tùy thuộc vào phương pháp những gì bạn đang tương tác với R bạn có thể được nhắc nhở với một trận giao hữu - "Này bạn thân - chúng tôi không thể viết ở đó, bạn muốn chúng tôi đặt các gói của bạn trong thư mục nhà của bạn?" có vẻ vô tội và đủ hợp lý ... giả sử bạn không bao giờ thay đổi GUI, hoặc môi trường làm việc của bạn.Nếu bạn làm thế, GUI/môi trường mới có thể không tìm trong thư mục chứa các gói, vì vậy sẽ không tìm thấy chúng. (Hầu hết các giao diện có một cách để bạn chỉ ra nơi thư viện cá nhân của bạn là gói, nhưng ai muốn muck về trong tập tin cấu hình?)

Điều gì có vẻ là thực hành tốt nhất cho tôi (và cảm thấy tự do để sửa tôi nếu Tôi sai) với cài đặt cài đặt mặc định trên Ubuntu, là thực hiện bất kỳ thao tác quản lý gói nào từ một trình bao R cơ bản như sudo: > sudo R và từ đó, hãy thực hiện vlogoo install.packages() của bạn. Điều này dường như đặt các gói trong thư mục usr/local/lib/R/site-library.

Đồng thời, update.packages() sẽ cập nhật các tập tin trong /usr/lib/R/site-libraryusr/lib/R/library thư mục, cũng như usr/local/lib/R/site-library

(Đối với usr/lib/R/ chia, nó trông giống như /library/ có các gói cốt lõi, trong khi /site-library/ giữ bất cứ điều gì thêm, giả sử chúng đã được cài đặt bởi apt ...)

Bất kỳ gói nào được cài đặt trước đó và sai địa điểm có thể được chuyển đến thư mục /usr/local/lib/R/site-library (giả sử bạn đang sudo nhập nó) bằng cách di chuyển các thư mục (nhờ @Tommy), nhưng usr/lib/R/ được điều khiển bởi apt - tốt nhất không cộng hoặc trừ bất kỳ thứ gì từ đó ...

Whew. Dù sao - đủ đơn giản, và bằng ngôn ngữ đơn giản. Cảm ơn tất cả mọi người đã giúp đỡ.

+0

Không ** viết ** bên dưới '/ usr'; chỉ 'dpkg',' apt', ... nên truy cập các tệp đó. Đối với các tệp cấp người dùng, sử dụng '/ usr/local' (hoặc'/opt'). –

+0

Đây là tham chiếu đến sao chép các thư mục ya? Gotcha. Vì vậy, trước khi tôi cập nhật câu trả lời, các tệp trong các gói '/ usr/lib/R/site-library /' ONLY có được cài đặt bởi apt không? Và một cài đặt mặc định của vanilla R đặt các gói được cài đặt bằng cách sử dụng 'install.packages()' trong 'usr/local/lib/R/site-packages'? Đối với điểm thưởng, nếu tôi cài đặt thông qua apt, sau đó cập nhật thông qua 'update.packages()' nơi nào các tập tin đi? Ghi đè 'user/lib/R/site-library' hoặc được đặt trong' usr/local/lib/R/site-library/'- và' sudo' có tạo sự khác biệt không? Nếu điều này được viết ra ở đâu đó, hãy chuyển hướng tôi. Tìm kiếm của tôi đã trống ... Cảm ơn – Trees4theForest

+0

Mọi thứ từ Ubuntu/Debian được cài đặt qua apt, dpkg, ...: '/ usr /'. Bất cứ điều gì bạn làm (ví dụ: thông qua 'install.packages()' của R: '/ usr/local'. Đó là một quy tắc chung cho tất cả các ứng dụng, không chỉ là R. Do * không * tự mess bên dưới '/ usr', bạn có thể hối hận. Nếu bạn có câu hỏi, hãy hỏi trong danh sách 'r-sig-debian'. –

7

Có, nó hầu như chỉ hoạt động để sao chép các thư mục. Nhưng các gói trước 2.14 KHÔNG có tệp NAMESPACE có thể sẽ không hoạt động trong R 2.14 nơi tất cả các gói phải có một không gian tên ...

Và bạn muốn đảm bảo bạn chỉ sao chép phiên bản mới nhất của mỗi gói nếu bạn có nhiều phiên bản ...

Nếu bạn nhập .libPaths(), nó sẽ cho bạn biết nơi R tìm kiếm gói. Đầu tiên trong danh sách là nơi các gói mới thường được cài đặt. Tôi nghi ngờ rằng .libPaths() có thể quay trở lại những điều khác nhau từ RStudio vs rcmd, vv

+0

Điều cần biết. Yeah - đó là một phần của thủ thuật ... nhưng không thể vượt qua được. Bất kỳ đề xuất nào về thư mục nào cần chọn (và bám vào) và cách đảm bảo R luôn sử dụng nó? – Trees4theForest

+0

@ Trees4theForest - Cập nhật câu trả lời ... – Tommy

+0

Ok - Tôi thấy cách thức, nhưng không tính tổng nhiều lý do. Và tôi đang trống lên trên các tập tin trợ giúp ... Ví dụ, sự khác biệt giữa/library/và/site-library/là gì? – Trees4theForest

Các vấn đề liên quan