Aus*_*mek 6 ruby yaml centos ruby-on-rails
操作系统:CentOS 6.2 x86_64
我为缩进而感到抱歉.这是我的第一篇SO帖子,我是设置服务器的新手.我正在学习,并将详细说明我试图解决这个问题以及寻求帮助的步骤.我是一个有抱负的年轻网络开发人员,我在其他人配置的服务器上工作,所以这整个体验对我来说都是新的.
我正在准备一个我最近购买的linode来运行rails应用程序.我按照此处提供的初始安装指南 http://blog.blenderbox.com/2011/01/07/installing-rvm-ruby-rails-passenger-nginx-on-centos/,以及更改步骤:
sudo bash < <( curl -L http://bit.ly/rvm-install-system-wide )
反映在这个SO线程RVM系统范围的安装脚本url中建议的更改- 什么是替换?
bash -c "bash <( curl -L https://github.com/wayneeseguin/rvm/raw/1.3.0/contrib/install-system-wide ) --version '1.3.0'"
Run Code Online (Sandbox Code Playgroud)
我在ngix安装时停止了,因为我正在使用Apache2.我还确保rvm requirements在安装导轨之前运行并安装必要的软件包.这是libyaml负责安装的地方,我尝试安装它时发生了第一个错误.然而,百胜报道说它不存在.RVM和Gems的初始安装似乎有效,但我遇到了Gems缺少'Psych'然后要求安装libyaml的问题:
/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/yaml.rb:56:in '<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
所以我首先尝试通过Yum安装libyaml但收到此错误:
yum install libyaml
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: centosmirror.quintex.com
* extras: centosmirror.quintex.com
* updates: centosmirror.quintex.com
Setting up Install Process
No package libyaml available.
Error: Nothing to do
Run Code Online (Sandbox Code Playgroud)
尝试安装libyaml-devel和libyaml-dev也遇到了同样的问题.
在做了一些研究之后,我发现CollectiveIdea的这篇博客文章详述了同样的问题并提供了解决方案.集体创意的Blog Post我按照说明操作并执行了安装,没有任何make或configure问题.然后我执行了重新安装ruby.我仍然被提出相同的警告,并进一步搜索SO以解决类似的问题.正如对这个问题的回答详细说明同样的问题,如何解决"红宝石安装缺少心理"的错误?使用:
rvm pkg install libyaml
Fetching yaml-0.1.4.tar.gz to /usr/local/rvm/archives
Extracting yaml-0.1.4.tar.gz to /usr/local/rvm/src
Prepare yaml in /usr/local/rvm/src/yaml-0.1.4.
Configuring yaml in /usr/local/rvm/src/yaml-0.1.4.
Compiling yaml in /usr/local/rvm/src/yaml-0.1.4.
Installing yaml to /usr/local/rvm/usr
Run Code Online (Sandbox Code Playgroud)
Please note that it's required to reinstall all rubies:
建议通过RVM重新安装所有内容,我也遵循这些说明.
rvm reinstall all --force
Removing /usr/local/rvm/src/ruby-1.9.3-p194...
Removing /usr/local/rvm/rubies/ruby-1.9.3-p194...
mv: overwrite `/usr/local/rvm/user/installs'? y
No binary rubies available for: ///ruby-1.9.3-p194.
Continuing with compilation. Please read 'rvm mount' to get more information on binary rubies.
Installing Ruby from source to: /usr/local/rvm/rubies/ruby-1.9.3-p194, this may take a while depending on your cpu(s)...
ruby-1.9.3-p194 - #downloading ruby-1.9.3-p194, this may take a while depending on your connection...
ruby-1.9.3-p194 - #extracting ruby-1.9.3-p194 to /usr/local/rvm/src/ruby-1.9.3-p194
ruby-1.9.3-p194 - #extracted to /usr/local/rvm/src/ruby-1.9.3-p194
ruby-1.9.3-p194 - #configuring
ruby-1.9.3-p194 - #compiling
ruby-1.9.3-p194 - #installing
Run Code Online (Sandbox Code Playgroud)
即使在此之后,警告仍然存在.我已经验证了ruby安装,ruby -v实际上已安装.安装了libyaml文件,它们驻留在这里:
[root@li543-100 ~]# ls -la /usr/local/lib
total 19620
drwxr-xr-x 5 root root 4096 Oct 1 15:40 .
drwxr-xr-x 13 root root 4096 Oct 1 05:55 ..
drwxr-xr-x 2 root root 4096 Oct 1 06:34 include
lrwxrwxrwx 1 root root 16 Oct 1 15:40 libruby.so -> libruby.so.1.9.1
lrwxrwxrwx 1 root root 16 Oct 1 15:40 libruby.so.1.9 -> libruby.so.1.9.1
-rwxr-xr-x 1 root root 7457107 Oct 1 06:42 libruby.so.1.9.1
-rw-r--r-- 1 root root 11633486 Oct 1 15:39 libruby-static.a
lrwxrwxrwx 1 root root 18 Oct 1 06:37 libyaml-0.so.2 -> libyaml-0.so.2.0.2
-rwxr-xr-x 1 root root 358698 Oct 1 06:37 libyaml-0.so.2.0.2
-rw-r--r-- 1 root root 565584 Oct 1 06:37 libyaml.a
-rwxr-xr-x 1 root root 953 Oct 1 06:37 libyaml.la
lrwxrwxrwx 1 root root 18 Oct 1 06:37 libyaml.so -> libyaml-0.so.2.0.2
drwxr-xr-x 2 root root 4096 Oct 1 06:45 pkgconfig
drwxr-xr-x 6 root root 4096 Oct 1 06:45 ruby
-rw-rw-r-- 1 root rvm 194 Oct 1 05:55 rvm
Run Code Online (Sandbox Code Playgroud)
您还可以看到我尝试在/ usr/local/lib和/ usr/local/rvm/lib之间创建一个符号链接,假设yaml文件可能已安装到错误的目录中或者rvm没有查找在适当的目录中.我在ruby上运行了一个并且认为因为ruby在/ rvm目录中可能是问题所在:
[root@li543-100 ~]# which ruby
/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby
[1]: http://collectiveidea.com/blog/archives/2011/10/31/install-ruby-193-with-libyaml-on-centos/
Run Code Online (Sandbox Code Playgroud)
这没有用.因此,我在错误的地方或我不想要的地方.
1:我是否通过将文件放在错误的目录中而导致安装错误?
2:ruby是否在另一个目录中查找libyaml文件?
3:当我关注博客文章时,我无法在安装中添加一些特定于系统的功能?
我已经在我的linode上重新部署了CentOS 4次,希望这是一个问题,我没有适当地遵循脚本,我在第5次部署时出现了同样的问题.我目前正在搜索2号,希望我的帖子不合适,因为这在其他地方已经明确解决了.我很感激您提供的任何帮助.
编辑:
因此,在重新部署CentOS6.2操作系统后,我运行了更改的设置,如下所示:
yum -y install git
yum -y install curl
groupadd rvm
usermod -a -G rvm root
bash -c "bash <( curl -L https://github.com/wayneeseguin/rvm/raw/1.3.0/contrib/install-system-wide) -- version'1.3.0'"
echo '[[ -s "/usr/local/lib/rvm" ]] && . "/usr/local/lib/rvm" #This loads RVM into a shell session' >> ~/.bash_profile
source ~/.bash_profile
yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel
rvm get head
yum install readline readline-devel
rvm package install libyaml -v
rvm install 1.9.3 -v
rvm use 1.9.3
ruby -v
Run Code Online (Sandbox Code Playgroud)
这仍然遇到错误:
/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
Run Code Online (Sandbox Code Playgroud)
运行以前的命令从RVM获取libyaml然后重新安装所有红宝石似乎并没有解决我的问题.执行rvm重新安装所有--force时,是否会删除,覆盖或替换以前的libyaml软件包的安装?它似乎在正确的目录中.
[root@li543-100 src]# pwd
/usr/local/rvm/src
drwxrwsr-x 7 root rvm 4096 Oct 1 21:19 .
drwxrwsr-x 24 root rvm 4096 Oct 1 20:51 ..
drwxr-xr-x 24 root rvm 8192 Oct 1 21:22 ruby-1.9.3-p194
drwxr-xr-x 7 501 games 4096 Apr 27 23:31 rubygems-1.8.24
drwxrwsr-x 18 root rvm 4096 Oct 1 20:51 rvm
drwxrwsrwx 8 root rvm 4096 Oct 1 20:27 yaml-0.1.3
drwxr-xr-x 9 root rvm 4096 Oct 1 21:18 yaml-0.1.4
Run Code Online (Sandbox Code Playgroud)
编辑#2:
在新的CentOS 5.6重新部署上再次安装失败后,我显然在安装过程中的某个地方造成致命缺陷.在表演之前rvm install 1.9.3,我不得不跑rvm install 1.8.7.此外,我这次部署了32位CentOS6.2映像
在1.8.7上运行gem
[root@li543-100 ~]# gem -v
1.8.24
Run Code Online (Sandbox Code Playgroud)
现在我跑了 rvm install 1.9.2
[root@li543-100 ~]# rvm use 1.9.2
ruby-1.9.2-p320 is not installed.
To install do: 'rvm install ruby-1.9.2-p320'
[root@li543-100 ~]# rvm install ruby-1.9.2-p320
#CUT OUT INSTALL SHELL PROMPTS ETC
[root@li543-100 ~]# rvm use 1.9.2-p320
Using /usr/local/rvm/gems/ruby-1.9.2-p320
[root@li543-100 ~]# gem -v
1.8.24
Run Code Online (Sandbox Code Playgroud)
切换到1.9.3:错误返回
[root@li543-100 ~]# rvm use 1.9.3-p194
Using /usr/local/rvm/gems/ruby-1.9.3-p194
[root@li543-100 ~]# gem -v
/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
1.8.24
Run Code Online (Sandbox Code Playgroud)
所以看起来告诉rvm使用1.9.3(请注意,我使用-p194,我还没有测试过之前的那些)导致某些通信问题,rvm试图加载libyaml.现在我将使用1.9.2,因为大部分内容都有点过头了.我确定我在缺少某种依赖性方面犯了一个错误,1.9.3需要或不适当地调整配置文件.至少这是我的假设,第一个服务器设置,这一直是猜测.
删除所有rvm、ruby、libyaml等。
比安装rvm,只使用rvm来安装libyaml和rubies。
(另请注意,Ruby 可以查找 32 位库,因此请检查是否有 32 位版本,或者是否有单独的 64 位库的 lib 文件夹!)
PS Go 检查 heroku 来托管您的应用程序。非常适合初学者,因为它是免费的,设置只需 5 分钟(从安装 Rails 到 Heroku 上 Rails 自动生成的网页 15 分钟!)。而且您不需要更改配置,因此在服务器上部署不会变得困难。