bundleやgemがsudoでパスが見つからない事象の解決方法

CentOS6だと、sudoでbundleやgemがパスが見つからないのエラーになる。
visudoの
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
にパスを追加すればOKらしい。
ただ、それだけだとwhichがなぜか向いてくれなかったので、secure_path はコメントアウトして、
Defaults env_keep += "PATH"
を追加する。
シェルスクリプトにしたので、rootのユーザーで実行すればOK。
※ visudoじゃなく、sudoersを直接書き換えているので、念のためバックアップはとっておくこと。
#!/bin/bash
# Script for placing sudoers.d files with syntax-checking

# add bundler path into visudo
bundle_path=`su - vagrant -c 'which bundle'`
gem_path=`su - vagrant -c 'which gem'`
# Making a temporary file to contain the sudoers-changes to be pre-checked
tmp="/tmp/vagrant_sudors"
tmp2="/tmp/vagrant_sudors2"
touch $tmp
touch $tmp2
cat /etc/sudoers > $tmp

# 書き換え
if cat $tmp | grep $bundle_path > /dev/null; then
echo 'already replaced.'
else
echo 'replaced sudoers.'
cat $tmp | sed -e "s%Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin%Defaults env_keep += \"PATH\"%" > $tmp2

# Check if the changes we want are OK
visudo -c -f $tmp2
if [ $? -eq 0 ]; then
echo 'Adding bundler path to sudoers.'
# cat $tmp2
cat $tmp2 > /etc/sudoers
else
echo "sudoers syntax wasn't valid. Aborting!"
fi
fi

# 念のため残しとく
# rm -rf $tmp
# rm -rf $tmp2


参考サイト
sudo時にPATHを引き継ぐ方法
sudo実行時に$PATHが通っていない場合の設定
sudo 経由で rbenv を使えるようにする
Linuxシェルでファイルの中身の一部を書き換えるsed
何度も要求されるパスワード入力を省略する
sed コマンドで切り出す
スポンサーサイト

bundle instarllでdevelopmentグループがインストールされない

Railsをインストールして、
rails g controller Home
とかでコントローラーを作ろうと思ったら、下記のようなエラーが発生した。
`require': Could not load the 'listen' gem. Add `gem 'listen'` to the development group of your Gemfile (LoadError)
Gemfileファイルには確実にgem 'listen'があるのになんでだろう・・・と思っていたら、完了のメッセージのところに
Gems in the groups development and test were not installed.
と。
bundle instarllでdevelopmentグループがインストールされないようだった。
参考にしたサイトに
bundle install --path vendor/bundle --without development test
とwithoutオプションが記載していたのが原因だったみたい。
で、オプションとかを一度付けると、bundle install だけでインストールが出来るようにキャッシュファイル的なものを作ってくれるらしい。
場所は、プロジェクトルート配下の
.bundle/config
これを消してから、再度
bundle install --path vendor/bundle
だけしたら、動くようになりました。

参考サイト
[Rails3] Bundlerを使ってGemファイルをインストール

プロフィール

U2K

Author:U2K
いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事