强迫Homebrew和Macports共存?


10

我有一个已经使用了多年的MacOSX系统,在此期间,我已经通过Macports安装了很多软件包。

我现在想尝试Homebrew,但是从我在这里和其他地方所读的内容很明显,Homebrew和Macports的默认安装无法轻松共存。

对于我来说,卸载Macports并不是一个可行的选择,因为我每天的MacOSX日常工作都涉及使用各种Macports安装的实用程序。此外,我自己的许多本地实用程序现在都与Macports相互依赖。最后,现在我经常使用的许多可执行文件和共享库都安装在/ usr / local下,如果清除该目录树,我的系统将很快变得不可用。

所以我的问题是:是否有人想出一种可以与Macports共存的安装Homebrew的替代方法?具体来说,有没有人知道如何使Homebrew利用目录树(例如/ usr / local / homebrew)而不是/ usr / local?

在此先感谢您对文档的任何建议或指点。


如果您只想尝试,为什么不设置OS X虚拟机?它与Apple的OS X 10.7 TOS并不抵触,您可以在那里尝试使用任何东西。即使同时使用这两种方法,如果事情开始崩溃,我也不会感到惊讶……
丹尼尔·贝克

非常感谢,但是如果有任何办法,我希望让两个程序包管理器都在同一OSX环境中运行。这是因为,如果我喜欢Homebrew,则需要通过该系统逐步安装软件包,并逐步卸载基于Macports的旧软件包。不幸的是,对于我来说,选择Homebrew,一次掉掉我所有的Macports旧代码,然后再通过Homebrew一次又一次地替换掉所有遗留的Macports代码,并不是一个可行的选择。
HippoMan 2012年

Answers:


2

您可以告诉Homebrew使用其自己的目录,然后将其添加到路径。尽管不是出于相同的目的,但是安装指南的摘录告诉您:

多次安装

无论您将压缩包解压缩到哪里,都可以创建一个Homebrew安装。无论调用哪个brew命令,都将在其中安装软件包。您可以根据需要使用它,例如/ usr / local中的一组libs系统,并调整了〜/ homebrew中开发的公式

来源:https : //github.com/mxcl/homebrew/wiki/installation


谢谢卡洛洛斯。在同一个Wiki页面上,以下语句不鼓励我:“但是请帮个忙,安装到/ usr / local ... 危险时再选择一个前缀! ”但我会尝试一下并报告后来。
HippoMan 2012年

我试图在/ usr / local / homebrew中安装homebrew。但是,我尝试安装的许多软件包都失败了。当我运行/ usr / local / homebrew / bin / brew doctor时,我实际上引用了许多意外的dylib,静态库,.pc文件和.la文件,以及关于某些需要/ usr / local安装的软件包的警告。因为如果我遗弃了旧版软件安装(这是大多数“意外”文件的来源),我的系统将根本无法运行,因此看来我无法在系统上使用自制软件。噢...(叹气)...
HippoMan 2012年

@HippoMan:对不起,它无法解决问题。但是,一个问题是:/ usr / local / homebrew是否在您的路径中正确设置了?即PATH和(DY)LD_LIBRARY_PATH
Karolos 2012年

@HippoMan:哪些软件包失败了?我只是尝试安装其中的几个,但没有看到任何问题(在编辑/ etc / paths以添加/ usr / local / homebrew / bin之后)。
Karolos 2012年

是的,我正确设置了PATH和LD_LIBRARY_PATH,以指向/ usr / local / homebrew树下的bin和lib。失败的软件包之一是gawk,这是avidemux的先决条件。但是,如果出现某种错误,我将从头开始重新尝试,再尝试一次。
HippoMan 2012年

1

我强迫它们共存的方法是使MacPorts默认情况下不可见,但在调用任何MacPorts程序时可见。也就是说,用以下脚本包装MacPorts程序:

if [ "$#" -le 0 ]; then
  echo "Usage: $0 command [arg1, arg2, ...]" >&2
  exit 1
fi
if [[ -z $MACPORTS_PREFIX ]]; then
  MACPORTS_PREFIX='/opt/local'
fi
export PATH="$MACPORTS_PREFIX/bin:$MACPORTS_PREFIX/sbin:$PATH"
export DYLD_LIBRARY_PATH="$MACPORTS_PREFIX/lib:$DYLD_LIBRARY_PATH"
export CPATH="$MACPORTS_PREFIX/include:$CPATH"
command=$1
shift
exec $command $* 

如果将此脚本命名为macports.sh,则可以通过进行包装macports.sh macports_bin,例如macports.sh port将运行port包装。

为了方便起见,你可以把macports.sh something到一些脚本具有相同的名称作为自己的命令,并把它们在你的home目录下,如~/bin~/.local/bin等。

一个月前,我写了一篇有关此的博客文章。如果需要查看详细信息,可以阅读。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.