他の依存関係に触れずに単一のポッドを更新する方法


202

次のコマンドで単一のポッドが更新されることを理解していますpod update <podname>。ただし、これにより、以前にインストールした他のポッド(更新コマンドに含まれていないポッド)の依存関係も更新されます。単一のポッドを更新し、他のすべての依存関係をそのままにする方法はありますか?


1
違いを理解するには、まずa が何であるかを理解する必要podfile.lockがあります。リンクとそれが参照するビデオを参照してください。
ハニー、

回答:


286

CocoaPodsの最新バージョンがインストールされていることを確認してください。$ pod update POD最近導入されました。

詳細については、この問題のスレッドを参照してください

$ポッド更新

を実行するとpod update SomePodName、CocoaPodsは、にリストされているバージョンを考慮せずに、ポッドSomePodNameの更新バージョンを見つけようとしますPodfile.lock。ポッドを可能な限り最新バージョンに更新します(Podfileのバージョン制限に一致する限り)。

ポッド名を指定せずにポッド更新を実行すると、CocoaPodsは、Podfileにリストされているすべてのポッドを可能な限り最新のバージョンに更新します。


19
@matttの応答をありがとう、CocoaPods(0.34.2)の最新バージョンを入手し、試してみました$ pod update SomePodName。ただし、CocoaPodsが他のポッドの依存関係も更新しようとする場合があります。要するに、SomePodNameは、場合によって更新される唯一のポッドではありません。

2
@mattt、すでにインストールされているものを更新せずに特定のポッドをインストールする方法がわかりませんか?
Shamsiddin 2015年

1
私が依存関係を変更して実行pod installすると、元のバージョンに戻ります。しかし、変更を失いたくありません
Shamsiddin

2
@mattt、私が参照していた依存関係は、更新されているポッドの依存関係ではありませんでした。私は質問を十分に構造化しなかったと思いますが、ポッドAを更新すると仮定すると、ポッドAの依存関係ではない他のいくつかのポッドも更新されます。これには、必ず、これはそれ以来修正されていない場合の方法によって、古い質問..です
ケン

8
pod updateすべてに触れます。それはそれが缶で言うことをしません、そしてそれは非常にイライラします。タッチするように指示していない他のポッドからヘッダーをランダムに削除するなど
Luke

185

既存のものを更新せずに単一のポッドをインストールするには、そのポッドをPodfileに追加して使用します。

pod install --no-repo-update

特定のポッドを削除/更新するには:

pod update POD_NAME

テスト済み!


49

2015年です

だから pod update SomePod、cocoapodsの最新バージョンのすべてに触れる、回避策を見つけました。

次の手順に従います。

  1. SomePodから削除Podfile

  2. 走る pod install

ポッドがSomePodプロジェクトとPodfile.lockファイルから削除されます。

  1. 元に戻すSomePodPodfile

  2. pod installもう一度走る

今回は、最新バージョンのポッドがインストールされ、に保存されますPodfile.lock


あなたはまた、私はここに答えるトリックを使用することができますstackoverflow.com/questions/29901337/...
Qiulang

17
同時にpod update somepod anotherpod thirdpod複数のポッドを更新することもできます:)
Entea

これはとても賢いです。2つの独立したステップでそれらを実行し、他の依存関係をそのまま維持するためにpodfile.lockに依存しています。SomePod最新の依存関係に更新された場合、共有された依存関係をanotherPod最新に更新しないのですか?ポッドロックの内容に関係なく発生しませんか?それ以外の場合は、の要件を満たすことができなくなりますSomePod
ハニー

29

ただ言って:

pod install -新しいポッドをインストールするため

pod update -既存のポッドを更新するため

pod update podName -他のポッドに触れずに特定のポッドのみを更新するため、

pod update podName versionNum -他のポッドに触れずに特定のポッドを更新/ダウングレードするため


もしかしてpod代わりにgit
ケン

時々それはしません、私はなぜかわかりません。ワークアウト・ソリューション:1. Podfileに3.再度追加の特定のポッドをインストールする.pod Podfile 2から特定のポッドを取り外し4.ポッドインストール
yonivav

21

ほんの少しの通知。

pod update POD_NAME

このポッドがすでにインストールされている場合にのみ機能します。それ以外の場合は、それらをすべて更新する必要があります

pod update

コマンド


pod install最初に使用しても、他の部分に触れずに、不足している部分のみをインストールします。インストールしていないポッドを更新したいというユースケースはありませんが、ありますか?
aramusss

18

tl; dr使用:

pod update podName

どうして?以下をお読みください。

  • pod updateを尊重しませんpodfile.lock。それを上書きします。
  • pod install を尊重します podfile.lock

この図は、違いをよりよく理解するのに役立ちます。

ここに画像の説明を入力してください


主な問題は、~>別名楽観演算子に起因します

で正確なバージョンを使用Podfileするだけでは不十分です

ポッドの正確なバージョンをで指定することでPodfilepod 'A', '1.0.0'ですることで、すべてのユーザーがチームの他のユーザーと同じバージョンになることを保証するには十分います。

その後pod update、新しいポッドを追加するだけでも、を使用する可能性があります。他のポッドは、の特定のバージョンに修正されているため、更新するリスクがないと考えていPodfileます。

しかし、実際には、上記のシナリオのuser1とuser2が常にすべてのポッドのまったく同じバージョンを取得することを保証するには十分ではありません。

ポッドがあれば1つの典型的な例はあるAポッドへの依存性があるA2中で宣言- A.podspecなどをdependency 'A2', '~> 3.0'。そのような場合、'A', '1.0.0'Podfileでポッドを使用すると、user1とuser2の両方が常にバージョン1.0.0のポッドAを使用することになりますが、次のようになります。

  • user1はA2バージョンのポッドで終了する可能性があります3.4(それはA2そのときの最新バージョンだったため)
  • 一方、pod install後でプロジェクトに参加するときにuser2を実行すると、ポッドA2バージョンが取得される可能性があります3.5A2その間にメンテナが新しいバージョンをリリースした可能性があるため)。つまり、各者のコンピュータ上のすべてのポッドの同じバージョンとすべてのチームメンバーの仕事が使用することを確認するために、なぜ唯一の方法だPodfile.lockと、正しく使用してpod install対をpod update

上記の抜粋はすべて、ポッドインストールとポッド更新から派生したものです

私は何をするのかを見ることを強くお勧めpodfile.lockます


9

私は使用cocoapods version 1.0.1してpod update name-of-podおり、完全に機能します。他のポッドは更新されず、入力した特定のポッドのみが更新されます。


2

これは少し外れ値であり、OPが扱っていた可能性は低いですが、 pod update <podname>ますが、コンピューターでローカルポッドを使用している場合は、すべてのケースで機能するわけではありません。

この状況ではpod update、podspecファイルに変更があった場合にのみ、機能します。ただし、変更を加えると、pod installなります。

この状況では、説明や要約などのマイナーなものを1文字ずつ変更するだけで、インストールまたは更新コマンドを正常に実行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.