Les commandes Cocoapods échouent en raison de «Aucun fichier ou répertoire de ce type @ dir_initialize - /Users/<username>/.cocoapods/repos (Errno :: ENOENT)»

208

Quelqu'un peut-il m'aider à résoudre l'erreur dans la trace de pile ci-dessous? Cela se produit lorsque j'exécute une podcommande. J'ai désinstallé et réinstallé le joyau sans succès.

00:44:05-David~/dev/farecast-app (master)$ pod setup
Setting up CocoaPods master repo
/usr/local/rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/pathname.rb:422:in `open': No such file or directory @ dir_initialize - /Users/David/.cocoapods/repos (Errno::ENOENT)
    from /usr/local/rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/pathname.rb:422:in `foreach'
    from /usr/local/rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/pathname.rb:422:in `children'
    from /usr/local/rvm/gems/ruby-2.1.0/gems/cocoapods-0.34.4/lib/cocoapods/sources_manager.rb:63:in `all'
    from /usr/local/rvm/gems/ruby-2.1.0/gems/cocoapods-0.34.4/lib/cocoapods/user_interface/error_report.rb:127:in `repo_information'
    from /usr/local/rvm/gems/ruby-2.1.0/gems/cocoapods-0.34.4/lib/cocoapods/user_interface/error_report.rb:34:in `report'
    from /usr/local/rvm/gems/ruby-2.1.0/gems/cocoapods-0.34.4/lib/cocoapods/command.rb:63:in `report_error'
    from /usr/local/rvm/gems/ruby-2.1.0@global/gems/claide-0.7.0/lib/claide/command.rb:300:in `handle_exception'
    from /usr/local/rvm/gems/ruby-2.1.0@global/gems/claide-0.7.0/lib/claide/command.rb:274:in `rescue in run'
    from /usr/local/rvm/gems/ruby-2.1.0@global/gems/claide-0.7.0/lib/claide/command.rb:264:in `run'
    from /usr/local/rvm/gems/ruby-2.1.0/gems/cocoapods-0.34.4/lib/cocoapods/command.rb:50:in `run'
    from /usr/local/rvm/gems/ruby-2.1.0/gems/cocoapods-0.34.4/bin/pod:33:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-2.1.0/bin/pod:23:in `load'
    from /usr/local/rvm/gems/ruby-2.1.0/bin/pod:23:in `<main>'
    from /usr/local/rvm/gems/ruby-2.1.0/bin/ruby_executable_hooks:15:in `eval'
    from /usr/local/rvm/gems/ruby-2.1.0/bin/ruby_executable_hooks:15:in `<main>'

MISE À JOUR : corrigé avec la suggestion de @ KeithSmiley.

David
la source
8
Pouvez-vous essayer de supprimer ~/.cocoapodsavec rm -rf ~/.cocoapodset de relancer pod setup.
Keith Smiley
1
@KeithSmiley J'ai essayé cela et j'obtiens toujours la même trace de pile d'en haut lors de l'exécution de n'importe quelle podcommande, y compris pod setup.
David
4
Eh bien au lieu de courir , pod setupvous pouvez cloner manuellement les spécifications repo en ~/.cocoapods/repos/master. Vous devriez alors pouvoir sauter cette étape.
Keith Smiley
J'utilisais 'git rm -rf Pods', mais git ne supprime pas réellement le répertoire. Pour ceux qui sont coincés avec cela, faites 'rm -rf Pods' puis 'pod install'.
Borzh
Pourquoi ne sélectionnez-vous pas la réponse avec plus de 440 votes positifs?
Dirty Henry

Réponses:

472

Si le message indique qu'il vous manque une bibliothèque:

J'ai eu le même problème et il a été résolu après l'exécution pod setup, puispod install

Si le répertoire manquant est le répertoire ruby, vous pouvez le faire:

Vous avez probablement mis à jour votre gemme osx ou rubis récemment et son CHEMIN est toujours lié à l'ancienne version rubis. Corrigez avec:

sudo gem install -n /usr/local/bin ruby

sudo gem install -n /usr/local/bin cocoapods

Comme l'a dit @rendel

Davinder
la source
136
Vous vous demandez pourquoi cela n'est pas mentionné dans le guide de démarrage des CocoaPods
Kevin Reilly
2
Ça fait ma soirée! Je vous remercie!
sapin du
4
+ 1 pour l'avoir mentionné dans le guide de démarrage
csotiriou
C'est un bug corrigé, nous attendons juste de sortir la prochaine version
orta
48

Les cocoapodes avaient un problème où leur dépôt github était corrompu, ce qui oblige les utilisateurs à nettoyer manuellement leur dépôt local.

Une citation du billet de blog Cocoapods détaillant l'erreur :

Malheureusement, nous avons rencontré un bogue dans libgit2 et nous allons devoir forcer le push dans le dépôt Specs. (Également connu sous le nom de référentiel de spécifications «maître».)

Qu'est-ce que cela signifie pour toi? Eh bien, fondamentalement, votre configuration CocoaPods va se casser. Vous allez devoir supprimer manuellement toutes les copies locales du référentiel de spécifications et recloner la nouvelle version du référentiel de spécifications. Vous pouvez le faire avec les commandes suivantes:

La solution:

$ sudo rm -fr ~/.cocoapods/repos/master
$ pod setup

Le simple fait d'exécuter les commandes ci-dessus supprimera le référentiel corrompu et le réinitialisera à l'aide d'un référentiel propre. Voir le blogpost mentionné ci-dessus pour plus d'informations.

J'espère que cela t'aides!

radiovisuel
la source
1
@ user3783005, si vous obtenez cette erreur, cela signifie que les cocoapods ne sont pas installés ou que les «pods» exécutables ne peuvent être trouvés nulle part sur votre PATHvariable. utiliser echo $PATHpour imprimer votre chemin complet pour démarrer le processus de dépannage.
radiovisuel du
22

Rien ne fonctionnait pour moi, je devais le faire sudo gem install cocoapodset cela faisait la magie.

Fille
la source
J'ai dû le faire après avoir effectué une migration via Migration Assistant.
Jojo Narte
21

J'ai eu un problème similaire. J'ai supprimé le dossier Pods et relancé l'installation de pod. Problème résolu.

Leandro
la source
Merci pour cela ! Vous m'avez sauvé des moments précieux :)
CyberDandy
8

J'ai essayé une tonne de trucs et la seule solution pour moi était de dire

brew install cocoapods

puis

brew link --overwrite cocoapods

Maintenant, cela semble bien fonctionner.

Ethan Parker
la source
1
Cela a fonctionné pour moi après avoir gâché mon installation d'une manière ou d'une autre. Merci!
Aleks Beer
7

Cela se produit parfois lors de l'utilisation d'un caractère d'apostrophe incorrect dans un podfile ou dans une podspec

entrez la description de l'image ici

Ces apostrophes sont par défaut lors de l'utilisation de l'application TextEdit standard sur OS X. Je préfère Sublime Text pour éviter de telles erreurs

Tim
la source
1
Gardez à l'esprit que lorsque vous utilisez la technique des "spécifications privées", les cocoapods peuvent copier votre Podspec privé local dans un répertoire appelé "./Votre_Private_Subspec_Name/Pods/Local Podspecs". Donc, après avoir corrigé la podspec d'origine, vous feriez mieux de supprimer ces répertoires "Podspecs locaux", car les cocoapods peuvent ne pas mettre à jour les copies correctement
Tim
3

SOLUTION RAPIDE

Un bon moyen de résoudre ce problème est d'aller dans le dossier spécifié et de vérifier le fichier manquant (parfois il est là mais dans un format rare) et de supprimer le fichier. Supprimer égalementPodfile.lock fichier

Ensuite, exécutez pod installet tout devrait bien se passer :) vous n'avez pas besoin de supprimer tous les dépôts que les Cocoapods ont téléchargés.

Terminé!

Gabriel Goncalves
la source
1
CE. Ceci est la solution. Cocoapods réinstallés, liés, toutes sortes de choses et rien n'a fonctionné jusqu'à ce que j'aille dans le Finder et supprime les fichiers à l'intérieur du pod qui était fou. Même ma propre réponse de 2018 Oo
Ethan Parker
1

J'ai eu une erreur similaire. Et j'ai essayé la "configuration du pod", ne fonctionnant pas. Ensuite, je crée un faux fichier dont on m'a dit qu'il manquait, puis la "mise à jour du pod" fonctionne.

wgr
la source
1

allez dans le répertoire du projet et tapez la commande export PATH = $ PATH: $ HOME / Software / ruby ​​/ bin

Phani Sai
la source
0

J'ai eu le même problème, mais j'ai dû supprimer tout le répertoire ./Pods/ dans mon projet pour pouvoir continuer (le répertoire contenait des liens symboliques vers des fichiers d'une autre branche qui n'ont pas été supprimés sur le commutateur de branche)

igraczech
la source
0

Je sais que c'est un article plus ancien, mais j'ai rencontré ce problème lors du déplacement ou de la suppression d'un fichier .h dans un module local. Il s'avère que c'était un problème avec la v0.38 et la solution était de mettre à jour.

Voir la discussion du problème Github ici .

docteurBroctor
la source