Essayer de mettre à jour Homebrew avec brew update
J'ai eu l'erreur suivante
error: The following untracked working tree files would be overwrittenby merge:
Library/Formula/argp-standalone.rb
Library/Formula/cocot.rb
Please move or remove them before you can merge.
Aborting
Updating e088818..5909e2c
Error: Failed while executing git pull Origin refs/heads/master:refs/remotes/Origin/master
J'ai trouvé un article de blog écrit par une personne ayant rencontré un problème similaire après avoir installé Mountain Lion (ce que j'ai fait cette semaine aussi). Il explique comment il a supprimé les fichiers mentionnés dans le message d'erreur.
I removed these files:
$ cd $(brew --prefix)
$ rm cocot.rb
However, removing these files didn't help with the brew update. Instead I had to manually update brew through git:
$ cd $(brew --prefix)
$ git fetch Origin
$ git reset --hard Origin/master
$ brew update
Already up-to-date.
En supposant que ces instructions soient correctes (ce que je ne devrais peut-être pas supposer), j’ai essayé de suivre ces instructions et
$ cd $(brew --prefix)
$ rm cocot.rb
Cependant, il disait "fichier n'existe pas" quand j'ai essayé de rm cocot.rb
La chose que je ne suis pas sûre de savoir est la cd $(brew --prefix)
Est-ce que ce sont exactement les mots que je tape ou dois-je remplacer le préfixe par quelque chose? le cd a été un succès, donc je suppose qu’il était correct - il m’a transféré dans/usr/local, mais il n’y avait aucun fichier à supprimer. Le contenu de/usr/local est
Cellar clamXav git mysql var Library doc heroku mysql-5.5.15-osx10.6-x86_64 README.md etc include rvm bin foreman lib share
Quoi qu'il en soit, savez-vous comment je peux réparer la 'mise à jour de la bière'
Mise à jour: Après avoir supprimé les fichiers conformément aux instructions de favoretti et essayé chown -R <your_username> $(brew --prefix)/.git
, l'erreur suivante s'est produite lors de l'exécution de brew update
error: The following untracked working tree files would be overwritten by merge:
Library/Aliases/gperftools
Library/Aliases/hashdeep
Library/Aliases/htop
Library/Aliases/nodejs
Library/Aliases/ocio
Library/Aliases/oiio
Library/Aliases/pgrep
Library/Aliases/pkill
Library/Aliases/qt4
Library/Aliases/twolame
Library/Aliases/wxwidgets
Library/Contributions/cmds/brew-aspell-dictionaries
Library/Contributions/cmds/brew-beer.rb
Library/Contributions/cmds/brew-dirty.rb
Library/Contributions/cmds/brew-graph
Library/Contributions/cmds/brew-grep
Library/Contributions/cmds/brew-leaves.rb
Library/Contributions/cmds/brew-linkapps.rb
Library/Contributions/cmds/brew-ls-taps.rb
Library/Contributions/cmds/brew-man
Library/Contributions/cmds/brew-md5-to-sha1
Library/Contributions/cmds/brew-mirror-check.rb
Library/Contributions/cmds/brew-pull.rb
Library/Contributions/cmds/brew-readall.rb
Library/Contributions/cmds/brew-server
Library/Contributions/cmds/brew-services.rb
Library/Contributions/cmds/brew-switch.rb
Library/Contributions/cmds/brew-test-bot.rb
Library/Contributions/cmds/brew-tests.rb
Library/Contributions/cmds/brew-unpack.rb
Library/Contributions/cmds/brew-which.rb
Library/Contributions/cmds/git
Library/Contributions/cmds/svn
Library/ENV/4.3/apr-1-config
Library/ENV/4.3/bsdmake
Library/ENV/4.3/c++
Library/ENV/4.3/c89
Library/ENV/4.3/c99
Library/ENV/4.3/cc
Library/ENV/4.3/clang
Library/ENV/4.3/clang++
Library/ENV/4.3/cpp
Library/ENV/4.3/g++
Library/ENV/4.3/gcc
Library/ENV/4.3/git
Library/ENV/4.3/i686-Apple-darwin11-llvm-g++-4.2
Library/ENV/4.3/i686-Apple-darwin11-llvm-gcc-4.2
Library/ENV/4.3/ld
Library/ENV/4.3/llvm-g++
Library/ENV/4.3/llvm-g++-4.2
Library/ENV/4.3/llvm-gcc
Library/ENV/4.3/llvm-gcc-4.2
Library/ENV/4.3/make
Library/ENV/4.3/mig
Library/ENV/4.3/sed
Library/ENV/4.3/svn
Library/ENV/4.3/xcrun
Library/ENV/libsuperenv.rb
Library/ENV/pkgconfig/leopard/libcrypto.pc
Library/ENV/pkgconfig/leopard/libcurl.pc
Library/ENV/pkgconfig/mountain_lion/libcurl.pc
Library/ENV/pkgconfig/mountain_lion/libexslt.pc
Library/ENV/pkgconfig/mountain_lion/libxml-2.0.pc
Library/ENV/pkgconfig/mountain_lion/libxslt.pc
Library/Formula/abcl.rb
Library/Formula/abcmidi.rb
Library/Formula/aiccu.rb
Library/Formula/akka.rb
Library/Formula/alac.rb
Library/Formula/alure.rb
Library/Formula/appledoc.rb
Library/Formula/arangodb.rb
Library/Formula/argp-standalone.rb
Library/Formula/argtable.rb
Library/Formula/autopano-sift-c.rb
Library/Formula/avian.rb
Library/Formula/avidemux.rb
Library/Formula/avro-cpp.rb
Library/Formula/aws-cloudsearch.rb
Library/Formula/aws-sns-cli.rb
Library/Formula/backupninja.rb
Library/Formula/bact.rb
Library/Formula/bam.rb
Library/Formula/basex.rb
Library/Formula/berkeley-db4.rb
Library/Formula/bind.rb
Library/Formula/blazeblogger.rb
Library/Formula/bochs.rb
Library/Formula/boost149.rb
Library/Formula/bsdconv.rb
Library/Formula/bsdmake.rb
Library/Formula/buildapp.rb
Library/Formula/bup.rb
Library/Formula/byacc.rb
Library/Formula/cadubi.rb
Library/Formula/camellia.rb
Library/Formula/casperjs.rb
Library/Formula/ccextractor.rb
Library/Formula/cconv.rb
Library/Formula/cdo.rb
Library/Formula/cdpr.rb
Library/Formula/cgvg.rb
Library/Formula/checkstyle.rb
Library/Formula/chordii.rb
Library/Formula/chruby.rb
Library/Formula/cifer.rb
Library/Formula/clhep.rb
Library/Formula/cntlm.rb
Library/Formula/cocot.rb
Library/Formula/cogl.rb
Library/Formula/collada-dom.rb
Library/Formula/crash.rb
Library/Formula/crossroads.rb
Library/Formula/crosstool-ng.rb
Library/Formula/css-crush.rb
Library/Formula/csync.rb
Library/Formula/ctemplate.rb
Library/Formula/curlftpfs.rb
Library/Formula/cutter.rb
Library/Formula/cvsutils.rb
Library/Formula/darkstat.rb
Library/Formula/darner.rb
Library/Formula/Dart.rb
Library/Formula/dasm.rb
Library/Formula/debianutils.rb
Library/Formula/dfc.rb
Library/Formula/dgtal.rb
Library/Formula/dhcping.rb
Library/Formula/di.rb
Library/Formula/dmtx-utils.rb
Library/Formula/drip.rb
Library/Formula/dsniff.rb
Library/Fo
Aborting
Updating e088818..c1fbc29
Error: Failed while executing git pull Origin refs/heads/master:refs/remotes/Origin/master
cd $(brew --prefix)
git reset --hard HEAD
brew update
Vous devez faire ce qui suit:
cd $(brew --prefix)
rm Library/Formula/argp-standalone.rb
rm Library/Formula/cocot.rb
Et ensuite le
git fetch Origin
git reset --hard Origin/master
brew update
En gros, pour expliquer un peu plus:
cd $(brew --prefix)
indique à cd
de changer le répertoire en quelque chose que brew --prefix
produira. Si vous essayez d’exécuter la commande brew --prefix
, vous devriez voir quelque chose dans les lignes suivantes:
brew --prefix
/usr/local
Ainsi, la commande serait dans ce cas un équivalent de cd /usr/local
. Les versions plus récentes de brew
ont des formules sous son préfixe d'installation et Library/Formula/
;.
Notez que si vous avez modifié vous-même ces formules pour une raison particulière (comme épingler une version), cette action les rétablira à celles par défaut et pourrait produire des effets indésirables.
@TedPennings a noté dans ses commentaires que cela fonctionnait pour lui, mais sa séquence était la suivante:
my_username:admin
, ie, Sudo chown -R ted:admin $(brew --prefix)
git fetch Origin
et git reset --hard Origin/master
Ceci est dû à un ancien bug dans le code update
qui a été corrigé depuis longtemps. Cependant, la nature du bogue nécessite que vous procédiez comme suit:
cd $(brew --repository)
git reset --hard FETCH_HEAD
Si brew doctor
se plaint toujours des modifications non validées, exécutez également cette commande:
cd $(brew --repository)
git clean -fd
$ cd $(brew --prefix)
$ git clean -fd
$ git reset --hard
$ Sudo chown -R `whoami` `brew --prefix`
$ brew update
Remarque: les étapes 2 et 3 ont fonctionné pour moi puisque j'ai effectué l'étape 5 avant 4 avant l'erreur. La mise à jour brew avant de changer le propriétaire du dossier a causé tout le problème.
Un problème similaire se produisait lorsque ma bibliothèque de paquets brew avait été téléchargée en tant qu'utilisateur root, puis je ne pouvais pas exécuter brew update car git se plaindrait de ne pas pouvoir fusionner le fichier.
La solution était de faire: -
Sudo chown -R <user> /usr/local/Library
Réinitialiser le référentiel de brassage devrait être le moyen le plus efficace si vous ne voulez pas abandonner les modifications éventuelles des formules que vous avez éventuellement appliquées:
$ cd `brew --prefix`
$ git fetch Origin
$ git reset --hard Origin/master
$ brew cleanup --force
$ brew update
J'ai pu résoudre ce problème sur ma machine en ajoutant l'autorisation d'écriture du groupe admin (et le bit setgid) aux chemins suivants:
Sudo chmod -R g+ws /usr/local /Library/Caches/Homebrew
S définit l'identifiant du groupe lors de l'exécution afin que les autorisations d'écriture ne soient pas perdues la prochaine fois qu'un autre utilisateur administrateur met à jour ou met à niveau Homebrew.
Cette réponse est quelque peu incomplète car lorsque j'essaie de faire brew cleanup --force
, il y a un problème d'autorisations lorsque Homebrew tente de supprimer du contenu dans/usr/local/Cellar /. (Malheureusement, je ne peux pas approfondir cette question pour le moment.)
Cette approche peut être plus simple que certains. Ça implique:
Étapes (avec des notes pour ceux qui veulent des explications):
cd $(brew --repository) // see Note 1 below
git remote add brew https://github.com/Homebrew/brew // see Note 2 below
git pull brew master // promising fast-forward report!
brew update // see Note 3 below
Vue d'ensemble:
D'après ce que je peux dire, la cause réelle de ce problème est un changement dans l'URL du dépôt. C'est maintenant brew
et était brew.git
. (URL complète à jour: https://github.com/Homebrew/brew )
Remarque 1: Cette première commande vous emmène de n'importe où dans votre structure de fichiers vers le bon répertoire. La structure des répertoires est différente pour moi de ce que d’autres montrent ci-dessus (Mac OS 10.11.16), mais avec cette commande, ces différences ne devraient pas avoir d’importance.
Remarque 2: Cette deuxième commande ajoute l'URL distante correcte à un nouvel alias. Je l'ai fait juste au cas où cette approche n'accomplirait pas ce que je voulais et que j'avais de nouveau besoin de l'adresse précédente. Depuis que la nouvelle télécommande a fonctionné, j'invite quelqu'un d'autre à commenter la modification de l'URL alias par Origin. Je mettrai volontiers à jour la réponse pour refléter ce qui a fonctionné pour vous.
Note 3: Cette quatrième commande a exactement le résultat souhaité: elle rapporte un grand nombre de mises à jour, y compris le rapport particulièrement agréable de "==> HOMEBREW_REPOSITORY migré vers/usr/local/Homebrew!". (emphase les leurs).
Une autre option consiste simplement à utiliser git stash
.
La commande brew update exécute un git pull
; ainsi, s'il y a des fichiers modifiés (ou même des attributs de fichier, ce qui m'est arrivé lorsque j'ai modifié les autorisations dans le répertoire de manière récursive), vous devez en quelque sorte résoudre les conflits. Utiliser git stash
est un moyen. il prend toutes les modifications et les met de côté afin que vous reveniez à la dernière version mise à jour du référentiel. L'emplacement Homebrew est par défaut /usr/local
et il s'installe en tant que référentiel git. Vous pouvez rechercher un dossier .git
à voir par vous-même. J'écris un script de désinstallation homebrew qui sera bientôt publié sur mon profil GitHub avec plus d'informations.
Sudo chown -R USER /usr/local/bin
note - pour la commande USER dont vous utilisez le nom d'utilisateur
Sudo brew doctor
Cela devrait marcher.
1. cd `brew --prefix`
2. git fetch Origin
3. git reset --hard Origin/master
4. Sudo brew update