Udostępnij przez


Tworzenie lokalnego repozytorium pakietów języka R przy użyciu miniCRAN

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje usługi Azure SQL Managed Instance

W tym artykule opisano sposób instalowania pakietów języka R w trybie offline przy użyciu miniCRAN w celu utworzenia lokalnego repozytorium pakietów i zależności. MiniCRAN identyfikuje i pobiera pakiety i zależności w jednym folderze, który można skopiować na inne komputery na potrzeby instalacji pakietu języka R w trybie offline.

Można określić co najmniej jeden pakiet, a miniCRAN rekursywnie odczytuje drzewo zależności dla tych pakietów. Następnie pobiera tylko wymienione pakiety i ich zależności z CRAN lub podobnych repozytoriów.

Po zakończeniu miniCRAN tworzy wewnętrznie spójne repozytorium składające się z wybranych pakietów i wszystkich wymaganych zależności. Możesz przenieść to repozytorium lokalne na serwer i przejść do instalacji pakietów bez połączenia internetowego.

Doświadczeni użytkownicy języka R często szukają listy pakietów zależnych w pliku DESCRIPTION pobranego pakietu. Jednak pakiety wymienione w sekcji Import mogą mieć zależności drugiego poziomu. Z tego powodu zalecamy miniCRAN do zebrania pełnej kolekcji wymaganych pakietów.

Dlaczego warto utworzyć repozytorium lokalne

Celem utworzenia lokalnego repozytorium pakietów jest zapewnienie pojedynczej lokalizacji, której administrator serwera lub inni użytkownicy w organizacji mogą użyć do zainstalowania nowych pakietów języka R na serwerze, zwłaszcza takiej, która nie ma dostępu do Internetu. Po utworzeniu repozytorium można go zmodyfikować, dodając nowe pakiety lub uaktualniając wersję istniejących pakietów.

Repozytoria pakietów są przydatne w następujących scenariuszach:

  • Zabezpieczenia: Wielu użytkowników R jest przyzwyczajonych do dowolnego pobierania i instalowania nowych pakietów z CRAN lub jednej z jego stron lustrzanych. Jednak ze względów bezpieczeństwa serwery produkcyjne z programem SQL Server zwykle nie mają łączności z Internetem.

  • Łatwiejsza instalacja w trybie offline: aby zainstalować pakiet na serwerze offline, należy również pobrać wszystkie zależności pakietu. Użycie funkcji miniCRAN ułatwia uzyskanie wszystkich zależności w poprawnym formacie i uniknięcie błędów zależności.

  • Ulepszone zarządzanie wersjami: w środowisku wielu użytkowników istnieją dobre powody, aby uniknąć nieograniczonej instalacji wielu wersji pakietów na serwerze. Użyj repozytorium lokalnego, aby zapewnić spójny zestaw pakietów dla użytkowników.

Instalowanie aplikacji miniCRAN

Sam pakiet miniCRAN jest zależny od 18 innych pakietów CRAN, wśród których jest pakiet RCurl , który ma zależność systemową od pakietu curl-devel . Podobnie kod XML pakietu ma zależność od libxml2-devel. Aby rozwiązać problemy z zależnościami, zalecamy wstępne utworzenie lokalnego repozytorium na maszynie z pełnym dostępem do Internetu.

Uruchom następujące polecenia na komputerze z podstawowymi narzędziami języka R, R i połączeniem internetowym. Przyjęto założenie, że nie jest to komputer z programem SQL Server. Następujące polecenia instalują pakiet miniCRAN i pakiet igraph . Ten przykład sprawdza, czy pakiet jest już zainstalowany, ale można pominąć if instrukcje i zainstalować pakiety bezpośrednio.

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

Ustaw CRAN mirror i MRAN snapshot

Określ serwer lustrzany do pobierania pakietów. Można na przykład użyć witryny MRAN lub dowolnej innej witryny w regionie, która zawiera potrzebne pakiety. Jeśli pobieranie nie powiedzie się, spróbuj innego serwera lustrzanego.

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

Tworzenie folderu lokalnego

Utwórz folder lokalny, w którym będą przechowywane zebrane pakiety. Jeśli to często powtarzasz, możesz użyć nazwy opisowej, takiej jak "miniCRANZooPackages" lub "miniCRANMyRPackageV2".

Określ folder jako repozytorium lokalne. Składnia języka R używa ukośnika do przodu dla nazw ścieżek, co jest przeciwieństwem konwencji systemu Windows.

