数値解析用環境2019

# はじめに

これまでは、ubuntuをVirtualBox上で動かしていましたが、Windows Subsystem for Linux (WSL)が成熟してきたこともあり、こちらに移行しました。

これまでの環境構築については、以下を参照してください。

https://qiita.com/masterhands/items/3580e8d032e42aabc1fc

# 構築環境

* Windows 10
* WSL
* Ubuntu 18.04 (on WSL)
* Python3 (numpy, scipy, pandas and so on)
* R (Knitr, tidyverse, Rstudio)
* Julia
* Jupyter notebook (Python3, R and Julia kernel)
* Latex (luatex, xetex)
* Visual Studio Code
* mono, dotnet SDK, F#
* QGIS
* Elixir

# 構築の仕方

## 基本的な方針

Jupyter notebook はUbuntuのパッケージをそのまま使いますが、Python3の動作環境はAnaconda / Miniconda で構築することにします。また、R、Juliaも最新のものを使います。

## Ubuntuのセットアップ

Microsoft Storeから適切にUbuntu 18.04を導入してください。

Cドライブをマウントしなおします。

```
sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata
cat << EOS | sudo tee /etc/wsl.conf
[automount]
options = "metadata"
[network]
EOS
```

不要なパッケージを削除します。

```
sudo apt purge snapd lxd lxcfs cloud-initramfs-dyn-netconf cloud-initramfs-copymods cloud-init hdparm
sudo apt purge mdadm open-iscsi acpid avahi-daemon libavahi-core7 libdaemon0 ntfs-3g
sudo apt purge btrfs-progs btrfs-tools lxd-client cloud-guest-utils
sudo apt purge e2fsprogs libext2fs2 ureadahead zerofree irqbalance
sudo apt purge libusb-1.0-0 usb-modeswitch usb-modeswitch-data usbutils
sudo apt purge apport cryptsetup overlayroot cryptsetup-bin open-vm-tools lvm2
sudo apt purge plymouth libplymouth4 apport-symptoms python3-apport
sudo apt purge liblvm2app2.2 dmeventd liblvm2cmd2.02 dmsetup libdevmapper-event1.02.1
sudo apt purge parted 
```

# パッケージのインストール

## レポジトリの追加

```
# for R
gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9
gpg -a --export E084DAB9 | sudo apt-key add -
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
gpg -a --export E298A3A825C0D65DFD57CBB651716619E084DAB9 | sudo apt-key add -
sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/"

sudo apt update
sudo apt upgrade
```

## Ubuntu標準パッケージのインストール

日本語入力はFCITXを利用します。IBUSはうまくいきませんでした。

```
# install Ubuntu original packages
sudo apt install fcitx-mozc dbus-x11 x11-xserver-utils fontconfig
sudo apt install xfce4-terminal xfce4-notifyd xfce4-statusnotifier-plugin
sudo apt install libasound2 git cmake wget p7zip vim-nox libopenblas-base libopenblas-dev
sudo apt install build-essential gfortran g++ libcurl4-openssl-dev libxml2-dev libssl-dev
sudo apt install python3-jupyter-client python3-jupyter-console python3-jupyter-core
sudo apt install python3-ipywidgets python3-notebook python3-qtconsole python3-widgetsnbextension
sudo apt install jupyter jupyter-core jupyter-qtconsole
sudo apt install default-jdk openjfx ffmpeg mupdf plantuml
sudo apt install texlive-xetex texlive-science texlive-pstricks texlive-luatex texlive-lang-japanese texlive-latex-base texlive-latex-recommended texlive-generic-recommended
sudo apt install fonts-noto-cjk fonts-noto-cjk-extra fonts-noto
sudo apt install dvipng
```

## Microsoft レポジトリの登録とdotnet SDKのインストール

この辺りを参照のこと。

https://dotnet.microsoft.com/download/linux-package-manager/ubuntu18-04/sdk-current

```
# for mono
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
sudo add-apt-repository "deb https://download.mono-project.com/repo/ubuntu stable-bionic main"

# wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i ./packages-microsoft-prod.deb
sudo apt install dotnet-sdk-2.2 mono-complete fsharp nuget
```

