cocoapods - «pod install» длится вечно


276

Я пытался обновить существующие модули с помощью pod installкоманды, но для запуска требуется вечность.

Детальный режим показывает, что он застрял в следующей строке (навсегда)

Обновление спец репо master

$ / usr / bin / git pull --no-rebase --no-commit

Там нет активности сети после того, как он застрял.


14
застряв на 90 минут, pod installпереходит к следующему этапу. Я думаю, я не очень терпеливый.
Хай Фенг Као

10
запустите pod install --verbose, чтобы увидеть больше информации об отладке. Общая ситуация - git-обновление занимает слишком много времени. Если вам не нужно обновление, запустите pod install --no-repo-update
Wellbin Huang

2
Что-то говорит о качестве стручка. Эти парни должны исправить это в ближайшее время. Я зацикливаюсь на этом каждый раз, когда имею дело со стручком.
Джонни

1
@HaiFengKao, я волновался, потому что мой интернет не очень хороший. Я отслеживал его, загружалось около 350 МБ. Спасибо за ссылку, я думаю, у cocoapods нужен собственный сервер.
GeneCode 13.09.16

2
Тем не менее 5 лет медленно. 20к в секунду для огромного файла. Смешной.
Хасен

Ответы:


552

Я столкнулся с той же проблемой, и я решил ее, выполнив следующие команды, которые приведены здесь

pod repo remove master
pod setup
pod install

64
cocoapods - 'pod repo remove master' занимает вечность. Нужно создать новую тему? :)
дмитриниколаев

6
Спасибо, это работает для меня. А также вы можете добавить --verbose, чтобы показать подробную информацию об отладке
сигнал

2
@dmitrynikolaev вначале я думал, что мастер удаления репо-стручка также занимает вечность. Но оказывается, мне просто нужно еще несколько минут, чтобы подождать. Ваше необходимое время может варьироваться, потому что я не знаю конфигурацию ваших модулей, но просто уделите этому больше времени.
Чен Ли Ён

22
Было бы неплохо добавить пояснение к данному решению, чтобы прояснить его.
DevGansta

4
Даже при настройке pod застряли следующие: $ / usr / bin / git clone github.com/CocoaPods/Specs.git master Клонирование в 'master' ... Вместо этого вы можете пропустить настройку pod "Перейти к ~ / .cocoapods / repos и запустить 'git clone github.com/CocoaPods/Specs.git master'
Аммар Муджиб

158

Вы можете запустить

pod install --verbose 

чтобы увидеть, что происходит за кулисами ... по крайней мере, вы будете знать, где он застрял (это может быть операция git clone, которая занимает слишком много времени из-за вашей медленной сети и т. д.)

