다른 종속성을 건드리지 않고 단일 포드를 업데이트하는 방법


202

다음 명령이 단일 포드를 업데이트한다는 것을 이해합니다 pod update <podname>.. 그러나 이전에 설치 한 다른 포드 (업데이트 명령에 포함되지 않은 포드)의 종속성도 업데이트합니다. 단일 포드를 업데이트하고 다른 모든 종속성을 그대로 두는 방법이 있습니까?


1
차이점을 이해하려면 먼저 무엇인지 이해해야 합니다podfile.lock . 링크 및 참조하는 비디오를 참조하십시오.
Honey

답변:


285

최신 버전의 CocoaPods가 설치되어 있는지 확인하십시오. $ pod update POD최근에 소개되었습니다.

자세한 내용은 이 이슈 스레드를 참조하십시오 .

$ 포드 업데이트

를 실행 pod update SomePodName하면 CocoaPods는에 나열된 버전을 고려하지 않고 업데이트 된 포드 버전 PodPodName을 찾으려고 시도합니다 Podfile.lock. 포드를 가능한 최신 버전으로 업데이트합니다 (Podfile의 버전 제한과 일치하는 한).

포드 이름없이 포드 업데이트를 실행하면 CocoaPods는 포드 파일에 나열된 모든 포드를 최신 버전으로 업데이트합니다.


19
@mattt 응답에 감사드립니다. 최신 버전의 CocoaPods (0.34.2)를 얻었으며 시도했습니다 $ pod update SomePodName. 그러나 CocoaPod가 다른 포드의 종속성을 업데이트하려고하는 경우도 있습니다. 간단히 말해 SomePodName은 경우에 따라 업데이트되는 유일한 포드가 아닙니다.
ken

2
@ mattt, 이미 설치된 포드를 업데이트하지 않고 특정 포드를 설치하는 방법을 모르십니까?
Shamsiddin

1
내가 직접 의존성을 수정하고 실행 pod install하면 원래 버전으로 돌아갑니다. 그러나 나는 내 변화를 잃고 싶지 않다
Shamsiddin

2
@ mattt, 내가 언급 한 종속성은 업데이트되는 포드의 종속성이 아닙니다. 나는 질문을 충분히 잘 구성하지 못했다고 생각하지만 포드 A를 업데이트한다고 가정하면 포드 A의 종속성이 아닌 다른 포드도 업데이트됩니다. 그건 그렇고 오래된 질문이므로 그 이후로 수정되었는지 확실하지 않습니다 ..
ken

8
pod update모든 것을 만집니다. 그것은 주석에서 말하는 것을하지 않으며 매우 실망합니다. 터치하지 말라고하지 않은 다른 포드에서 헤더를 임의로 제거합니다.
Luke

185

기존 포드를 업데이트하지 않고 단일 포드를 설치하려면-> 해당 포드를 Podfile에 추가하고 다음을 사용하십시오.

pod install --no-repo-update

특정 포드를 제거 / 업데이트하려면 다음을 사용하십시오.

pod update POD_NAME

테스트했습니다!


49

2015 년

따라서 pod update SomePod최신 버전의 cocoapod의 모든 항목을 다루므로 해결 방법을 찾았습니다.

다음 단계를 수행하십시오.

  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

이것은 매우 영리합니다. 두 개의 독립적 인 단계를 수행하고 podfile.lock을 사용하여 다른 종속성을 그대로 유지합니다. SomePod최신 종속성으로 업데이트 되는지 최신 공유 공유 종속성을 업데이트하지 않을지 궁금합니다 anotherPod. Podlock의 내용에 관계없이 발생하지 않습니까? 그렇지 않으면SomePod
Honey

29

그냥 말 :

pod install -새로운 포드 설치

pod update -기존 포드를 업데이트하는 경우

pod update podName -다른 포드를 건드리지 않고 특정 포드 만 업데이트

pod update podName versionNum -다른 포드를 건드리지 않고 특정 포드를 업데이트 / 다운 그레이드


pod대신에 의미 했습니까 git?
ken

때로는 그렇지 않습니다. 왜 그런지 모르겠습니다. 운동 솔루션 : 1. Podfile 2 .pod 설치에서 특정 포드를 제거합니다. 3. Podfile에 특정 포드를 다시 추가합니다. 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것만으로는 충분하지 않습니다

일부 Podfile에서와 같이 광고 모음의 정확한 버전을 지정 pod 'A', '1.0.0'하면 모든 사용자가 팀의 다른 사용자와 동일한 버전을 갖도록 보장하기에 충분 하다고 생각할 수 있습니다 .

그런 다음 pod update새 포드를 추가 할 때도 다른 포드를 특정 버전으로 고정하기 때문에 업데이트 할 위험이 없다고 생각할 수도 Podfile있습니다.

그러나 실제로 위의 시나리오에서 user1과 user2가 항상 모든 포드의 동일한 버전을 얻을 것이라는 보장은 충분하지 않습니다.

일반적인 예는 포드 A가 포드 에 종속 된 경우 A2—로 선언 A.podspec됩니다 dependency 'A2', '~> 3.0'. 이 경우, 'A', '1.0.0'Podfile에서 pod 를 사용 하면 실제로 user1과 user2는 항상 pod A의 버전 1.0.0을 사용하지만,

  • user1은 A2버전에서 포드 로 끝날 수 있습니다 3.4( A2당시 최신 버전 이었기 때문에 )
  • pod install나중에 프로젝트에 참여할 때 user2가 실행 되면 A2버전에서 포드가 생길 수 있습니다 3.5(관리자가 A2그 동안 새 버전을 릴리스 했기 때문에 ). 그렇기 때문에 모든 팀원이 각 컴퓨터에서 동일한 버전의 모든 포드를 사용할 수있는 유일한 방법은 vs를 Podfile.lock올바르게 사용하는 것 입니다.pod installpod update

위의 발췌는 모두 포드 설치 대 포드 업데이트 에서 파생되었습니다.

나는 또한 높게보고 추천 무엇을 podfile.lock할 일을


9

나는 사용 cocoapods version 1.0.1하고 pod update name-of-pod완벽하게 작동합니다. 다른 포드는 업데이트되지 않으며 입력 한 특정 포드 만 업데이트됩니다.


2

이것은 조금 특이한 것으로 OP가 다루는 것이 pod update <podname>아닐 수도 있지만 컴퓨터에서 로컬 포드를 사용하는 경우 모든 경우에 작동하지는 않습니다.

이 상황 pod update에서 podspec 파일에 변경 사항이있는 경우 작동하도록 트리거 할 수 있습니다. 그러나 변경하면 pod install작동 할 수도 있습니다.

이 상황에서는 한 글자 씩 설명이나 요약과 같은 사소한 것을 수정 한 다음 install 또는 update 명령을 성공적으로 실행할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.