HomebrewとMacportsの両方を同じマシンにインストールしても安全ですか?


73

iMacにMacPortsがインストールされており、かなりの数のポートがインストールされています。

ただし、Homebrewを試してみることに興味があります。それについて多くの良いことを聞いたことがあるからです。

しかし、この2つを同じマシンに共存させることはできますか、それとも最初にMacPortsを完全にアンインストールする必要がありますか?

また、2つ同時にインストールできる場合、それらは互いに完全に独立していますか?Homebrewの機能の1つは、システムに既に含まれているもの(pythonなど)の新しいバージョンを再インストールしないことです。これは、MacPortsによって既に維持されているもののバージョンをインストールしないことにも拡張されますか?

その後、MacPortsをアンインストールするとどうなりますか?

回答:


24

それらはうまく共存しません。Apple gccは、/ usr / localでいくつかのことを探します。これは、macportsコンパイルが、ポーターが予期していなかったものを見つけることができることを意味します。/ usr / localにあるものの例については、macportsのメールリストとバグを参照してください。


4
homebrewをざっと見ていただけですが、homebrewのデフォルトのインストール場所を/ usr / localから/ opt / homebrew / usr / localなどに変更した場合、その問題は回避されますか?
バブ


@babu -おそらくしかし、パスのpnフォーストであり、他方が、私はシステムのいずれかのポートが完全に別のパスを使用してテストされていない疑いがあるものも実行ファイルを拾っ自作やMacPortsののどちらに問題があるだろう
user151019

18

私は同様の質問に別の答えをしました:

Homebrewは、/ usr / localにインストールされている場合、ソースからソフトウェアをビルドするときに問題を引き起こします。これはデフォルトです。このパスはコンパイラおよび他のツールのデフォルトの検索パスにあるため、これは悪い選択です。したがって、他のパッケージングソフトウェアからのビルドは、独自のバージョンではなくHomebrewのバージョンを使用して、誤った依存関係を検出する可能性があります。

数年前、プロジェクトの最初の段階では、MacPortsでさえ/ usr / localを使用していました。しかし、FAQに記載されているように、他のツールと協力しないことが判明しました。残念ながら、Homebrew開発者は以前の経験について聞きたくなく、そのような事実を無視しました...

一般に、すべての問題を回避するためだけに1つのツールに固執することをお勧めします。MacPortsは、Finkが使用する/ swなど、ハーコードされたパスを修正するために最善を尽くしています。そのため、通常は動作しますが、/ usr / localに何かをインストールすると、間違いなく問題が発生します。

[…]


にhomebrewをインストールすることも可能~/.homebrewです。代わりにMacPortsをインストールすると、MacPortsに干渉しますか?
Behrang

/ usr / local以外の場所であれば問題ありません。
ライムエ

MacPortがインストールされている/ opt / localにHomebrewをインストールすると、MacPortとHomebrewは共存しますか?
アダムLS

1
MacPortsが既に/ opt / localにインストールされている場合、他のソフトウェアを手動でインストールしないでください。MacPortsが知らないファイルをそこに配置すると、確実に干渉し、ポートのインストール時に競合が発生します。
raimue

8

私は、Gnuビルドツールが何をもたらすかについての心配/usr/localが、妄想に向かっていると思っていました。ビルドツールそこにたくさんのものがあることを期待しています:パッケージマネージャーの前の古き良き時代(私は冗談です)に、何でもコンパイルしました/usr/local。しかし、Autoconfは通常問題を見つけ出しますが、多くのオープンソースプロジェクトの複雑なビルドの複雑さが問題を引き起こし、これらの問題は困難に陥ったときに元に戻すのが難しい場合があります。

しかし、Autoconfが下にあるべきではないものを見つけるのに問題が/usr/local生じるリスクは、Perl、Tcl、およびRubyの2、3、または4つの異なるコピーがあり、それぞれが異なるパッケージライブラリの異なるカバレッジを持っていることで、メンテナンスの面倒さについてバランスを取る必要があります。不快。

MacPortsとFinkでの私の経験は、まさにこれに起因するものであり、ある時点で/usr/local、昔ながらの方法でコンパイルするように切り替えたので、Homebrewがそれを台無しにしないことを嬉しく思いました。MacPortsをにインストールするように設定しようとしました/usr/localが、MacPortsはそれを難し​​くします。動機は、メーリングリストやバグトラッカーで助けを求める叫びを処理するときに自分自身の生活を楽にすることであると理解しています。ただし、ボランティアパッケージャーの努力を尊重し、時間を貴重なものとして扱う必要があることに注意してくださいデバッグの利便性は、ユーザーとしてあなたに影響を与える唯一の種類の単純さではありません。

少なくともこの点で、Homebrewは以前のやり方で物事を行い、MacPortsは干渉しないようにしています。Homebrewで必要なパッケージを文書化し、問題が発生した場合に/ usr / localを消去して再インストールする場合は、問題が発生した場合にいつでも元に戻すことができます。また、/ usr / localの問題が一般的にマシンに永続的な損傷のリスクをもたらさないことに気づいたら、リスクを負うことを自由に感じるかもしれません。

OSXでは、FreeBSDよりもパッケージングの方がどれほど悪いかだけを述べておきます。Appleは、BSDサブシステムの使いやすさを気にしていないようです。