иметь еще лучшее представление о том, почему он, кажется, застрял (беглый многословный может дать вам что-то вроде этого

-> Installing Typhoon (2.2.1)
 > GitHub download
 > Creating cache git repo (~/Library/Caches/CocoaPods/GitHub/0363445acc1ed036ea1f162b4d8d143134f53b92)
 > Cloning to Pods folder
       $ /usr/bin/git clone https://github.com/typhoon-framework/Typhoon.git ~/Library/Caches/CocoaPods/GitHub/0363445acc1ed036ea1f162b4d8d143134f53b92 --mirror
       Cloning into bare repository '~/Library/Caches/CocoaPods/GitHub/0363445acc1ed036ea1f162b4d8d143134f53b92'...

чтобы узнать размер git-репо, которое вы клонируете ... если вы клонируете из github .. вы можете использовать этот формат :

/repos/:user/:repo

так, например, чтобы узнать о вышеуказанном типе репо

https://api.github.com/repos/typhoon-framework/Typhoon

и возвращенный JSON будет иметь ключ размера, значение. так что выше вернулось

"size": 94014,

что составляет около 90 МБ. неудивительно, что это займет вечность! (кстати .. к тому времени, когда я написал это .. это только закончилось .. ха!)


обновление: одна распространенная вещь, которую какао-стручки делают еще до того, как он начинает загружать зависимости, перечисленные в вашем подфайле, - это загружать / обновлять свое собственное репо (они называют это Настройка основного репозитория Cocoapods .. посмотрите на это:

pod install --verbose

Analyzing dependencies

Updating spec repositories
  $ /usr/bin/git rev-parse  >/dev/null 2>&1
  $ /usr/bin/git ls-remote
  From https://github.com/CocoaPods/Specs.git
  09b0e7431ab82063d467296904a85d72ed40cd73  HEAD
  ..

Плохая новость заключается в том , что если вы будете следовать выше процедуру , чтобы выяснить , насколько большой какао стручка репо .. вы получите это : «размер»: 614373, .. , который много .

Таким образом, чтобы получить более точный способ узнать, сколько времени занимает просто установить свое собственное репо. Вы можете настроить главное репо какао-бобов отдельно, используя pod setup:

$ pod help setup
Usage:

$ pod setup

  Creates a directory at `~/.cocoapods/repos` which will hold your spec-repos.
  This is where it will create a clone of the public `master` spec-repo from:

      https://github.com/CocoaPods/Specs

  If the clone already exists, it will ensure that it is up-to-date.

затем работает pod install


15
Это единственное последовательное описание " WTF ", где кокаподы "до" ... которые я когда-либо видел.
Алекс Грей,

2
загрузка главного репо заняла у меня 20 минут, глядя на мигающий курсор (а у меня всего 150 Мб интернет-соединения и просто паршивый macbook pro retina i7)
woens

В каталоге specs находится более 17 000 файлов и каталогов. Это не самый дружелюбный подход к тому, что они там делают.
Эрик Реппен

Когда я выполнил эту команду, мои кокодапы показали мне, что она закончена. с его установкой. Спасибо!
Джамила Хук,

В большинстве случаев речь идет о большой зависимости, загрузка которой занимает много времени
OhadM

29

Возможные решения:

  1. Обновление какао-бобов может решить эту проблему
  2. Очистите и снова установите стручки

Обновление CocoaPods

Откройте терминал и введите:

$ sudo gem update cocoapods

Переустановите стручки

Шаг 1

Удалите все модули из вашего проекта ( сложная часть ):

Вручную

  1. Удалите все записи модулей на этапах сборки вашего проекта (отмечено красным)

введите описание изображения здесь

  1. Удалить libPods.a под рамочной папкой

введите описание изображения здесь

  1. Теперь идите к директории проекта и удалить Podfile.lock *, ** Стручков папка и рабочая область (Удалить из корзины тоже).

Автоматически с помощью CocoaPods De-Integrate

устанавливать

$ [sudo] gem install cocoapods-deintegrate

Бегать

$ pod deintegrate

Шаг 2

Здесь мы переходим к установке стручков снова

Изменить ваше местоположение вашего каталога

$ cd yourprojectdirectory

Отредактируйте подфайл, добавив в него нужные вам строки

$ open -a Xcode podfile 

или

$ nano podfile

НАКОНЕЦ установить пакет снова

$ pod install

Надеюсь это поможет


бесполезный. Только что сделал свежую установку cocoapods, pod init и pod install просто зависает навсегда
woens

@woens Ну, это зависит от того, какие библиотеки вы выбираете. Вы также можете попробовать этот инструмент, который
деинтегрирует модули

никто! в этом весь смысл. это происходит, когда вы начинаете с init, а затем устанавливаете на пустой проект.
woens

@woens Что ты имеешь в виду под ником? Где смысл устанавливать стручки, когда их вообще нет (если я вас правильно понял)?
E-Riddie

просто начать пустой проект и подготовить его, чтобы добавить вещи позже. Итак: создайте проект xcode, запустите pod init, запустите pod install. В этот момент зависает установка pod.
woens

19

Я нашел другой способ решить проблему

pod install --verbose --no-repo-update

меня устраивает.


Все равно придется клонировать с первого раза.
Эрик Реппен

14

По состоянию на 15 августа 2016 года репо представляет собой массивный файл объемом 2,39 ГБ. Я открыл монитор активности, чтобы посмотреть, что делает терминал. Он скачивал этот огромный файл.



13

Обновленный ответ на 2019 год - команда разработчиков какао-бобов перешла на использование собственной CDN, которая решает эту проблему, вызванную ограничением скорости GitHub, как описано здесь: https://blog.cocoapods.org/CocoaPods-1.7.2/

TL; DR Вам нужно изменить исходную строку в вашей Podfileна это:

source 'https://cdn.cocoapods.org/'

Это правильный ответ anno 2019. Если бы только принятые ответы могли быть изменены ...
Ян Кемп

9

Вот что сработало для меня:

  1. Удалить все содержимое в ~/.CocoaPods
  2. Удалите свой существующий Podfile.lockи Podsпапку.
  3. Оставьте свой PodFile без изменений.
  4. Бегать sudo gem install cocoapods --verbose
  5. Бегать pod install --verbose

Я рекомендую использовать флаг --verbose, так как Терминал не очень хорош при выполнении командных действий. Подробный вариант очень помогает!


5
Помните, что мастер репо в ~ / .cocoapods огромен (~ 1 ГБ), поэтому удаление и переустановка занимает много времени. Если бы я понял это, я бы попытался, pod install --verboseпрежде чем прибегнуть к удалению мастер-репо.
BinaryNate

7

Просто пройдитесь по шагам ниже:

Загрузить https://github.com/CocoaPods/Specs/archive/master.zip

Запустите следующие команды в терминале:

pod setup --verbose

Откройте новую вкладку в терминале и запустите

mv ~/.cocoapods/repos/master/.git ~/tempSpecsGitFolder

откройте master.zip (распакуйте его)

mv Specs-master ~/.cocoapods/repos/master

mv ~/tempSpecsGitFolder ~/.cocoapods/repos/master/.git

cd [папка проекта]

pod install --no-repo-update


6

Попробуйте очистить кеш CocoaPods, перегрузить и переустановить все модули, как описано здесь

rm -rf "${HOME}/Library/Caches/CocoaPods"

rm -rf "\`pwd\`/Pods/"

pod update

4

Как упоминалось в других ответах, это занимает вечность, потому что размер мастер-репо Cocoapods огромен. Это время можно сократить, используя следующие шаги.

1) Создайте путь к файлу приватных спецификаций в вашем репозитории github. Укажите этот путь https://github.com/yourpathForspecs.git 'в качестве источника в вашем подфайле.

2) определить ВСЕ нужные вам репозитории и их зависимости (упомянутые в файле podspec.json на cocoapods для этих репозиториев) и получить их файлы podspec.json от cocoapods. добавьте эти файлы podspec.json вместе с их папкой (скажем, папка с последней версией для болтов) в этом хранилище спецификаций.

