解決策

解決策

私は新しい開発者がRailsプロジェクトのためのきちんとした開発環境を持つようにVagrant / Puppetのインストールをセットアップすることに取り組んでいます。

デフォルトのVagrant設定コマンドは次のとおりです。

  config.vm.box      = 'precise32'
  config.vm.box_url  = 'http://files.vagrantup.com/precise32.box'

全体的に、インストールはうまくいったようだった。 RVM、Postgres、Rubyがインストールされ、実行中です。

ただし、次のように「Heroku Toolbelt」をインストールしようとするたびに:

su -l vagrant -c 'wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh'

この問題があります。

... Lots of Hits and downloads...
The following extra packages will be installed:
  foreman heroku libruby1.9.1 ruby1.9.1
Suggested packages:
  ruby1.9.1-examples ri1.9.1 graphviz ruby1.9.1-dev
The following NEW packages will be installed:
  foreman heroku heroku-toolbelt libruby1.9.1 ruby1.9.1
0 upgraded, 5 newly installed, 0 to remove and 132 not upgraded.
Need to get 0 B/4,997 kB of archives.
After this operation, 13.1 MB of additional disk space will be used.
dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)

ノート)vagrant sshの後に手動でコマンドを実行すると、これが発生します。また、最初の実行時に実際のシェル構成が正しくありません。

vagrant boxなので「vagrant break」をしてやり直すのは簡単ですが、常に同じ問題が発生します。

奇妙なことに、私のPATHには次のフォルダが含まれています。

echo $PATH
/home/vagrant/.rvm/gems/ruby-1.9.3-p194/bin:/home/vagrant/.rvm/gems/ruby-1.9.3-p194@global/bin:/home/vagrant/.rvm/rubies/ruby-1.9.3-p194/bin:/home/vagrant/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/vagrant_ruby/bin

"ldconfig"ファイルは/ sbinにあり、実行可能です。

cd /sbin
ls -l l*
-rwxr-xr-x 1 root root    465 Apr 20  2012 ldconfig

開始 - 停止 - デーモンと同じ:

-rwxr-xr-x 1 root root 26752 Apr 12  2012 start-stop-daemon

それで、それが実際に何について文句を言うのかよくわかりません...どんな提案がありますか? Vagrantにいくつかの権限の問題がありますか?

ベストアンサー1

wget を新しいシェルにパイピングするため、環境は保存されません。

これを証明するには、vagrant boxで次のことを試してください。

root@lucid32:~# export PATH=$PATH:/foo
root@lucid32:~# echo $PATH  
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/vagrant_ruby/bin:/foo

次に、他のユーザーと同じコマンドを実行します。

root@lucid32:~# su -l vagrant -c 'echo $PATH' 
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/vagrant_ruby/bin

これら2つのコマンドの出力を比較すると、環境がサブシェルに保存されないことがわかります。 (/fooが消えた)

環境を継続的に作成するには、--preserve-environment またはを使用します-p-m3つとも同じです。

root@lucid32:~# export PATH=$PATH:/foo
root@lucid32:~# su --preserve-environment -l vagrant -c 'echo $PATH' 
-su: /root/.bash_profile: Permission denied
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/vagrant_ruby/bin:/foo:/opt/vagrant_ruby/bin

権限拒否エラーについて心配しないでください。予想される現象です。

解決策


解決策1.

使用するか-p-m--preserve-environment

su --preserve-environment -l vagrant -c   'wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh'

lucid32 vagrant box(10.04)でテストされました。

解決策 2.

人形マニフェストがherokuスクリプトの前に実行されている場合は、人形を介して放浪者ユーザーのパスに/ sbinを追加します。


次のコマンドを使用して lucid32 をテストします。

root@lucid32:~# su --preserve-environment -l vagrant -c 'wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh'
-su: /root/.bash_profile: Permission denied
This script requires superuser access to install apt packages.
You will be prompted for your password by sudo.
--2013-08-20 07:40:13--  https://toolbelt.heroku.com/apt/release.key
....
root@lucid32:~# su vagrant -
vagrant@lucid32:/root$ heroku login
Enter your Heroku credentials.
Email:

おすすめ記事