![使用兩種方法無法進行 Ruby 更新](https://rvso.com/image/50602/%E4%BD%BF%E7%94%A8%E5%85%A9%E7%A8%AE%E6%96%B9%E6%B3%95%E7%84%A1%E6%B3%95%E9%80%B2%E8%A1%8C%20Ruby%20%E6%9B%B4%E6%96%B0.png)
我嘗試在我的 mac 10.6.8 上安裝 ruby 版本 1.9.3:
$ \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:/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
'which -a make' 和locate -b '\make' 都不是。第一個找不到哪個命令,而後者則為locate:illegal option --b
答案1
問題1:make
第一個問題是 ruby 需要編譯,這通常是透過make
它將從 a 讀取設置Makefile
,然後調用編譯器。在 OSX 上make
安裝時Xcode
將其工具安裝在/Developer/usr/bin
而不是/usr/bin
人們期望的位置。該目錄不是預設目錄,$PATH
因此 shell 找不到其中的任何可執行檔。
您可以透過將此行添加到您的用戶中來修復此問題~/.bash_profile
(確保export $PATH
在行之前添加它):
PATH="/Developer/usr/bin:$PATH"
sudo
但是,以 root 身分執行的任何命令(例如)仍然無法存取該命令。我建議您將此目錄新增至預設路徑。打開/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.8ruby
和 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
v1.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
看看這個重點。展示如何為 Mountain Lion 安裝它。
重點介紹如何使用 MacPorts 或 Homebrew。一旦你明白了這一點,它就會顯示如何使用 進行安裝rvm
。