さて、私の質問は、単にパッケージマネージャを使用して「ものを入手する」愚かなユーザーの観点から尋ねられます。「物事がうまくいかなかった場合に、自分自身を少し理解することができる」かどうかはまったく定かではありません。それでも、追加の説明のためにとにかく賛成してください。ありがとう!
リッチ

1
MacPortsは/ usr / localを使用しない正当な理由として、trac.macports.org
raimue

3
@Raim:正当な理由-バグ追跡の利便性とユーザーのマシンへのインストールのシンプルさのトレードオフです。後者が気になります。
チャールズ・スチュワート

1
誰か(または何か)が$ libのコピーをインストールしたためにうまくいかない可能性のあるものの数/usr/localは無限です。アーキテクチャ、バージョン、設定された機能とフラグ、部分的なインストール、セキュリティの問題を伴う古いインストール、そしてそして問題を引き起こすでしょう。確かに、あなたが何をしているのか知っていれば、先に進んでください。しかし、それについてバグを報告しないでください。とにかくバグを報告する経験があり、それがまさにトレースモード(-t、下記参照)が存在する理由であり、回避/usr/localがデフォルトの推奨事項である理由です。
ネバーパニック14年

@neverpanic-/ usr / localにすべてをコンパイルするリスクについての私の意見は、この答えを書いた後に変わっています。これは主に、典型的なオープンソースプロジェクトのビルドの複雑さが増し、Autoconfの問題が簡単にならないためです整理:少なくとも、「偏執狂に集中する」ことは不公平です。しかし、私はまだMacportsの「独自のプライベートビルドユニバース」アプローチが好きではありません。また、メーリングリストのやり取りの単純さだけがエンドユーザーが心配すべき単純な種類ではないことを強調するに値します。答えに注意を追加します。
チャールズスチュワート14年

6

MacPorts FAQによると:

2.3.0以降、MacPortsは/ usr / local(およびポートが依存しない他のすべてのファイル)をポートのビルドシステムから自動的に隠すことができることに注意してください。この機能はトレースモードと呼ばれ、ポートに-tフラグを指定することでアクティブになります。たとえば、

sudo port -t install <portname>

Homebrewインストールページによると、これは関連性があります。

Homebrewが競合と比較して機能する理由の1つは、/ usr / localにインストールすることをお勧めしているためです。あなたの危険で別のプレフィックスを選択してください!

したがって、個人的な経験はほとんどありませんが、MacPortのインストールに常に-tフラグを使用すると、MacPortsとHomebrewが同じシステム上に共存するというほとんどの問題を防ぐことができると考えています。最後の質問に対処するために:MacPortsをアンインストールすると問題が発生する理由がわかりません。


パフォーマンスが大幅に低下することに注意してください。しかし、一般的に、これはほとんどすべての場合に機能するはずです。
ネバーパニック14年

その警告@neverpanicを指摘してくれてありがとう。パフォーマンスの低下は、ポートをインストールする時間にのみ影響し、インストールされたポートのランタイム特性には影響を及ぼさないと思います。本当?
webappzero

正しい。実行時の問題ではなく、ビルド時の問題のみを防止します(ただし、これらは非常にまれです)。
ネバーパニック14年

実際には、トレースフラグを常に使用するというこの要件を思い出せませんでした。したがって、一貫して-tを使用することに自信がない限り、この方法を他のユーザーに推奨することはありません。
webappzero

覚えたくない場合は、ラッパースクリプトまたはシェルエイリアスを記述して(ただし、sudoエイリアスとシェルエイリアスの相互作用に注意して)常に渡すことができます。現在、El Capitanはトレースモードを解除していることに注意してください。私は回避策に取り組んでいます。
ネバーパニック

4

私が長年ポートを使用してきたコンピューターにhomebrewをインストールしている間、ここに私が読むことができるものがあります:

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

注意してください!


1

webappzeroのsudo port -t ...ソリューションが役立ちます。正直なところ、私はFink、MacPorts、Homebrewを一度に実行し、MacPortsに敬意を表して(とにかく)、他の2つのうちのいずれかを使用してMacPortsから取得できないものをインストールします。port -tトリックを習得する前であっても、この方法で困難に遭遇したことはほとんどありません。ただし、複数のパッケージマネージャーを使用して複雑な開発環境とサーバー環境を維持しようとしている場合、少なくとも不快感の世界にいることでしょう。1つを選択し、他のものは避けますが、必死に必要なもののために、メインのものをパスの前に配置します。

Appleが/ usr /にApple自身のもの以外のものをインストールすることを禁止しようとしていることについて私が聞いていることが本当なら(あるいは、彼らはすでにEl Crapitanでそれを行っているので、問題が解決された場合)、Homebrewがデフォルトで他の何かを使用するようになった後、Appleの強引なアプローチに同意するかどうかに関係なく、問題を緩和すると思います。

結局、私はApple自身のポートをそれ自身のツリーに限定するというアイデアが好きです、ただそれが/ usr /でないことを望みます。私はむしろ/ System / bin /などを使用して自分のものを分離したかったので、最新のコミュニティ管理ソフトウェアでより簡単にバイパスできました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.