gpt4 book ai didi

ruby-on-rails - 对于诸如libyaml之类的已编译库,Ruby(或RVM)在文件系统中搜索哪些位置以加载或解析它们?

转载 作者:数据小太阳 更新时间:2023-10-29 07:06:14 25 4
gpt4 key购买 nike

操作系统:CentOS 6.2 x86_64
很抱歉缩进太古怪了。这是我的第一篇SO帖子,我是新来设置服务器的。不过,我正在学习,并将详细说明我尝试解决此问题所采取的步骤以及寻求帮助的地方。我是一位有抱负的年轻Web开发人员,并且我在其他人配置的服务器上工作,因此,这对我来说是全新的。

我正在准备我最近购买的用于运行Rails应用程序的linode。我遵循了此处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 )反射(reflect)此SO线程RVM system-wide install script url broken -- what is replacement?中建议的更改

bash -c "bash <( curl -L https://github.com/wayneeseguin/rvm/raw/1.3.0/contrib/install-system-wide ) --version '1.3.0'"

我停止使用ngix进行安装,因为我使用的是Apache2。我还确保在安装rails之前运行 rvm requirements并安装必要的软件包。这是libyaml的安装任务,我尝试安装它时发生了第一个错误。但是,yum报告它不存在。 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

尝试安装libyaml-devel和libyaml-dev时遇到了同样的问题。
经过研究后,我发现CollectiveIdea的这篇博客文章详细介绍了相同的问题并提供了解决方案。 Blog Post by Collective Idea我按照说明进行了安装,没有任何制造或配置问题。然后,我执行了所提供的ruby重新安装。我仍然收到相同的警告,并在SO中进一步搜索了类似的问题。如对此问题有关相同问题的回答所详述, how to solve "ruby installation is missing psych" error?使用:
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
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

即使在此之后,警告仍然存在。我已经使用 ruby -v验证了ruby安装,并且实际上已经安装了。 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

您还可以看到,我假设在yaml文件可能已安装到错误目录或rvm找不到的情况下,尝试在/usr/local/lib和/usr/local/rvm/lib之间创建符号链接(symbolic link)。在适合他们的目录中。我在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/

这没有帮助。因此,我在哪里出了问题或我不想要的东西的栅栏上。
1:我是否通过将文件放在错误的目录中而犯了安装错误?
2:ruby是否在其他目录中寻找libyaml文件?
3:当我关注博客文章时,是否没有在安装中添加一些系统特定的功能?

我已经在我的linode上重新部署了CentOS 4次,希望这是我没有适当遵循脚本的问题,我正在第5次部署,并且弹出了同样的问题。
我目前正在搜索2号,希望我的帖子是不适当的,因为这显然已在其他地方解决了。我会很感激您能提供的任何帮助。

编辑:

因此,在重新部署CentOS6.2 OS之后,我进行了如下更改:
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

这也仍然遇到错误:
/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.

运行先前的命令从RVM中获取libyaml,然后重新安装所有 ruby ,似乎对我来说并不能解决此问题。执行rvm reinstall all --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

编辑#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

现在我运行 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

切换到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

因此,看起来像告诉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分钟(从在Railoku上安装Rails到Rails自动生成的网页需要15分钟!)。而且您无需更改配置,因此在服务器上的部署将不会变得困难。

关于ruby-on-rails - 对于诸如libyaml之类的已编译库,Ruby(或RVM)在文件系统中搜索哪些位置以加载或解析它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com