2013-04-04 14 views
9

Nowy R 3.0.0 wymaga, aby wszystkie dostarczone pakiety zostały ponownie zainstalowane. Dwa pytania:Czy skompilowane pakiety R są kompatybilne wstecz?

  • Czy to oznacza również, że oprogramowanie wywołujące R, np. rapache, trzeba rekompilować po aktualizacji R?
  • Czy nowe kompilacje są kompatybilne wstecz? Na przykład. jeśli pakiet r-cran-xxx został skompilowany przy użyciu r-base-dev 3.0.0, czy to opakowanie może być załadowane w wersji 2.15? Czy potrzebujemy dystrybuować oddzielne pakiety binarne dla R 2.15 i R 3.0.0?
+0

Nie powinieneś czytać pliku DESCRIPTION? –

+0

@DWin Jak twój komentarz jest pomocny? Załóżmy, że (a) Jeroen PRZECZYTAJ opis i (b) nadal nie jest pewien, albo dlatego, że plik z opisem jest niejasny, albo nie jest tak doświadczony w tego typu sprawach. Uważam, że społeczność użytkowników R na ogół jest pełna bardzo inteligentnych, dobrze poinformowanych osób, które niestety najpierw rozpoczynają typową rozmowę z komentarzami typu "RTFM". Niech jako społeczność staramy się być lepsi. –

+0

W tym przypadku zakładałem, że Jeroen wiedział o tym więcej niż ja i było to w rzeczywistości całkowicie autentyczne pytanie, które prosiłem o wyjaśnienia. Myślałem, że może mnie nauczyć. –

Odpowiedz

2

To jest naprawdę pytanie do r-devel, lub jak używasz naszej terminologii pakietów Debian/Ubuntu, r-sig-debian.

W skrócie:

  • Pytanie 1 jest AFAICT nie. Interfejs R C API nie zmienił się. Konstrukcja Rapache'a mocno wpłynęła na znacznie mniejszą bibliotekę r i r działa dobrze na moim systemie Ubuntu po zainstalowaniu R 3.0.0 z kompilacji Michaela na podstawie moich pakietów. Mimo że Littler (patrz r --version) został zbudowany przeciwko R 2.15.2.

  • Pytanie 2 to nie, i to nie jest żadna zmiana. R zawsze porusza się "do przodu w czasie", a nie do tyłu. Po prostu, jak potrzebujemy odbudować pakiet po dodaniu NAMESPACES i zmianie formatu pomocy. Więc jeśli masz N różnych wersji R z M różnymi ABI dla pakietów, możesz potrzebować M drzew i zarządzać swoimi libPathami. Nic nowego tutaj.