cocoaPods pod install Permission denied

2019-01-12 22:28发布

问题:

This is the short version:

When I run

pod install 

in an Xcode project I get

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

If I run

sudo pod install

I get no error, but my files installed are owned by root and can't compile and I have to chown those files to a normal user to use the Xcode compiler.

I am running Lion OSX.

I installed cocoaPods using

sudo gem install cocoaPods

I had to use sudo because without it I got

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

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

so now I have a root installed version of cocoaPods that downloads root owned Xcode libraries.

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

If normal, is there a way to fix the pod install problem?

回答1:

I solved this problem by running the following command:

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

and

sudo chown -R username:groupname ~/.cocoapods

Please replace username and groupname with your Mac login username/groupname.



回答2:

I only used (where username is your Mac login username)

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

and

sudo chown -R username ~/.cocoapods

when I tried with the groupname parameter I got

chown: username.groupname: illegal user name

Of course I used my own username and groupname :)



回答3:

Removing the directories worked for me:

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

If some other problems still exist.

Remove the Pods directory and the podFile.lock file.

Cocoapods just adds the directories again.



回答4:

With all the errors that I got while installing CocoaPods in some of my projects, I've finally succeeded in finding a pattern with it. Here it is:

  1. Access your project folder from the terminal:

    $ cd /Users/username/Downloads/MessagesTableViewController-master
    
  2. Create a podfile:

    $ touch podfile
    $ open -e podfile
    
  3. After the podfile is created, access it via the Finder and edit it in any other text editor except TextEdit because TextEdit sometimes messes up with apostrophes in the pod file. I used textWrangler. Write the following in the pod file; (Note these dependencies are for projects that support iOS version 6.0 and above)

    platform :ios, '6.0'
    pod 'AFNetworking'
    
  4. Save the file and close it.

  5. Go back to the terminal and see your pod version:

    $ pod --version
    

    Depending on your pod version, if an update is required, run this command:

    $ sudo gem update
    
  6. After the update completes, or it states that it is already up-to-date, you should install the cocoapods:

    $ sudo gem install cocoapods
    
  7. And at the very end, just run the following commands:

    $ sudo pod setup
    $ sudo pod install
    

And Viola! It is done. You'll see a Pods named folder within your project folder and the dependency you stated in the pod file will be apparent in Pods folder as a sub-folder.

Happy coding :)



回答5:

The issue is with Mac OS X's default installation of Ruby. The Ruby/Gems installation is owned by root in the location you specified.

This is normal behavior unless you install a Ruby manager. I would recommend rbenv but RVM is popular as well.

These installed your Ruby installation in your $HOME folder. This way your user owns the Ruby and gem executables.



回答6:

Quick, easy, hacky solution:

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


回答7:

This is a known issue. There's more on the CocoaPods official web-site.



回答8:

Answering the original question:

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

When I do a pod install I get:

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

so I assume sudo is OK.



回答9:

I solved it by installing the most up to date version of Ruby. Instructions here: https://gorails.com/setup/osx/10.12-sierra I was then able to successfully run sudo gem update sudo gem install cocoapods