为什么在Ubuntu上设置Ruby on Rails如此困难?


13

今天早上我花了几个小时尝试在Ubuntu的新实例上安装Rails,我发现该过程比Windows复杂得多。在Windows上,我转到rubyinstaller.org,运行可执行文件(我对1.9.2-p180特别感兴趣),然后相应地调整系统路径。Rails也不需要任何额外的步骤,我可以克隆一个git仓库并开始摇动。

在Ubuntu上,我必须安装RVM(我也可以在Windows上完成),安装列出的prereq,由于许多这些软件包不再可用而导致apt-get失败。然后,我最终rvm install只发现make无法正常工作,因此我不得不从其中一个.c文件中手动注释掉对openssl的一堆依赖项,并对其进行重建,然后最终将其安装。尽管Rails仍然远远没有完成,所以我不得不安装另一堆先决条件,在ruby源代码中编辑一些额外的文件并执行它,然后我终于可以rails console开始使用。

这很正常吗?如果我要开发Rails应用程序,我是否应该期望所有事情在ubuntu上花费几个小时?我必须查阅至少3-4个11.04指南以及至少5个不同的堆栈溢出文章才能使事情正常运行,这对我来说似乎是非常痛苦的用户体验。


1
您遵循哪个指南?
豪尔赫·卡斯特罗

总是很麻烦,但是还算不错-使用RVM。应该将IMHO滑轨从apt上拆下,因为它只会引起版本问题。(或有潜力。)
Thufir

Answers:


4

关于为什么您的经历很困难,我不确定在没有更多关于您的确切工作知识的情况下是否可以回答。关于您的问题“这很正常吗?” 我不确定是否可以确定答案,但是我可以转达我的经验,希望对您有所帮助!

我已经在Ubuntu上使用Rails开发了两年多了,可以说,我从来不必处理损坏的程序包或任何必需的程序包中的触摸/重建代码。我完全在每个发行版中都进行了重新安装,并且我的经验是,在每个发行版中设置Rails环境都更加容易(可能是由于经验的增长)。总的来说,在全新安装Ubuntu之后,我要花不到一个小时的时间(有时要少得多)才能使我的环境达到全新安装之前的水平。

几天前,我按照链接的教程完全在11.10上重新设置了Rails开发环境。我以前使用的是程序包管理器Ruby程序包,在需要运行多个版本的Ruby之前,该程序可以正常工作。请注意,通常认为依赖包管理器包进行Ruby开发不是在Ubuntu上开发Ruby的最佳方法(有关详细信息,请参见链接的文章),但是在过去,当我只需要一个版本的Ruby时,它一直很有效Ruby,Rails和Gems)。

我认为使Linux与其他某些OS区别的一件事是能够以许多不同的方式来做某事,而在某些其他OS上,则只能以一种特定的方式来做。设置开发环境(有多种方法可以做到这一点)是正确的,并且很容易看出这会导致混乱,并且需要查阅不同的指南。根据我有限的经验,在链接的文章中使用RVM bash安装脚本是最简单的(也就是说,考虑到RVM的主要好处,如果RVM对您没有好处,那么可能会有更简单的方法,例如软件包管理器) 。

如果您更熟悉Windows的开发,并且是首次设置Ubuntu进行开发,那么我认为可以合理地期望它花费更长的时间,这是因为我们第一次学习做很多事情需要花费更长的时间。如果它最终是“创伤性的”,那么我只希望您能找到您所获得的宝贵经验和知识:)

http://ryanbigg.com/2010/12/ubuntu-ruby-rvm-rails-and-you/


感谢您的指导,我下次再参考。我必须指出,这有点愚蠢,因为它首先警告您不要使用apt-get,然后再从中下载十几个ruby依赖项:| 无论如何,我的某些痛苦可能是由于必须专门使用1.9.2-p180而引起的,将来的版本具有Ubuntu特定的修补程序,必须对该版本进行手动解决。总体而言,好的答案使我对坚持使用OS进行将来的工作更有信心。
亚历山大库里林(Alex Kurilin)的


如果您喜欢此答案,则除了感谢谁答复外,还单击“此答案很有用”。对于那些努力研究和回答问题的人来说,这也表示赞赏。:)
若奥·桑塔纳

1

仅供参考:我在五分钟内完成了在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.1libpq-dev并且pg仅适用于PostgresSQL数据库(如果需要)。

之后,我可以bundle install在Rails项目目录中运行以启动并运行所有必需的Gems,并且一切正常。不需要rvm,我从来没有遇到过损坏的包装。好的,所以我对特定的Ruby版本不感兴趣,但是为什么呢?

也许您遇到了(不幸的是)“ Ruby-manual-hack-installation-du-jour”网站之一,该网站告诉您废弃所有程序包管理系统并自行编译所有内容。

相较于以前的海报我认为这之间Windows和Linux有关Ruby的一个区别是,在Windows中有没有安装软件(但很多非官方的方式,安装,网站等)的“官方”的方式,但在Linux中有一个“官方”方式(发行商的产品包)通常效果最好,但在一定程度上限制了您的选择。

而且由于Linux软件倾向于与Windows软件共享更多的代码(功能,代码等),并且如果您开始手动编译和安装Windows中的软件,则“ OS”和“应用程序”之间的区别比Windows中的模糊得多。与Windows相比,Linux期望更加关心依赖关系,库等。

最好的方法总是拿到经销商的包裹(我的经验)。


这种方法的问题在于,“ sudo gem install rails pg”并不是所有的gem都可以使用。这是RVM的吸引力(它有其自身的缺点)。
Thufir

Thufir,具体缺少哪些宝石?以及为什么会有这个问题(因为您总是可以使用gem或bundler添加更多的gem来源)?
詹斯

纠正我是否有错,但是gem是类似于apt-get的软件包管理器。您的建议是将yum与apt-get一起使用。即使没有问题,对我来说听起来也很混乱。(如果apt-get拥有的和gem拥有的存在版本冲突,那该怎么办?)有很多很多可以通过gem获得的gem不在apt-get中。
Thufir

这就是为什么我在“轨道”上划一条线。我使用apt-get安装的一切,包括红宝石,然后用宝石来安装捆扎机,并捆绑安装所需的Rails的版本,并为所有需要的宝石一个具体根据其Gemfile中Rails应用。首先,我通常也通过“ gem install”在系统范围内安装当前的Rails版本(这没有什么坏处,但不是必需的)。是的,这只给您提供一个可以使用的Ruby版本,但是到目前为止,这并不是问题。
詹斯(Jens)2013年

1
Thufir,再次阅读我的文章。我没有在Rails应用程序中使用apt作为宝石。我使用Bundler,每个应用程序都有单独的宝石集。
詹斯(Jens)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.