Ubuntu 16.04でembulk selfupdateが動かない時は...


Ubuntu 16.04で``embulk selfupdate``が動かないという現象があるということなので調べました。
(詳細はこちら、https://github.com/embulk/embulk/issues/461) 

普段Ubuntuを使っていないので、こうすればいいよという方法がありましたら是非教えてください。

## まとめ

* Ubuntu 16.04上で、embulk selfupdateが動かない(場合があるようです)
* 次のコマンドを実行すれば大丈夫のようです。

```
sudo curl -o /usr/local/share/ca-certificates/GTEGlRoot.crt https://www.cybertrust.ne.jp/sureserver/download/root_ca/GTEGlRoot.txt
sudo update-ca-certificates
```

## 疑問

本題とは関係ありませんが、、、

* Ubuntuをご利用の方、他の環境でも起きてますよね？
* curlはなんでエラーにならないんでしょか？


## バージョン情報

lsb_release -a

* Distributor ID:	Ubuntu
* Description:	Ubuntu 16.04.1 LTS
* Release:	16.04
* Codename:	xenial

## 不具合の確認、再現手順

### Ubuntuの設定

次のVagrantファイルを作成し、``vagrant up``を実行します。

```
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/xenial64"

  config.vm.provision "shell", inline: <<-SHELL
     sudo apt-get update
     sudo apt-get install -y openjdk-8-jdk
  SHELL
end
```

``vagrant ssh``でログインをしたのちembulkのインストールを行います。

### Embulkの導入


```
curl --create-dirs -o ~/.embulk/bin/embulk -L "http://dl.embulk.org/embulk-latest.jar"
chmod +x ~/.embulk/bin/embulk
echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```

8/16現在の最新版がインストールされました。

```
embulk --version
embulk 0.8.13
```

### embulk selfupdateの実行


``embulk selfupdate x.y.z``を実行して指定したバージョンに下げます。
(バージョンを下げる必要はないのですが、最新版でembulk selfupdateしても現象が出ないので、バージョンを下げて現象を確認します。)

コマンドを実行すると、``OpenSSL::SSL::SSLError: certificate verify failed``というエラーが出ました。

```
embulk selfupdate 0.8.12
2016-08-16 08:44:47.120 +0000: Embulk v0.8.13
Checking version 0.8.12...
Found version 0.8.12.
Downloading https://dl.bintray.com/embulk/maven/embulk-0.8.12.jar ...
OpenSSL::SSL::SSLError: certificate verify failed
     connect_nonblock at org/jruby/ext/openssl/SSLSocket.java:225
              connect at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/http.rb:938
             do_start at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/http.rb:868
                start at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/net/http.rb:857
            open_http at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/open-uri.rb:319
          buffer_open at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/open-uri.rb:737
   block in open_loop at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/open-uri.rb:212
                catch at org/jruby/RubyKernel.java:1103
            open_loop at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/open-uri.rb:210
             open_uri at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/open-uri.rb:151
  block in selfupdate at /home/ubuntu/.embulk/bin/embulk!/embulk/command/embulk_selfupdate.rb:56
                 open at org/jruby/RubyIO.java:1131
           selfupdate at /home/ubuntu/.embulk/bin/embulk!/embulk/command/embulk_selfupdate.rb:54
                  run at /home/ubuntu/.embulk/bin/embulk!/embulk/command/embulk_run.rb:279
                <top> at /home/ubuntu/.embulk/bin/embulk!/embulk/command/embulk_main.rb:2
              require at org/jruby/RubyKernel.java:944
               (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1
                <top> at file:/home/ubuntu/.embulk/bin/embulk!/embulk/command/embulk_bundle.rb:51
```

## 解決方法

次のコマンドを実行します。

```
sudo curl -o /usr/local/share/ca-certificates/GTEGlRoot.crt https://www.cybertrust.ne.jp/sureserver/download/root_ca/GTEGlRoot.txt
sudo update-ca-certificates
```


### 実行結果

```
% sudo curl -o /usr/local/share/ca-certificates/GTEGlRoot.crt https://www.cybertrust.ne.jp/sureserver/download/root_ca/GTEGlRoot.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   890  100   890    0     0   3904      0 --:--:-- --:--:-- --:--:--  3920
```

```
% sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...

Adding debian:GTEGlRoot.pem
done.
done.
```

## 再実行

今度は大丈夫になりました。めでたしめでたし。

```
embulk selfupdate 0.8.12
2016-08-16 08:48:30.651 +0000: Embulk v0.8.13
Checking version 0.8.12...
Found version 0.8.12.
Downloading https://dl.bintray.com/embulk/maven/embulk-0.8.12.jar ...
Updated to 0.8.12.
```