【问题标题】:Cocoapods: Unable to find a specification for [PrivateSpec] depended upon by [PrivateClientSpec]Cocoapods:无法找到由 [PrivateClientSpec] 依赖的 [PrivateSpec] 的规范
【发布时间】:2014-12-04 20:32:14
【问题描述】:

我正在尝试使用私有存储库来分解更大的应用程序。我遵循了以下指南:

我创建了一个本地存储库来包含规范,通过

发布到 cocoapods

pod remote add MySpecs ~/local/path/to/MySpecs.git,

通过查看~/.cocoapods/repos/MySpecs的内容验证cocoapods看到了它们

我在PrivateClientSpec 中引用了PrivateSpec,如下所示:

s.dependency 'PrivateSpec' '~> 0.1.0'

问题是,当我尝试 lint 这个PrivateClientSpec 时,我得到了名义上的错误:

Unable to find a specification for [PrivateSpec] depended upon by [PrivateClientSpec]

我错过了什么吗?据我了解,这是受支持的行为。我正在使用 cocoapods v0.35。

谢谢!

【问题讨论】:

  • 我的 lint 在添加 --sources 后通过,但示例项目上的实际 pod 安装失败。有什么想法吗?

标签: ios xcode cocoapods


【解决方案1】:

原因是pod spec linter 只检查主规格,所以找不到您的私人规格。

您需要使用--sources 选项,如下所示:

pod spec lint --sources='git@our-private-spec-repo:iOS/Specs.git,https://github.com/CocoaPods/Specs'

两件事两注意:

  • 您的私人规格需要在线,无法查看本地规格
  • 如果您依赖其他 pod,您还需要为其 Spec 存储库添加 URL,这就是为什么在示例中我们也有 https://github.com/CocoaPods/Specs

通过运行pod spec lint --help,您可以了解有关此选项的更多信息:

