การปรับปรุง Brew ล้มเหลว: ไฟล์แผนผังการทำงานที่ไม่ได้ติดตามจะถูกเขียนทับโดยการรวม


207

กำลังพยายามอัปเดต 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)คำที่ฉันพิมพ์หรือฉันต้องแทนที่คำนำหน้าด้วยบางสิ่งหรือไม่ ซีดีประสบความสำเร็จดังนั้นฉันจึงคิดว่ามันถูกต้อง - มันย้ายฉันไปที่ / 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

คุณรู้ไหมว่าฉันจะแก้ไข 'การอัพเดทชง' ได้อย่างไร

อัปเดต: หลังจากลบไฟล์ตามคำแนะนำของความโปรดปรานและพยายาม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


github.com/Homebrew/homebrew-core - ตรวจสอบ README.md อย่างเป็นทางการของ Homebrew Core ไม่จำเป็นต้องปรับการอนุญาตตามคำแนะนำที่เก่ากว่า ตรวจสอบด้วยว่าคุณชี้ไปที่ URL แหล่งที่เป็นทางการในปัจจุบัน ข้อมูลเพิ่มเติมในคำตอบนี้: stackoverflow.com/questions/14113427/…
Kay V

คำตอบ:


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

มีปัญหาคล้ายกับคำถามเดิม แต่มีไฟล์ที่ขัดแย้งกันต่างกัน แค่รีเซ็ตก็เพียงพอแล้วที่จะให้ฉันอัปเดตและแก้ไขปัญหา
เดวิด

17
คุณอาจต้องการทำgit add .ตามด้วยgit stash: P
mkk

ได้ผลสำหรับฉัน ตามตัวอักษรพิมพ์ cd $ นี้ (ชง - คำนำหน้า)
สราญ

13
ถ้าหลังจากการเปลี่ยนแปลงไปยังไดเรกทอรีชงด้วยcd $(brew --prefix)และการตั้งค่าขั้นตอนการคอมไพล์ด้วยgit reset --hard HEADคุณไม่กลับมาทำงานไดเรกทอรีทำความสะอาดคุณอาจจำเป็นต้องทำความสะอาดรัฐโดยการเรียกใช้git status git clean -df
Strand McCutchen

82
แทนที่จะgit reset --hard HEAD(ซึ่งไม่ได้ผลสำหรับฉัน) ฉันก็ทำgit fetch --allและgit reset --hard origin/master
เควิน

360

คุณต้องทำสิ่งต่อไปนี้:

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 ตั้งข้อสังเกตในความคิดเห็นว่าสิ่งนี้ใช้ได้กับเขา แต่ลำดับของเขาคือ:

  1. chown ทุกอย่างเพื่อmy_username:adminเช่นsudo chown -R ted:admin $(brew --prefix)
  2. รันคำสั่ง git สองคำสั่งด้านบนgit fetch originและgit reset --hard origin/master

1
เมื่อฉันทำการรีคอมไพล์ - ต้นกำเนิด / มาสเตอร์มันดูเหมือนจะทำงานได้เพียงบางส่วนเท่านั้น นี่คือผลลัพธ์ ข้อผิดพลาด: ไม่สามารถยกเลิกการเชื่อมโยงเก่า '.gitignore' (ปฏิเสธการอนุญาต) ข้อผิดพลาด: ไม่สามารถสร้างไฟล์ CONTRIBUTING.md (ปฏิเสธการอนุญาต) การตรวจสอบไฟล์: 100% (2493/2493) เสร็จแล้ว ร้ายแรง: ไม่สามารถรีเซ็ตไฟล์ดัชนีให้แก้ไข 'ต้นกำเนิด / ต้นแบบ' ได้
BrainLikeADullPencil

3
หมายความว่าสิทธิ์ของคุณถูกทำให้เมา จะมีวิธีหนึ่งในการทำงานวิธีsudo git reset --hardอื่นและวิธีที่ดีกว่าคือแก้ไขสิทธิ์และสิ่งที่ควรทำchown -R <your_username> $(brew --prefix)/.git
Favoretti

นี่คือวิธีการอนุญาตในคำนำหน้าชงของฉันมีลักษณะที่นี่:drwxrwxr-x 16 root admin 646 Dec 27 20:30 /usr/local/
favoretti

