Apakah aman untuk menginstal Homebrew dan Macports pada mesin yang sama?

73

Saya memiliki MacPorts yang diinstal pada iMac saya dengan sejumlah port yang diinstal.

Saya tertarik untuk mencoba Homebrew, karena saya telah mendengar banyak hal baik tentangnya, dan karena saya perhatikan itu mengandung lebih banyak versi terbaru dari beberapa alat yang saya gunakan.

Tapi bisakah keduanya hidup berdampingan di mesin yang sama, atau apakah saya harus menghapus MacPort sepenuhnya?

Juga, jika keduanya dapat diinstal pada saat yang sama, akankah mereka sepenuhnya independen satu sama lain? Salah satu fitur Homebrew adalah tidak menginstal ulang versi baru dari hal-hal yang sudah termasuk dalam sistem (misalnya python). Apakah ini juga berlaku untuk itu tidak menginstal versi hal-hal yang sudah dikelola oleh MacPorts?

Apa yang terjadi jika saya kemudian menghapus MacPorts?

Kaya
sumber

Jawaban:

24

Mereka tidak akan hidup berdampingan dengan baik. Apple gcc mencari di / usr / local untuk beberapa hal. Ini berarti bahwa kompilasi macports dapat menemukan sesuatu yang tidak diharapkan porter. Lihat daftar surat macports dan bug untuk contoh hal-hal yang ditemukan di / usr / lokal.

pengguna151019
sumber
4
Saya hanya memiliki tampilan sepintas tentang homebrew, tetapi jika Anda mengubah lokasi instal default untuk homebrew dari / usr / local ke sesuatu seperti / opt / homebrew / usr / local, apakah masalah itu dapat dihindari?
Babu
@Babu - Menurut brew, Anda harus melanjutkan dengan hati
Peter Ajtai
@babu - mungkin tetapi akan ada masalah dengan homebrew atau macports mana yang pertama-tama adalah pn path dan yang lainnya mengambil executable tersebut juga saya menduga port dari kedua sistem tidak sepenuhnya diuji menggunakan jalur lain
user151019
18

Saya memberi jawaban lain pada pertanyaan serupa:

Homebrew akan menyebabkan masalah ketika membangun perangkat lunak dari sumber jika diinstal di / usr / local. Ini adalah default, yang merupakan pilihan yang buruk karena jalur ini berada di jalur pencarian default dari kompiler dan alat lainnya. Oleh karena itu build dari perangkat lunak pengemasan lain mungkin mengambil ketergantungan yang salah, menggunakan versi Homebrew alih-alih sendiri.

Bertahun-tahun yang lalu, di awal proyek, bahkan MacPorts menggunakan / usr / local. Tetapi ternyata tidak bekerja sama dengan alat lain seperti yang didokumentasikan dalam FAQ mereka. Sayangnya pengembang Homebrew tidak ingin mendengar tentang pengalaman sebelumnya dan mengabaikan fakta seperti itu ...

Secara umum, biasanya lebih baik menempel satu alat saja untuk menghindari semua masalah. MacPorts melakukan yang terbaik untuk menambal jalur apa pun yang harcoded, misalnya ke / sw yang digunakan oleh Fink. Jadi biasanya itu akan berhasil, tetapi memiliki apa pun yang diinstal di / usr / local pasti akan menyebabkan masalah untuk itu.

[...]

raimue
sumber
Sepertinya juga memungkinkan untuk menginstal homebrew ~/.homebrew. Apakah masih akan mengganggu MacPorts jika dipasang di sana?
Behrang
Lokasi lain selain / usr / lokal harus baik-baik saja.
raimue
Akankah MacPort dan Homebrew hidup berdampingan dengan baik jika seseorang menginstal Homebrew ke / opt / local, di mana MacPort diinstal?
Adam LS
1
Anda tidak boleh menginstal perangkat lunak lain secara manual ke / opt / local ketika MacPorts sudah diinstal di sana. Ini pasti akan mengganggu ketika Anda menempatkan file di sana yang tidak dikenal untuk MacPorts, yang mengarah ke konflik ketika menginstal port.
raimue
8

Dulu saya berpikir bahwa kekhawatiran tentang apa yang akan membuat alat membangun Gnu /usr/localsedang mendekati paranoid. Alat-alat build mengharapkan ada banyak hal di sana: di masa lalu yang indah sebelum manajer paket (saya bercanda), kami mengkompilasi apa pun untuk /usr/local. Tetapi sementara Autoconf biasanya memecahkan masalah, kerumitan pembangunan banyak proyek open-source memang menimbulkan masalah dan masalah-masalah ini mungkin sulit untuk diatasi ketika Anda mengalami kesulitan.

