Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CocoaPods update is downgrading an installed pod

When I run pod update, MMDrawerController is being downgraded from the currently installed version (0.5.7) to an older one (0.4.0).

Here is the contents of my Podfile:

source 'https://github.com/CocoaPods/Specs.git'

link_with 'OpenEye-Mobile', 'SecurityStar Tests'

platform :ios, '7.0'

pod 'AFNetworking', '~> 2.5.0'
pod 'MBProgressHUD', '~> 0.9'
pod 'MMDrawerController'
pod 'MMDrawerController+Storyboard', '~> 0.0.1'
pod 'UIAlertView+Blocks', '~> 0.8.1'

target :"SecurityStar Tests" do
  pod 'OCMock', '~> 3.1.1'
end

I just updated the cocoapods gem from v. 0.34.4 to 0.35.0. The only change I have made to the Podfile is updating AFNetworking from 2.3.1 to 2.5.0. If I try to explicitly specify MMDrawerController as v. 0.5.7, I get a dependency error:

- `MMDrawerController (= 0.5.7)` required by `Podfile`
- `MMDrawerController (~> 0.4.0)` required by `MMDrawerController+Storyboard (0.0.1)`

What's going on here? Why is this a problem all of a sudden? Did something change in cocoapods 0.35? Is there a way I can force MMDrawerController+Storyboard to be OK with MMDrawerController (= 0.5.7)?

like image 510
Jordan Avatar asked Feb 03 '15 22:02

Jordan


People also ask

What is the difference between POD install and pod update?

The difference between pod install and pod update lies in how they interact with the Podfile. lock file. This file is used to store the exact version of each pod that is currently installed in your project.

How do you update a single pod?

$ pod update When you run pod update SomePodName , CocoaPods will try to find an updated version of the pod SomePodName, without taking into account the version listed in Podfile. lock . It will update the pod to the latest version possible (as long as it matches the version restrictions in your Podfile).

How do I update my CocoaPods IOS?

TL;DR: Use pod install to install new pods in your project. Even if you already have a Podfile and ran pod install before; so even if you are just adding/removing pods to a project already using CocoaPods. Use pod update [PODNAME] only when you want to update pods to a newer version.


1 Answers

SOLUTION 1 is specify same range as in MMDrawerController+Storyboard

pod 'MMDrawerController', '~> 0.4.0'

SOLUTION 2 is to update MMDrawerController+Storyboard podspec so that it will use the latest version.

EXPLANATION The problem is as it says: dependency error.

This line in a podfile means take the latest (for 04.02 is 0.5.7):

pod 'MMDrawerController'

While this one demands 'MMDrawerController+Storyboard' :

pod 'MMDrawerController+Storyboard', '~> 0.0.1'

which, in turn, specifies in it's podspec as a dependency:

s.dependency 'MMDrawerController', '~> 0.4.0'

'~> 0.4.0' means that it can use versions 0.4.0 - 0.4.9 and there is no intersection of 0.5.7 with 0.4.0 - 0.4.9.

like image 66
Andrei Shender Avatar answered Oct 04 '22 06:10

Andrei Shender