19
วิธีนี้แก้ไขสิ่งต่าง ๆ สำหรับฉัน แต่ฉันต้อง chown ทุกอย่างกับชื่อผู้ใช้ของฉัน: admin, sudo chown -R ted:admin $(brew --prefix)จากนั้นเรียกใช้คำสั่ง git สองคำสั่งด้านบนgit fetch originและgit reset --hard origin/master
Ted Pennings

2
@TedPennings: เยี่ยม! ฉันจะเพิ่มคำสั่งของคุณลงในคำตอบเพื่อเป็นขั้นตอนเพิ่มเติมที่เป็นไปได้
Favoretti

46

ปัญหานี้เกิดจากข้อผิดพลาดเก่าในupdateรหัสที่มีความยาวตั้งแต่ได้รับการแก้ไข อย่างไรก็ตามลักษณะของข้อบกพร่องต้องการให้คุณทำสิ่งต่อไปนี้:

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

หากbrew doctorยังคงบ่นเกี่ยวกับการดัดแปลงที่ไม่มีข้อผูกมัดให้รันคำสั่งนี้:

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

3
วิธีนี้ใช้ได้ผลกับฉันเมื่อคำตอบที่ยอมรับไม่ได้
JBCP

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

หมายเหตุ: ขั้นตอนที่ 2 และ 3 ทำงานให้ฉันตั้งแต่ฉันทำขั้นตอนที่ 5 ก่อนหน้า 4 ก่อนที่ฉันจะพบข้อผิดพลาด การอัพเดตการชงก่อนที่จะเปลี่ยนเจ้าของโฟลเดอร์ทำให้เกิดปัญหาทั้งหมด


สิ่งนี้ใช้ได้สำหรับฉัน ฉันต้องการเพิ่มว่าอาจเกิดจากโปรแกรมอื่นติดตั้งเนื้อหา/usr/localด้วยสิทธิ์อื่น ๆ สำหรับฉันมันคือ MacPGP ที่ติดตั้งตัวเองด้วยสิทธิ์พิเศษ
Overbryd

1
สิ่งนี้แก้ไขได้สำหรับฉันหลังจากอัปเกรดเป็น Mac OS X 10.11 ซึ่งยุ่งกับ/usr/localสิทธิ์ของ ขอบคุณ!
CletusW

เป็นที่น่าสังเกตว่าคุณอาจไม่จำเป็นต้องเปลี่ยนการอนุญาตและย้ายไดเรกทอรีด้วยตนเอง ดูstackoverflow.com/a/40599893/5440638ตัวอย่างเช่น
Kay V

6

ฉันมีปัญหาที่คล้ายกันซึ่งไลบรารีแพ็กเกจการชงของฉันถูกดาวน์โหลดในฐานะผู้ใช้รูทแล้วฉันไม่สามารถเรียกใช้การอัปเดตการชงได้เนื่องจากคอมไพล์จะบ่นว่าไม่สามารถรวมไฟล์ได้

ทางออกคือ: -

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

5

การรีเซ็ตที่เก็บชงควรเป็นวิธีที่มีประสิทธิภาพมากที่สุดหากคุณไม่สนใจที่จะทิ้งการดัดแปลงที่อาจเกิดขึ้นกับสูตรที่คุณอาจนำไปใช้:

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

4

ฉันสามารถแก้ไขปัญหานี้ในเครื่องของฉันโดยเพิ่มสิทธิ์การเขียนกลุ่มผู้ดูแลระบบ (และบิต setgid) ที่เส้นทางเหล่านี้:

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

s ตั้งค่า ID กลุ่มในการดำเนินการเพื่อให้สิทธิ์การเขียนไม่สูญหายในครั้งต่อไปที่ผู้ใช้ผู้ดูแลระบบรายอื่นอัปเดตหรืออัปเกรด Homebrew

คำตอบนี้ค่อนข้างไม่สมบูรณ์เพราะเมื่อฉันพยายามทำbrew cleanup --forceมีปัญหาสิทธิ์เมื่อ Homebrew พยายามลบเนื้อหาใน / usr / local / Cellar / (น่าเสียดายที่ฉันไม่สามารถตรวจสอบเรื่องนี้เพิ่มเติมได้ในขณะนี้)


