今天早上我花了几个小时尝试在 Ubuntu 的新实例上安装 Rails,我发现这个过程比在 Windows 上复杂得多。在 Windows 上,我转到 rubyinstaller.org,运行可执行文件(我特别感兴趣的是 1.9.2-p180),然后相应地调整系统路径。Rails 也不需要额外的步骤,我可以克隆一个 git 存储库并开始运行。
在 Ubuntu 上,我必须安装 RVM(在 Windows 上也可以这样做),安装列出的先决条件,让 apt-get 失败,因为其中许多包不再可用。然后我终于运行了,却rvm install
发现 make 不起作用,所以我不得不手动从其中一个 .c 文件中注释掉对 openssl 的一堆依赖并重建它,然后它终于安装好了。然而 Rails 还远未完成,所以我必须安装另一组先决条件,在 ruby 源代码中编辑一些额外的文件并执行它,然后我终于可以开始了rails console
。
这很正常吗?如果我要开发 Rails 应用程序,我是否应该预料到在 ubuntu 上做所有事情都要多花几个小时?我不得不查阅至少 3-4 个 11.04 指南和至少 5 个不同的 stack overflow 帖子才能让事情顺利进行,这对我来说似乎是一种非常痛苦的用户体验。
答案1
至于为什么你的经历如此艰难,我不确定能否在不了解你到底做了什么的情况下回答这个问题。关于你的问题“这很正常吗?”我不确定能否给出明确的答案,但我可以转述我的经历,希望这对你有所帮助!
我已经使用 Ubuntu 开发 Rails 两年多了,可以说我从未遇到过损坏的软件包,也从未接触过任何所需软件包中的代码。每次发布时我都会完全重新安装,我的经验是每次发布时设置 Rails 环境都更容易(可能是因为经验越来越丰富)。一般来说,在全新安装 Ubuntu 后,我会说只需不到一小时(有时甚至更少)即可将环境恢复到全新安装之前的阶段。
几天前,我按照链接的教程在 11.10 上完全重新设置了我的 Rails 开发环境。我之前使用包管理器 Ruby 包,效果很好,直到我需要运行多个版本的 Ruby。请注意,依赖包管理器包进行 Ruby 开发通常被认为不是在 Ubuntu 上开发 Ruby 的最佳方式(有关详细信息,请参阅链接的文章),但过去对我来说,它一直效果很好(当您只需要一个版本的 Ruby、Rails 和 Gems 时)。
我认为 Linux 与其他操作系统的一个区别在于它能够以多种不同的方式执行某项操作,而在其他一些操作系统中,可能只有一种特定的方式可以执行某项操作。这对于设置开发环境来说也是如此(有多种方法可以做到这一点),并且很容易看出这会导致混乱并需要查阅不同的指南。从我有限的经验来看,使用链接文章中的 RVM bash 安装脚本是最简单的(也就是说,考虑到 RVM 的主要优点,如果 RVM 对您没有好处,那么可能有更简单的方法,例如包管理器)。
如果您更熟悉在 Windows 中开发,并且是第一次设置 Ubuntu 进行开发,我认为预计它会花费更长时间是合理的,因为许多事情在我们第一次学习时会花费更长时间。如果最终是“痛苦的”,那么我只希望您能发现您获得的经验和知识很有价值 :)
答案2
仅供参考:我刚刚在五分钟内完成了 Ubuntu 12.04 上完整的 RoR 设置。
sudo apt-get install git git-svn postgresql-9.1 libpq-dev ruby1.9.1 thin
sudo apt-get install libxm2-dev libxslt-dev
sudo gem install rails pg
libxm2-dev
和libxslt-dev
仅适用于 Nokogiri(如果您需要它)并且postgresql-9.1
,libpq-dev
和pg
仅适用于 PostgresSQL 数据库(如果您需要它)。
之后,我能够bundle install
在 Rails 项目目录中运行所有必需的 Gems,一切正常。不需要rvm
,我从未遇到过损坏的包。好吧,所以我对其中一个不感兴趣具体的Ruby 的构建,但是那你为什么呢?
也许你遇到过(不幸的是有很多)“Ruby-manual-hack-installation-du-jour”网站之一,它告诉你放弃所有包管理系统并自行编译所有内容。
与前面的发帖者不同,我认为 Windows 和 Linux 在 Ruby 方面的一个区别是,在 Windows 中有不安装软件的“官方”方式(但也有许多非官方的方式、安装程序、网站等),但在 Linux 中是一种“官方”方式(分销商的包装),通常效果最好,但在一定程度上限制了您的选择。
而且由于 Linux 软件倾向于与 Windows 软件共享更多内容(代码、功能等),并且“操作系统”和“应用程序”之间的区别比在 Windows 中要模糊得多,因此如果您开始在 Linux 中手动编译和安装软件,那么您将需要比在 Windows 中更多地关注依赖项、库等。
最好的方法始终是获取分销商包裹(我的经验)。