## Erlang Solution レポジトリの登録とElixirのインストール

この辺りを参照のこと

https://www.erlang-solutions.com/resources/download.html

```
# wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i ./erlang-solutions_1.0_all.deb
sudo apt install elixir esl-erlang
```

## Rstudioのインストール

この辺りを参照のこと
https://www.rstudio.com/products/rstudio/download/

```
# wget https://download1.rstudio.org/rstudio-xenial-1.1.463-amd64.deb
sudo apt install ./rstudio-xenial-1.1.463-amd64.deb
```

日本語入力もできるようにしておきます。
https://blog.goo.ne.jp/ikunya/s/RStudio

```
wget http://ikuya.info/tmp/fcitx-qt5-rstudio-qt542+2.tar.gz
tar xf fcitx-qt5-rstudio-qt542+2.tar.gz
sudo apt install ./fcitx-frontend-qt5-rstudio_1.0.5-1ubuntu1~qt542+2_amd64.deb ./libfcitx-qt5-1-rstudio_1.0.5-1ubuntu1~qt542+2_amd64.deb 
```

## Visual Studio Codeのインストール

このあたりからダウンロード
https://code.visualstudio.com/docs/?dv=linux64_deb

```
sudo apt install ./code_1.30.1-1545156774_amd64.deb
```

## QGISのレポジトリ登録とインストール

```
wget -O - https://qgis.org/downloads/qgis-2017.gpg.key | gpg --import
gpg --fingerprint CAEB3DC3BDF7FB45
gpg --export --armor CAEB3DC3BDF7FB45 | sudo apt-key add -
sudo add-apt-repository "deb     https://qgis.org/debian bionic main"
sudo apt install qgis python-qgis qgis-plugin-grass 
```

## フォントの登録と環境をきれいにしておきます。

```
sudo apt autoremove
sudo apt clean
sudo apt autoclean

sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
sudo fc-cache -fv

sudo chown -R `whoami`:`whoami` $HOME
```

# 環境の設定

## BASHRCの設定

```
cat << EOS >> $HOME/.bashrc
umask 037
export GTK_IM_MODULE=fcitx 
export QT_IM_MODULE=fcitx  
export XMODIFIERS="@im=fcitx" 
export DefaultIMModule=fcitx 
export LIBGL_ALWAYS_INDIRECT=0 
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd' 
export DISPLAY=localhost:0.0
EOS
echo '(fcitx-autostart > /dev/null 2>&1 &)' >> $HOME/.bashrc
echo 'if [ -d ~/.local/bin ]; then' >> $HOME/.bashrc
echo '    export PATH=$PATH:~/.local/bin' >> $HOME/.bashrc
echo 'fi' >> $HOME/.bashrc
source $HOME/.bashrc
```

このあと、FCITX-CONFIGでIMの設定をしておくことが必要です。

## VSCodeの拡張機能のインストール

```
code --install-extension coenraads.bracket-pair-colorizer
code --install-extension dbaeumer.vscode-eslint
code --install-extension oderwat.indent-rainbow
code --install-extension ms-ceintl.vscode-language-pack-ja
code --install-extension davidanson.vscode-markdownlint
code --install-extension pkief.material-icon-theme
code --install-extension ms-python.python
code --install-extension eg2.tslint
code --install-extension robertohuertasm.vscode-icons
code --install-extension redhat.vscode-yaml
code --install-extension jebbs.plantuml
code --install-extension ms-vscode.csharp
code --install-extension ionide.ionide-fsharp
```

## Jupyter notebookの設定

Jupyter Notebookで自動的にwindows側のブラウザを起動できるようにしておきます。

以下の例はfirefoxの場合です。

```
jupyter notebook --generate-config
cat << EOS >> $HOME/.jupyter/jupyter_notebook_config.py
c.NotebookApp.open_browser = True 
c.NotebookApp.notebook_dir = '$HOME/workspace'
import webbrowser
webbrowser.register('firefox', None, webbrowser.GenericBrowser('/mnt/c/Program Files/Mozilla Firefox/firefox.exe')) 
c.NotebookApp.browser = 'firefox'
EOS
echo "alias jn='jupyter-notebook >/dev/null 2>&1'" >> $HOME/.bashrc
```

