Cocoa Pods not updating pods on El Capitan
Regarding the original question/problem:
$ sudo gem install cocoapods
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted
I found I had the same problem with several GEMS, so I generalized the recognized answer (Keith Smiley) to update ALL local gems... (on El Capitan with rootless in force)
$ sudo gem install cocoapods -n /usr/local/bin/ # this command installs
$ sudo gem update -n /usr/local/bin/ # this command updates all local gems
This works well and will spit out a verbose log of all updates and errors.
I saw many errors. They were all 'unable to convert' errors. Parsing many docs will encounter a "skipping" error... like this:
$ unable to convert "\xCF" from ASCII-8BIT to UTF-8 for lib/jazzy... skipping
I believe these skipping errors are not problems.
CocoaPods will be updated during this process, along with all the other local GEMS, depending on how current your local GEMS are. I believe this is the best way to handle the rootless issue (which is the cause of the problem).
This is caused by the new System integrity protection feature introduced in El Capitan. It restricts even administrators from writing to /usr/bin
.
Your best option would be to install gems without needing sudo
. There is a good guide on how to do that:
export GEM_HOME=$HOME/.gem
export PATH=$GEM_HOME/bin:$PATH
gem install cocoapods
This should work for you
sudo gem install -n /usr/local/bin cocoapods
Operation not permitted - /usr/bin/xcodeproj #3692
For whatever reason, the rootless stuff seems less restrictive when one simply upgrades the system. I could sudo gem install cocoapods just fine on a machine upgraded from 10.10 - however, binstubs are no longer installed into /usr/bin:
$ sudo gem install cocoapods
[...]
1 gem installed
$ export PATH=$PATH:/Library/Ruby/bin
$ pod --version
0.37.2
We have heard from some users that they receive this error when doing a system-wide installation:
ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod
We aren't sure why gem behaves differently on some systems, but this can be solved by passing
-n /usr/local/bin
to the install command, so that the pod executable gets installed there.
From CocoaPods issues 3736
Uninstall all instances of cocopods (just to be safe and keep things clean) see fully uninstall Cocoapods
sudo gem uninstall cocoapods
or even better fully uninstall all components (and select All versions for each)
gem list --local | grep cocoapods | awk '{print $1}' | xargs sudo gem uninstall
Install again
sudo gem install -n /usr/local/bin cocoapods
Change access permission
sudo chmod +rx /usr/local/bin/