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コマンドで,bash環境を更新します.

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 2018Ubuntu 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$ configure ./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を利用する場合はPATHbinを加えておきましょう.~/.bashrcに以下を追記します.

export PATH=/usr/local/netcdf-ifort/4.4.4/bin:$PATH

X Serverのインストール

X Windowが使えるようにします.まず,Windowsにおいて,X Serverソフトウエアをインストールします.定番はVcXsrvのようです.ダウンロードして普通にインストールできます.インストールが終わったら,WindowsでXLaunchを起動します.起動時にはオプション設定パネルが表示されますが,デフォルトのままでよいでしょう.タスクトレイにXマークが現れます.このXマークにマウスカーソルを置くとHOSTNAMEの後に0.0といった数字が現れます.これはディスプレイIDで,このIDを用いてUbuntu側の設定を行います..bashrcに以下を追記し,上記のように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に書き出せば問題ありませんでした.

参考にさせて頂いたサイト

Follow me!