Flask アプリの引っ越しが完了したので、apostrophe (Ubuntu 14.04 LTS) で動いているもうひとつの WEB アプリ(Rails 製)を wplj (Ubuntu 16.04 LTS) に引っ越す。
下準備
このアプリはファイルを貯めこむタイプなので、事前に tar
コマンドと scp
コマンドを使って /media/aysheaia/wallpapers 以下にファイルを配置しておいた。
専用ユーザの作成
takatoh@wplj $ sudo adduser tonzlr [sudo] takatoh のパスワード: ユーザー `tonzlr' を追加しています... 新しいグループ `tonzlr' (1002) を追加しています... 新しいユーザー `tonzlr' (1002) をグループ `tonzlr' に追加しています... ホームディレクトリ `/home/tonzlr' を作成しています... `/etc/skel' からファイルをコピーしています... 新しい UNIX パスワードを入力してください: 新しい UNIX パスワードを再入力してください: passwd: パスワードは正しく更新されました tonzlr のユーザ情報を変更中 新しい値を入力してください。標準設定値を使うならリターンを押してください フルネーム []: 部屋番号 []: 職場電話番号 []: 自宅電話番号 []: その他 []: 以上で正しいですか? [Y/n] Y takatoh@wplj $ sudo gpasswd -a tonzlr sudo ユーザ tonzlr をグループ sudo に追加
Railsアプリの配置
ここからは上で作ったユーザで作業。
GitHub からクローンする。
tonzlr@wplj:~$ git clone https://github.com/takatoh/Tonzlr.git tonzlr
ディレクトリを移動して、依存パッケージをインストール。
tonzlr@wplj:~$ cd tonzlr tonzlr@wplj:~/tonzlr$ bundle install プログラム 'bundle' はまだインストールされていません。 'bundle' を利用するために、コンピュータの管理者に 'ruby-bundler' をインストールすることを相談してください
bundler がインストールされてなかった。インストール。
tonzlr@wplj:~/tonzlr$ sudo gem install bundler [sudo] tonzlr のパスワード: tonzlr は sudoers ファイル内にありません。この事象は記録・報告されます。
あれ?なんでだ?
仕方がないので、takatoh ユーザに戻ってインストール。
takatoh@wplj $ sudo gem install bundler
もう一度 tonzlr ユーザで。
tonzlr@wplj:~/tonzlr$ bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/.......... Fetching version metadata from https://rubygems.org/.. Fetching dependency metadata from https://rubygems.org/. Installing rake 10.4.2 Installing i18n 0.7.0 Installing json 1.8.1 with native extensions Installing minitest 5.5.0 Installing thread_safe 0.3.4 Installing builder 3.2.2 Installing erubis 2.7.0 Installing rack 1.5.2 Installing mime-types 1.25.1 Installing polyglot 0.3.5 Installing arel 5.0.1.20140414130214 Installing coffee-script-source 1.8.0 Installing execjs 2.2.2 Installing thor 0.19.1 Installing hike 1.2.3 Installing multi_json 1.10.1 Installing libv8 3.16.14.3 (x86_64-linux) Using bundler 1.14.6 Installing tilt 1.4.1 Installing ref 1.0.5 Installing sass 3.2.19 Installing spring 1.2.0 Installing sqlite3 1.3.10 with native extensions Installing will_paginate 3.0.7 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/gems/json-1.8.1/ext/json/ext/generator /usr/bin/ruby2.3 -r ./siteconf20170304-4815-1cena5t.rb extconf.rb mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h extconf failed, exit code 1 Gem files will remain installed in /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/gems/json-1.8.1 for inspection. Results logged to /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/extensions/x86_64-linux/2.3.0/json-1.8.1/gem_make.out An error occurred while installing json (1.8.1), and Bundler cannot continue. Make sure that `gem install json -v '1.8.1'` succeeds before bundling.
む、なんかエラーが。ヘッダファイル ruby.h が見つからないのか?
再び takatho ユーザで。ああもう、いちいちめんどくさいな。
takatoh@wplj $ sudo apt install ruby-dev
tonzlr に戻ってもう一度。今度はどうだ。
tonzlr@wplj:~/tonzlr$ bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/.......... Fetching version metadata from https://rubygems.org/.. Fetching dependency metadata from https://rubygems.org/. Using rake 10.4.2 Using i18n 0.7.0 Installing json 1.8.1 with native extensions Using minitest 5.5.0 Using thread_safe 0.3.4 Using builder 3.2.2 Using erubis 2.7.0 Using rack 1.5.2 Using mime-types 1.25.1 Using polyglot 0.3.5 Using arel 5.0.1.20140414130214 Using coffee-script-source 1.8.0 Using execjs 2.2.2 Using thor 0.19.1 Using hike 1.2.3 Using multi_json 1.10.1 Using libv8 3.16.14.3 (x86_64-linux) Using bundler 1.14.6 Using tilt 1.4.1 Using ref 1.0.5 Using sass 3.2.19 Using spring 1.2.0 Installing sqlite3 1.3.10 with native extensions Using will_paginate 3.0.7 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/gems/json-1.8.1/ext/json/ext/generator /usr/bin/ruby2.3 -r ./siteconf20170304-5824-26t94o.rb extconf.rb creating Makefile current directory: /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/gems/json-1.8.1/ext/json/ext/generator make "DESTDIR=" clean current directory: /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/gems/json-1.8.1/ext/json/ext/generator make "DESTDIR=" compiling generator.c In file included from generator.c:1:0: ../fbuffer/fbuffer.h: In function ‘fbuffer_to_s’: ../fbuffer/fbuffer.h:175:47: error: macro "rb_str_new" requires 2 arguments, but only 1 given VALUE result = rb_str_new(FBUFFER_PAIR(fb)); ^ ../fbuffer/fbuffer.h:175:20: warning: initialization makes integer from pointer without a cast [-Wint-conversion] VALUE result = rb_str_new(FBUFFER_PAIR(fb)); ^ Makefile:239: ターゲット 'generator.o' のレシピで失敗しました make: *** [generator.o] エラー 1 make failed, exit code 2 Gem files will remain installed in /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/gems/json-1.8.1 for inspection. Results logged to /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/extensions/x86_64-linux/2.3.0/json-1.8.1/gem_make.out An error occurred while installing json (1.8.1), and Bundler cannot continue. Make sure that `gem install json -v '1.8.1'` succeeds before bundling.
まだエラーが!
ググってみるとこのページに
cf. https://github.com/flori/json/issues/253
libgmp3-dev をインストールすればいい、みたいに書いてある。
takatoh@wplj $ sudo apt install libgmp3-dev
tonzlr@wplj:~/tonzlr$ bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/.......... Fetching version metadata from https://rubygems.org/.. Fetching dependency metadata from https://rubygems.org/. Using rake 10.4.2 Using i18n 0.7.0 Installing json 1.8.1 with native extensions Using minitest 5.5.0 Using thread_safe 0.3.4 Using builder 3.2.2 Using erubis 2.7.0 Using rack 1.5.2 Using mime-types 1.25.1 Using polyglot 0.3.5 Using arel 5.0.1.20140414130214 Using coffee-script-source 1.8.0 Using execjs 2.2.2 Using thor 0.19.1 Using hike 1.2.3 Using multi_json 1.10.1 Using libv8 3.16.14.3 (x86_64-linux) Using bundler 1.14.6 Using tilt 1.4.1 Using ref 1.0.5 Using sass 3.2.19 Using spring 1.2.0 Installing sqlite3 1.3.10 with native extensions Using will_paginate 3.0.7 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/gems/json-1.8.1/ext/json/ext/generator /usr/bin/ruby2.3 -r ./siteconf20170304-7573-1jyzrko.rb extconf.rb creating Makefile current directory: /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/gems/json-1.8.1/ext/json/ext/generator make "DESTDIR=" clean current directory: /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/gems/json-1.8.1/ext/json/ext/generator make "DESTDIR=" compiling generator.c In file included from generator.c:1:0: ../fbuffer/fbuffer.h: In function ‘fbuffer_to_s’: ../fbuffer/fbuffer.h:175:47: error: macro "rb_str_new" requires 2 arguments, but only 1 given VALUE result = rb_str_new(FBUFFER_PAIR(fb)); ^ ../fbuffer/fbuffer.h:175:20: warning: initialization makes integer from pointer without a cast [-Wint-conversion] VALUE result = rb_str_new(FBUFFER_PAIR(fb)); ^ Makefile:239: ターゲット 'generator.o' のレシピで失敗しました make: *** [generator.o] エラー 1 make failed, exit code 2 Gem files will remain installed in /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/gems/json-1.8.1 for inspection. Results logged to /home/tonzlr/tonzlr/vendor/bundle/ruby/2.3.0/extensions/x86_64-linux/2.3.0/json-1.8.1/gem_make.out An error occurred while installing json (1.8.1), and Bundler cannot continue. Make sure that `gem install json -v '1.8.1'` succeeds before bundling.
まだダメだ。最後のメッセージのように json をインストールしてみる。
takatoh@wplj $ sudo gem install json -v '1.8.1' Fetching: json-1.8.1.gem (100%) Building native extensions. This could take a while... ERROR: Error installing json: ERROR: Failed to build gem native extension. current directory: /var/lib/gems/2.3.0/gems/json-1.8.1/ext/json/ext/generator /usr/bin/ruby2.3 -r ./siteconf20170304-7998-r1om93.rb extconf.rb creating Makefile current directory: /var/lib/gems/2.3.0/gems/json-1.8.1/ext/json/ext/generator make "DESTDIR=" clean current directory: /var/lib/gems/2.3.0/gems/json-1.8.1/ext/json/ext/generator make "DESTDIR=" compiling generator.c In file included from generator.c:1:0: ../fbuffer/fbuffer.h: In function ‘fbuffer_to_s’: ../fbuffer/fbuffer.h:175:47: error: macro "rb_str_new" requires 2 arguments, but only 1 given VALUE result = rb_str_new(FBUFFER_PAIR(fb)); ^ ../fbuffer/fbuffer.h:175:20: warning: initialization makes integer from pointer without a cast [-Wint-conversion] VALUE result = rb_str_new(FBUFFER_PAIR(fb)); ^ Makefile:239: ターゲット 'generator.o' のレシピで失敗しました make: *** [generator.o] エラー 1 make failed, exit code 2 Gem files will remain installed in /var/lib/gems/2.3.0/gems/json-1.8.1 for inspection. Results logged to /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/json-1.8.1/gem_make.out
ダメだな。詰んだか?
……というところで時間切れ。今日はここまで。