はじめに
これまでは、ubuntuをVirtualBox上で動かしていましたが、Windows Subsystem for Linux (WSL)が成熟してきたこともあり、こちらに移行しました。
これまでの環境構築については、以下を参照してください。
構築環境
- 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のインストール
この辺りを参照のこと。
# 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のインストール
この辺りを参照のこと
# 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