Mac OS X 下使用 Ruby Gem 的两个坑

最近需要在自己MacBookPro上用gem 装东西, 记载一下.
首先是 Connection Reseted 的问题.症状很简单, 用gem install 后, 效果如下:

gem install xxx
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://api.rubygems.org/quick/Marshal.4.8/xxx.gemspec.rz)

原因很简单, 在中国api.rubygems.org是被墙的.😂😂
最简单的方法是用淘宝镜像.
淘宝镜像地址是: https://ruby.taobao.org/
淘宝镜像首页说明写得很详细.
若是直接用 gem 手工安装的话, 用如下命令即可:

 $ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
 $ gem sources -l
*** CURRENT SOURCES ***
 
https://ruby.taobao.org
# 请确保只有 ruby.taobao.org
$ gem install xxx

它其实就是修改了你的 ~/.gemrc 文件
若用bundle , 则可以使用命令

$ bundle config mirror.https://rubygems.org https://ruby.taobao.org

在 OS X下, 若继续gem install, 那么狠容易遇到如下错误

gem install xxx
1  gem installed
gem install xxx
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

原因即字面意思, 就是gem 要往某个神奇的目录写文件但是你的权限不够.因为你使用的是 Apple 自带的ruby, 在尝试往Apple 自己的库中塞东西,默认那个位置是给root的.有两个差劲的方法可以解决这个问题,一个是前面加sudo.这时候记得先用sudo 重走第一步换个源.另一个是修改 /Library/Ruby/Gems/2.0.0 这个目录的用户,即

sudo chown -R your_name:your_name /Library/Ruby/Gems/2.0.0

不过个人最建议的是用 homebrew再装一个ruby,这样local归local, system归system.

brew install ruby

然后再 gem

$ gem install tmbundle-manager
Fetching: thor-0.19.1.gem (100%)
Successfully installed thor-0.19.1
Fetching: tmbundle-manager-0.1.2.gem (100%)
Successfully installed tmbundle-manager-0.1.2
Parsing documentation for thor-0.19.1
Installing ri documentation for thor-0.19.1
Parsing documentation for tmbundle-manager-0.1.2
Installing ri documentation for tmbundle-manager-0.1.2
Done installing documentation for thor, tmbundle-manager after 1 seconds
2 gems installed

默认情况下, brew 的各种 gems 会装到 /usr/local/lib/ruby/gems/2.3.0 这个位置. 2.3.0 是版本号, 也许在其它位置. 而不是原来的 /Library/Ruby/Gems/2.0.0 这个位置.

然后检查一下gem, 发现自带的和系统的完全就用两套了.

$ gem list --local

*** LOCAL GEMS ***

activesupport (4.2.5)
bigdecimal (default: 1.2.0)
CFPropertyList (2.3.3, 2.2.8)
claide (1.0.1, 1.0.0, 0.9.1)
cocoapods (1.1.1, 0.39.0)
cocoapods-core (1.1.1, 1.0.1, 0.39.0)
cocoapods-deintegrate (1.0.1, 1.0.0)
cocoapods-downloader (1.1.2, 1.1.0, 0.9.3)
cocoapods-plugins (1.0.0, 0.4.2)
cocoapods-search (1.0.0, 0.1.0)
cocoapods-stats (1.0.0, 0.6.2)
cocoapods-trunk (1.1.1, 1.0.0, 0.6.4)
cocoapods-try (1.1.0, 0.5.1)
colored (1.2)
concurrent-ruby (1.0.2)
escape (0.0.4)
fourflusher (2.0.1, 0.3.2)
fuzzy_match (2.0.4)
gh_inspector (1.0.2)
i18n (0.7.0)
io-console (default: 0.4.2)
json (default: 1.7.7)
libxml-ruby (2.6.0)
minitest (5.8.3, default: 4.3.2)
molinillo (0.5.4, 0.4.5, 0.4.0)
nanaimo (0.2.2)
nap (1.0.0)
netrc (0.7.8)
nokogiri (1.5.6)
psych (default: 2.0.0)
rake (default: 0.9.6)
rdoc (default: 4.0.0)
rubygems-update (2.6.7)
sqlite3 (1.3.7)
test-unit (default: 2.0.0.0)
thread_safe (0.3.5)
tzinfo (1.2.2)
xcodeproj (1.4.1, 1.2.0, 0.28.2)
$  /usr/bin/gem list --local

*** LOCAL GEMS ***

activesupport (4.2.5)
bigdecimal (default: 1.2.0)
CFPropertyList (2.3.3, 2.2.8)
claide (1.0.1, 1.0.0, 0.9.1)
cocoapods (1.1.1, 0.39.0)
cocoapods-core (1.1.1, 1.0.1, 0.39.0)
cocoapods-deintegrate (1.0.1, 1.0.0)
cocoapods-downloader (1.1.2, 1.1.0, 0.9.3)
cocoapods-plugins (1.0.0, 0.4.2)
cocoapods-search (1.0.0, 0.1.0)
cocoapods-stats (1.0.0, 0.6.2)
cocoapods-trunk (1.1.1, 1.0.0, 0.6.4)
cocoapods-try (1.1.0, 0.5.1)
colored (1.2)
concurrent-ruby (1.0.2)
escape (0.0.4)
fourflusher (2.0.1, 0.3.2)
fuzzy_match (2.0.4)
gh_inspector (1.0.2)
i18n (0.7.0)
io-console (default: 0.4.2)
json (default: 1.7.7)
libxml-ruby (2.6.0)
minitest (5.8.3, default: 4.3.2)
molinillo (0.5.4, 0.4.5, 0.4.0)
nanaimo (0.2.2)
nap (1.0.0)
netrc (0.7.8)
nokogiri (1.5.6)
psych (default: 2.0.0)
rake (default: 0.9.6)
rdoc (default: 4.0.0)
rubygems-update (2.6.7)
sqlite3 (1.3.7)
test-unit (default: 2.0.0.0)
thread_safe (0.3.5)
tzinfo (1.2.2)
xcodeproj (1.4.1, 1.2.0, 0.28.2)

如有不足之处,请指正,谢谢.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容