Tetapi risiko masalah dengan Autoconf menemukan sesuatu yang seharusnya tidak /usr/localperlu diseimbangkan tentang gangguan pemeliharaan memiliki dua, tiga, atau empat salinan berbeda Perl, Tcl, dan Ruby, masing-masing dengan cakupan berbeda dari pustaka paket yang berbeda. Tidak menyenangkan.

Karena pengalaman saya dengan MacPorts dan Fink biasanya merupakan kekesalan yang disebabkan oleh hal ini, dan pada titik tertentu beralih ke mengkompilasi cara kuno untuk /usr/local, saya senang melihat bahwa Homebrew tidak mengacaukan hal itu. Saya mencoba mengonfigurasi MacPorts untuk diinstal /usr/local, tetapi MacPorts berusaha keras untuk membuatnya menjadi sulit. Saya mengerti bahwa motivasinya adalah untuk membuat hidup lebih mudah bagi diri mereka sendiri ketika berhadapan dengan teriakan minta tolong di milis dan pelacak kutu mereka: perlu diketahui bahwa meskipun kita harus menghargai upaya para sukarelawan pembuat paket dan memperlakukan waktu mereka sebagai barang berharga, kenyamanan debugging bukan satu-satunya kesederhanaan yang memengaruhi Anda, sebagai pengguna.

Homebrew, dalam hal ini setidaknya, melakukan hal-hal dengan cara yang biasa mereka lakukan, dan MacPorts berusaha untuk tidak ikut campur. Jika Anda bersedia untuk mendokumentasikan paket mana yang Anda butuhkan dengan Homebrew, dan menghapus / usr / local clean and instal kembali jika terjadi kesulitan, maka Anda selalu dapat mundur jika terjadi kesalahan. Dan begitu Anda menyadari bahwa masalah di / usr / lokal umumnya tidak membawa risiko kerusakan permanen pada mesin Anda, Anda mungkin merasa lebih bebas untuk mengambil risiko.

Saya hanya akan mencatat betapa jauh lebih buruknya pengemasan pada OSX daripada FreeBSD: Apple tampaknya tidak terlalu peduli dengan kegunaan dari subtitle BSD-nya, karena ini adalah masalah yang bisa mereka bantu.

Charles Stewart
sumber
Nah, pertanyaan saya ditanyakan dari sudut pandang pengguna bodoh yang hanya menggunakan manajer paket untuk "mendapatkan barang". Sama sekali tidak yakin bahwa saya akan dapat "mencari tahu sedikit hal [diri saya] jika ada yang salah." Tetap saja, tetap memilih untuk klarifikasi ekstra. Terima kasih!
Kaya
1
MacPort sebagai alasan yang baik untuk tidak menggunakan / usr / local, lihat trac.macports.org/wiki/FAQ#defaultprefix
raimue
3
@Raim: Alasan yang bagus untuk mereka - ini merupakan pertukaran antara kenyamanan pelacakan bug mereka dan kesederhanaan pemasangan pada mesin pengguna. Saya peduli tentang yang terakhir.
Charles Stewart
1
Jumlah hal yang bisa salah karena seseorang (atau sesuatu) menginstal salinan $ lib /usr/localtidak ada habisnya. Arsitektur, versi, fitur dan bendera yang dikonfigurasikan, instalasi parsial, instalasi usang dengan masalah keamanan, dan dan dan akan menyebabkan masalah. Tentu, silakan jika Anda tahu apa yang Anda lakukan, tetapi jangan mengajukan bug tentang hal itu. Pengalaman menunjukkan bahwa orang-orang tetap melaporkan bug, dan itulah alasan mengapa jejak mode ( -t, lihat di bawah) ada dan mengapa menghindari /usr/localadalah rekomendasi default.
Neverpanic
@neverpanic - Pendapat saya tentang risiko mengkompilasi semuanya ke / usr / local telah berubah sejak saya menulis jawaban ini, sebagian besar karena kompleksitas proyek-proyek open-source tipikal naik dan naik, dan masalah Autoconf tidak semakin mudah untuk memilah: setidaknya, "verging on paranoid" tidak adil. Saya masih tidak menyukai pendekatan Macports "private build universe", dan patut ditekankan bahwa kesederhanaan interaksi milis bukan satu-satunya kesederhanaan yang harus dikhawatirkan oleh pengguna akhir. Saya akan menambahkan peringatan untuk jawaban saya.
Charles Stewart
6

