Установка пакетов в R или package 'xxx' is not available (for R version xyz)

Привет, дружочки 😘

Сегодня опять битый час потратила на квест с установкой пакетов в R и поняла что так больше продолжаться не может. Надо покончить с этим.

Вот на 100% уверена (если вы R-user конечно), что следующие строки вам до боли знакомы.

install.packages("imputeTS")
Installing package into ‘/home/pilipenko/R/x86_64-pc-linux-gnu-library/3.4’
(as ‘lib’ is unspecified)
Warning in install.packages :
  dependency ‘ggtext’ is not available
trying URL 'https://cloud.r-project.org/src/contrib/imputeTS_3.1.tar.gz'
Content type 'application/x-gzip' length 3015320 bytes (2.9 MB)
==================================================
downloaded 2.9 MB

ERROR: dependency ‘ggtext’ is not available for package ‘imputeTS’
* removing ‘/home/pilipenko/R/x86_64-pc-linux-gnu-library/3.4/imputeTS’
Warning in install.packages :
  installation of package ‘imputeTS’ had non-zero exit status

The downloaded source packages are in
	‘/tmp/RtmpbhRtd1/downloaded_packages’

 installation of package 'xxx' had non-zero exit status 😬

Ну, че там, dependency говорит, не хватает ему ‘ggtext’, который почему-то не доступный. Ну доставим ручками, тоже мне проблема.

install.packages("ggtext")
Installing package into ‘/home/pilipenko/R/x86_64-pc-linux-gnu-library/3.4’
(as ‘lib’ is unspecified)
Warning in install.packages :
  package ‘ggtext’ is not available (for R version 3.4.4)

А вот и нюансик, версия, говорит, R не подходит. Причем - совсем левой либе.

 package 'xxx' is not available (for R version xyz).


StackOwerflow, RStudio комьюнити и GitHub просто кишат подобными заголовками. И чего там только не предлагают чтобы заработать карму.

Не, ну если подумать - дело говорят. Перезапустите сессию R, обновите R, установите пакет напрямую из гитхаба (а перед этим, конечно же, установите пакет для установки пакетов). И мое любимое - эта проблема уже решена в issue #54321, а там ссылка на issue #67890, в котором - опять 25 - обновите R.

Окей, согласна, не будем терять время. Обновлять R? А вдруг послетают пакеты которые уже установлены. Да и работу надо работать, а не с обновлениями возиться.

Ну, поныли, хватит. Пошли обновлятся в консоль.

sudo apt-get install r-base
Reading package lists... Done
Building dependency tree       
Reading state information... Done
r-base is already the newest version (3.4.4-1ubuntu1).
The following packages were automatically installed and are no longer required:
  libllvm7 libsdl-ttf2.0-0
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 120 not upgraded.

r-base is already the newest version (3.4.4-1ubuntu1) - получите и распишитесь.

Да можно погуглить, что таки есть поновее версия R, но мы и так потратили кучу времени, да и с установкой уже рабочих пакетов есть риски. 

А ведь, в большинстве случаев нам важен не сам злосчастный пакет, а его наличие для установки другого, и по закону подлости, довольно незаменимого. 

Тут можно обновлятся и возится до бесконечности. Я проходила это и не раз. От не факт, что тот всратый пакет, который нам по факту и не нужен, но, хоть убейся, не дает нам поставить нужный - доставиться. Ну не хотим мы лишних движений - мы хотим кодить. 

Все, успокоились. Выход есть. 

Думаем. Пакет ‘ggtext’не доступен для данной версии R. Хотя, поверьте, еще вчера он работал. Вспоминаю, что по привычке линуксоида (тоже начинающего) сегодня я обновила все пакеты. Теперь на руках его новая версия, а нам нужна старая. Пошли искать.

Итак, лайфхак. 
Идем на сайт https://cran.r-project.org/. Жмем слева Packages. На открывшейся страничке находим Archive. В итоге мы тут: https://cran.r-project.org/src/contrib/Archive/

Из списка пакетов находим обезумевший ранее ‘imputeTS’ (‘ggtext’, признаюсь, не нашла, да и что нам мелочиться).

И забираем себе последний пакетик. Акцентирую, что мы в архиве, и последний - это не актуальный. То что надо, лишь бы заработало, согласны?)


Теперь в R Studio идем в Tools → Install Packages. Выбираем установку из архива, указываем путь к файлу. Остальное по дефолту. Install.

Собственно, результат:

install.packages("~/Downloads/imputeTS_3.0.tar.gz", repos = NULL, type = "source")
Installing package into ‘/home/pilipenko/R/x86_64-pc-linux-gnu-library/3.4’
(as ‘lib’ is unspecified)
* installing *source* package ‘imputeTS’ ...

// бла бла

* DONE (imputeTS)

Красиво. Быстро. Проблема решена.

От показал бы мне это кто-нибуть в мои 22 (ща мне 23) - пару дней жизни точно бы сэкономила. Ну, вы-то, теперь осведомлены 😏. 

Наслаждайтесь и потратьте высвобожденные дни на что-нибуть стоящее.
Отдых, например, или сон. 

Всегда хорошая идея.

Comments