--sources=https://github.com/artsy/Specs   The sources from which to pull
                                           dependant pods (defaults to
                                           https://github.com/CocoaPods/Specs.git).
                                           Multiple sources must be
                                           comma-delimited.

更多关于 herehere

【讨论】:

  • lint --sources='git@our-private-spec-repo:iOS/Specs.git,https://github.com/CocoaPods/Specs' pod v0.39.0 不工作
  • 这适用于 lint,但是在父开发 pod 的示例项目上实际安装 pod 怎么样?
  • CocoaPods (1.0.1) 的最新版本开始,您可以在没有在线规范的情况下使用:pod lib lint --sources='git@our-private-spec-repo:iOS/Specs.git,https://github.com/CocoaPods/Specs' --private
  • 这个答案应该像@MattRobinson 指出的那样更新:使用'--private'标志允许使用私有规范。
  • 如果您命名您的存储库(通过pod repo add),您也可以使用这些名称,例如--sources='master,our-repo'.
【解决方案2】:

为了让pod install 正常工作,我还需要添加:

source '<Prive specs lib URL>'
source 'https://github.com/CocoaPods/Specs.git'

.. 到 pod 文件(不是 podspec)。

摆脱:

无法找到依赖于 [PrivateSpec] 的规范 [PrivateClientSpec]

如果你也安装失败,出现这样的错误

pod install --verbose

  Preparing

Re-creating CocoaPods due to major version update.
  - Running source provider hooks
https://github.com/CocoaPods/Specs.git
<Prive specs lib URL>
source_url <Prive specs lib URL>

Analyzing dependencies

Inspecting targets to integrate
  Using `ARCHS` setting to build architectures of target `Pods-YourTarget`: (``)

Finding Podfile changes
  XXXXXXXXXXXXXXX

Resolving dependencies of `Podfile`

――― MARKDOWN TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

### Command

```
/usr/local/bin/pod install --verbose
```

### Report

* What did you do?

* What did you expect to happen?

* What happened instead?


### Stack

```
   CocoaPods : 1.1.1
        Ruby : ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]
    RubyGems : 2.6.10
        Host : Mac OS X 10.12.4 (16E195)
       Xcode : 8.3.2 (8E2002)
         Git : git version 2.11.0 (Apple Git-81)
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib
Repositories : alibaba-specs -  @ fatal: Not a git repository (or any of the parent directories): .git
               aliyun - git@github.com:aliyun/aliyun-specs.git @ 7406176b51b4d4f8f323a39f4d96a3857229805d
               aliyun-1 - <Prive specs lib URL> @ 7406176b51b4d4f8f323a39f4d96a3857229805d
               master - https://github.com/CocoaPods/Specs.git @ 86c330635113e7fc290fdebad4ba3ed0dca2daee
               taobao-baichuansdk-alibcspecs - http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecs.git @ e8cb2ae2ee7f44582923e4fae29243d6225fa8ee
```

### Plugins

```
cocoapods-deintegrate   : 1.0.1
cocoapods-plugins       : 1.0.0
cocoapods-repo-alirsync : 1.0.4
cocoapods-repo-rsync    : 1.0.4
cocoapods-search        : 1.0.0
cocoapods-stats         : 1.0.0
cocoapods-trunk         : 1.2.0
cocoapods-try           : 1.1.0
```

### Podfile

```ruby
# Uncomment this line to define a global platform for your project
# platform :ios, '8.0'
# Uncomment this line if you're using Swift
# use_frameworks!


source 'https://github.com/CocoaPods/Specs.git'
source '<Prive specs lib URL>'


target 'YourTarget' do
  pod 'AlicloudFeedback', ‘~> 3.0.1’
end
```

### Error

```
RuntimeError - Cannot initialize an aggregate with a nil source: ([nil])
/Library/Ruby/Gems/2.0.0/gems/cocoapods-core-1.1.1/lib/cocoapods-core/source/aggregate.rb:13:in `initialize'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/resolver.rb:356:in `new'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/resolver.rb:356:in `aggregate_for_dependency'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/resolver.rb:347:in `create_set_from_sources'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/resolver.rb:317:in `find_cached_set'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/resolver.rb:290:in `specifications_for_dependency'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/resolver.rb:108:in `search_for'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/resolver.rb:206:in `block in sort_dependencies'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/resolver.rb:200:in `each'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/resolver.rb:200:in `sort_by'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/resolver.rb:200:in `sort_dependencies'
/Library/Ruby/Gems/2.0.0/gems/molinillo-0.5.7/lib/molinillo/delegates/specification_provider.rb:52:in `block in sort_dependencies'
/Library/Ruby/Gems/2.0.0/gems/molinillo-0.5.7/lib/molinillo/delegates/specification_provider.rb:69:in `with_no_such_dependency_error_handling'
/Library/Ruby/Gems/2.0.0/gems/molinillo-0.5.7/lib/molinillo/delegates/specification_provider.rb:51:in `sort_dependencies'
/Library/Ruby/Gems/2.0.0/gems/molinillo-0.5.7/lib/molinillo/resolution.rb:165:in `initial_state'
/Library/Ruby/Gems/2.0.0/gems/molinillo-0.5.7/lib/molinillo/resolution.rb:106:in `start_resolution'
/Library/Ruby/Gems/2.0.0/gems/molinillo-0.5.7/lib/molinillo/resolution.rb:64:in `resolve'
/Library/Ruby/Gems/2.0.0/gems/molinillo-0.5.7/lib/molinillo/resolver.rb:42:in `resolve'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/resolver.rb:62:in `resolve'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/installer/analyzer.rb:723:in `block in resolve_dependencies'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/user_interface.rb:64:in `section'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/installer/analyzer.rb:721:in `resolve_dependencies'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/installer/analyzer.rb:76:in `analyze'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/installer.rb:236:in `analyze'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/installer.rb:150:in `block in resolve_dependencies'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/user_interface.rb:64:in `section'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/installer.rb:149:in `resolve_dependencies'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/installer.rb:110:in `install!'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/command/install.rb:37:in `run'
/Library/Ruby/Gems/2.0.0/gems/claide-1.0.1/lib/claide/command.rb:334:in `run'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/command.rb:50:in `run'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/bin/pod:55:in `<top (required)>'
/usr/local/bin/pod:22:in `load'
/usr/local/bin/pod:22:in `<main>'
```

――― TEMPLATE END ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

[!] Oh no, an error occurred.

Search for existing GitHub issues similar to yours:
https://github.com/CocoaPods/CocoaPods/search?q=Cannot+initialize+an+aggregate+with+a+nil+source%3A+%28%5Bnil%5D%29&type=Issues

If none exists, create a ticket, with the template displayed above, on:
https://github.com/CocoaPods/CocoaPods/issues/new

Be sure to first read the contributing guide for details on how to properly submit a ticket:
https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md

Don't forget to anonymize any private data!

Looking for related issues on cocoapods/cocoapods...
 - Changes search index format to fasten `pod search --full` command.
   https://github.com/CocoaPods/CocoaPods/pull/4249 [closed] [33 comments]
   28 Oct 2015


[!] Your Podfile has had smart quotes sanitised. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.

那么您应该尝试更新您的 CocoaPods 版本。这可能会对您有所帮助:https://stackoverflow.com/a/39973232/3395008

【讨论】:

    【解决方案3】:

    如果 mokagio 的答案对任何人都不起作用,这对我有用:

    只需将私有 repo url 更改为 https://

    pod spec lint --sources='https://our-private-spec-repo:iOS/Specs.git,https://github.com/CocoaPods/Specs'
    

    【讨论】:

      【解决方案4】:

      为了让pod install 正常工作,我还需要添加:

      source '<Prive specs lib URL>'
      source 'https://github.com/CocoaPods/Specs.git'
      

      .. 到 pod 文件(不是 podspec)。

      摆脱:

      无法找到依赖于 [PrivateSpec] 的规范 [PrivateClientSpec]

      【讨论】:

        猜你喜欢
        • 2019-04-11
        • 1970-01-01
        • 1970-01-01
        • 2020-07-05
        • 2014-11-12
        • 1970-01-01
        • 2022-06-14
        • 1970-01-01
        • 2013-05-30
        相关资源
        最近更新 更多