Aktualizacja zaparzania nie powiodła się: nieśledzone pliki drzewa roboczego zostaną zastąpione przez scalanie


207

Próbuję zaktualizować Homebrew o Wystąpił brew updatenastępujący błąd

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

Znalazłem post na blogu kogoś, kto doświadczył podobnego problemu po zainstalowaniu Mountain Lion (co zrobiłem również w tym tygodniu). Wyjaśnia, jak usunął pliki, o których mowa w komunikacie o błędzie

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.

Zakładając, że te instrukcje są prawidłowe (czego być może nie powinienem zakładać), próbowałem postępować zgodnie z tymi instrukcjami

    $ cd $(brew --prefix)
    $ rm cocot.rb

Jednak powiedziałem, że „plik nie istnieje”, gdy próbowałem wysłać plik rm cocot.rb

Nie jestem pewien, czy cd $(brew --prefix)są to dokładnie te słowa, które wpisuję, czy też muszę zastąpić czymś przedrostek? cd był udany, więc zakładam, że był poprawny - przeniósł mnie do / usr / local, ale nie było pliku do usunięcia. Zawartość katalogu / usr / local to

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

W każdym razie, czy wiesz, jak mogę naprawić „aktualizację naparu”

Aktualizacja: Po usunięciu plików zgodnie z instrukcjami favoretti i próbie chown -R <your_username> $(brew --prefix)/.gitwystąpił następujący błądbrew 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


github.com/Homebrew/homebrew-core - sprawdź oficjalny plik README.md Homebrew Core. Nie powinno być potrzeby dostosowywania uprawnień, ponieważ zaleca się kilka starszych odpowiedzi. Sprawdź także, czy masz wskazany bieżący oficjalny adres URL źródła. Więcej informacji w tej odpowiedzi: stackoverflow.com/questions/14113427/...
Kay V

Odpowiedzi:


279
cd $(brew --prefix)
git reset --hard HEAD
brew update

Miał podobny problem do pierwotnego pytania, ale z różnymi konfliktami plików. Wystarczy zresetować, by zaktualizować i rozwiązać problem.
David

17
Może chcesz zrobić również git add .następuje git stash: P
MKK

Pracuje dla mnie. Dosłownie wpisz ten cd $ (brew --prefix)
Saran

13
Jeśli po przejściu do katalogu parzenia cd $(brew --prefix)i zresetowaniu etapu git z git reset --hard HEADtwoim git statusnie zwróci on czyszczenia katalogu roboczego, może być konieczne wyczyszczenie stanu przez uruchomienie git clean -df.
Strand McCutchen

82
Zamiast git reset --hard HEAD(co by mi nie pasowało), zrobiłem git fetch --alligit reset --hard origin/master
Kevin.

360

Musisz wykonać następujące czynności:

cd $(brew --prefix)
rm Library/Formula/argp-standalone.rb
rm Library/Formula/cocot.rb

A potem wykonaj

git fetch origin
git reset --hard origin/master
brew update

Zasadniczo, aby wyjaśnić nieco więcej:

cd $(brew --prefix)

każe cdzmienić katalog na cokolwiek brew --prefix, co wyjdzie. Jeśli spróbujesz wykonać brew --prefixpolecenie, powinieneś zobaczyć coś w liniach:

brew --prefix
/usr/local

Zatem polecenie byłoby w tym przypadku równoważne z cd /usr/local. Nowsze brewwersje mają formuły pod prefiksem instalacji iLibrary/Formula/ dlatego właśnie tam należy szukać tych nieaktualnych / zmienionych plików.

Zauważ, że jeśli sam zmieniłeś te formuły z konkretnego powodu (np. Przypięcie wersji), to działanie przywróci je z powrotem do domyślnych i może powodować niepożądane efekty.

@TedPennings zauważył w komentarzach, że to działało dla niego, ale jego sekwencja była:

  1. chown wszystko my_username:admin, tzn.sudo chown -R ted:admin $(brew --prefix)
  2. uruchom dwie powyższe komendy git git fetch originigit reset --hard origin/master

1
kiedy zrobiłem git reset - hard origin / master, wydawało się, że działa tylko częściowo. To jest wynik. błąd: nie można odłączyć starego „.gitignore” (Odmowa zezwolenia) błąd: nie można utworzyć pliku CONTRIBUTING.md (Odmowa dostępu) Sprawdzanie plików: 100% (2493/2493), gotowe. fatal: Nie można zresetować pliku indeksu do wersji „origin / master”.
BrainLikeADullPencil

