Ubuntu 18.04 on WSLのセットアップとnetcdf等のインストール

Table of Contents

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/binincludelibshare が作成されているはずです.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 UIRegular11pt にします.なお,メニューが英語環境の場合は,PreferencesCustomize Look and Feel をクリックして立ち上げ,最下端にある Default FontYu Gothic UIRegular11pt にします.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件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください