Mencoba mengatur Homebrew pada Mac baru (pada Mac sebelumnya saya akan menginstal paket dari sumber).
Paket pertama yang saya coba instal adalah Git:
$ brew install git
Instalasi berjalan OK, tapi which git
masih menunjukkan yang di /usr/bin/git
dalamnya datang bersama Lion (saya pikir?). Dan bukan yang ada di /usr/local/bin/git
dalamnya yang baru saja diinstal.
$ echo $PATH
/Users/meltemi/.rvm/gems/ruby-1.9.2-p290@rails31/bin:/Users/meltemi/.rvm/gems/ruby-1.9.2-p290@global/bin:/Users/meltemi/.rvm/rubies/ruby-1.9.2-p290/bin:/Users/michael/.rvm/bin:/usr/local/mysql/bin:/opt/subversion/bin:/Developer/Additions/checker/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Seperti yang Anda lihat /usr/bin
default sebelumnya /usr/local/bin
di$PATH
Jadi saya bingung! Saya pikir inti dari HomeBrew (dan sesuatu yang tampaknya dibanggakan pencipta) adalah bahwa Anda tidak perlu mengacaukan $PATH
variabel!?!
Jadi, apa yang saya lakukan salah?
If you choose /usr/local, everything 'just works!'
bahwa saya harus bertanya-tanya apa yang saya lewatkan ... karena itu tidak "hanya bekerja".Jawaban:
Saya menemukan posting terkait ini sangat membantu. Alih-alih mengubah
$PATH
variabel, itu hanya Anda mengedit/etc/paths
file Anda .Homebrew ingin saya mengubah PATH saya; tidak tahu bagaimana
Segera setelah saya mengikuti petunjuk dan meletakkan di
/usr/local/bin
atas/usr/bin
, masalah saya diselesaikan.sudo vi /etc/paths
/usr/local/bin
jalan dimasukkan di atas/usr/bin
jalanInilah yang menjadi milik saya setelah saya melakukan itu:
* Untuk menyimpan dan keluar, ketik titik dua (
:
), lalu ketikwq
(untuk menulis dan keluar pada saat yang sama), diikuti oleh Enter.Anda juga dapat membuka
/etc/paths
file dalam editor teks grafis dan mengeditnya seperti itu.Penghargaan untuk mendapatkan di Stack Overflow untuk jawabannya di sana.
sumber
path_helper
dan/etc/paths.d
.Jawaban ini sudah usang.
PATH
Pemesanan Homebrew yang disukai dulu seperti yang dijelaskan, tetapi itu tidak lagi benar. Namun, pendekatan ini lebih umum berlaku, jadi demi kepentingan, saya meninggalkannya.Anda seharusnya tidak.
Homebrew sengaja terus
/usr/local/bin
setelah/usr/bin
di jalur untuk kompatibilitas maksimum. Membalik urutan direktori iniPATH
dengan mengedit/etc/paths
akan berarti bahwa semua program di mana saja pada sistem, tidak peduli bagaimana mereka dimulai, akan mendapatkan versi Homebrew dari sebuah perintah. Tetapi beberapa mungkin secara khusus mengharapkan versi Apple, atau tidak dapat menggunakan versi yang lebih baru, dll.Bagaimana cara mempertahankan prinsip ini dan masih mendapatkan versi Homebrew yang diinstal
git
? Seperti kata pepatah, semua masalah dapat diselesaikan dengan lapisan tipuan (kecuali memiliki terlalu banyak lapisan tipuan). - Atau dalam kasus ini, ternyata, dua lapisan.Secara khusus, sudah menjadi bagian dari kebiasaan Unix saya untuk memiliki
~/bin
direktori yang saya letakkan di awalPATH
. Ini adalah salah satu bit pertama di.bashrc
:Ini memeriksa apakah
PATH
berisi~/bin
, dan jika tidak, menambahkannya. Dengan itu, maka selektiflah yang menjadikan Homebrew yanggit
lebih diutamakan daripada versi sistem (bukan setiap biner yang dikelola oleh Homebrew), dan hanya untuk sesi shell Anda (alih-alih semua program dimulai dari mana saja, termasuk program GUI), adalah sesederhana menghubungkannya:Anda dapat symlink
/usr/local/Cellar/git/1.8.2.1/bin/git
secara langsung, tetapi kemudian Anda harus memperbaiki symlink Anda setiap kali Anda melakukanbrew upgrade git
(secara langsung atau tidak langsung). Dengan menghubungkan ke symlink lokasi tetap Homebrew, Anda tidak perlu khawatir tentang hal itu.Jadi Anda menambahkan direktori ke Anda
$HOME
sehingga Anda dapat menambahkannyaPATH
sehingga Anda dapat symlink ke symlink, dan itu memperbaiki masalah Anda dan membuat Dr. Seuss tersenyum. Yo dawg Saya kawan Anda suka symlink jadi kami letakkan path di AndaPATH
sehingga Anda dapat symlink saat Anda symlink.sumber
ln
perintah. Jalur pertama adalah target, dan yang kedua adalah symlinkexport PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
Anda tidak melakukan kesalahan apa pun, tetapi tampaknya cukup jelas bahwa jika Anda berada
/usr/local/bin
di jalur Anda sebelum/usr/bin
masalah khusus ini hilang. Perbaikan termudah adalah dengan melakukan hal itu dan meletakkan sesuatu sepertidalam
~/.bash_profile
segala sesuatu yang Anda menginstal Homebrew ditemukan terlebih dahulu. Begitulah cara saya mengaturnya di Mac saya, dan itu telah bekerja untuk saya selama ini, bagaimanapun, YMMV.Itu tidak muncul bahwa mereka percaya itu akan bekerja dengan
/usr/local/bin
menjadi setelah/usr/bin
, maka sementara saya mungkin telah mucked saya sendiri$PATH
, saya bisa melihat keberadaan dokumentasi mereka kekurangan:Dari Perbedaan antara wiki & pembuat bir # 10738 . Perhatikan bahwa dokumen ini selanjutnya mengatakan, "FAQ (kutipan di atas) mengacu pada pengaturan PATH untuk aplikasi GUI; dokter (saran untuk menempatkan di
/usr/local/bin
depan/usr/bin
dalam PATH Anda) mengacu pada pengaturan PATH untuk aplikasi CLI."sumber
/usr/local/bin
di saya$PATH
? Saya percaya begitu. Saya ingin tahu apakah kita seharusnya mengedit urutan jalur default/etc/paths
atau konten/etc/paths.d
? Tapi ini akan mempengaruhi setiap pengguna ... mungkin bukan hal yang buruk. Lagi pula, hanya ingin melihat bagaimana orang lain mendekati ini.PATH
(dengan cara yang Anda pilih) untuk memiliki/usr/local/bin
mendahului/usr/bin
. Saya pribadi memperbarui sayaPATH
di.bash_profile
seperti yang disarankan di sini./usr/local/bin
meskipun ia tertinggal/usr/bin
di jalur. Tetapi aplikasi GUI perlu pembuatan kode khusus? Tampaknya semua aplikasi, GUI atau tidak, perlu kita sesuaikan variabel $ PATH. Jadi, apa yang saya (atau pencipta Homebrew) hilang?Saya tidak setuju dengan jawaban jthomas. Mengedit file / etc / paths Anda akan mengubah path load untuk semua program. Ini bisa berbahaya jika aplikasi sistem mengharapkan untuk menemukan versi biner tertentu tetapi menemukan versi yang berbeda karena Anda telah mengedit file path Anda. Sebagai gantinya, ubah variabel jalur Anda di ~ / .bashrc (atau ~ / .bash_profile). Maka jalur muat Anda hanya akan berubah di dalam terminal:
Kemudian muat ulang bash atau
source ~/.bashrc
, dan Anda siap berangkat. Karena jalur homebrew hadir sebelum yang lain, bash akan memuat versi yang Anda unduh dengan homebrew.sumber
.bashrc
tidak dimuat secara default. Apakah Anda sumber secara manual?.bashrc
jadi saya sumber dari saya.bash_profile
. Jika Anda tidak ingin membuat file rc, Anda dapat menambahkan perintah ke.bash_profile
.Seperti yang saya pahami,
brew
tidak ada/usr/local/bin
yang bertabrakan (memiliki nama yang sama) dengan Apple yang dapat dieksekusi. Oleh karena itu, memiliki/usr/local/bin
di jalur sebelumnya/bin
dan/usr/bin
tidak boleh menjadi masalah, karena seharusnya tidak ada tabrakan nama. * Namun, lihat masalah denganls
dantar
, dan menggunakan agregator paket lain sepertifink
danport
(MacPorts), jalan di bawah ini.Brew
apakah salah satu dari dua hal yang saya tahu tentang hal itu membantu mengelola benturan nama:Brew
meninggalkan tong yang tidak terhubung di Gudang. Untuk menginstal barang, brew meninggalkan alat di tempatnya, dan membuat tautan simbolis ke alat tersebut di/usr/local/bin
. Untuk alat yangbrew
tidak ingin tabrakan nama, itu tidak membuat tautan simbolis./bin
dan/usr/bin
,brew
awalan tautan/usr/local/bin
dengan "g", jadi misalnya, untuk melakukanls
versi pembuatan, gunakangls
. Cukup lakukanls -l
in/usr/local/bin
dan cari file yang tertaut - itu adalah yangbrew
diletakkan di sana. Catatan: Alat yangbrew
diinstal yang harus diakses dengan nama aslinya ada di/usr/local/Cellar/coreutils/8.21/libexec/gnubin
.Saya tidak menempatkan
/usr/local/bin
jalan saya karena dua alasan - alasan itu ada di bawah jawaban saya.Untuk menilai tabrakan nama di sistem Anda, gunakan
brew doctor
dan cari bagian ini - Inilahbrew doctor
keluaran yang menarik:Alasan saya tidak meletakkan
brew
alat terlebih dahulu, pada kenyataannya, tidak sama sekali, adalah karenabrew
diinstalls
dantar
perintah tidak menangani sistem file ACL dengan benar, pada kenyataannya, terakhir kali saya memeriksa (yang minggu lalu), mereka tidak tidak ditangani sama sekali . Ini adalah masalah BESAR, dan untuk menghindarinya bersama-sama, bersama denganman
masalah konfigurasi halaman terkait yang menandai bersama dengan pengaturan yang$PATH
tepat, saya memastikan saya meletakkanOSX
alat terkait, terutama yang ditemukan di/bin
dan/usr/bin
, pertama.Alasan lain saya bahkan tidak menempatkan
/usr/local/bin
jalan saya sama sekali adalah karenabrew
tidak bermain baik dengan orang lain, danfink
danport
(MacPorts) memiliki cara paket yang lebih didukung saat ini yang saya butuhkan SEKARANG . Misalnya, saya bisa mendapatkangnome-terminal
denganfink
, tetapi itu akan menjadi usaha besar untuk membangun rumus dan melakukan hal yang sama denganbrew
. Jadi, saya menyimpan/sw
dan/opt
dalam pencarian saya$PATH
(untukfink
danport
, masing-masing) dan referensi hal-hal yang saya butuhkan dari/usr/local/bin
, termasukgnat
, baik dijabarkan, atau saya gunakanbash
alias
, atau saya sumbersetup
file untuk lingkungan yang sama sekali berbeda ketika saya menulisAda
kode.Masalahnya, itu benar-benar tergantung pada apa yang Anda inginkan dan butuhkan saat itu.
Berikut adalah contoh masalah ACL yang saya sebutkan di atas.
Dengan
OSX
alat standar :dan dengan
brew
alat yang diinstal:dan
Anda akan mendapatkan hasil yang sama dengan
tar
dan saya tidak tahu banyakbrew
alat lain di rumah , tetapi siapa yang mampu memiliki sesuatu istirahat 6 bulan di jalan karenaACL
masalah!sumber
Ada banyak jawaban bagus di sini. Ini milik saya:
Menghemat Anda harus membuat alias terpisah untuk setiap program, dan sebagai bonus itu membuat instalasi default dapat diakses jika Anda membutuhkannya.
Bekerja sama saja jika Anda menggunakan ZSH; hanya beralih
bashrc
untukzshrc
. Anda dapat beralih keluarmy
untuk_
atau bahkan@
untuk menghemat mengetik.sumber
Daripada bermain-main dengan PATH sama sekali (yang dalam sejarah saya kembali untuk membakar saya berbulan-bulan kemudian) saya menambahkan alias untuk git di direktori alias kustom zsh saya (~ / .zshrc / custom / git_alias.zsh).
alias git='/usr/local/bin/git'
sumber
Saya lebih suka membatasi perubahan ke variabel lingkungan seperti
$PATH
untuk pengguna yang benar-benar menginginkan perubahan. Jadi, saya cukup menambahkan yang berikut ini ke~/.bashrc
:sumber
Anda dapat mengeluarkan perintah berikut di terminal, itu akan menambahkan direktori home brew + bin di PATH file init SHELL "rc" Anda apa pun (bash, zsh, csh)
echo "export PATH="'$PATH:$(brew --prefix)/bin' >> ~/.$(basename $SHELL)rc
Nikmati !
sumber