A atualização do Ruby não funciona usando dois métodos

3

Eu tentei instalar a versão 1.9.3 do ruby com isso no meu mac 10.6.8:

$ \curl -L https://get.rvm.io | bash -s stable --ruby

Oskar-Niburskis-MacBook-Pro:~ oskarniburski$ rvm install ruby-1.9.3-p362
Searching for binary rubies, this might take some time.
No binary rubies available for: osx/10.6/i386/ruby-1.9.3-p362.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for osx.
Installing requirements for osx.
Updating system.............................................
Installing required packages: autoconf, automake, libtool, pkgconfig, libiconv, libyaml, libffi, readline, libksba, openssl, curl-ca-bundle, sqlite3, zlib, gdbm, ncurses...
Error running 'requirements_osx_port_libs_install autoconf automake libtool pkgconfig libiconv libyaml libffi readline libksba openssl curl-ca-bundle sqlite3 zlib gdbm ncurses',
please read /Users/oskarniburski/.rvm/log/1380238189_ruby-1.9.3-p362/package_install_autoconf_automake_libtool_pkgconfig_libiconv_libyaml_libffi_readline_libksba_openssl_curl-ca-bundle_sqlite3_zlib_gdbm_ncurses.log
Requirements installation failed with status: 1.

Minha versão:

Oskar-Niburskis-MacBook-Pro:~ oskarniburski$ ruby --version
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin10.0]

Saída do arquivo de log:

Oskar-Niburskis-MacBook-Pro:~ oskarniburski$ cat /Users/oskarniburski/.rvm/log/1380238189_ruby-1.9.3-p362/package_install_autoconf_automake_libtool_pkgconfig_libiconv_libyaml_libffi_readline_libksba_openssl_curl-ca-bundle_sqlite3_zlib_gdbm_ncurses.log
[2013-09-26 19:30:17] requirements_osx_port_libs_install
requirements_osx_port_libs_install () 
{ 
    __rvm_try_sudo port install "$@" || { 
        typeset ret=$?;
        rvm_warn "There were package installation errors, make sure to read the log.";
        return $ret
    }
}
current path: /Users/oskarniburski
command(16): requirements_osx_port_libs_install autoconf automake libtool pkgconfig libiconv libyaml libffi readline libksba openssl curl-ca-bundle sqlite3 zlib gdbm ncurses
Warning: Xcode does not appear to be installed; most ports will likely fail to build.
--->  Computing dependencies for autoconfError: Unable to execute port: can't read "build.cmd": Failed to locate 'make' in path: '/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin' or at its MacPorts configuration time location, did you move it?
There were package installation errors, make sure to read the log.

E, em seguida, tentou instalar usando MacPorts, mas também não funcionou novamente. Alguma idéia?

Oskar-Niburskis-MacBook-Pro:~ oskarniburski$ sudo port install ruby19
Warning: Xcode does not appear to be installed; most ports will likely fail to build.
--->  Computing dependencies for ruby19Error: Unable to execute port: can't read "build.cmd": Failed to locate 'make' in path: '/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin' or at its MacPorts configuration time location, did you move it?

Aqui está o meu caminho agora:

/opt/local/bin:/opt/local/sbin:/usr/local/git/bin:/usr/X11/bin:/Users/oskarniburski/.rvm/bin:/usr/X11R6/bin:/Library/Frameworks/Python.framework/Versions/3.3/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin:/Users/oskarniburski/.rvm/bin

Nenhum dos 'quais -a make' nem localizam -b '\ make'. O primeiro tem qual comando não encontrado e o segundo localiza: opção ilegal --b

    
por Rakso Zrobin 27.09.2013 / 01:39

2 respostas

2

Problema 1: make

O primeiro problema é que o Ruby precisa ser compilado e isso geralmente é feito através de make que lerá as configurações de um Makefile e, em seguida, chamará o compilador. No OSX make é instalado com Xcode , que instala suas ferramentas em /Developer/usr/bin , em vez de /usr/bin , onde seria de se esperar. Este diretório não está no padrão $PATH , portanto, quaisquer executáveis nele não são encontrados pelo shell.

Você pode corrigir isso para seu usuário adicionando esta linha ao seu ~/.bash_profile (certifique-se de adicioná-lo antes de export $PATH line):

PATH="/Developer/usr/bin:$PATH" 

No entanto, isso ainda não estará acessível a nenhum comando executado como raiz (com sudo , por exemplo). Eu recomendo que você adicione este diretório ao caminho padrão. Abra /etc/profile , encontre a linha que define o caminho e adicione o diretório a ele. Eu estou em um sistema Linux, mas deve ser algo como isto:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Basta adicionar o diretório ao final para que fique assim:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/Developer/usr/bin"

Se você não quiser alterar o padrão, poderá vincular make a um diretório que esteja no padrão $PATH :

 sudo ln -s /Developer/usr/bin/make /usr/bin

Você terá que fazer isso para tudo o que está em /Developer/usr/bin , então eu realmente recomendo que você altere o padrão.

Problema 2: encontrar a nova versão

Neste ponto, você deve conseguir instalar o ruby com

$ sudo port install ruby19

Isso sai corretamente, mas sua versão do ruby parece não estar atualizada:

$ ruby --version
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin10.0]

Isso ocorre porque por padrão , port instala seus arquivos em /opt/local e instalará seu ruby executável como /opt/local/bin/ruby1.9 . Ainda outro diretório que não está no seu $PATH . Assim, você pode repetir o processo acima e adicionar /opt/local/bin ao seu $PATH ou pode vincular o executável ruby1.9 a um diretório que esteja no seu caminho. Se você adicionar /opt/local/bin ao seu $PATH , poderá executar a v1.8 com ruby e v1.9 com ruby1.9 . Se você quiser que todos os seus scripts existentes mudem para a v1.9, recomendo que você faça /usr/bin/ruby apontar para a nova versão.

A versão antiga em /usr/bin é na verdade um link simbólico:

$ ls -l /usr/bin/ruby 
rwxr-xr-x 1 root wheel 76 25 Jun 2010 /usr/bin/ruby -> ../../System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby

Isso significa que você pode excluí-lo com segurança e substituí-lo por um link para a nova versão:

$ sudo rm /usr/bin/ruby; sudo ln -s  /opt/local/bin/ruby1.9  /usr/bin/ruby

Se você quiser reverter e executar ruby run v1.8, basta executar o comando inverso:

$ sudo rm /usr/bin/ruby; sudo ln -s  /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby  /usr/bin/ruby

Se tudo tiver corrido bem, seu ruby padrão agora é v1.9:

$ ruby --version
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin10]
    
por 27.09.2013 / 05:00
0

Dê uma olhada nesta essência. Mostra como instalá-lo para o Mountain Lion.

Destaca como usar o MacPorts ou o Homebrew. Depois de obter isso ao quadrado, mostra como instalar usando rvm .

    
por 27.09.2013 / 01:58