Ответ 1
cd $(brew --prefix)
git reset --hard HEAD
brew update
Пытаясь обновить Homebrew с помощью brew update
, я получил следующую ошибку:
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
Я нашел сообщение в блоге от того, кто испытал подобную проблему после установки Mountain Lion (который я тоже сделал на этой неделе). Он объясняет, как он удалил файлы, упомянутые в сообщении об ошибке
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.
Предполагая, что эти инструкции правильные (что я, возможно, не должен допускать), я попытался выполнить эти инструкции и сделать
$ cd $(brew --prefix)
$ rm cocot.rb
Однако он сказал, что "файл не существует", когда я пытался использовать rm cocot.rb
Одна вещь, о которой я не уверен, - это cd $(brew --prefix)
Являются ли те точные слова, которые я набираю, или мне нужно заменить префикс чем-то? cd был успешным, поэтому я предполагаю, что он был прав - он переместил меня в /usr/local, но не было файла для удаления. Содержание /usr/local
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
Во всяком случае, знаете ли вы, как я могу исправить 'brew update'
Обновление: после удаления файлов в соответствии с инструкциями favoretti и попыткой chown -R <your_username> $(brew --prefix)/.git
, я получил следующую ошибку: 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
Вам нужно сделать следующее:
cd $(brew --prefix)
rm Library/Formula/argp-standalone.rb
rm Library/Formula/cocot.rb
И затем сделайте
git fetch origin
git reset --hard origin/master
brew update
В принципе, чтобы объяснить немного больше:
cd $(brew --prefix)
сообщает cd
изменить каталог на все brew --prefix
.
Если вы попробуете выполнить команду brew --prefix
, вы увидите что-то в строках:
brew --prefix
/usr/local
Таким образом, команда будет в этом случае эквивалентом cd /usr/local
.
Более новые версии brew
имеют формулы под своим установочным префиксом и Library/Formula/
, поэтому там, где вам нужно искать устаревшие/измененные файлы.
Обратите внимание, что если вы изменили эти формулы самостоятельно по какой-либо причине (например, закрепление версии), это действие вернет их обратно по умолчанию и может вызвать нежелательные эффекты.
@TedPennings отметил в комментариях, что это сработало для него, но его последовательность была:
my_username:admin
, т.е. sudo chown -R ted:admin $(brew --prefix)
git fetch origin
и git reset --hard origin/master
Это вызвано старой ошибкой в коде update
, который уже давно исправлен. Однако характер ошибки требует, чтобы вы сделали следующее:
cd $(brew --repository)
git reset --hard FETCH_HEAD
Если brew doctor
все еще жалуется на незафиксированные изменения, также выполните следующую команду:
cd $(brew --repository)
git clean -fd
$ cd $(brew --prefix)
$ git clean -fd
$ git reset --hard
$ sudo chown -R `whoami` `brew --prefix`
$ brew update
Примечание: шаги 2 и 3 работали для меня, так как я сделал шаг 5 до 4, прежде чем получил ошибку. Обновление brew перед изменением владельца папки вызвало всю проблему.
У меня была аналогичная проблема, когда моя библиотека пакетов brew была загружена как пользователь root, а затем я не смог запустить обновление brew, поскольку git будет жаловаться на невозможность слияния файла.
Решение должно было: -
sudo chown -R <user> /usr/local/Library
Сброс репозитория brew должен быть наиболее эффективным способом, если вы не возражаете отказаться от возможных изменений в формулах, которые вы могли применить:
$ cd `brew --prefix`
$ git fetch origin
$ git reset --hard origin/master
$ brew cleanup --force
$ brew update
Мне удалось исправить это на моей машине, добавив на эти пути следующие права на запись (и setgid bit) администратора:
sudo chmod -R g+ws /usr/local /Library/Caches/Homebrew
Параметр s устанавливает идентификатор группы при выполнении, чтобы разрешения на запись не были потеряны при следующем обновлении или обновлении другого администратора adminbrew.
Этот ответ несколько неполный, потому что, когда я пытаюсь выполнить brew cleanup --force
, возникает проблема с разрешениями, когда Homebrew пытается удалить содержимое в /usr/local/Cellar/. (К сожалению, я пока не могу исследовать это дальше.)
Другой вариант - просто использовать git stash
.
Команда обновления brew выполняет git pull
, поэтому, если есть какие-либо измененные файлы (или даже атрибуты файлов, которые произошли со мной, когда я менял разрешения в каталоге рекурсивно), вы должны как-то исправить конфликты. Использование git stash
является одним из способов; он принимает любые изменения и откладывает их в сторону, чтобы вы эффективно возвращались к последней обновленной версии репо. По умолчанию расположение "Homebrew" по умолчанию /usr/local
и устанавливается как репозиторий git. Вы можете найти папку .git
, чтобы убедиться в этом сами. Я пишу homebrew uninstall script, который будет опубликован в моем профиле GitHub в ближайшее время с дополнительной информацией.
sudo chown -R USER /usr/local/bin
note - для USER используйте команду, то есть ваше имя пользователя
sudo brew doctor
Этот подход может быть проще, чем некоторые. Он включает в себя:
Шаги (с примечаниями для тех, кто хочет объяснений):
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
Обзор:
Из того, что я могу сказать, фактическая причина этого вопроса - изменение URL-адреса репо. Теперь он brew
и был brew.git
. (Полный обновленный URL: https://github.com/Homebrew/brew)
Примечание 1: Эта первая команда приведет вас из любой точки вашей файловой структуры в правильный каталог. Структура каталогов для меня отличается от того, что показывают другие (Mac OS 10.11.16), но с этой командой эти различия не должны иметь значения.
Примечание 2: Эта вторая команда добавляет правильный удаленный URL к новому псевдониму; Я сделал это на всякий случай, если этот подход не выполнил то, что я хотел, и мне снова нужен предыдущий адрес. Поскольку новый удаленный компьютер работал, я приглашу кого-то еще прокомментировать, просто изменив url с псевдонимом по происхождению. Я с удовольствием обновлю ответ, чтобы отразить то, что сработало для вас.
Примечание 3: Эта четвертая команда имеет точно желаемый результат: она сообщает о большом количестве обновлений, включая особенно приятный отчет "== > Миграция HOMEBREW_REPOSITORY в /usr/local/Homebrew!" (акцент их).
Этот пост помог мне после обновления в El Capitan. В моем случае chown
не работал ( "zsh: command not found: chown" ), поэтому шаг 1 добавлял эту строку в мой .zshrc:
export PATH="$PATH:/usr/sbin"
Я уже пробовал несколько более популярных ответов выше, поэтому я почти уверен, что git status
стал чистым к тому моменту, когда я вставлял критическую команду из сообщения в блоге:
sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local
Это должно работать.
1. cd `brew --prefix`
2. git fetch origin
3. git reset --hard origin/master
4. sudo brew update
Going sudo всегда работает для меня:
sudo brew upgrade