LoginSignup
0
2

More than 3 years have passed since last update.

aarch64のJuliaでadd Plots

Last updated at Posted at 2021-02-15

What's This?

aarch64上のJuliaPlotsをインストールしようとしたらハマったのでその解決法をまとめたものです.
次の2点でつまずきます.

  • メモリー
  • GRのインストール

1つめの問題は原因を特定するまでに時間がかかりましたが, 十分なメモリーさえ確保できればよいので, 解決できるかどうかの判断は簡単です.

2つめはOSによって対処方法が異なるので少し大変です.

メモリー不足問題

2021年2月16日現在, Plotsのビルドには結構メモリーを必要とするようで, 大体4GBないと失敗します.
今のところ, メモリーが4GB未満のマシンでPlotsをインストールする方法を僕は知りません.

GRのインストール

2021年2月16日現在, Debian系ではないOSを利用しているaarch64上のJuliaにPlotsをインストールしようとすると次のようにGRのインストールでつまづきます.
Debian系ではこの問題は起きません.


julia> import Pkg
julia> Pkg.add("Plots")
()
   Building GR  `~/.julia/packages/GR/G9I5v/deps/build.log`
 Error: Error building `GR`:
 tar (child): downloads/gr-0.54.0-Linux-aarch64.tar.gz: open 不能: No such
file or directory
 tar (child): Error is not recoverable: exiting now
 tar: Child returned status 2
 tar: Error is not recoverable: exiting now
 [ Info: Downloading pre-compiled GR 0.54.0 Linux binary
  Error: Download failed: curl: (22) The requested URL returned error: 404
  @ Base download.jl:43
  Error: Download failed: curl: (22) The requested URL returned error: 404
  @ Base download.jl:43
 [ Info: Using insecure connection
  Error: Download failed: curl: (22) The requested URL returned error: 404
Not Found
  @ Base download.jl:43
 [ Info: Cannot download GR run-time
 ERROR: LoadError: failed process: Process(`tar xzf
downloads/gr-0.54.0-Linux-aarch64.tar.gz`, ProcessExited(2)) [2]

 Stacktrace:
  [1] pipeline_error at ./process.jl:525 [inlined]
  [2] run(::Cmd; wait::Bool) at ./process.jl:440
  [3] run(::Cmd) at ./process.jl:438
  [4] top-level scope at
/home/hogehoge/.julia/packages/GR/G9I5v/deps/build.jl:164
  [5] include(::String) at ./client.jl:457
  [6] top-level scope at none:5
 in expression starting at
/home/hogehoge/.julia/packages/GR/G9I5v/deps/build.jl:98
 @ Pkg.Operations
/buildworker/worker/package_linuxaarch64/build/usr/share/julia/stdlib/v1.5/Pkg/src/Operations.jl:949

この理由は簡単で, aarch64用のGRのバイナリはDebianしか用意されていないためです.
手動でインストールされたGRがある場合, JuliaのGRパッケージはを使うようになっているので, GRを手動でインストールすれば上のようにつまづくことはなくなります.

ここでは, RHEL系OSでの対応を説明します.
他のディストリビューションでもやることは大体同じだと思います.

依存パッケージのインストール

GRのビルドに必要なパッケージをインストールします.

$ sudo yum groupinstall "Development tools"
$ sudo yum install libXt libXrender libXext mesa-libGL qt5-qtbase-gui libpng-devel libjpeg-turbo-devel freetype-devel

これらに加えてqhullが必要になるのですが, これがどうもyumにはないようなので, 手動でインストールします.
大体, こんな感じです.

$ wget http://www.qhull.org/download/qhull-2020-src-8.0.2.tgz
$ tar -zxvf qhull-2020-src-8.0.2.tgz 
$ cd qhull-2020.2/
$ make
$ export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
$ make test
$ sudo make install

詳しくはQhullの公式を見てください.

.bashrcを編集して, $HOME/qhull-2020.2/libLD_LIBRARY_PATHに加えておきます.

export LD_LIBRARY_PATH=$HOME/qhull-2020.2/lib:$LD_LIBRARY_PATH

GRのビルド

GRのmakeにはcmake 3.1以上が必要になるので注意してください.
普通にyumcmakeをインストールすると, cmake v2がインストールされます.

$ git clone https://github.com/jheinen/gr
$ cd gr
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

最後に, .bashrcLD_LIBRARY_PATHGRを追加します.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gr/lib64

これでGR.jlのビルドがうまくいくようになり, Plotsのインストールもうまくいくはずです.

ちなみにv0.53以前のGR.jlではDebian系でも失敗します.
build.jlos名の取得部分をid = get_os_release("ID")id = get_os_release("ID_LIKE")に書き換えるか(多分), 上のようにGRを手動でインストールする必要があります.

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2