Instalacja git Homebrew nie będzie miała pierwszeństwa przed wersją systemu (w / usr / bin /)

10

OS X (lub Xcode) jest dostarczany w pakiecie z git 1.7.something, ale po brew install git(1.8.0) which gitzwraca stary /usr/bin/git.

Oto co otrzymuję, gdy w tym momencie odbieram echo $ PATH:

/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin

Czy rzeczy Homebrew nie powinny mieć pierwszeństwa?

Poza tym nie mam pojęcia, skąd to się usr/local/git/binbierze.

o_o_o--
źródło
Czy sprawdziłeś, że git faktycznie znajduje się w / usr / local / bin?
Joe Bane,
tak. ls /usr/local/binpokazy gitsą tam. Brew potwierdza również, że jest zainstalowany. Uruchomiłem nawet deinstalator git (zarówno brew uninstallprzy pomocy tego, który jest dołączony do oficjalnego pobrania git), jak i ponownie brew install git. Ciągle dostaję which git = = /usr/bin/git".
o_o_o--
2
Uruchom, which -a gitaby zobaczyć, czy to w ogóle go znajduje.
Joe Bane,

Odpowiedzi:

7

Rozumiem. Odpowiedź jest na twoje pytanie; brew instaluje git do /usr/local/git/bin(nie /usr/local/bin), ale ponieważ jest to na /usr/bintwojej drodze, dostajesz to jako pierwsze. Mój komentarz do which -a gitpowinien był cię wskazać w tym kierunku.

Joe Bane
źródło
1
Biegnij ls -l /usr/local/bin/gitteż. Założę się, że jest to symboliczny link do /usr/bin/git.
Joe Bane,
Aha, i /usr/local/git/binwydaje się, że to tam też oficjalny instalator.
Joe Bane,
Należy spojrzeć na /etc/pathsi /etc/paths.djak dobrze.
Joe Bane,
1
oto ciekawy zwrot wydarzeń: which -a gitpowroty /usr/local/bin/git; /usr/bin/git; /usr/local/bin/git. Zmieniłem nazwę starego gita usr/bin/git_oldi usunąłem go z drogi. Teraz git --versionzwraca 1.8, co dowodzi, że browar poprawnie zainstalował git. - Znów zmieniłem nazwę /usr/bin/gitna pierwotną nazwę ... i nagle działa poprawnie! Nie wiem dlaczego ani jak, ale /usr/bin/gitwydaje się , że zmiana nazwy i uruchomienie git kiedyś rozwiązało problem. Kto wie, co było przyczyną problemu. W każdym razie dzięki :)
o_o_o--
To dziwne. Cieszę się, że przynajmniej jesteś gotowy.
Joe Bane,
3

Spotkałem również ten problem.

Po zainstalowaniu git przez homebrew, jeśli uruchomisz brew doctor, ostrzeże Cię, że, jak wspomniano powyżej Joe, system uruchamia starego gita, ponieważ jego lokalizacja instalacji jest najważniejsza.

Ale w tym samym ostrzeżeniu homebrew podaje kod, aby to naprawić:

$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
chorbs
źródło
0

Częścią moich przyzwyczajeń uniksowych jest posiadanie ~/binkatalogu, który umieszczam na początku PATH. To jeden z pierwszych bitów w moim .bashrc:

case ":$PATH:" in
  *:$HOME/bin:*) ;;     # do nothing if $PATH already contains $HOME/bin
  *) PATH=$HOME/bin:$PATH ;;  # in every other case, add it to the front
esac

Po wprowadzeniu tego rozwiązania, selektywne sprawianie, aby tylko zarządzane przez Homebrew gitmiało pierwszeństwo przed wersją systemową (zamiast wszystkich plików binarnych zarządzanych przez Homebrew) i tylko dla sesji powłoki (zamiast wszystkich programów uruchamianych z dowolnego miejsca, w tym programów GUI), jest tak proste jak symlinkowanie:

ln -s /usr/local/bin/git ~/bin/git
Arystoteles Pagaltzis
źródło