2
มีสคริปต์ยอดนิยมที่เขียนขึ้นเพื่อแก้ไขการอนุญาต Homebrew ที่ดูเหมือนว่าทำงานได้ค่อนข้างดี ฉันไม่ต้องการใช้มันเอง ฉันทำการเปลี่ยนแปลงด้วยตนเอง :) แต่สิ่งนี้อาจช่วยผู้อื่นได้: gist.github.com/rpavlik/768518
Steve Benner

1

git stashอีกตัวเลือกหนึ่งคือการใช้เพียง

คำสั่ง brew update ทำการดำเนินการgit pullดังนั้นหากมีไฟล์ที่เปลี่ยนแปลง (หรือแม้แต่ไฟล์แอ็ตทริบิวต์ซึ่งเกิดขึ้นกับฉันเมื่อฉันเปลี่ยนสิทธิ์ในไดเรกทอรีซ้ำ) คุณต้องแก้ไขข้อขัดแย้ง การใช้git stashเป็นวิธีหนึ่ง; มันจะทำการเปลี่ยนแปลงใด ๆ และเก็บไว้เพื่อให้คุณเปลี่ยนกลับไปเป็นเวอร์ชัน repo ที่อัปเดตล่าสุดได้อย่างมีประสิทธิภาพ Homebrew 'location' เป็นค่าเริ่มต้น/usr/localและจะติดตั้งเป็นที่เก็บ git คุณสามารถค้นหา.gitโฟลเดอร์เพื่อดูตัวคุณเอง ฉันกำลังเขียนสคริปต์ถอนการติดตั้ง homebrew เพื่อโพสต์ในโปรไฟล์ GitHub ของฉันในไม่ช้าพร้อมข้อมูลเพิ่มเติม


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

หมายเหตุ - สำหรับคำสั่ง USER ใช้ซึ่งเป็นชื่อผู้ใช้ของคุณ

sudo brew doctor

หรือเพื่อพูดคุย: sudo chown -R $USER /usr/local/binโดยการเพิ่ม$posits ตัวแปร USER env ซึ่งเก็บ USERname ปัจจุบัน
Cometsong

1

วิธีนี้อาจจะง่ายกว่าบางวิธี มันเกี่ยวข้องกับ:

  • แก้ไขปัญหา git เพื่อให้คุณสามารถมอบหมายการจัดการการเปลี่ยนแปลงอีกครั้ง
  • ไม่มีการย้ายไฟล์หรือไดเรกทอรีด้วยตนเอง
  • ไม่มีการปรับสิทธิ์ไฟล์หรือไดเรกทอรีด้วยตนเอง

ขั้นตอน (พร้อมหมายเหตุสำหรับผู้ที่ต้องการคำอธิบาย):

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 / localbrew / Homebrew!" (เน้นพวกเขา)


งานนี้เมื่อคุณได้รับข้อผิดพลาด 504 brew updateเมื่อทำงาน
Omnilord

0

โพสต์นี้ช่วยฉันหลังจากอัปเดตเป็น El Capitan ในกรณีของฉันchownไม่ทำงาน ("ไม่พบคำสั่ง zsh: chown") ดังนั้นขั้นตอนที่ 1 เพิ่มบรรทัดนี้ใน. zshrc ของฉัน:

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

ฉันได้ลองคำตอบที่ได้รับความนิยมมากขึ้นไปแล้วดังนั้นฉันค่อนข้างแน่ใจว่าgit statusมันสะอาดขึ้นเมื่อฉันวางคำสั่งที่สำคัญจากโพสต์บล็อก:

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


0

สิ่งนี้น่าจะใช้ได้

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

Fwiw, sudo เป็นกำลังใจอย่างยิ่งเมื่อใช้ homebrew บันทึกการลงคะแนนเสียงของคำตอบอื่น ๆ สำหรับคำถามนี้รวมถึงคำเตือน homebrew ที่ให้ความช่วยเหลือเมื่อคุณป้อนคำสั่งโดยใช้ sudo @ A5308Y ยังมีลิงก์ไปยังคำถามที่พบบ่อยเกี่ยวกับสาเหตุที่ sudo ไม่ดี เวอร์ชันล่าสุดของคำถามที่พบบ่อยนั้นอยู่ที่github.com/Homebrew/brew/blob/master/docs/… คุณได้ลองทำตามขั้นตอนโดยไม่ใช้ sudo หรือไม่?
Kay V
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.