CocoaPods 환경에서 특정 라이브러리를 업데이트에서 제외

iOS 개발에서 CocoaPods는 여전히 널리 사용되는 의존성 관리 도구다. 하지만 프로젝트 규모가 커지면 모든 라이브러리를 동시에 업데이트하는 것이 오히려 위험을 초래할 수 있다. 특히, 이미 안정적으로 동작하는 특정 라이브러리를 굳이 다시 내려받을 필요가 없거나, 원격 저장소의 구성 문제로 업데이트가 실패하는 경우라면 더욱 그렇다. 이럴 때는 의존성 관리 전략을 세밀하게 조정해야 한다.


1. pod updatepod install의 차이

CocoaPods의 두 명령은 비슷해 보이지만 본질적으로 다르다.

  • pod update는 Podfile.lock을 무시하고 Podfile에 정의된 범위 내에서 가능한 최신 버전을 다시 내려받는다.
  • pod install은 Podfile.lock에 고정된 버전을 그대로 유지한다.

따라서 안정성이 필요한 환경에서는 설치만 반복하고, 특정 라이브러리만 교체가 필요할 때 대상 지정 업데이트를 활용하는 것이 안전하다.


2. 특정 라이브러리만 업데이트

Podfile.lock에 버전이 잠겨 있는 상태라면, 원하는 라이브러리만 개별적으로 업데이트할 수 있다.

pod update RealmSwift --no-repo-update

이 명령은 RealmSwift만 최신화하며, 다른 라이브러리들은 기존 버전을 그대로 둔다. --no-repo-update 옵션을 추가하면 로컬 사양을 그대로 사용하기 때문에 불필요한 시간 소모도 줄어든다.


3. 로컬 경로를 통한 고정

원격 저장소 접근이 문제를 일으킨다면 아예 라이브러리를 로컬 경로로 고정하는 방법도 있다.
Podfile에서 다음과 같이 작성한다.

pod 'TrezorCrypto', :path => 'Vendor/TrezorCrypto'

이 경우 CocoaPods는 지정된 로컬 디렉터리만 참조하므로 네트워크 의존성이 제거된다. 특히 git submodule을 필요로 하는 라이브러리에서 원격 호출이 반복 실패할 때 유용하다.


4. Podfile.lock을 활용한 버전 관리

이미 안정적으로 빌드된 조합이 있다면, Podfile.lock 파일이 바로 그 상태를 기록해준다. 이 파일을 소스 관리 도구에 포함해 두면 팀 전체가 동일한 버전으로 작업할 수 있다. 새로운 환경에서 빌드할 때도 단순히 pod install을 실행하면 동일한 결과를 얻는다. 불필요한 갱신을 방지하고 협업의 안정성을 높이는 핵심 도구다.


5. 전략적 업데이트의 중요성

모든 라이브러리를 무조건 최신으로 맞추는 것은 단기적으로는 “깨끗해 보이는” 방법일 수 있다. 하지만 현실적인 iOS 프로젝트에서는 종종 빌드 스크립트, 네이티브 코드, 혹은 서브모듈과의 호환성 문제로 인해 예기치 못한 빌드 에러가 발생한다. 따라서 필요한 라이브러리만 선별적으로 업데이트하고, 문제가 없는 라이브러리는 잠궈두는 것이 합리적이다.


6. 장기적인 관점에서의 관리

  • 새 기능이나 보안 패치가 꼭 필요한 경우만 업데이트를 진행한다.
  • 주요 릴리스 노트를 꼼꼼히 읽어 API 변경 여부를 확인한다.
  • CI/CD 파이프라인에 테스트를 포함해 업데이트 후 안정성을 자동으로 검증한다.

마무리

CocoaPods 환경에서 특정 라이브러리를 업데이트에서 제외하는 방법은 단순한 편의가 아니라 전체 프로젝트 안정성을 지키기 위한 필수 전략이다. pod update를 무작정 실행하기보다는, 어떤 라이브러리를 언제 갱신할지 명확히 구분하는 것이 더 중요하다. 이를 위해 pod install, 개별 업데이트, 로컬 고정, Podfile.lock 관리라는 도구들을 상황에 맞게 적절히 조합하는 것이 바람직하다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다