如何在不触及其他依赖项的情况下更新单个pod

时间:2014-10-14 00:53:10

标签: cocoa cocoapods

我了解以下命令将更新单个pod:pod update <podname>。但是,这也会更新您之前安装的其他pod(未包含在update命令中的pod)的依赖关系。有没有办法更新单个pod并保留所有其他依赖项?

9 个答案:

答案 0 :(得分:229)

确保安装了最新版本的CocoaPods。最近介绍了$ pod update POD

请参阅this issue thread for more information

  

$ pod update

     

当您运行pod update SomePodName时,CocoaPods将尝试查找pod SomePodName的更新版本,而不考虑Podfile.lock中列出的版本。它会将pod更新为最新版本(只要它与Podfile中的版本限制相匹配)。

     

如果您运行pod update而没有任何pod名称,CocoaPods会将Podfile中列出的每个pod更新为最新版本。

答案 1 :(得分:155)

安装单个pod而不更新现有的pod-&gt;将该pod添加到您的Podfile并使用:

pod install --no-repo-update

删除/更新特定广告连播使用

pod update POD_NAME

测试!

答案 2 :(得分:40)

2015年

因为pod update SomePod涉及最新版本的cocoapods中的所有内容,我找到了解决方法。

按照以下步骤操作:

  1. SomePod

  2. 中删除Podfile
  3. 运行pod install

  4. pod现在将从我们的项目和SomePod文件中删除Podfile.lock

    1. SomePod放回Podfile

    2. 再次运行pod install

    3. 这次我们的pod的最新版本将安装并保存在Podfile.lock

答案 3 :(得分:16)

只是一个小小的通知。

pod update POD_NAME

仅在已安装此pod时才有效。否则,您必须使用

更新所有这些内容
pod update

命令

答案 4 :(得分:11)

只是说:

pod install-用于安装新Pod,

pod update-用于更新现有吊舱,

pod update podName-仅更新特定的广告连播,而无需触摸其他广告连播,

pod update podName versionNum-用于更新/降级特定的广告连播而无需触摸其他广告连播

答案 5 :(得分:7)

我使用cocoapods version 1.0.1并使用pod update name-of-pod完美无缺。没有其他pod更新,只是您输入的特定pod。

答案 6 :(得分:3)

tl; dr使用:

pod update podName

为什么?参见下文。

  • pod update将不遵守podfile.lock。它将覆盖它。
  • pod update将尊重podfile.lock

此图有助于更好地理解差异:

enter image description here


主要问题来自~> aka optimistic operator

Podfile中使用确切的版本是不够的

有些人可能认为,通过在Podfile中指定其pod的确切版本(例如pod 'A', '1.0.0')就足以确保每个用户与团队中其他人的版本相同。

那么,即使只是添加新的Pod,他们甚至可能会使用pod update,以为永远不会冒着更新其他Pod的风险,因为它们已固定在Podfile中的特定版本上。 >

但是实际上,这不足以保证我们上面的方案中的user1和user2始终获得与他们所有pod完全相同的版本。

一个典型的示例是,容器A对容器A2的依赖关系—在A.podspec中声明为dependency 'A2', '~> 3.0'。在这种情况下,在Podfile中使用pod 'A', '1.0.0'确实会强制user1和user2都始终使用pod A的1.0.0版本,但是:

  • user1可能会以A2版本的pod 3.4结尾(因为那是A2当时的最新版本)
  • 当user2在以后加入项目时运行pod install时,他们可能会获得A2版本的pod 3.5(因为A2的维护者可能已经发布了新版本同时)。 这就是为什么确保每个团队成员在每台计算机上使用相同版本的所有pod的唯一方法是使用Podfile.lock和正确使用pod installpod update

以上摘录全部来自pod install vs. pod update

我也强烈建议您观看what does a podfile.lock do

答案 7 :(得分:1)

这是一个异常值,不太可能是OP处理的内容,但如果您在计算机上使用本地pod,则pod update <podname>将无法在所有情况下使用。

在这种情况下,唯一可以触发pod update工作的是podspec文件中的更改。但是,进行更改也可以使pod install也能正常工作。

在这种情况下,您只需修改一些字母(例如描述或摘要),然后您就可以成功运行安装或更新命令。

答案 8 :(得分:0)

pod update POD_NAME将更新最新的pod,但不会更新Podfile.lock文件。

因此,您可以使用特定版本的Pod更新Podfile,例如pod 'POD_NAME', '~> 2.9.0',然后使用命令pod install

稍后,您可以从Podfile中删除特定的版本命名,然后可以再次使用pod install。这将有助于保持Podfile.lock的更新。