3
Oznacza to, że twoje uprawnienia są przykręcone. Jednym ze sposobów byłoby uruchomienie sudo git reset --hard, drugim i lepszym sposobem byłoby poprawienie uprawnień i zrobieniechown -R <your_username> $(brew --prefix)/.git
favoretti

Oto jak wyglądają tutaj uprawnienia do mojego prefiksu naparu:drwxrwxr-x 16 root admin 646 Dec 27 20:30 /usr/local/
favoretti

19
To rozwiązanie naprawiło dla mnie pewne rzeczy, ale musiałem wszystko zmienić na moją nazwę użytkownika: admin, tj., sudo chown -R ted:admin $(brew --prefix)A następnie uruchomić dwie powyższe komendy git git fetch originigit reset --hard origin/master
Ted Pennings

2
@TedPennings: Cool! Dodam twoje polecenia do odpowiedzi jako możliwy dodatkowy krok.
favoretti

46

Jest to spowodowane starym błędem w updatekodzie, który już dawno został naprawiony. Jednak charakter błędu wymaga wykonania następujących czynności:

cd $(brew --repository)
git reset --hard FETCH_HEAD

Jeśli brew doctornadal narzekasz na niezatwierdzone modyfikacje, uruchom również to polecenie:

cd $(brew --repository)    
git clean -fd

3
To rozwiązanie działało dla mnie, gdy zaakceptowana odpowiedź nie.
JBCP

31
$ cd $(brew --prefix)
$ git clean -fd
$ git reset --hard
$ sudo chown -R `whoami` `brew --prefix`
$ brew update

Uwaga: kroki 2 i 3 działały dla mnie, ponieważ wykonałem krok 5 przed 4, zanim dostałem błąd. Napar aktualizacja przed zmianą właściciela folderu spowodował cały problem.


To zadziałało dla mnie. Chciałbym dodać, że przyczyną tego mogą być inne programy instalujące pliki /usr/localz innymi uprawnieniami. Dla mnie to MacPGP zainstalował się z uprawnieniami roota.
Overbryd

1
Naprawiłem to dla mnie po aktualizacji do Mac OS X 10.11 pomieszane z /usr/localuprawnieniami. Dzięki!
CletusW,

Warto zauważyć, że nie trzeba ręcznie zmieniać uprawnień i przenosić katalogów. Zobacz na przykład stackoverflow.com/a/40599893/5440638 .
Kay V

6

Miałem podobny problem, gdy moja biblioteka pakietów parzenia została pobrana jako użytkownik root, a następnie nie mogłem uruchomić aktualizacji parzenia, ponieważ git narzekałby na brak możliwości scalenia pliku.

Rozwiązaniem było:

sudo chown -R <user> /usr/local/Library

5

Zresetowanie repozytorium zaparzania powinno być najbardziej wydajnym sposobem, jeśli nie masz nic przeciwko odrzuceniu potencjalnych modyfikacji formuł, które mogły zostać zastosowane:

$ cd `brew --prefix`
$ git fetch origin
$ git reset --hard origin/master
$ brew cleanup --force
$ brew update

4

Udało mi się to naprawić na moim komputerze, dodając uprawnienia zapisu grupy administracyjnej (i bitu setgid) w tych ścieżkach:

sudo chmod -R g+ws /usr/local /Library/Caches/Homebrew

S ustawia identyfikator grupy podczas wykonywania, dzięki czemu uprawnienia do zapisu nie zostaną utracone, gdy inny użytkownik admin zaktualizuje lub zaktualizuje Homebrew.

Ta odpowiedź jest nieco niepełna, ponieważ kiedy próbuję to zrobić, brew cleanup --forcewystępuje problem z uprawnieniami, gdy Homebrew próbuje usunąć zawartość z katalogu / usr / local / Cellar /. (Niestety nie jestem w stanie zbadać tego dalej.)


2
Istnieje popularny skrypt napisany w celu naprawy uprawnień Homebrew, który najwyraźniej działa całkiem dobrze. Nie musiałem sam tego używać; Ręcznie wprowadziłem zmiany :) Ale to może pomóc innym: gist.github.com/rpavlik/768518
Steve Benner