## Minicondaのインストール

この辺りからダウンロードです。
https://conda.io/miniconda.html

また、インストール時にはパスを通さないようにしておきます。

```
## for conda
./Miniconda3-latest-Linux-x86_64.sh
echo 'source $HOME/miniconda3/etc/profile.d/conda.sh' >> $HOME/.bashrc
echo 'CONDA_JL_HOME="$HOME/miniconda3/envs/full/"' >> $HOME/.bashrc 
source $HOME/.bashrc 
source $HOME/miniconda3/etc/profile.d/conda.sh
conda update -n base conda

conda create -n full
conda activate full
conda config --add channels intel --env
conda install -n full -c intel intelpython3_full
ipython kernel install --user --name=conda --display-name=conda

conda deactivate
```

インストールするのはINTEL版としています。

## Rのパッケージのインストール

```
R -e 'install.packages("tidyverse")' --no-save  --no-restore
R -e 'install.packages("reticulate")' --no-save  --no-restore
R -e 'install.packages("IRkernel")' --no-save  --no-restore
R -e 'IRkernel::installspec()' --no-save  --no-restore
```

## JULIAのインストール

この辺りからダウンロード
https://julialang.org/downloads/

```
tar zxvf ./julia-1.0.3-linux-x86_64.tar.gz
ln -s $HOME/julia-1.0.3 $HOME/julia
echo 'if [ -d ~/julia/bin ]; then' >> $HOME/.bashrc
echo '    export PATH=$PATH:~/julia/bin' >> $HOME/.bashrc
echo 'fi' >> $HOME/.bashrc
echo 'export CONDA_JL_VERSON="3"' >> $HOME/.bashrc
echo 'export CONDA_JL_HOME="$HOME/miniconda3"' >> $HOME/.bashrc
source $HOME/.bashrc 

julia -E 'using Pkg; Pkg.add("Conda");Pkg.build("Conda")'
julia -E 'ENV["PYTHON"] = "~/miniconda3/bin/python";using Pkg; Pkg.add("IJulia");Pkg.build("IJulia");using IJulia'
julia -E 'ENV["PYTHON"] = "~/miniconda3/bin/python";using Pkg; Pkg.add("PyCall");Pkg.build("PyCall");Pkg.test("PyCall")'
julia -E 'ENV["PYTHON"] = "~/miniconda3/bin/python";using Pkg; Pkg.add("PyPlot");Pkg.build("PyPlot");Pkg.test("PyPlot");'
```

ここから先は、必要に応じて。

```
julia -E 'using Pkg; Pkg.add("DataStructures")'
julia -E 'using Pkg; Pkg.add("DataFrames")'
julia -E 'using Pkg; Pkg.add("Distributions")'
julia -E 'using Pkg; Pkg.add("GLM")'
julia -E 'using Pkg; Pkg.add("JuMP")'
julia -E 'using Pkg; Pkg.add("Optim")'
julia -E 'using Pkg; Pkg.add("Gadfly")'
julia -E 'using Pkg; Pkg.add("JSON")'
julia -E 'using Pkg; Pkg.add("HDF5")'
julia -E 'using Pkg; Pkg.add("QuantEcon")'

julia -E 'using Pkg; Pkg.add("DifferentialEquations")'
julia -E 'using Pkg; Pkg.add("QuantumOptics")'
julia -E 'using Pkg; Pkg.add("RDatasets")'
julia -E 'using Pkg; Pkg.add("DynamicalSystems")'
```

## Elixirのセットアップ

```
## for elixir
git clone https://github.com/pprzetacznik/IElixir.git
cd IElixir
mix deps.get
mix local.rebar --force
PATH=$PATH:$HOME/.mix mix test
PATH=$PATH:$HOME/.mix MIX_ENV=prod mix compile
PATH=$PATH:$HOME/.mix MIX_ENV=prod ./install_script.sh
cd $HOME
echo 'if [ -d ~/.mix ]; then' >> $HOME/.bashrc
echo '    export PATH=$PATH:~/.mix' >> $HOME/.bashrc
echo 'fi' >> $HOME/.bashrc
source $HOME/.bashrc 
```