Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

匿名バイナリ配布集団rwinlib

1,555 views

Published on

Tokyo.R#56での発表です。

Published in: Engineering
  • Be the first to comment

匿名バイナリ配布集団rwinlib

  1. 1. 匿名バイナリ配布集団 rwinlib 2016/08/20 Tokyo.R#56 @yutannihilation 1
  2. 2. ドーモ。 @yutannihilation •インフラエンジニア •電子工作ワナビー •好きな言語:R、忍殺語 •好きな電子音:Factory Floor、Radiohead 2
  3. 3. 想像してください。 •無性にWebスクレイピングがしたい •手元にはWindowsしかない •xml2パッケージの最新版はまだCRANに上 がっていない •どうする •…githubinstall? 3
  4. 4. githubinstall: 某匿名知的集団の素敵パッケージ 4http://mockquant.blogspot.jp/
  5. 5. xml2パッケージとは •R界の神 Hadley のつくったパッケージ •rvestというパッケージと組み合わせて超快 適Webスクレイピングができます •libxml2へのバインディング 5
  6. 6. …libxml2? •よく脆弱性を出すことで有名な、XMLを パースするためのC言語のライブラリ •xml2パッケージをインストールする前に、 brew install libxml2、apt-get install libxml2-devなどのコマンドでお手軽にイン ストールしておく。 6
  7. 7. 7 お手軽に、インストール…?
  8. 8. 8 お前それ Windows でも 同じ事言えんの?
  9. 9. Windows •標準的なパッケージ管理はない (NuGetとかChocolateyはあるけど) •Rtoolsと同じビルドチェーンでビルドしな いといけない •つらい 9
  10. 10. 10 それっておかしくねえ? だってここGithubじゃん。 (AA略)
  11. 11. rwinlib 11 meta cranおじさん (愛称) jsonlite、curl とかの作者
  12. 12. rwinlibとは •Windows用にバイナリをビルドするレポジ トリをホストしまくっているOrganization •Hadleyとかも関わってる感じがするけど表 向きはあんまり出てこなくて、どういう組 織なのか謎 •xml2パッケージはWindows用にはここでビ ルドしたバイナリを同梱している 12
  13. 13. xml2パッケージの場合 src/Makevars.win: 13 all: winlibs clean: rm -f $(OBJECTS) xml2.dll winlibs: "${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe" "../tools/winlibs.R" Windows以外ではふつうにビルドす るが、Windowsはwinlibs.Rという謎 のスクリプトが実行されている
  14. 14. xml2パッケージの場合 tools/winlibs.R: 14 if (!file.exists("../windows/libxml…")) { if(getRversion() < "3.3.0") setInternet2() download.file("https://github.com/rwinlib/ libxml2/archive/v2.9.4.zip", …) dir.create("../windows", …) unzip("lib.zip", exdir = "../windows") unlink("lib.zip") } rwinlibからダウンロードしてきた ものを展開するだけ
  15. 15. 備えよう。 •Rcppの作者Dirkのお言葉: The last bit, much like the so-called anticonf pattern, is more or less a non- standard practice exposing a security risk by copying in code from a semi- random location which could be hijacked or man-in-the-middle'd. 15 https://stat.ethz.ch/pipermail/r-package-devel/2016q3/001050.html 意訳: 拾い食いはお腹を壊すぞ。
  16. 16. アッハイ。 Really all this is just pretending that Windows is an envrionment on which you can deploy proper build systems -- similar to what we are used from the likes of dpkg/apt/yum or brew. But in all honesty you just can't. (中略) It is Windows after all. 16 https://stat.ethz.ch/pipermail/r-package-devel/2016q3/001050.html 意訳: Windowsなんだから諦めろ。
  17. 17. まとめ •Windowsはサバンナ •rwinlibsという謎の集団ががんばってバイナ リをビルドしてくれている •でも謎のバイナリに頼るのはほどほどにね •私たちの快適なRcpp生活は薄氷の上に成り 立っているのかもしれない 17
  18. 18. 18 エンジョイ。

×