Обновление Ruby не работает при использовании двух методов

Обновление Ruby не работает при использовании двух методов

Я попытался установить Ruby версии 1.9.3 на свой 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.

Моя версия:

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

Вывод файла журнала:

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.

А потом попробовал установить с помощью MacPorts, но и это не сработало. Есть идеи?

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?

Вот мой путь сейчас:

/opt/local/bin:/opt/local/sbin:/usr/local/git/bin:/usr/X11/bin:/Пользователи/oskarniburski/.rvm/bin:/usr/X11R6/bin:/Библиотека/Фреймворки/Python.framework/Версии/3.3/bin:/Библиотека/Фреймворки/Python.framework/Версии/2.7/bin:/Библиотека/Фреймворки/Python.framework/Версии/Текущий/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin:/Пользователи/oskarniburski/.rvm/bin

Ни 'which -a make', ни locate -b '\make'. У первой есть which command not found, а у второй locate:illegal option --b

решение1

Проблема 1:make

Первая проблема заключается в том, что Ruby необходимо скомпилировать, а это обычно делается черезmakeкоторый будет считывать настройки из a Makefile, а затем вызывать компилятор. На OSX makeустанавливается с Xcodewhich устанавливает свои инструменты в /Developer/usr/binвместо того, /usr/binкуда можно было бы ожидать. Этот каталог не входит в каталог по умолчанию, $PATHпоэтому любые исполняемые файлы в нем не будут найдены оболочкой.

Вы можете исправить это для своего пользователя, добавив эту строку в свой файл ~/.bash_profile(обязательно добавьте ее перед export $PATHстрокой):

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

Однако это все равно не будет доступно для любых команд, запущенных от имени root ( sudoнапример, с помощью ). Я рекомендую вам добавить этот каталог в путь по умолчанию. Откройте /etc/profile, найдите строку, которая определяет путь, и добавьте в нее каталог. Я работаю в системе Linux, но это должно выглядеть примерно так:

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

Просто добавьте каталог в конец, чтобы это выглядело так:

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

Если вы не хотите менять настройки по умолчанию, вы можете создать ссылку makeна каталог, который находится в настройках по умолчанию $PATH:

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

Вам придется сделать это для всех, /Developer/usr/binпоэтому я настоятельно рекомендую вам изменить настройки по умолчанию.

Проблема 2: поиск новой версии

На этом этапе вы сможете установить Ruby с помощью

$ sudo port install ruby19

Это завершается корректно, но ваша версия Ruby, похоже, не обновлена:

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

Это потому что,по умолчанию, portустанавливает свои файлы в /opt/localи установит ваш исполняемый файл ruby ​​как /opt/local/bin/ruby1.9. Еще один каталог, которого нет в вашем $PATH. Таким образом, вы можете либо повторить процесс выше и добавить /opt/local/binв ваш $PATH, либо можете связать ruby1.9исполняемый файл с каталогом, который находится в вашем пути. Если вы добавите /opt/local/binв ваш $PATH, вы сможете запустить v1.8 с rubyи v1.9 с ruby1.9. Если вы хотите, чтобы все ваши существующие скрипты перешли на v1.9, я рекомендую вам указать /usr/bin/rubyна новую версию.

Старая версия на /usr/binсамом деле является символической ссылкой:

$ 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

Это значит, что вы можете безопасно удалить его и заменить ссылкой на новую версию:

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

Если вы когда-нибудь захотите вернуться к rubyверсии 1.8, просто выполните обратную команду:

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

Если все прошло хорошо, rubyто теперь у вас версия по умолчанию v1.9:

$ ruby --version
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin10]

решение2

Взгляните на этот gist. Показывает, как установить его для Mountain Lion.

Выделяет, как использовать MacPorts или Homebrew. Как только вы это поймете, он покажет, как установить с помощью rvm.

Связанный контент