2010-05-25 29 views
35

Tôi muốn tạo một kho lưu trữ gói R cục bộ để người dùng trong công ty của tôi có thể cài đặt các gói từ nó và quản trị viên hệ thống có thể cập nhật định kỳ cục bộ. Truy cập vào các gương CRAN hiện bị từ chối.Tạo một kho lưu trữ gói R cục bộ

Có cách nào đơn giản để thực hiện việc này không?

Cảm ơn bạn đã dành thời gian.

EDIT: Tôi xin lỗi vì đã giám sát. Hướng dẫn là nơi tôi nên nhìn đầu tiên. Cảm ơn bạn.

Trả lời

36

Có, hoặc một bản sao của CRAN hoặc repo với các gói địa phương dễ cài đặt. Có lẽ bạn muốn điều này cho Windows để làm điều này:

  1. Tạo một thư mục cấp cao nhất trên máy chủ web của bạn, nói R/
  2. Tạo hệ thống cấp bậc bình thường trong đó: R/bin/windows/contrib/2.11. Nếu bạn cần hỗ trợ các bản phát hành khác (trước đó), chỉ cần tạo các thư mục 2.10, 2.9, ... bên cạnh thư mục 2.11.
  3. Đặt gói bạn cần vào thư mục (ví dụ, 2.11), sau đó thay đổi vào thư mục đó và chạy lệnh sau để tạo PACKAGESPACKAGES.gz file cho kho:

    tools::write_PACKAGES(".", type="win.binary")

Đó là tất cả để có nó - bây giờ bạn có thể truy cập vào kho lưu trữ bằng cách trỏ đến địa chỉ được đưa ra một lệnh như

update.packages(repos="http://my.local.server/R", ask=FALSE) 

mà tôi thậm chí còn làm trong R/zzz.R cho các gói địa phương để chúng tự cập nhật.

Sửa một số lăm + năm sau: Và gói drat nay tự động hóa rất nhiều này, và tỏa sáng đặc biệt là nếu bạn cũng sử dụng GitHub để phục vụ kho qua http/https (nhưng rất hữu ích cho lưu trữ khác hoặc địa phương quá) .

+0

Tự động cập nhật âm thanh rất tiện lợi, nhưng tôi không hiểu vị trí đặt lệnh cập nhật. Tôi đã chơi xung quanh với 'zzz.R' và' .onLoad' nhưng không thể làm cho nó vượt qua kiểm tra 'R CMD ...'. Theo cách có vẻ hơi lạ để cập nhật những gì bạn hiện đang tải. – Backlin

+0

Lệnh cập nhật có thể được nhập vào R bởi bất kỳ ai có thể truy cập vào kho lưu trữ. –

+4

Ngoài ý kiến ​​của Dirk, nếu bạn yêu cầu người dùng gói chỉnh sửa các tệp 'Rprofile.site' của họ (được chạy lúc khởi động mỗi phiên R) để bao gồm một số thứ như' tùy chọn (repos = c (getOption ("repos"), MyCompanyRepo = "http: //my.local.server/R")) ', sau đó người dùng của bạn có thể làm những việc như' install.packages ("mypackage") 'mà không cần trỏ đến một đường dẫn. –

2

Gói miniCRAN cũng cung cấp chức năng tuyệt vời cho việc này. Ưu điểm chính là bạn không cần một máy nhân bản đầy đủ, nhưng có thể thiết lập một gương "nhỏ" của CRAN chỉ với các gói phân phối bạn cần, bao gồm cả các phụ thuộc của chúng.

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