RBENV gestionó Rubies: actualización de VIM obligando a Homebrew a instalar Ruby

4

Recientemente cambié de RVM a RBENV como mi administrador Ruby en MacOS Sierra.

$ rbenv version
2.3.1 (set by /Users/meltemi/.rbenv/version)
$ which ruby
/Users/meltemi/.rbenv/shims/ruby

He usado Homebrew para instalar paquetes como vim durante años y nunca tuve la versión de Ruby instalada a través de Homebrew.

Ahora, cuando brew upgrade vim obtengo una instalación de Ruby por dependencia forzada.

==> Upgrading vim
==> Installing dependencies for vim: ruby
==> Installing vim dependency: ruby
==> Downloading https://homebrew.bintray.com/bottles/ruby-2.3.1_2.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring ruby-2.3.1_2.sierra.bottle.tar.gz
Error: The 'brew link' step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/rake
Target /usr/local/bin/rake
already exists. You may want to remove it:
  rm '/usr/local/bin/rake'

To force the link and overwrite all conflicting files:
  brew link --overwrite ruby

To list all files that would be deleted:
  brew link --overwrite --dry-run ruby

Possible conflicting files are:
/usr/local/bin/rake
/usr/local/bin/rdoc
/usr/local/bin/ri
==> Caveats
Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/ruby
==> Summary
                    
pregunta Meltemi 04.10.2016 - 22:58

1 respuesta

6

Ruby es una dependencia para construir vim con Homebrew según los detalles del paquete:

ianc.local
> brew info vim
vim: stable 8.0.0019 (bottled), HEAD
Vi "workalike" with many additional features
http://www.vim.org/
Conflicts with: ex-vi
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/vim.rb
==> Dependencies
Optional: lua ✘, luajit ✘
==> Requirements
Required: ruby >= 1.8 ✔, perl >= 5.3 ✔
Recommended: python ✔
Optional: python3 ✔
==> Options
--with-client-server
    Enable client/server mode
--with-custom-perl
    Build with a custom Perl instead of the Homebrew version.
--with-custom-python
    Build with a custom Python 2 instead of the Homebrew version.
--with-custom-ruby
    Build with a custom Ruby instead of the Homebrew version.
--with-lua
    Build vim with lua support
--with-luajit
    Build with luajit support
--with-mzscheme
    Build vim with mzscheme support
--with-override-system-vi
    Override system vi
--with-python3
    Build vim with python3 instead of python[2] support
--with-tcl
    Build vim with tcl support
--without-nls
    Build vim without National Language Support (translated messages, keymaps)
--without-perl
    Build vim without perl support
--without-python
    Build vim without python support
--without-ruby
    Build vim without ruby support
--HEAD
    Install HEAD version

Pero como puede ver, solo requiere ruby 1.8 . Está instalando un ruby porque es probable que rbenv no devuelva un ruby instalado cuando el paquete de compilación llama a ruby shim.

Dado que vim se vinculará dinámicamente a su instalación de Ruby, le recomiendo que simplemente cambie a ruby del sistema antes de instalar o actualizar vim. Algo como:

brew uninstall vim ruby
brew cleanup
rbenv global system
brew install --build-from-source vim --with-custom-ruby

El instalador usará alegremente el sistema ruby en la Mac, que tiene una versión lo suficientemente alta, durante la instalación y los archivos binarios resultantes creados no se ejecutarán de forma predeterminada si se elimina la versión específica de ruby con la que se crearon, lo que es una verdadera problema si usas un ruby controlado por rbenv en el momento de la compilación.

Alternativamente, puedes construir sin soporte ruby:

brew install vim --without-ruby

Pero probablemente eso no sea lo que quieres.

    
respondido por el Ian C. 04.10.2016 - 23:13

Lea otras preguntas en las etiquetas