cwltoolのインストール試行ログ(Ubuntu 18.04 LTS)

# 初めに
cwlを色々と勉強する為に、まずはcwlの環境を整備…しようとしたのですが、地味に結構手間取ったので、参考としてログに残しておきます。

## 概要
[cwltool をインストールして、実際にCWLを実行してみる](https://qiita.com/manabuishiirb/items/d866af4a5b1032eba374)
の通りに実行してcwlをインストールする

## 目標
[雑に始める CWL！](https://qiita.com/tm_tn/items/4956f5ca523f7f49f386)の記事をなぞる形で雑に始めるところまで行きたい

#という訳で、作業記録
##初期状態
windows10+virtualbox 6上にインストールしたUbuntu18.04LTSです。さっき構築したばかりなので、ほぼ初期状態。anaconda等も入れていません。sudo apt upgradeやapt updateはやりました。dockerも公式記載のやりかたでインストールしました。

##作業開始

せっかくなので[上の記事](https://qiita.com/manabuishiirb/items/d866af4a5b1032eba374)にある通りにvenvでやってみます。

```
python -m venv cwltoolenv

Command 'python' not found, but can be installed with:

sudo apt install python3       
sudo apt install python        
sudo apt install python-minimal

You also have python3 installed, you can run 'python3' instead.
```

そもそも初期状態だとpythonじゃ叩けないんですね…。

python3で叩いてみます。

```
python3 -m venv cwltoolenv

The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: ['/home/home-dir/cwltoolenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']
```

venvも入れなきゃいけない模様。

```
sudo apt-get install python3-venv

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  python-pip-whl python3-distutils python3-lib2to3 python3.6-venv
以下のパッケージが新たにインストールされます:
  python-pip-whl python3-distutils python3-lib2to3 python3-venv python3.6-venv

(後略)
```

とりあえず何か入った模様。

```
cwltoolenv/bin/activate
bash: cwltoolenv/bin/activate: 許可がありません

sudo cwltoolenv/bin/activate
sudo: cwltoolenv/bin/activate: コマンドが見つかりません
```

あ、実行場所指定という意味でカレント"."とか指定しないといけないんですね…。コピペから抜けてました。

```
. cwltoolenv/bin/activate
(cwltoolenv) $
```

>venv環境にはいると、こんなかんじに、(cwltoolenv) というのが、プロンプトの手前につくようになると思います。

なるほど。

>activateした直後に、モジュールのリストを確認すると、
すると、こんなかんじに、ほぼからっぽだとおもいます。

```
pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
pip (9.0.1)
pkg-resources (0.0.0)
setuptools (39.0.1)
```

なるほどなるほど。

という訳で本題。

# cwltoolのインストール

```
pip install cwltool

Collecting cwltool
  Downloading https://files.pythonhosted.org/packages/e4/d3/4e827adab29ff95b0ce9b97fa69db3db13e6f89847903c380ea6a8c6745f/cwltool-1.0.20190815141648-py2.py3-none-any.whl (717kB)
    100% |████████████████████████████████| 727kB 1.0MB/s 

(中略)
    ----------------------------------------
Command "/home/home-dir/cwltoolenv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-5dtv24zz/psutil/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-ibn1fkj1-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/home-dir/cwltoolenv/include/site/python3.6/psutil" failed with error code 1 in /tmp/pip-build-5dtv24zz/psutil/
```

何だか怪しい表示が…。

[Python2.7　pip install jupyter　でエラーになる](https://ja.stackoverflow.com/questions/27899/python2-7-pip-install-jupyter-%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8B)

>error: invalid command 'bdist_wheel'
>このエラーは、
>pip install wheel
>でwheelをインストールすればよさそうです。

なるほど。



```
pip install wheel
Collecting wheel
  Downloading https://files.pythonhosted.org/packages/00/83/b4a77d044e78ad1a45610eb88f745be2fd2c6d658f9798a15e384b7d57c9/wheel-0.33.6-py2.py3-none-any.whl
Installing collected packages: wheel
Successfully installed wheel-0.33.6
```
無事インストールできた模様。

```

pip install cwltool

（中略）

    ----------------------------------------
Command "/home/home-dir/cwltoolenv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-aq5z0v3f/psutil/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-ize975ss-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/home-dir/cwltoolenv/include/site/python3.6/psutil" failed with error code 1 in /tmp/pip-build-aq5z0v3f/psutil/
```

先ほどとメッセージが変化。psutilが原因？

setuptoolsのアップグレードが必要な場合もあるらしいのでやっておく。

```
pip install --upgrade pip setuptools
```

これだけではうまくいかない。だが、
[pip install psutil が失敗したので対処した](https://bacchi.me/python/pip-install-troubleshooting/)
によれば関連ライブラリを入れれば何とかなりそう。

とりあえずそれっぽいキーワードでぐぐってみる。

[python – コマンド ‘x86_64-linux-gnu-gcc’が終了ステータス1で失敗しました](https://codeday.me/jp/qa/20190301/344192.html)
>私は同じ問題を抱えていました。
これは私を助けました：
>sudo apt-get install build-essential libssl-dev libffi-dev python-dev
>hpython3を使用している場合は、python-devをpython3-devに置き換えてみてください。

なるほど。

python3-devに書き換えて実行してみます。

```
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
```
その上で、

```
pip install psutil
```
無事通りました。
その上で再トライ。

```
pip install cwltool
```

無事通りました…！

元記事にならってバージョンも見ておきます。

```
cwltool --version

cwltoolenv/bin/cwltool 1.0.20190815141648
```

同様にpip listも見ておきます。

```
pip list

Package           Version           
----------------- ------------------
bagit             1.7.0             
CacheControl      0.11.7            
certifi           2019.6.16         
chardet           3.0.4             
coloredlogs       10.0              
cwltool           1.0.20190815141648
decorator         4.4.0             
future            0.17.1            
humanfriendly     4.18              
idna              2.8               
isodate           0.6.0             
lockfile          0.12.2            
lxml              4.4.1             
mistune           0.8.4             
mypy-extensions   0.4.1             
networkx          2.3               
pathlib2          2.3.4             
pip               19.2.3            
pkg-resources     0.0.0             
prov              1.5.1             
psutil            5.6.3             
pyparsing         2.4.2             
python-dateutil   2.8.0             
rdflib            4.2.2             
rdflib-jsonld     0.4.0             
requests          2.22.0            
ruamel.yaml       0.15.97           
scandir           1.10.0            
schema-salad      4.5.20190815125611
setuptools        41.2.0            
shellescape       3.4.1             
six               1.12.0            
typing-extensions 3.7.4             
urllib3           1.25.3            
wheel             0.33.6            
```

これで[元参考記事](https://qiita.com/manabuishiirb/items/d866af4a5b1032eba374)にある、cwltool --validate等の実行テスト関連コマンドも通ることを確認しました。

これでやっと[雑に始め](https://qiita.com/tm_tn/items/4956f5ca523f7f49f386)られます…！