1

Inną opcją jest po prostu użyć git stash .

Polecenie aktualizacji parzenia wykonuje polecenie git pull , więc jeśli są jakieś zmienione pliki (lub nawet atrybuty plików, które przydarzyły mi się, gdy rekursywnie zmieniłem uprawnienia w katalogu), musisz jakoś naprawić konflikty. Używanie git stashjest jednym ze sposobów; pobiera wszelkie zmiany i odkłada je na bok, dzięki czemu skutecznie powracasz do ostatniej zaktualizowanej wersji repo. „Lokalizacja” Homebrew jest domyślnie /usr/localinstalowana jako repozytorium git. Możesz poszukać .gitfolderu, który sam zobaczysz. Piszę skrypt odinstalowujący homebrew, który wkrótce zostanie opublikowany na moim profilu GitHub z dodatkowymi informacjami.


1
sudo chown -R USER /usr/local/bin

uwaga - dla USER użyj polecenia who, tj. nazwa użytkownika

sudo brew doctor

lub uogólnić: w sudo chown -R $USER /usr/local/binprzypadku dodawania pozycji $zmienna env USER, która przechowuje bieżącą nazwę USER.
Cometsong

1

To podejście może być prostsze niż niektóre. To wymaga:

  • naprawienie problemu z git, abyś mógł ponownie przekazać zarządzanie zmianami.
  • brak ręcznego przenoszenia plików lub katalogów.
  • brak ręcznej regulacji uprawnień do plików lub katalogów.

Kroki (z notatkami dla tych, którzy chcą wyjaśnień):

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 

Omówienie:
z tego, co mogę powiedzieć, faktyczną przyczyną tego problemu jest zmiana adresu URL repozytorium. Teraz jest brewi było brew.git. (Pełny aktualny adres URL: https://github.com/Homebrew/brew )

Uwaga 1: To pierwsze polecenie zabierze Cię z dowolnego miejsca w strukturze plików do odpowiedniego katalogu. Struktura katalogów jest dla mnie inna niż te pokazane powyżej (Mac OS 10.11.16), ale przy tym poleceniu różnice te nie powinny mieć znaczenia.

Uwaga 2: To drugie polecenie dodaje poprawny zdalny adres URL do nowego aliasu; Zrobiłem to na wypadek, gdyby to podejście nie spełniło moich oczekiwań i ponownie potrzebowałem poprzedniego adresu. Ponieważ nowy pilot zadziałał, zaproszę kogoś innego do skomentowania po prostu zmiany adresu URL aliasu według pochodzenia. Z przyjemnością zaktualizuję odpowiedź, aby odzwierciedlić to, co zadziałało.

Uwaga 3: To czwarte polecenie ma dokładnie pożądany rezultat: zgłasza dużą liczbę aktualizacji, w tym szczególnie ładny raport „==> Migracja HOMEBREW_REPOSITORY do / usr / local / Homebrew!” (podkreślają swoje).


Działa to, gdy podczas działania wystąpią błędy 504 brew update.
Omnilord

0

Ten post pomógł mi po aktualizacji do El Capitan. W moim przypadku chownnie działał („zsh: polecenie nie znaleziono: chown”), więc krok 1 polegał na dodaniu tej linii do mojego .zshrc:

export PATH="$PATH:/usr/sbin"

Próbowałem już kilku bardziej popularnych odpowiedzi powyżej, więc jestem prawie pewien, że git statusdo czasu, gdy wkleiłem krytyczne polecenie z posta na blogu, wszystko było czyste.

sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local


0

To powinno działać.

1. cd `brew --prefix`
2. git fetch origin
3. git reset --hard origin/master
4. sudo brew update

Fwiw, sudo jest zdecydowanie odradzane podczas korzystania z homebrew. Zwróć uwagę na głosy negatywne na inne odpowiedzi na to pytanie, a także ostrzeżenie homebrew przydatne po wpisaniu polecenia za pomocą sudo. @ A5308Y zawiera również link do FAQ na temat tego, dlaczego sudo jest zły; najnowsza wersja tego FAQ znajduje się na github.com/Homebrew/brew/blob/master/docs/… Czy próbowałeś wykonywać swoje kroki bez sudo?
Kay V
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.