102

I cannot understand why the Cocoapod is unable to find the pod specification I created when I run pod install. Could someone help me solve this trouble?

I'm defining a subspec in my library podspec file like this:

s.subspec 'mysubspec' do |c|
  c.dependency 'ABC','1.0.0'
end 

This dependency ABC is listed in the library Podfile:

pod 'ABC', :git => 'git@github.com:myrepo/Podspecs.git', :branch => 'xyz'

The Podspec file ABC.podspec in the branch xyz of myrepo/Podspecs seems like this:

Pod::Spec.new do |s|
  s.name         = "ABC"
  s.version      = "1.0.0"
  s.source       = { :git => "git@github.com:myrepo/Podspecs.git", :branch => "xyz" }
end

The error is [!] Unable to find a specification for ABC (= 1.0.0)

Dharman
  • 30,962
  • 25
  • 85
  • 135
Gaius Augustus
  • 1,175
  • 2
  • 8
  • 8

19 Answers19

189

I suppose that there is a problem with your pod master repo. Delete it and download it again.

You can do:

pod repo remove master
pod setup
pod install

Or:

sudo rm -fr ~/.cocoapods/repos/master
pod setup
pod install
chancyWu
  • 14,073
  • 11
  • 62
  • 81
Gastón Antonio Montes
  • 2,559
  • 2
  • 12
  • 15
  • 52
    Just running `pod setup` did the job. – Nagendra Rao Jun 02 '16 at 13:10
  • 1
    For me, only running the remove line first solved the problem! Took a while to setup though. – sinewave440hz Jul 22 '16 at 12:04
  • 2
    Wow! This. For some reason my Spec master repo wasn't setup correctly and I had to remove it this way and then did the setup and install. Thanks for this! – praneetloke Jan 12 '17 at 20:22
  • 1
    'pod setup' took quite a while, but was all I needed (as Rao mentioned) – Chris Allinson Feb 01 '17 at 23:23
  • 1
    Tried multiple other solutions, this is the one that did it for me (first solution) – Jake T. Apr 04 '18 at 17:55
  • 6
    Might want to try `pod repo update && pod setup` first - if your repo is just missing specs this might fix it and will be faster than re-cloning the whole repo from scratch. – Eliot May 16 '18 at 15:23
  • 1
    This is working, for the first time only. After restart / pod install in another project... fail fail fail again. use tis method instead. https://stackoverflow.com/questions/45287082/using-private-pod-and-public-pod-in-the-same-project/50618926#50618926 – zuyao88 Aug 23 '19 at 04:18
  • 2
    It may be called `trunk` rather than `master`, in case you get 'repo master does not exist' – Chris Watts Jul 30 '21 at 09:18
43

For me it was an issue with finding the spec, not the spec itself. I needed to add a source link to the Podfile, see Podfile documentation

Cocoapods recently added the need to link to the repo that holds the pod spec file you are looking for, the default is:

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

You may need to add multiple source links if you are using more obscure or homemade pods.

