web-dev-qa-db-fra.com

Echec de la mise à jour: les fichiers d'arbre de travail non suivis seraient écrasés par fusion

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
205
cd $(brew --prefix)
git reset --hard HEAD
brew update
278
Strand McCutchen

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:

  1. tout chown à my_username:admin, ie, Sudo chown -R ted:admin $(brew --prefix)
  2. lancez les deux commandes git ci-dessus, git fetch Origin et git reset --hard Origin/master
361
favoretti

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
46
Eric Wu
$ 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.

31
Ron D.

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
6
demesne

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
5
pstaender

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.)

4
jimmont

Cette approche peut être plus simple que certains. Ça implique:

  • résoudre un problème git afin que vous puissiez déléguer la gestion des modifications.
  • pas de déplacement manuel de fichiers ou de répertoires. 
  • aucun ajustement manuel des autorisations de fichiers ou de répertoires. 

É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).

1
Kay V

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.

1
Steve Benner
Sudo chown -R USER /usr/local/bin

note - pour la commande USER dont vous utilisez le nom d'utilisateur

Sudo brew doctor
1
imvp

Cela devrait marcher.

1. cd `brew --prefix`
2. git fetch Origin
3. git reset --hard Origin/master
4. Sudo brew update
0
Rahul Vivek