# rubyInstallationQ\&A

* [openssl.h](#opensslh)
* [thread\_native.h](#thread_nativeh)
* [sqlite3.h](#sqlite3h)
* [libyaml-0.so.2 & psych.so](#libyaml-0so2--psychso)

#### openssl.h

* error description

  ```bash
  $ ruby extconf.rb
  ...
  checking for openssl/ssl.h... no
  ...
  ```
* solution

  > \[!TIP] [Install openssl lib](https://github.com/Marslo/MyBlog/blob/master/GoodCommand/CompileQ\&A.md#sslh)

  ```bash
  $ sudo apt-get intall libssl-dev
  $ dpkg -l | grep openssl
  ii  libcurl3:amd64                      7.35.0-1ubuntu2                            amd64        easy-to-use client-side URL transfer library (OpenSSL flavour)
  ii  libcurl4-openssl-dev:amd64          7.35.0-1ubuntu2                            amd64        development files and documentation for libcurl (OpenSSL flavour)
  ii  libgnutls-openssl27:amd64           2.12.23-12ubuntu2.1                        amd64        GNU TLS library - OpenSSL wrapper
  ii  openssl                             1.0.1f-1ubuntu2.4                          amd64        Secure Sockets Layer toolkit - cryptographic utility
  ii  python-openssl                      0.13-2ubuntu6                              amd64        Python 2 wrapper around the OpenSSL library
  ```

#### thread\_native.h

* error description

  ```bash
  $ make
  make: *** No rule to make target `/thread_native.h`, needed by `ossl.o`. Stop.
  ```
* solution

  > \[!TIP] add `top_srcdir=../..` into Makefile (the 63th line as below)

  ```bash
  $ grep top_srcdir Makefile -n
  63: top_srcdir=../..
  279: ossl.o: $(top_srcdir)/thread_native.h $(top_srcdir)/thread_$(THREAD_MODEL).h
  ```

#### sqlite3.h

* error description

  ```bash
  $ gem install vmail
  ...
  Fetching: sqlite3-1.3.9.gem
  Building native extensions. This could take a while...
  ERROR: Error installing vmail:
         ERROR: Failed to build gem native extension.
         /usr/local/ruby/bin/ruby extconf.rb
  checking for sqlite3.h... no
  sqlite3.h is missing. Try 'port install sqlite3 +universal',
  'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
  and check your shared library search path (the 
  location where you sqlite3 shared library is located).
  *** extconf.rb failed ***
  ...
  ```
* solution

  > \[!TIP] install `libsqlite3-dev` in Ubuntu as the error logged

  ```bash
  $ sudo apt-get install libsqlite3-dev
  ```

#### libyaml-0.so.2 & psych.so

* error description

  ```bash
  $ gem install compass
  /usr/local/ruby/lib/ruby/2.1.0/yaml.rb:4:in `<top (required)>':
  It seems your ruby installation is missing psych (for YAML output).
  To eliminate this warning, please install libyaml and reinstall your ruby.
  /usr/local/ruby/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': libyaml-0.so.2: cannot open shared object file: No such file or directory - /usr/local/ruby/lib/ruby/2.1.0/x86_64-linux/psych.so (LoadError)
          from /usr/local/ruby/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
          from /usr/local/ruby/lib/ruby/2.1.0/psych.rb:1:in `<top (required)>'
          from /usr/local/ruby/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
          from /usr/local/ruby/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
          from /usr/local/ruby/lib/ruby/2.1.0/yaml.rb:5:in `<top (required)>'
          from /usr/local/ruby/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
          from /usr/local/ruby/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
          from /usr/local/ruby/lib/ruby/2.1.0/rubygems.rb:616:in `load_yaml'
          from /usr/local/ruby/lib/ruby/2.1.0/rubygems/config_file.rb:328:in `load_file'
          from /usr/local/ruby/lib/ruby/2.1.0/rubygems/config_file.rb:197:in `initialize'
          from /usr/local/ruby/lib/ruby/2.1.0/rubygems/gem_runner.rb:74:in `new'
          from /usr/local/ruby/lib/ruby/2.1.0/rubygems/gem_runner.rb:74:in `do_configuration'
          from /usr/local/ruby/lib/ruby/2.1.0/rubygems/gem_runner.rb:39:in `run'
          from /usr/local/ruby/bin/gem:21:in `<main>'
  ```
* solution

  ```bash
  $ sudo apt-get install libyaml-dev
  ```