dloomb
  • 1,952
  • 22
  • 26
  • 1
    This can't be a requirement (at least not with the latest release), because I have not needed to added source links and after following Gastón's suggestion all worked fine. – sinewave440hz Jul 22 '16 at 12:08
  • @sinewave440hz, adding the source is most often used when you need to access a nonstandard private `.git` repo. The default source is public. – ScottyBlades Sep 10 '18 at 17:43
  • I see, thanks (not that I remember writing any of that, but I'm sure it will help someone somewhere :D) – sinewave440hz Sep 10 '18 at 17:53
26

Instead of:

s.source       = { :git => "git@github.com:myrepo/Podspecs.git", :branch => "xyz" }

Write this: Don't forget the tag...

s.source       = { :git => "https://github.com/myrepo/Podspecs.git", :branch => "xyz",
                   :tag => s.version.to_s }
gran33
  • 12,421
  • 9
  • 48
  • 76
12

Make sure you added

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

at the very beginning of your Podfile

Ugo Marinelli
  • 989
  • 1
  • 11
  • 18
7

I resolve this after add

source '/Users/username/Documents/path/to/iOS_SpecsRepository'
source 'https://github.com/CocoaPods/Specs.git'

to Podfile. well .I used a local repository as my Repo. So i can user this in another podspec file

s.dependency 'iOS_Networking_CPN', '~> 0.1.1'

iOS_Networking_CPN is in the local path.

OmniBug
  • 892
  • 8
  • 12
  • source '/Users/username/Documents/path/to/iOS_SpecsRepository' worked, do you know why I have to use a local source path? – gabbler Aug 30 '18 at 04:14
  • in my opinion,because every device need a local repository for a podspec – OmniBug Aug 31 '18 at 01:29
7

With me, this worked like a charm.

pod repo remove master
pod setup

However, you may try directly, pod setup as some users pointed.

Hemang
  • 26,840
  • 19
  • 119
  • 186
5

I was getting similar error for MGBoxkit

[!] Unable to find a specification for MGBoxkit

By replacing the following line

pod 'MGBoxkit'

with

pod 'MGBoxKit'

fixed the issue.

zeeawan
  • 6,667
  • 2
  • 50
  • 56
4

Update the master repo for cocoapods.

pod repo update master
aturan23
  • 4,798
  • 4
  • 28
  • 52
Idan Magled
  • 2,186
  • 1
  • 23
  • 33
3

You first need to add your Podspec to a private specs repo; this lets CocoaPods find the pod when you try to install it.

Enter the following in Terminal, making sure you’re still in the framework directory you are trying to add:

pod repo add [your framework name] [Your framework Git URL]
pod repo push [your framework name] [your framework .podspec file name]
Jevon Charles
  • 644
  • 1
  • 7
  • 12
1

I missed adding , causing issue.

Replacing,

pod 'PodName' '~> 2.3'

With,

pod 'PodName', '~> 2.3'

Did the job.

Mohammad Zaid Pathan
  • 16,304
  • 7
  • 99
  • 130
1

I solved my problem with below command:

cocoa pod update

To update use this command

sudo gem install cocoapods

if above command gives error than use this one

sudo gem install -n /usr/local/bin cocoapods

and than do this

pod repo update

Seema Sharma
  • 379
  • 3
  • 12
1

I was working in flutter with all public repos. I was getting a similar error:

Unable to find a specification for `TOCropViewController (~> 2.5.2)` depended upon by `image_cropper`

For some reason TOCropViewController specification was unavailable. I tried the following:

flutter clean
rm -Rf ios/Pods
rm -Rf ios/.symlinks
rm -Rf ios/Flutter/Flutter.framework
rm -Rf ios/Flutter/Flutter.podspec
rm ios/Podfile
flutter run

But the plugin specification was still unavailable. Finally, I solved it by removing the pod's repo master.

pod repo remove master
sudo rm -rf ~/.cocoapods/repos
pod setup
pod install

To validate and confirm that the plugin is here, I tried grep inside .cocoapods, using:

 grep -r "TOCropViewController" -n ~/.cocoapods

Inside ~/.cocoapods/repos/trunk/Specs/3/7/4/TOCropViewController/2.5.2/TOCropViewController.podspec.json

I found the plugin's git repo and correct version number.

  "source": {
    "git": "https://github.com/TimOliver/TOCropViewController.git",
    "tag": "2.5.2"
  },

After that flutter clean and flutter run started working.

jerrymouse
  • 16,964
  • 16
  • 76
  • 97
1

I had to add these two lines at the beginning of the Podfile:

source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/goinstant/pods-specs-public'

Then run pod install again.

Abel Rodríguez
  • 474
  • 5
  • 6
0

had the same problem.

what really worked for me was gem uninstall cocoapods (as mentioned above by https://stackoverflow.com/users/4264880/seema-sharma) where I found that I had 11 (!) different cocoapods versions installed.

I chose to uninstall all and then gem install cocoapods:1.4.0

All good now.

Catarino
  • 233
  • 2
  • 8
0

For me, the below worked well but first try could be direct "pod setup" command If that don't work then go for the below commands would definitely make things happen.

pod repo remove master
pod setup
pod install

Sathish
  • 416
  • 1
  • 6
  • 20
  • How does this differ from @gastón-antonio-montes's [answer](https://stackoverflow.com/a/32850706/1998086)? – Leo Mar 29 '19 at 14:19
0

Follow the below steps :

Step 0: pod repo update master

Step 1: pod install

And you are done!

Sunil Targe
  • 7,251
  • 5
  • 49
  • 80
0

use tis instead. Using private pod and public pod in the same project

add the souce for both private and public(official) in the beginning of the podfile.

zuyao88
  • 64
  • 8
0

None of the answers helped me. Ultimately i figured out that I had a typo spelling mistake for one of the Pods.

Ex:- Firebaseresulrereres/Analytics. It was supposed to be Firebase/Analytics but without my knowledge the pod name had a wrong spelling like Firebaseresulrereres/Analytics.

Correcting the Pod Name did the trick for me!. It cost me 1 hour to find this though!. Development can be ambiguous and frustrating some times! :)

Pradeep Reddy Kypa
  • 3,992
  • 7
  • 57
  • 75
0
pod update

Solved the same error in my case.

Nuzhdin Vladimir
  • 1,714
  • 18
  • 36