Membuat repositori paket R lokal menggunakan miniCRAN

Berlaku untuk: SQL Server 2016 (13.x) dan Azure SQL Managed Instance yang lebih baru

Artikel ini menjelaskan cara menginstal paket R secara offline dengan menggunakan miniCRAN untuk membuat repositori paket dan dependensi lokal. miniCRAN mengidentifikasi dan mengunduh paket dan dependensi ke dalam satu folder yang Anda salin ke komputer lain untuk penginstalan paket R offline.

Anda dapat menentukan satu atau beberapa paket, dan miniCRAN secara rekursif membaca pohon dependensi untuk paket ini. Kemudian hanya mengunduh paket yang tercantum dan dependensinya dari CRAN atau repositori serupa.

Setelah selesai, miniCRAN membuat repositori yang konsisten secara internal yang terdiri dari paket yang dipilih dan semua dependensi yang diperlukan. Anda dapat memindahkan repositori lokal ini ke server, dan melanjutkan untuk menginstal paket tanpa koneksi internet.

Pengguna R berpengalaman sering mencari daftar paket dependen dalam file DESCRIPTION dari paket yang diunduh. Namun, paket yang tercantum dalam Impor mungkin memiliki dependensi tingkat kedua. Untuk alasan ini, kami merekomendasikan miniCRAN untuk merakit koleksi lengkap paket yang diperlukan.

Mengapa membuat repositori lokal

Tujuan pembuatan repositori paket lokal adalah untuk menyediakan satu lokasi yang dapat digunakan administrator server atau pengguna lain dalam organisasi untuk menginstal paket R baru di server, terutama yang tidak memiliki akses internet. Setelah membuat repositori, Anda dapat memodifikasinya dengan menambahkan paket baru atau meningkatkan versi paket yang ada.

Repositori paket berguna dalam skenario ini:

  • Keamanan: Banyak pengguna R terbiasa mengunduh dan menginstal paket R baru sesuka hati, dari CRAN atau salah satu situs cerminnya. Namun, karena alasan keamanan, server produksi yang menjalankan SQL Server biasanya tidak memiliki konektivitas internet.

  • Penginstalan offline yang lebih mudah: Untuk menginstal paket ke server offline mengharuskan Anda juga mengunduh semua dependensi paket. Menggunakan miniCRAN memudahkan untuk mendapatkan semua dependensi dalam format yang benar dan menghindari kesalahan dependensi.

  • Manajemen versi yang ditingkatkan: Di lingkungan multi-pengguna, ada alasan bagus untuk menghindari penginstalan yang tidak terbatas dari beberapa versi paket di server. Gunakan repositori lokal untuk menyediakan sekumpulan paket yang konsisten untuk pengguna Anda.

Memasang miniCRAN

Paket miniCRAN itu sendiri tergantung pada 18 paket CRAN lainnya, di antaranya adalah paket RCurl , yang memiliki dependensi sistem pada paket curl-devel . Demikian pula, XML paket memiliki dependensi pada libxml2-devel. Untuk mengatasi dependensi, kami sarankan Anda membangun repositori lokal pada awalnya pada komputer dengan akses internet penuh.

Jalankan perintah berikut di komputer dengan alat R, R dasar, dan koneksi internet. Diasumsikan bahwa ini bukan komputer SQL Server Anda. Perintah berikut menginstal paket miniCRAN dan paket igraph . Contoh ini memeriksa apakah paket sudah diinstal, tetapi Anda dapat melewati if pernyataan dan menginstal paket secara langsung.

if(!require("miniCRAN")) install.packages("miniCRAN") 
if(!require("igraph")) install.packages("igraph") 
library("miniCRAN")

Mengatur cermin CRAN dan rekam jepret MRAN

Tentukan situs cermin yang akan digunakan dalam mendapatkan paket. Misalnya, Anda dapat menggunakan situs MRAN, atau situs lain di wilayah Anda yang berisi paket yang Anda butuhkan. Jika pengunduhan gagal, coba situs cermin lain.

CRAN_mirror <- c(CRAN = "https://mirrors.nics.utk.edu/cran/")

Membuat folder lokal

Buat folder lokal untuk menyimpan paket yang dikumpulkan. Jika Anda sering mengulangi ini, Anda mungkin ingin menggunakan nama deskriptif, seperti "miniCRANZooPackages" atau "miniCRANMyRPackageV2".

Tentukan folder sebagai repositori lokal. Sintaks R menggunakan garis miring untuk nama jalur, yang berlawanan dengan konvensi Windows.

local_repo <- "C:/miniCRANZooPackages"

Menambahkan paket ke repositori lokal

