Ubuntu 18.04 on WSLのセットアップとnetcdf等のインストール
Ubuntu 18.04のインストール
Windows 10 Pro (ver. 1803)のWindows Subsystem for Linux (WSL)で,Microsoft StoreからUbuntu 18.04をインストールします.とても簡単です.
Ubuntu 18.04を最新の状態に
最新の状態にしておきます.長い時間がかかります.
username@HOSTNAME:~$ sudo apt update && sudo apt upgrade -y
[sudo] password for username:
Get:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]
... (Long lines continued)
バージョンを確認できます.
username@HOSTNAME:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04 LTS
Release: 18.04
Codename: bionic
Windowsフォルダを共有する
Windowsのフォルダに簡単にアクセスできるよう,ホームディレクトリからWindowsのCドライブへのリンクを張ります.WindowsのCドライブはUbuntuでは /mnt/c です.Ubuntu側でのディレクトリ名はwincとし,ホームディレクトリに存在する,.bashrc ファイルの最下行の下に以下を追記します.if 文はリンク設定済みの場合への配慮です.
if [ -d winc ] ; then
echo "Windows shared folders ready"
else
ln -s /mnt/c winc
fi
この設定をアクティベートするため,ホームディレクトリでsourceコマンドを実行します.
username@HOSTNAME:~$ source .bashrc
パッケージのインストール
FVCOM等の数値計算環境構築を前提に,基本的なパッケージをインストールしておきます.netcdfとその必要要件のインストールに苦労してきたので,インストールの順番を含め,慎重に整理してみました.この方法で私の環境ではうまくいっているようです.
HDF5とGMT5のインストール
GMT5 はUbuntu18.04ではaptで簡単にインストールできるようになりました.以前はビルドしていましたが,WSLでは簡易に使えることを目指し,なるべくaptでインストールしていきます.なお,Ubuntu 16.04ではこの方法はうまくいかないようです.
username@HOSTNAME:~$ sudo apt install subversion git build-essential cmake libhdf5-dev
username@HOSTNAME:~$ sudo apt install libcurl4-gnutls-dev libnetcdf-dev libfftw3-dev libpcre3-dev
username@HOSTNAME:~$ sudo apt install liblapack-dev libblas-dev gfortran g++
username@HOSTNAME:~$ sudo apt install gmt gmt-dcw gmt-gshhg
netcdf.inc が /usr/include/ に,ライブラリが /usr/lib/x86-64-linux-gnu/ に入ります.
GMTのコマンドは以下のようにgmtコマンドを用いて起動します.
username@HOSTNAME:~$ gmt psconvert test.ps -A -Tg -E600
Intel Parallel Studio XE 2018のインストール
Intel Parallel Studio XE 2018はUbuntu 18.04に対応していませんが,一応インストールできるようです.Intel Parallel Studio XE 2019 で公式に対応するものと思われます.こちらの記事のようにインストールしますが,カスタムインストールを選択し,IA-32を外し,コンポーネントの最後の2つを外しました(GNU Debug等).この状態でインストールを進めると,glibc libstdc++ libgcc が見つからないとのエラーが残りますが,無視してインストールを継続し,一応完了しました.今のところ問題は確認されていませんが,何か不具合があるのかもしれません.
Intel版netcdfのインストール
こちらの記事を参考にIntelコンパイラでnetcdf4をビルドします.こちらのサイトから tar.gz 形式の NetCDF-FORTRAN をダウンロードし,適当なディレクトリ(以下では ~/Downloads/)で解凍し,下記の config-intel.sh を作成します.
username@HOSTNAME:~/Downloads$ tar xf netcdf-fortran-4.4.4.tar.gz
username@HOSTNAME:~/Downloads$ cd netcdf-fortran-4.4.4
username@HOSTNAME:~/Downloads/netcdf-fortran-4.4.4$ vi config-intel.sh
viエディタ等で config-intel.sh に以下の内容を書き込みます.
export CDFROOT="/usr"
export LD_LIBRARY_PATH="${CDFROOT}/lib:${LD_LIBRARY_PATH}"
export LDFLAGS="-L${CDFROOT}/lib -I${CDFROOT}/include"
export OPTIM="-O3 -mcmodel=large -fPIC ${LDFLAGS}"
#
export CC=icc
export CXX=icpc
export FC=ifort
export F77=ifort
export F90=ifort
export CPP='icc -E -mcmodel=large'
export CXXCPP='icpc -E -mcmodel=large'
export CPPFLAGS="-DNDEBUG -DpgiFortran ${LDFLAGS}"
#
export CFLAGS=" ${OPTIM}"
export CXXFLAGS=" ${OPTIM}"
export FCFLAGS=" ${OPTIM}"
export F77FLAGS=" ${OPTIM}"
export F90FLAGS=" ${OPTIM}"
#
./configure --prefix=/usr/local/netcdf-ifort/4.4.4 --enable-large-file-tests --with-pic
config-intel.sh を実行形式としてから,ビルドします.
username@HOSTNAME:~/Downloads/netcdf-fortran-4.4.4$ chmod a+x config-intel.sh
username@HOSTNAME:~/Downloads/netcdf-fortran-4.4.4$ ./config-intel.sh
username@HOSTNAME:~/Downloads/netcdf-fortran-4.4.4$ make
username@HOSTNAME:~/Downloads/netcdf-fortran-4.4.4$ make check
username@HOSTNAME:~/Downloads/netcdf-fortran-4.4.4$ sudo make install
make check ですべてのテストが PASS することを確認します.インストールが成功すると,/usr/local/netcdf-ifort/4.4.4/に bin,include,lib,share が作成されているはずです.FVCOM 等をコンパイルするときはこの netcdf のインストールディレクトリを指定します.
この netcdf を利用する場合は以下の通り PATH を加えておきましょう.~/.bashrc に以下を追記します.
export PATH=/usr/local/netcdf-ifort/4.4.4/bin:$PATH
X Serverのインストール
2020.5.24追記: 最近はX Serverの利用を止めましたので,これは不要としています
必要があれば,X Windowが使えるようにします.まず,Windowsにおいて,X Serverソフトウエアをインストールします.定番はVcXsrvのようです.ダウンロードして普通にインストールできます.インストールが終わったら,WindowsでXLaunchを起動します.起動時にはオプション設定パネルが表示されますが,デフォルトのままでよいでしょう.タスクトレイにXマークが現れます.このXマークにマウスカーソルを置くと HOSTNAME の後に 0.0 といった数字が現れます.これはディスプレイIDで,このIDを用いて Ubuntu 側の設定を行います..bashrc に以下を追記し,上記のように source コマンドで bash 環境を更新します.
export DISPLAY=localhost:0.0
export LIBGL_ALWAYS_INDIRECT=1
次に,以下をインストールします.
username@HOSTNAME:~$ sudo apt install x11-apps
xeyes を起動すると目玉が現れるはずです.
username@HOSTNAME:~$ xeyes
さらに以下もインストールします.かなり時間がかかります.
username@HOSTNAME:~$ sudo apt install x11-utils x11-xserver-utils
lxpanelのインストール
lxpanelをインストールします.これは時間がかかります.
username@HOSTNAME:~$ sudo apt install lxpanel
lxpanel で lxpanel が起動し,Windows画面の下端にlxpanelのタスクバーが現れます.左下の窓マークをクリックするとメニューが立ち上がります.終了するには,元のターミナルで Ctrl + C(コントロールキーを押しながらCを押す)と入力し,強制的に閉じます.
lxdeのインストール
Linuxの軽量デスクトップ環境lxdeをインストールします.これは非常に時間がかかります.
username@HOSTNAME:~$ sudo apt install lxde
Google Chromeのインストール
依存関係の問題が生じないよう,最初に fonts-liberation をインストールします.
username@HOSTNAME:~$ sudo apt install fonts-liberation
つづいて,Chromeパッケージを適当なディレクトリにダウンロードします.
username@HOSTNAME:~/Downloads$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
Chromeをインストールします.これは時間がかかります.
username@HOSTNAME:~/Downloads$ sudo apt -f install -y && sudo dpkg -i google-chrome-stable_current_amd64.deb
Chromeを起動します.
username@HOSTNAME:~$ google-chrome-stable
ターミナルにエラーが出ますが,一応立ち上がりました.
日本語環境の設定
ここで日本語環境の設定をしておきます.最初に language-pack-ja をインストールします.
username@HOSTNAME:~$ sudo apt install language-pack-ja
次にエラーメッセージ等を日本語化します.
username@HOSTNAME:~$ sudo update-locale LANG=ja_JP.UTF-8
bashターミナルを一度閉じ,再び立ち上げ,日本語環境に変更されたか確認しましょう.
username@HOSTNAME:~$ echo $LANG
ja_JP.UTF-8
locale -a でロケール一覧が得られます.ロケールを英語に戻すには以下のようにします.
username@HOSTNAME:~$ sudo update-locale LANG=en_US.UTF-8
タイムゾーンをJSTに変更します.メニュー画面が現れますので,「アジア(Asia)」の「東京(Tokyo)」を選択します.
username@HOSTNAME:~$ sudo dpkg-reconfigure tzdata
日本語マニュアルをインストールします.
username@HOSTNAME:~$ sudo apt -y install manpages-ja manpages-ja-dev
日本語フォントをWindows likeにします.まず,fontconfig をインストールします.
username@HOSTNAME:~$ sudo apt install fontconfig
fontconfig はインストール済みかもしれません.つづいて,以下を設定します.
username@HOSTNAME:~$ sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
username@HOSTNAME:~$ sudo fc-cache -fv
最後に fc-cache: succeeded が現れれば成功です.
lxpanel を立ち上げ,メニューの 設定 の ルックアンドフィールを設定します を立ち上げ,下端にある デフォルトフォント を Yu Gothic UI の Regular の 11pt にします.なお,メニューが英語環境の場合は,Preferences の Customize Look and Feel をクリックして立ち上げ,最下端にある Default Font を Yu Gothic UI の Regular の 11pt にします.lxpanel を閉じるには,立ち上げたターミナルで Ctrl + c(Ctrlを押しながらcを押す)で強制終了させます.
日本語入力Mozcのインストール
Mozcをインストールすると 半角/全角 キーで日本語入力ができるようになります.以下のように ibus-mozc をインストールします.かなり時間がかかります.なお,dbus-x11はインストール済みでした.
username@HOSTNAME:~$ sudo apt install fcitx-mozc
username@HOSTNAME:~$ sudo apt install fonts-noto-cjk fonts-noto-color-emoji
username@HOSTNAME:~$ sudo apt install dbus-x11
username@HOSTNAME:~$ sudo sh -c "dbus-uuidgen > /var/lib/dbus/machine-id"
username@HOSTNAME:~$ echo 'export GTK_IM_MODULE=fcitx' >> .profile
username@HOSTNAME:~$ echo 'export QT_IM_MODULE=fcitx' >> .profile
username@HOSTNAME:~$ echo 'export XMODIFIERS=@im=fcitx' >> .profile
username@HOSTNAME:~$ echo 'export DefaultIMModule=fcitx' >> .profile
username@HOSTNAME:~$ source .profile
以下のコマンドを実行します.I/O Warning が出て停止しましたが,Ctrl + c で強制終了して再度実行すると,Fcitx is running correctly となりました.よく分かりませんが,一応うまくいっているようです.
username@HOSTNAME:~$ fcitx-autostart
この設定はbashターミナルを再起動しても維持されていました.半角/全角 を押すと日本語が入力できることが確認できました.
MinicondaでPython環境の構築
Python環境はAnacondaで構築する場合が多いですが,不要なパッケージも多く,パッケージ間のコンフリクトを避けるためにもMinicondaで環境構築するのがお勧めです.
Minicondaのインストール
Minicondaを以下のようにwgetで持ってくるか,または,こちらのサイトからダウンロードします.lxpanel から Google Chrome を立ち上げ,同サイトからダウンロードするのが簡単です.~/Downloads/ にダウンロードしたものとします.以下のようにインストールスクリプトを実行します.
username@HOSTNAME:~/Downloads$ wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
username@HOSTNAME:~/Downloads$ bash Miniconda3-latest-Linux-x86_64.sh
デフォルトのまま対話形式でインストールしていきます.ただし,最後の PATH の .bashrc への追記は yes とし,ターミナルを立ち上げ直します.
パッケージのインストール
Minicondaのインストールが終わったら,最初に以下を実行します.
username@HOSTNAME:~$ conda update conda
username@HOSTNAME:~$ conda update --all
次に基本的なパッケージを以下のようにインストールしていきます.
username@HOSTNAME:~$ conda install jupyter notebook pandas matplotlib netcdf4 holoviews geoviews
仮想環境の構築
プロジェクトによって使用するパッケージが異なり,依存関係から最新バージョンではないパッケージを使用したり,古いPythonが必要になることもあります.このようにそれぞれのプロジェクト毎に専用の環境を準備する必要がある場合は仮想環境を構築します.これ以外にも仮想環境を用意して新しいパッケージがうまく動作するか確認する等,他の環境を汚さずに実験ができます.
仮想環境はcondaで簡単に構築することができます.Pythone3.6を採用してmyenv環境を作るには次のようにします.
username@HOSTNAME:~$ conda create -n myenv python=3.6
現在存在する環境は conda info -e で確認できます
username@HOSTNAME:~$ conda info -e
# conda environments:
#
base * /home/username/miniconda3
myenv /home/username/miniconda3/envs/myenv
* が付いている base が現在のアクティブな環境です.
myenv をアクティブにします.
username@HOSTNAME:~$ source activate myenv
conda info -e で確認すると,* が myenv に移動していることが分かります.
myenv 環境下で必要なパッケージを以下のようにあらためてインストールする必要があります.
(myenv) username@HOSTNAME:~$ conda install jupyter notebook pandas matplotlib netcdf4 holoviews geoviews
ディアクティべートして base に戻します.
(myenv) username@HOSTNAME:~$ source deactivate
仮想環境を削除するには base 環境において,conda remove -n 仮想環境名 --all とします.
username@HOSTNAME:~$ conda remove -n myenv --all
環境設定の書き込みと環境の再構築
環境設定をファイルに書き込んでおくと,他のマシンで同じ環境を再構築することが簡単にできるようになります.書き出す環境をActivateしておく必要はないようです.conda env export -n 仮想環境名 を実行します.
username@HOSTNAME:~$ conda env export -n myenv >myenv.yaml
myenv.yamlはカレントディレクトリにできます.
このmyenv.yamlを使って別のマシンで環境を再構築するには
username@HOSTNAME:~$ conda env create -f myenv.yaml
とします.なお,仮想環境を作っただけで何もインストールしていない状態で,yaml に書き出し,環境の再構築をテストしてみたところ,うまくいきませんでした.仮想環境に何かしらインストールした上で yaml に書き出せば問題ありませんでした.
“Ubuntu 18.04 on WSLのセットアップとnetcdf等のインストール” に対して2件のコメントがあります。