2013-04-17 67 views
47

這是短版:的CocoaPods吊艙安裝許可被拒絕

當我在Xcode項目運行

pod install 

我得到

[!] Pod::Executable pull error: cannot open .git/FETCH_HEAD: Permission denied

如果我運行

sudo pod install 

我得到沒有錯誤,但我的文件安裝由root擁有,無法編譯,我必須chown這些文件給普通用戶使用Xcode編譯器。

我正在運行Lion OSX。

我安裝的CocoaPods使用

sudo gem install cocoaPods 

我不得不使用sudo,因爲沒有它,我得到了

ERROR: While executing gem ... (Gem::FilePermissionError)

You don't have write permissions into the /Library/Ruby/Gems/1.8 directory.

所以我現在的CocoaPods的根安裝版本下載根擁有的Xcode庫。

sudo安裝cocoaPods的方式是錯誤還是正常?

如果正常,有沒有辦法解決吊艙安裝問題?

回答

93

我通過運行以下命令解決了這個問題:

sudo chown -R username:groupname ~/Library/Caches/CocoaPods 

sudo chown -R username:groupname ~/.cocoapods 

請與您的Mac登錄用戶名/組名替換usernamegroupname

+0

請注意,您需要將所有權轉讓給-R和〜文件名 – lehn0058

+0

至@ lehn0058之間的用戶名,我很抱歉缺少用戶名參數。 – jianpx

+5

取決於你的團隊,你可以不說。 sudo chown -R myusername〜/ ... – horseshoe7

4

問題在於Mac OS X默認安裝了Ruby。 Ruby/Gems安裝在您指定的位置由root擁有。

這是正常行爲除非你安裝了一個Ruby管理器。我會推薦rbenv,但RVM也很受歡迎。

這些將您的Ruby安裝安裝在您的$HOME文件夾中。這樣你的用戶擁有Ruby和gem可執行文件。

+1

感謝您的快速回答,我沒有找到周圍工作,CHOWN用戶〜/ .cocoapod /主/ git的/ FETCH_HEAD,這使我的問題消失了,但我會考慮rbenv或RVM解決方案 – godzilla

+1

爲我的快速解決方法我也必須更改〜/庫/ Caches/CocoaPods/GitHub的權限,現在它可以工作,但仍然是一個破解 – godzilla

+1

要清楚,除非您使用Ruby管理器,否則您需要使用sudo來安裝gem。您所遇到的其他問題並不是預期的,可能是由運行'sudo pod setup'或'sudo pod install'引起的。 – Fabio

19

我只用了(其中username是您的Mac登錄用戶名)

sudo chown -R username ~/Library/Caches/CocoaPods 

sudo chown -R username ~/.cocoapods 

,當我試圖與groupName參數,我得到了

chown: username.groupname: illegal user name 

當然,我中使用我自己的用戶名和組名稱:)

+2

+1這是一個救生員。 – iwasrobbed

+2

我已通過刪除〜/ Library/Caches/CocoaPods中的內容解決了該問題,然後轉到項目目錄和pod install –

11

刪除的目錄爲我工作:

sudo rm -R ~/Library/Caches/CocoaPods 
sudo rm -R ~/.cocoapods/repos 

如果還存在一些其他問題。

刪除Pods目錄和podFile.lock文件。

Cocoapods只是再次添加目錄。

+0

最佳解決方案,剛與我合作:) – Abo3atef

+0

'〜/ Library/Caches/CocoaPods/GitHub'不存在。 – Raptor

+0

你有哪個CocoaPods版本? –

4

由於在我的一些項目中安裝CocoaPods時遇到的所有錯誤,我終於成功地找到了一個模式。那就是:從終端

  1. 訪問您的項目文件夾:

    $ cd /Users/username/Downloads/MessagesTableViewController-master 
    
  2. 創建podfile:

    $ touch podfile 
    $ open -e podfile 
    
  3. 創建podfile後,通過搜索訪問它並在TextEdit以外的任何其他文本編輯器中進行編輯,因爲TextEdit有時會在pod文件中使用撇號混淆。我用textWrangler。在pod文件中寫入以下內容; (注意,這些依賴關係是支持的iOS 6.0版本及以上項目)

    platform :ios, '6.0' 
    pod 'AFNetworking' 
    
  4. 保存文件並關閉它。

  5. 返回到終端,看你的POD版本:

    $ pod --version 
    

    根據您的POD版本,如果需要更新,運行此命令:

    $ sudo gem update 
    
  6. 更新後完成,或者說它已經是最新的,你應該安裝cocoapods:

    $ sudo gem install cocoapods 
    
  7. 而且在最後,只需運行下面的命令:

    $ sudo pod setup 
    $ sudo pod install 
    

和中提琴!完成了。您會在項目文件夾中看到一個Pods命名文件夾,並且您在Pod文件中聲明的依賴關係將在Pods文件夾中顯示爲子文件夾。

編碼愉快:)

0

快速,方便,哈克解決方案:

sudo chmod -R 777 ~/.cocoapods 
sudo chmod -R 777 ~/Library/Caches/CocoaPods 
0

回答原來的問題:

Is sudo installation of cocoaPods the wrong way or normal way? 

當我做了pod install我得到:

Analyzing dependencies 
CocoaPods 0.36.0.beta.1 is available. 
To update use: `sudo gem install cocoapods --pre` 

所以我假設sudo是確定的。