アメリエフの技術ブログ

Amelieff Staff Blog

RでXMLパッケージがインストールできない時の意外な落とし穴

Rってエラー文わかりにくいよね
Rって何が不満なのかわかりにくいエラー文出すよね
大事なことなので二回言いました。
(個人の感想です)

最近私はあるRパッケージChIPseekerをサーバに入れようとして、うまく入らずしばらく格闘することになりました。
サーバに気合が足りない。

とかなんとか思いながら調べてみると、実際に足りなかったのはlibxml2-develというLinuxのライブラリでした。
このことを忘れないように、格闘記録を残しておきます。同じエラーに引っかかってる人に届け。

環境はCentOS 7.5、R 3.6です。

>BiocManager::install("ChIPseeker")

(略)

ERROR: dependencies ‘XML’, ‘httr’, ‘BiocFileCache’ are not available for package ‘biomaRt’
* removing ‘/home/amelieff/R/x86_64-redhat-linux-gnu-library/3.6/biomaRt’
ERROR: dependency ‘europepmc’ is not available for package ‘enrichplot’
* removing ‘/home/amelieff/R/x86_64-redhat-linux-gnu-library/3.6/enrichplot’
ERROR: dependencies ‘rtracklayer’, ‘biomaRt’ are not available for package ‘GenomicFeatures’
* removing ‘/home/amelieff/R/x86_64-redhat-linux-gnu-library/3.6/GenomicFeatures’
ERROR: dependency ‘GenomicFeatures’ is not available for package ‘TxDb.Hsapiens.UCSC.hg19.knownGene’
* removing ‘/home/amelieff/R/x86_64-redhat-linux-gnu-library/3.6/TxDb.Hsapiens.UCSC.hg19.knownGene’
ERROR: dependencies ‘enrichplot’, ‘GenomicFeatures’, ‘rtracklayer’, ‘TxDb.Hsapiens.UCSC.hg19.knownGene’ are not available for package ‘ChIPseeker’
* removing ‘/home/amelieff/R/x86_64-redhat-linux-gnu-library/3.6/ChIPseeker’

The downloaded source packages are in
        ‘/tmp/RtmpnZZ7N2/downloaded_packages’
Installation path not writeable, unable to update packages: boot, cluster,
  foreign, KernSmooth, mgcv, nlme, survival
There were 12 warnings (use warnings() to see them)

出ている ERROR たちを見ると、どうも一行目のXML, httr, BiocFileCacheあたりが not available なせいでドミノ倒し式に not available が乱立している気がします。
というわけでhttr, BiocFileCacheを入れ、最後にXMLを入れたかったのですが。

> BiocManager::install("XML")

(略)

checking for xml2-config... no
Cannot find xml2-config
ERROR: configuration failed for package ‘XML’
* removing ‘/home/amelieff/R/x86_64-redhat-linux-gnu-library/3.6/XML’

The downloaded source packages are in
    ‘/tmp/Rtmp9T3xeX/downloaded_packages’ 
Warning: 
In install.packages("XML") :
   installation of package ‘XML’ had non-zero exit status

えぇー。XMLが入らなかったことだけじゃなくて、何が不満なのかも ERROR 以降にわかりやすく書いてほしいなー。
でもよくよく上の方までエラー文を見ると、xml2-config関連で何か問題がある様子です。
その視点から調べてみると、どうもLinuxのライブラリが必要らしい。

$ sudo yum install libxml2-devel
> BiocManager::install("XML")
(略)
** building package indices
** testing if installed package can be loaded
* DONE (XML)

>BiocManager::install("ChIPseeker")
(略)
* DONE (ChIPseeker)

やっっったぁぁぁ入った

Rの問題がRだけでは解決しない、思わぬ落とし穴でした。
ちなみにlibxml2-develはUbuntuではlibxml2-devとライブラリ名が違ったりします。私が調べて見つけた記事の前提(Ubuntu)と私のサーバ(CentOS)の違いも、エラー解決へのハードルになりました。

何はともあれ、XMLもChIPseekerも入ったので終わりよければ全て良し!

さて、ATAC-seqのピークにアノテーションしよっと