前回の記事でbash on windowsの導入ができたので、
Ruby、Railsが導入できるかどうか、またそれらが動くかどうか試してみました。
結論から言うと、Railsアプリは作成できませんでした。
もう少し正確に言うと、rails new
でファイルは作れるけど、bundle install
が失敗します。
以下にやったこととその経過をまとめておきます。
やったこと
- build-esseintialのインストール
- rbenvとruby-buildのインストール
- ruby 2.3.1のインストール
- rake, bundler, railsのインストール
- railsアプリを生成 <= 失敗
それぞれの経過
build-essentialのインストール
apt-get install build-essential
とすると、開発時に必要なパッケージ、
例えばgccとか、makeとかをまとめてインストールできます。
今回だと、Ruby-buildでRubyをビルド、インストールする際に必要になります。
これは特に問題なく導入できました。
rbenvとruby-buildのインストール
rbenvとruby-buildをインストールします。
その前に、git
が標準で入っていたかどうか記憶が曖昧なので、
もしgit clone ...
ができなかったらapt-get
で導入してください。
導入方法は、それぞれのリポジトリのREADME.md
に書いてある標準的なインストール方法に
従うだけで大丈夫でした。
ただし、一つ注意点があります。
rbenvの導入中、.bash_profile
に設定を追加する手順があります。
.bash_profile
に記載した設定を再読み込みしなければいけませんが、
シェルのリロードが今ひとつ上手く働きません。
(一回bash on windowsからexitしても設定が反映されない…普通のシェルは反映された気がするのですが)
なので、設定を反映させるために
$ source .bash_profile
とする必要があります。
設定が反映されたかどうか、echo $PATH
などでパスが通っているか確認してもいいでしょう。
Rubyのインストール
rbenvが入ったので次はRubyを入れます。
これも通常のrbenvの使い方通りでいいのですが、いくつか追加で必要なパッケージがあります。
無いとインストール途中で怒られるので、先に入れておきましょう。
# sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev
追加のパッケージを導入したらRubyを入れます。ここでは2.3.1
を入れます。
結構時間がかかりますので、気長に待ちましょう。
$ rbenv install 2.3.1
導入できたらglobalに設定したり、irb立ち上げて動作確認したりしてもいいでしょう。
Railsのインストール
遂に来ました。
何も考えずにrails new
してもいいのですが、gemはvendor/bundle
に入れたいですよね。
こちらを参考にしてrails new
を試みました。
--- ERROR REPORT TEMPLATE -------------------------------------------------------
- What did you do?
I ran the command `/home/hanocha/.rbenv/versions/2.3.1/bin/bundle install --path vendor/bundle`
- What did you expect to happen?
I expected Bundler to...
- What happened instead?
Instead, what actually happened was...
Error details
ArgumentError: parent directory is world writable but not sticky
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tmpdir.rb:93:in `ensure in mktmpdir'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tmpdir.rb:95:in `mktmpdir'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/compact_index_client/lib/compact_index_client/updater.rb:29:in `update'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb:64:in `update'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb:55:in `update_and_parse_checksums!'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/fetcher/compact_index.rb:65:in `available?'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/fetcher/compact_index.rb:15:in `call'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/fetcher/compact_index.rb:15:in `block in compact_index_request'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/fetcher.rb:154:in `use_api'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:331:in `block in api_fetchers'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:331:in `select'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:331:in `api_fetchers'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:336:in `block in remote_specs'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/index.rb:10:in `build'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:335:in `remote_specs'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:82:in `specs'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:211:in `block (2 levels) in index'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:209:in `each'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:209:in `block in index'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/index.rb:10:in `build'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:206:in `index'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:200:in `resolve'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:140:in `specs'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:129:in `resolve_remotely!'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/installer.rb:195:in `resolve_if_need'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/installer.rb:70:in `run'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/installer.rb:22:in `install'
/home/hanocha/.rbenv/rbenv.d/exec/gem-rehash/rubygems_plugin.rb:27:in `install'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/cli/install.rb:102:in `run'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/cli.rb:175:in `install'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor.rb:359:in `dispatch'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/base.rb:440:in `start'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/cli.rb:11:in `start'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/exe/bundle:27:in `block in <top (required)>'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/friendly_errors.rb:98:in `with_friendly_errors'
/home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/exe/bundle:19:in `<top (required)>'
/home/hanocha/.rbenv/versions/2.3.1/bin/bundle:23:in `load'
/home/hanocha/.rbenv/versions/2.3.1/bin/bundle:23:in `<main>'
Environment
Bundler 1.12.5
Rubygems 2.5.1
Ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
GEM_HOME /home/hanocha/workspace/vendor/bundle/ruby/2.3.0
GEM_PATH
Git 1.9.1
Bundler settings
path
Set for your local app (/home/hanocha/workspace/.bundle/config): "vendor/bundle"
disable_shared_gems
Set for your local app (/home/hanocha/workspace/.bundle/config): true
orig_path
Set via BUNDLE_ORIG_PATH: "/home/hanocha/.rbenv/versions/2.3.1/bin:/home/hanocha/.rbenv/libexec:/home/hanocha/.rbenv/plugins/ruby-build/bin:/home/hanocha/.rbenv/shims:/home/hanocha/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
--- TEMPLATE END ----------------------------------------------------------------
Unfortunately, an unexpected error occurred, and Bundler cannot continue.
First, try this link to see if there are any existing issue reports for this error:
https://github.com/bundler/bundler/search?q=parent+directory+is+world+writable+but+not+sticky&type=Issues
If there aren't any reports for this error yet, please create copy and paste the report template above into a new issue. Don't forget to anonymize any private data! The new issue form is located at:
https://github.com/bundler/bundler/issues/new
うん、ダメですね。
ちなみに、普通にrails new
してもダメでした。
ファイルの作成まではできても、bundle install
で同じエラーになります。
調べても解決方法が出てこなかったので、とりあえず導入はあきらめました。
解決できるよ!という方は是非方法を教えていただきたいです…よろしくお願いします。