Setelah miniCRAN diinstal dan dimuat, buat daftar yang menentukan paket tambahan yang ingin Anda unduh.

Jangan tambahkan dependensi ke daftar awal ini. Paket igraph yang digunakan oleh miniCRAN menghasilkan daftar dependensi secara otomatis. Untuk informasi selengkapnya tentang cara menggunakan grafik dependensi yang dihasilkan, lihat Menggunakan miniCRAN untuk mengidentifikasi dependensi paket.

  1. Tambahkan paket target "kebun binatang" dan "prakiraan" ke variabel.

    pkgs_needed <- c("zoo", "forecast")
    
  2. Secara opsional, plot grafik dependensi. Ini tidak perlu, tetapi bisa informatif.

    plot(makeDepGraph(pkgs_needed))
    
  3. Buat repositori lokal. Pastikan untuk mengubah versi R, jika perlu, ke versi yang diinstal pada instans SQL Server Anda. Jika Anda melakukan peningkatan komponen, versi Anda mungkin lebih baru dari versi aslinya. Untuk informasi selengkapnya, lihat Mendapatkan informasi paket R.

    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "win.binary", Rversion = "3.3");
    

    Dari informasi ini, paket miniCRAN membuat struktur folder yang Anda butuhkan untuk menyalin paket ke SQL Server nanti.

Pada titik ini Anda harus memiliki folder yang berisi paket yang Anda butuhkan dan paket tambahan apa pun yang diperlukan. Folder harus berisi kumpulan paket zip. Jangan unzip paket atau ganti nama file apa pun.

Secara opsional, jalankan kode berikut untuk mencantumkan paket yang terkandung dalam repositori miniCRAN lokal.

pdb <- as.data.frame(pkgAvail(local_repo, type = "win.binary", Rversion = "3.3"), stringsAsFactors = FALSE);
head(pdb);
pdb$Package;
pdb[, c("Package", "Version", "License")]

Menambahkan paket ke pustaka instans

Setelah Anda memiliki repositori lokal dengan paket yang Anda butuhkan, pindahkan repositori paket ke komputer SQL Server. Prosedur berikut menjelaskan cara menginstal paket menggunakan alat R.

Catatan

Metode yang direkomendasikan untuk menginstal paket menggunakan sqlmlutils. Lihat Menginstal paket R baru dengan sqlmlutils.

  1. Salin folder yang berisi repositori miniCRAN, secara keseluruhan, ke server tempat Anda berencana untuk menginstal paket. Folder biasanya memiliki struktur ini:

    <miniCRAN root>/bin/windows/contrib/version/<all packages>

    Dalam prosedur ini, kami mengasumsikan folder dari drive root.

  2. Buka alat R yang terkait dengan instans (misalnya, Anda dapat menggunakan Rgui.exe). Klik kanan dan pilih Jalankan sebagai administrator untuk memungkinkan alat membuat pembaruan pada sistem Anda.

    • Misalnya, lokasi file default untuk RGUI adalah C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin\x64.
    • Misalnya, lokasi file untuk RGUI adalah C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\x64.
    • Misalnya, lokasi file untuk RGUI adalah C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\R_SERVICES\bin\x64.
  3. Dapatkan jalur untuk pustaka instans, dan tambahkan ke daftar jalur pustaka.

    Contohnya,

    outputlib <- "C:/Program Files/Microsoft SQL Server/MSSQL13.MSSQLSERVER/R_SERVICES/library"
    

    Contohnya,

    outputlib <- "C:/Program Files/Microsoft SQL Server/MSSQL14.MSSQLSERVER/R_SERVICES/library"
    

    Contohnya,

    outputlib <- "C:/Program Files/Microsoft SQL Server/MSSQL15.MSSQLSERVER/R_SERVICES/library"
    
  4. Tentukan lokasi baru di server tempat Anda menyalin repositori miniCRAN sebagai server_repo.

    Dalam contoh ini, kami berasumsi bahwa Anda menyalin repositori ke folder sementara di server.

    inputlib <- "C:/miniCRANZooPackages"
    
  5. Karena Anda bekerja di ruang kerja R baru di server, Anda juga harus menyediakan daftar paket untuk diinstal.

    mypackages <- c("zoo", "forecast")
    
  6. Instal paket, menyediakan jalur ke salinan lokal repositori miniCRAN.

    install.packages(mypackages, repos = file.path("file://", normalizePath(inputlib, winslash = "/")), lib = outputlib, type = "win.binary", dependencies = TRUE);
    
  7. Dari pustaka instans, Anda dapat melihat paket yang diinstal menggunakan perintah seperti berikut ini:

    installed.packages()
    

Langkah berikutnya