在 Arch Linux 中,显然gvim
需要安装 ruby 作为依赖项。但是,如果我想使用 RVM,则不需要安装二进制 ruby。
这会引起问题吗?是否可以删除 ruby 并将 gvim 配置为使用已安装的 RVM 版本的 ruby?
请注意,尝试 sudopacman -Rs ruby
会输出错误:
error: failed to prepare transaction (could not satisfy dependencies)
:: gvim: requires ruby
有小费吗?
答案1
选项1
您需要重新编译gvim
才能删除该要求。它在构建时是可配置的。
我在博客上写的这篇文章展示了如何编译 Ruby 支持,但您也可以轻松地将其删除。笔记:gvim
这篇文章是针对 Fedora/RHEL 的,因此它不是供您遵循的步骤模板,而只是向您展示,如果您选择的话,可以在有/没有 Ruby 支持的情况下重新编译。
顺便说一句,我认为您遇到的问题是包管理器知道gvim
“需要”,并且当您尝试删除它时会强制执行此操作。
选项#2
如果您知道没有其他软件包需要它,您可以覆盖软件包管理器并“强制”删除。
选项#3
第三个选项是安装 Ruby 包和 RVM。当您设置 RVM 时,您将覆盖 $PATH,因此 RVM 的 Ruby 版本是先例,即使您已将 Ruby 作为软件包安装在系统上。
所以你的 RVM 的 Ruby 应该是正在使用的那个gvim
。
例如:
$ echo $PATH
/home/saml/apps/perl5/perlbrew/bin:/home/saml/apps/perl5/perlbrew/perls/perl-5.14.0/bin:/home/saml/.rvm/gems/ruby-1.9.2-p180/bin:/home/saml/.rvm/gems/ruby-1.9.2-p180@global/bin:/home/saml/.rvm/rubies/ruby-1.9.2-p180/bin:/home/saml/.rvm/bin:/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/brlcad/bin:/home/saml/bin:/usr/brlcad/bin
$ which ruby
~/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
在这里您可以看到,当ruby
被调用时,我的 RVM 版本就是被选取的版本。除非vim/gvim
有硬编码的路径ruby
(我怀疑这一点),否则它会通过您的相同搜索绑定$PATH
,所以它也会找到RVM ruby。
答案2
你可以使用Arch的ABS(Arch Build System)重新配置gvim包并删除Ruby依赖。 Arch Wiki 有一个关于 ABS 的非常详细的页面。
完成此操作后,您可能需要添加IgnorePkg = gvim
到您的/etc/pacman.conf
文件中,以防止 pacman 在您下次更新系统时覆盖您的自定义版本。