为什么Macports需要FOREVER来构建简单的包?

enn*_*ler 42 macos installation macports

从macports之外的源码构建是一件轻而易举的事.使用macports构建需要永远,并且似乎每隔一段时间就冻结os.这是典型的行为吗?虽然它似乎是一个很好的os x包装工具,如果我每次安装时都要经历这种痛苦,我想我会没有它.

gal*_*her 35

如果您使用的是Intel Core 2 Duo,则可以通过更改位于此处的Macports配置选项将构建速度提高一倍:

/opt/local/etc/macports/macports.conf

# Number of simultaneous make jobs (commands) to use when building ports
buildmakejobs       2
Run Code Online (Sandbox Code Playgroud)

当我在重建gcc之后发现这个时,我正在踢自己;)

此选项允许您使用两个cpu来构建包.

  • 谁能证实这一点?对此字段的评论说:"此#值可以设置为0,因此同时创建作业的数量将设置为#自动检测到的CPU核心数,或物理内存的GB数加1 ,无论哪个更少."......所以,除非CPU检测被破坏或者你有<2演出的ram,它应该已经做了正确的事情. (7认同)
  • 自己测试一下.就像我做的那样.打开活动监视器,单击CPU并在制作期间更改选项时观察每个核心的活动差异. (2认同)
  • 根据http://guide.macports.org/chunked/internals.configuration-files.html,默认值为0,这会导致运行时自动检测使用所有可用的处理器核心. (2认同)
  • 默认值为0.这意味着**根据@Trenton注释自动检测**.在编译期间正在使用我的CPU的所有(4)个核心.检查了MacPorts 2.3.3的全新安装. (2认同)

Ned*_*ily 8

"冻结操作系统"?你可以说得更详细点吗?你试图在哪台机器上构建什么版本的OS X?

根据我的经验,MacPorts构建通常可以在几乎任何支持的配置上正常工作,在我的情况下,从256MB Pismo G3(2000年)运行10.4到最近的双核Intel iMac 10.5.但是你必须要有耐心:它可能需要很长时间,特别是如果有很多依赖包,这是使用像MacPorts或Fink这样的包管理器的缺点之一.好处是你通常拥有一个更加可控,一个希望,经过测试的环境,而不是你自己从源代码单独安装包.而且,如果您还没有,请确保更新到最新的MacPorts:1.8.0刚刚发布并有一些重要的改进,包括更好地支持通用构建.

  • 好吧,是的:如果您将已安装的预先构建的二进制包与从源代码构建包进行比较 - 确定它会变慢!如果MacPorts确实提供预构建的软件包会很好,但基础架构和测试要做的更复杂,而不是端口的精神.Fink*尝试*这样做 - 本着Debian apt-get的精神 - 但他们真的没有资源去做它所以他们有一个只有源和二进制包的混合系统,大多数二进制包没有经常更新. (3认同)

小智 6

我不介意等待 Mac Ports 在最新的软件包上从源代码构建。但为什么不利用所有这些处理能力,并为用户提供一个选项,让构建自动上传回 MacPorts,或者更好地进行散列并以点对点方式提供给可以选择“turbo”选项的其他 MacPorts 用户。

  • 可能是因为现在人们(包括我自己)过于偏执,不敢相信陌生人的二进制文件。有趣的是,我们大多数人从来没有费心去研究我们每天构建的源代码...... (8认同)
  • 当我想知道为什么它构建而不是安装二进制文件时,我发现了这个问题,因为这个“答案”想知道......至于信任,好吧,如果我们信任 macports 源代码树,那么我认为没有理由不信任,比如说macports 执行的构建。这确实需要 macports 人员拥有资源(硬件、时间等)来构建东西(针对各种平台),但是......也许有一些中间方法?我知道我更喜欢二进制安装,前提是存在一定程度的信任。它肯定不比源代码没有看到的安全性低(无论如何本质上)。 (3认同)

and*_*dam 5

MacPorts过去只从源代码构建,与获取二进制文件的软件包系统相比,这可能会导致几个数量级的差异.例如,考虑一个需要花费几个小时构建的大包装的情况,并将其与将其下载为具有几十MB大小的存档的时间进行比较.

MacPorts使用Apple的工具进行构建,它只会在MacPorts之外的相同构建时间上增加可忽略的开销,包装越大,差异越小.如果您在MP之外构建程序时遇到巨大差异,则应在问题跟踪器上提供详细信息.

那说我看到问题已经很老了,因为2.0支持二进制存档-cf.更改日志 - 有一个macosforge支持的存储库,其中buildbots可以生成签名存档,默认情况下是获取这些二进制存档而不是从源构建(可以强制使用-s标志).当前的用户体验更像是apt-get之类的二元管理器,能够非常轻松地更改配置和构建选项.