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


201

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


1
要了解差异,您必须首先了解a podfile.lock是什么。请参阅链接及其引用的视频。
亲爱的

Answers:


285

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

有关更多信息,请参见此问题线程

$ pod更新

运行时pod update SomePodName,CocoaPods将尝试查找pod SomePodName吊舱的更新版本,而不考虑列出的版本Podfile.lock。它将把pod更新到可能的最新版本(只要它与Podfile中的版本限制匹配)。

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


19
感谢@mattt的回复,我已经获取了最新版本的CocoaPods(0.34.2),并且尝试了$ pod update SomePodName。但是,在某些情况下,CocoaPods也将尝试更新其他Pod的依赖项。长话短说,在某些情况下,SomePodName不是唯一会更新的Pod。
2014年

2
@mattt,您不知道如何安装特定的Pod,而不更新已安装的Pod吗?
Shamsiddin

1
当我自己修改某些依赖项并运行时,pod install它会恢复为原始版本。但我不想失去我的变化
Shamsiddin

2
@mattt,我指的依赖项不是要更新的pod的依赖项。我认为我没有很好地构建问题,但是假设我们更新了Pod A,那么与Pod A无关的其他Pod也将被更新。顺便说一句,这是一个古老的问题,因此不确定此后是否已解决..

8
pod update感动一切。它没有达到锡罐上的要求,而且非常令人沮丧。从您尚未告诉其触摸的其他豆荚中随机删除标头,等等
路加福音

185

要安装单个Pod而不更新现有Pod,请将该Pod添加到Podfile并使用:

pod install --no-repo-update

要删除/更新特定的窗格,请使用:

pod update POD_NAME

经过测试!


49

2015年

所以因为 pod update SomePod接触了最新版的可可豆,所以我找到了一种解决方法。

请执行以下步骤:

  1. SomePod从中删除Podfile

  2. pod install

吊舱现在SomePod将从我们的项目和Podfile.lock文件中删除。

  1. 放回SomePodPodfile

  2. 再跑pod install一次

这次,我们的Pod的最新版本将安装并保存在中Podfile.lock


您还可以使用的伎俩我的回答是这里stackoverflow.com/questions/29901337/...
Qiulang

17
您也可以pod update somepod anotherpod thirdpod一次更新多个Pod :)
Entea

这非常聪明。您可以通过两个独立的步骤来完成它们,并依靠podfile.lock使其他依赖项保持完整。我只是想知道是否SomePod将其更新为最新的依赖项,而不是将其更新为最新的共享依赖项anotherPod?无论Podlock中有什么,都不会发生吗?否则它将无法满足SomePod
Honey

28

只是说:

pod install -用于安装新的吊舱,

pod update -用于更新现有的广告连播,

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

pod update podName versionNum -用于更新/降级特定吊舱而无需触摸其他吊舱


您是pod不是要说git

有时不是,我不知道为什么。锻炼解决方案:1.从Podfile 2中删除特定的pod2。pod安装3.将特定的pod重新添加到Podfile4。pod安装
yonivav

21

只是一个小小的通知。

pod update POD_NAME

仅当此Pod已安装时才可用。否则,您将不得不使用

pod update

命令


您仍然可以pod install先使用它,它只会安装缺少的一个,而不会接触其他一个。尽管没有要更新尚未安装的Pod的用例,但是有吗?
aramusss

18

tl; dr使用:

pod update podName

为什么?参见下文。

  • pod update不会尊重的podfile.lock。它将覆盖它。
  • pod install 将尊重 podfile.lock

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

在此处输入图片说明


主要问题来自于~>又名乐观运营商

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

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

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

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

一个典型的示例是,如果pod A依赖于pod A2—声明A.podspecdependency 'A2', '~> 3.0'。在这种情况下,'A', '1.0.0'在Podfile中使用pod 确实会迫使user1和user2都始终使用pod A的1.0.0版本,但是:

  • user1可能最终以pod A2的版本3.4(因为A2的当时最新版本)
  • 当user2 pod install在以后加入项目时运行时,他们可能会获得Pod A2的版本3.5(因为的维护者A2可能同时发布了新版本)。这就是为什么只有这样才能保证所有的吊舱的相同版本的每一位团队成员的工作在每个电脑是使用Podfile.lock和正确使用pod installpod update

以上摘录全部来自Pod安装与Pod更新

我也强烈建议看什么对podfile.lock


9

我正在使用,cocoapods version 1.0.1并且使用pod update name-of-pod效果很好。没有其他窗格更新,只有您输入的特定窗格。


2

这有点离群值,不太可能是OP处理的内容,但是 pod update <podname>如果您在计算机上使用本地Pod,则在所有情况下都无法正常工作。

在这种情况下,唯一触发pod update工作的就是podspec文件中是否有更改。但是,进行更改也将允许pod install使其正常工作。

在这种情况下,您可以只用一个字母修改一些小的内容,例如描述或摘要,然后就可以成功运行install或update命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.