local_repo <- "C:/miniCRANZooPackages"

Dodawanie pakietów do repozytorium lokalnego

Po zainstalowaniu i załadowaniu miniCRAN utwórz listę określającą dodatkowe pakiety, które chcesz pobrać.

Nie dodawaj zależności do tej początkowej listy. Pakiet igraph używany przez miniCRAN automatycznie generuje listę zależności. Aby uzyskać więcej informacji na temat korzystania z wygenerowanego grafu zależności, zobacz Używanie miniCRAN do identyfikowania zależności pakietów.

  1. Dodaj pakiety docelowe "zoo" i "forecast" do zmiennej.

    pkgs_needed <- c("zoo", "forecast")
    
  2. Opcjonalnie wykreślij wykres zależności. Nie jest to konieczne, ale może być informacyjne.

    plot(makeDepGraph(pkgs_needed))
    
  3. Utwórz repozytorium lokalne. Pamiętaj, aby w razie potrzeby zmienić wersję języka R na wersję zainstalowaną w wystąpieniu programu SQL Server. Jeśli wykonasz uaktualnienie składnika, wersja może być nowsza niż oryginalna wersja. Aby uzyskać więcej informacji, zobacz Pobieranie informacji o pakiecie języka R.

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

    Na podstawie tych informacji pakiet miniCRAN tworzy strukturę folderów, którą należy skopiować później do programu SQL Server.

W tym momencie powinien znajdować się folder zawierający potrzebne pakiety i wszystkie wymagane dodatkowe pakiety. Katalog powinien zawierać zbiór spakowanych pakietów. Nie rozpakuj pakietów ani nie zmieniaj nazwy żadnych plików.

Opcjonalnie uruchom następujący kod, aby wyświetlić listę pakietów zawartych w lokalnym repozytorium miniCRAN.

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

Dodawanie pakietów do biblioteki wystąpień

Po utworzeniu repozytorium lokalnego z potrzebnymi pakietami przenieś repozytorium pakietów na komputer z programem SQL Server. W poniższej procedurze opisano sposób instalowania pakietów przy użyciu narzędzi języka R.

Uwaga / Notatka

Zalecaną metodą instalowania pakietów jest użycie narzędzia sqlmlutils. Zobacz Instalowanie nowych pakietów języka R za pomocą narzędzia sqlmlutils.

  1. Skopiuj folder zawierający repozytorium miniCRAN w całości do serwera, na którym planujesz zainstalować pakiety. Folder zazwyczaj ma następującą strukturę:

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

    W tej procedurze przyjęto założenie, że folder jest wyłączony z dysku głównego.

  2. Otwórz narzędzie języka R skojarzone z wystąpieniem (na przykład możesz użyć Rgui.exe). Kliknij prawym przyciskiem myszy i wybierz polecenie Uruchom jako administrator , aby umożliwić narzędziu wprowadzanie aktualizacji do systemu.

    • Na przykład domyślną lokalizacją pliku dla protokołu RGUI jest C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin\x64.
    • Na przykład lokalizacja pliku dla protokołu RGUI to C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\x64.
    • Na przykład lokalizacja pliku dla protokołu RGUI to C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\R_SERVICES\bin\x64.
  3. Pobierz ścieżkę biblioteki instancji i dodaj ją do listy ścieżek biblioteki.

    Na przykład

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

    Na przykład

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

    Na przykład

    outputlib <- "C:/Program Files/Microsoft SQL Server/MSSQL15.MSSQLSERVER/R_SERVICES/library"
    
  4. Określ nową lokalizację na serwerze, na którym skopiowano repozytorium miniCRAN jako server_repo.

    W tym przykładzie przyjęto założenie, że skopiowano repozytorium do folderu tymczasowego na serwerze.

    inputlib <- "C:/miniCRANZooPackages"
    
  5. Ponieważ pracujesz w nowym obszarze roboczym języka R na serwerze, musisz również dostarczyć listę pakietów do zainstalowania.

    mypackages <- c("zoo", "forecast")
    
  6. Zainstaluj pakiety, podając ścieżkę do lokalnej kopii repozytorium miniCRAN.

    install.packages(mypackages, repos = file.path("file://", normalizePath(inputlib, winslash = "/")), lib = outputlib, type = "win.binary", dependencies = TRUE);
    
  7. Z biblioteki wystąpień można wyświetlić zainstalowane pakiety przy użyciu polecenia podobnego do następującego:

    installed.packages()
    

Dalsze kroki