#author("2022-09-02T14:42:57+09:00","external:moriat","moriat")
#author("2022-09-02T16:55:54+09:00","external:moriat","moriat")
#topicpath

** R のパッケージ依存性 [#sadb65dc]
*** はじめに [#a1c3e09f]
- 問題点~
debian を含む各ディストリビューションでは、それぞれ、チューンされたパッケージを提供している。例えば、r-cran-stars とか。~
ところが、提供されていないパッケージを [[CRAN>https://cran.r-project.org/]] から導入しようとするとき、同時に、他のパッケージが導入されることがある。~
すると、2通りでインストールされたパッケージの間で、依存性の問題が発生する。
-- 症例~
 > library(stars)
  要求されたパッケージ abind をロード中です 
  要求されたパッケージ sf をロード中です 
 Linking to GEOS 3.7.1, GDAL 2.4.0, PROJ 5.2.0
  エラー: package or namespace load failed for ‘stars’ in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]):
   名前空間 ‘rlang’ 0.3.1 は既にロードされましたが、>= 0.4.10 が要求されています 
- 対策~
まずは、R にインストールされているパッケージの間の依存関係を調べることが必要になる。
*** パッケージの依存関係などを調べる方法 [#w1e28f5d]
+ library()~
インストールされているパッケージの一覧を表示してくれる。~
~
+ tools パッケージ~
このパッケージはインストールする必要がない。はじめから入っている。
-- available.packages()~
CRAN にあるパッケージ情報のリスト作成
 library(tools)
 all_pkg <- available.packages()
 head(all_pkg)
-- package_dependencies()~
依存関係などを調べる。逆引きもできる。
 package_dependencies(packages = "ggplot2", all_pkg, which = "Depends")
 package_dependencies(packages = "ggplot2", all_pkg, which = "Depends", reverse = TRUE)
今回の場合、"all" で、情報を得ることができる。これらのパッケージが怪しい。
 >  package_dependencies(packages = "rlang", all_pkg, which = "all")
 $rlang
  [1] "utils"     "cli"       "covr"      "crayon"    "fs"        "glue"     
  [7] "knitr"     "magrittr"  "methods"   "pillar"    "rmarkdown" "stats"    
 [13] "testthat"  "tibble"    "usethis"   "vctrs"     "withr"     "winch"    
※ 結局、これらを使っても、結果的に試行錯誤である。stars を使うために、rlang で引っかかっていた~
 問題は、pillar tidyr tidyselect といったパッケージを削除することで対応できた。
+ switchr パッケージ~
使えそうだが、今後の課題。

トップ   編集 差分 添付 複製 名前変更 リロード   新規 検索 最終更新   ヘルプ   最終更新のRSS