【问题标题】:Ruby disappears after halt on Vagrant boxRuby 在 Vagrant 盒子上停止后消失了
【发布时间】:2013-05-19 01:20:58
【问题描述】:

在 Windows (7 x64) 上处理 Ruby on Rails 项目,我现在想更进一步,将 vagrant 与 VirtualBox 一起用于类似产品的开发环境。

基于专用的RailsCast tutorial,然后发现现在使用他们的安装程序而不是gem install vagrant 安装Vagrant,我终于启动并运行了(Ubuntu)precision32 vagrant provided box \o/

我的问题是,如果我在主机上执行vagrant halt,下次我将执行vagrant up(即使不做任何更改),加载的系统不再了解 Ruby!强>

这是我在安装所需的 apt-get 后所做的:

cd ~
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
echo 'eval "$(rbenv init -)"' >> ~/.profile
source .profile
git clone git://github.com/sstephenson/ruby-build.git
cd ruby-build/
sudo ./install.sh
rbenv install 1.9.3-p327
rbenv rehash
rbenv global 1.9.3-p327
ruby -v

我做错了什么?

【问题讨论】:

  • 编译后的1.9.3-p327是否存在于~/.rbenv/versions中?它不应该无缘无故消失。顺便说一句:我建议安装 reben-rehash gem 以避免一直重复。
  • 抱歉回复晚了:我现在不在这个(主机)盒子里,所以我要到下周才能确认。与此同时,我决定尝试 RVM 替代方案,以检查是我的 linux 技能还是我的 rbEnv 技能让我失败了:/(感谢您的推荐,我选择让这个主题尽可能简单......)
  • 没有真正回答我的答案,但找到了解决方法...使用 RVM ! Renaud Cuny 创建了一个完整的"ruby install with RVM" tutorial on Ubuntu 12.04,它解决了我所有的问题!我稍后会在我的另一台服务器上进行调查(当我回到总部时),但现在,我已经启动并运行了我的 Rails 环境!谢谢雷诺 ;)

标签: ruby ubuntu vagrant rbenv


【解决方案1】:

来自Ubuntu's bash man page

当 bash 作为交互式登录 shell 或非 带有 --login 选项的交互式 shell,它首先读取并执行 来自文件 /etc/profile 的命令(如果该文件存在)。后 读取该文件,它会查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,按此顺序,从 第一个存在且可读的。 --noprofile 选项可能是 在 shell 启动时使用来抑制这种行为。

如果您有~/.bash_profile~/.bash_login,防止您的~/.profile 被读取。 rbenv 永远不会被初始化,所以 ruby​​ 似乎丢失了。

将它们放在~/.bash_profile 中应该可以让 ruby​​ 在后续登录时保持可见。

【讨论】:

  • 抱歉这么晚才回复,由于我的解决方法,我忘记了这一点。事实上,.bash_profile 处理可能很棘手!但是 rbenv 有了很大的改进,现在它会检查一个好的.bash_profile 文件。再次感谢!
猜你喜欢
  • 2012-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多