Menurut FAQ MacPorts :

Perhatikan bahwa dimulai dengan 2.3.0, MacPorts dapat secara otomatis menyembunyikan / usr / local (dan semua file lain yang tidak bergantung pada port) dari sistem build port. Fitur ini disebut mode jejak dan diaktifkan dengan memberikan tanda -t ke port, misalnya

sudo port -t install <portname>

Ini relevan karena menurut Halaman Instalasi Homebrew:

Salah satu alasan mengapa Homebrew bekerja relatif terhadap kompetisi adalah karena kami merekomendasikan pemasangan ke / usr / lokal. Pilih awalan lain atas risiko Anda!

Oleh karena itu, dan dengan sedikit pengalaman pribadi, saya berteori bahwa selalu menggunakan flag -t untuk instalasi MacPort harus mencegah sebagian besar masalah memiliki MacPorts dan Homebrew hidup berdampingan pada sistem yang sama. Untuk menjawab pertanyaan terakhir Anda: Saya tidak melihat alasan mengapa mencopot MacPorts akan menyebabkan masalah.

webappzero
sumber
Sadarilah bahwa Anda akan menderita penalti kinerja yang signifikan. Tetapi secara umum, ini harus bekerja di hampir semua kasus.
Neverpanic
Terima kasih telah menunjukkan peringatan @neverpanic. Saya berasumsi bahwa penalti kinerja hanya memengaruhi waktu untuk menginstal port dan tidak mempengaruhi karakteristik runtime port yang diinstal. Benar?
webappzero
Benar. Ini hanya mencegah masalah build-time, bukan masalah run-time (tetapi itu sangat jarang).
Neverpanic
Dalam praktiknya, saya gagal mengingat persyaratan ini selalu menggunakan bendera jejak. Oleh karena itu, saya tidak merekomendasikan praktik ini kepada orang lain kecuali jika Anda yakin Anda akan menggunakannya -t secara konsisten.
webappzero
Jika Anda tidak ingin mengingatnya, Anda bisa menulis skrip pembungkus atau alias shell (tetapi perhatikan interaksi antara alias sudo dan shell) untuk selalu memberikannya untuk Anda. Perhatikan bahwa El Capitan saat ini memecah mode jejak. Saya sedang mengerjakan solusi.
Neverpanic
4

Saat memasang homebrew di komputer tempat saya menggunakan port selama bertahun-tahun, berikut adalah apa yang bisa saya baca:

Warning: You have MacPorts or Fink installed:
  /opt/local/bin/port

This can cause trouble. You don't have to uninstall them, but you may want to
temporarily move them out of the way, e.g.

  sudo mv /opt/local ~/macports

Hati-hati!

plang
sumber
1

sudo port -t ...solusi webappzero akan membantu. Sejujurnya, saya menjalankan dengan Fink, MacPorts dan Homebrew sekaligus, dengan hormat ke MacPorts (untuk sekarang tetap), dan hanya menggunakan salah satu dari dua lainnya untuk menginstal hal-hal yang tidak bisa saya dapatkan dari MacPorts. Saya mengalami sedikit kesulitan dengan cara ini, bahkan sebelum mempelajari port -ttriknya. Jika Anda mencoba menggunakan beberapa manajer paket untuk mempertahankan pengembangan kompleks dan lingkungan server, Anda mungkin setidaknya berada di dunia yang tidak nyaman. Pilih satu, dan hindari yang lain tetapi untuk sesuatu yang sangat Anda butuhkan dari mereka, dan letakkan yang utama lebih awal di jalan.

Jika apa yang saya dengar benar tentang Apple akan melarang hal-hal untuk diinstal ke / usr / selain Apple sendiri (atau mungkin mereka sudah melakukan itu di El Crapitan, yang saya hindari dengan menilai "naik" hingga setelah lebih masalah dengan itu diselesaikan), saya kira itu akan mengurangi masalah setelah Homebrew default untuk menggunakan sesuatu yang lain - apakah kita setuju dengan pendekatan tangan Apple atau tidak.

Pada akhirnya, saya suka gagasan membatasi port Apple sendiri ke pohon sendiri, saya hanya berharap itu bukan / usr /. Saya lebih suka mereka menggunakan / System / bin /, dll, dll., Untuk mengisolasi barang-barang mereka sendiri, jadi saya bisa memotongnya dengan perangkat lunak terbaru yang dikelola komunitas dengan lebih mudah.

S. McCandlish
sumber