やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

はてなブログ用gemをインストールする(2回目)

前回のつづき。

はてなブログ用gemをインストールする

今回インストールしたいhatenablogはruby2.0以上でないとダメ。1.9ではダメ。

$ source ~/.bash_profile
$ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [i686-linux]

インストールを試みるもエラー。

$ sudo gem install hatenablog
[sudo] password for mint: 
Fetching: mini_portile2-2.1.0.gem (100%)
Fetching: nokogiri-1.6.8.1.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing hatenablog:
    ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
  from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
   from extconf.rb:4:in `<main>'


Gem files will remain installed in /var/lib/gems/1.9.1/gems/nokogiri-1.6.8.1 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/nokogiri-1.6.8.1/ext/nokogiri/gem_make.out

nokogiriのコンパイル

上記エラーの原因は過去ログから以下のように予想している。

hatenablogが依存しているnokogiriはコンパイルが必要だが、必要なパッケージが不足していて完了できない。

そこで、これからnokogiriをコンパイルするために必要なパッケージをインストールする。

apt-getではなくすべてSynapticでインストールする。

ruby-devをインストールする

以下の過去ログを参考にする。

Server Error

Synapticでインストールする。上記のmkmfエラーを解消できる。以降もエラーが出るが、以下のパッケージをインストールすれば解決できる。

libxml2-devとlibxslt1-devをインストールする

以下の過去ログを参考にする。

Server Error

Synapticでインストールする。

zlibをインストールする

以下の過去ログを参考にする。

zlib1g, zlib1g-devならすでにあった。未インストールでそれっぽいのは以下。

  • zlib-bin
  • zlib-gst
  • zlib-dbg
  • zlibc

たぶんこのままで大丈夫だろう。

http://ytyaru.hatenablog.com/entry/2017/05/14/000000

Synapticでインストールする。hatenablogが依存しているnokogiriをコンパイルするため。

はてなブログ用gemをインストールする

上記インストール後、ターミナルを新規起動し、以下を実行する。

$ source ~/.bash_profile
$ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [i686-linux]
Building native extensions.  This could take a while...
Fetching: oauth-0.4.7.gem (100%)
Fetching: hatenablog-0.5.0.gem (100%)
ERROR:  Error installing hatenablog:
    hatenablog requires Ruby version >= 2.0.

エラー。え、2.0でないとダメなの?2.4.0ではダメなの?互換性ないの?(と、寝ぼけて意味不明な思考に陥る)

バージョン確認

2.0.xで最新バージョンを確認してみた。2.0.0-p648と思われる。

$rbenv install --list
...
  2.0.0-dev
  2.0.0-preview1
  2.0.0-preview2
  2.0.0-rc1
  2.0.0-rc2
  2.0.0-p0
  2.0.0-p195
  2.0.0-p247
  2.0.0-p353
  2.0.0-p451
  2.0.0-p481
  2.0.0-p576
  2.0.0-p594
  2.0.0-p598
  2.0.0-p643
  2.0.0-p645
  2.0.0-p647
  2.0.0-p648
...

Ruby2.0.0-p648をインストール

$ rbenv install 2.0.0-p648
Installing ruby-2.0.0-p648...

WARNING: ruby-2.0.0-p648 is past its end of life and is now unsupported.
It no longer receives bug fixes or critical security updates.

Installed ruby-2.0.0-p648 to /home/mint/.rbenv/versions/2.0.0-p648
$ source ~/.bash_profile
$ rbenv global 2.0.0-p648
$ rbenv versions
  system
* 2.0.0-p648 (set by /home/mint/.rbenv/version)
  2.4.0
$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [i686-linux]
$ sudo gem install hatenablog
[sudo] password for mint: 
ERROR:  Error installing hatenablog:
    hatenablog requires Ruby version >= 2.0.

え?インストールできないんですけど。

というか、よくみたら>=だから2.4.0でもいいのでは?

ついでにgemのバージョンも調べてみた。

$ rbenv global 2.0.0-p648
$ gem --version
2.0.14.1
$ rbenv global 2.4.0
$ gem --version
2.6.8

どれも2.0以上。

検索

“rbenv requires Ruby version"で検索。以下がヒット。

bundle install しようとしたら ruby のバージョン違くてコケた話 - Qiita

私には難しすぎて何をしているのかわからないが、それっぽいコマンドにしてみたら動いた。

$ rbenv exec gem install hatenablog
Fetching: mini_portile2-2.1.0.gem (100%)
Successfully installed mini_portile2-2.1.0
Fetching: nokogiri-1.6.8.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.6.8.1
Fetching: oauth-0.4.7.gem (100%)
Successfully installed oauth-0.4.7
Fetching: hatenablog-0.5.0.gem (100%)
Successfully installed hatenablog-0.5.0
Parsing documentation for mini_portile2-2.1.0
Installing ri documentation for mini_portile2-2.1.0
Parsing documentation for nokogiri-1.6.8.1
Installing ri documentation for nokogiri-1.6.8.1
Parsing documentation for oauth-0.4.7
Installing ri documentation for oauth-0.4.7
Parsing documentation for hatenablog-0.5.0
Installing ri documentation for hatenablog-0.5.0
Done installing documentation for mini_portile2, nokogiri, oauth, hatenablog after 13 seconds
4 gems installed

Rubyインストール後はrbenv rehashコマンドを打つものらしい。

$ rbenv rehash

パスが何も表示されなかった。

$ which hatenablog

所感

これで動けばOKなのだが、それは次回。