3) удалите источник « https://github.com/CocoaPods/Specs.git » в подфайле

4) обновление стручка

Это займет значительно меньше времени, так как требует загрузки и загрузки только необходимых вам стручков, а не всего хранилища cocoapods. В моем случае это сократило время обновления модуля с 15-20 минут в среднем до 3-4 минут максимум.


1

Шаги установки Pod

Первый открытый терминал:

chmod o-w /usr/local

sudo chmod o-w /usr/local

sudo gem install cocoapods

если в вашей системе уже установлен модуль, выполните следующие действия.

sudo gem install cocoapods -V

sudo gem update --system

pod setup

cd /Users/apple/Desktop/Black\&WhiteImageDemo

pod init

open -a Xcode Podfile

pod install

1

У меня была та же проблема, я понял, что все еще использую Network Conditioner в «Очень плохой сети». Отключение решило проблему.

Надеюсь, что это помогает кому-то.


1

Я исправил эту проблему так:

rm -fr ~/Library/Caches/CocoaPods && \
gem update --system && \
gem update && \
gem cleanup && \
pod setup

Ссылка: http://blog.cocoapods.org/Repairing-Our-Broken-Specs-Repository/


1
Мой pod setupбрал навсегда и я через 30 минут прервал. Я просто следовал этой процедуре и git cloneтеперь закончил примерно через 5 минут.
neoneye

1

Я была такая же проблема. После запуска

pod install
Setting up CocoaPods master repo

Iterm2 застрял при настройке CocoaPods.

Я решил проблему, запустив

sudo gem install CocoaPods

Это упоминается на сайте CocoaPods




0

Решение для меня в 11.2019

Здравствуйте, я много чего пробовал, но ничего не получалось. Попробуйте просто подключиться к этому сайту https://cdn.cocoapods.org/, если вы не можете так просто использовать VPN и делать pod installи т.д. И не забудьте использовать --verboseдля понимания того, что происходит.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.