Why does Macports take FOREVER to build simple packages?

Asked
Viewd23361

42

Building from source outside of macports is a breeze. Building with macports takes forever and seems to freeze the os every so often. Is this typical behavior? Although it seems like a nice packaging tool for os x, if I have to go through this pain every time during every install I think I'll do without it.

4 ответов

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
 

Я пнул себя, когда обнаружил это ПОСЛЕ того, как перестроил gcc;)

Эта опция позволит вам использовать оба процессора для сборки пакетов.

  • Test it for yourself. As I have done. Open up Activity Monitor, click CPU and watch the activity difference of each core when you vary the option during makes.

    galaxywatcher21 декабря 2009, 09:08
  • Can anyone confirm this? The comment on this field for me says “This # value may be set to 0 so the number of simultaneous make jobs will be set to # the number of CPU cores that are automatically detected, or the number of GB # of physical memory plus one, whichever is less.”… so unless CPU detection is broken or you have <2 gigs of ram, it should already be doing the right thing.

    Trenton20 декабря 2009, 17:26
4

Я не против подождать, пока порты Mac соберутся из исходных кодов на последних пакетах. Но почему бы не использовать всю эту вычислительную мощность и не предложить пользователям возможность автоматически загружать сборку обратно в MacPorts или, что еще лучше, хешировать и предлагать одноранговую сеть другим пользователям MacPorts, которые могут выбрать опцию «турбо».

5

MacPorts используется для сборки только из исходного кода, и это может привести к разнице на несколько порядков по сравнению с системой пакетов, которая получает двоичные файлы. Рассмотрим в качестве примера случай с каким-то большим пакетом, на создание которого уходит несколько часов, и сравните это со временем его загрузки в виде архива размером в несколько десятков МБ.

MacPorts использует инструменты Apple для сборки и добавляет незначительные накладные расходы к тому же времени сборки, которое вы получили бы за пределами MacPorts. Чем больше размер пакета, тем меньше разница. Если вы заметили огромную разницу при создании программы за пределами MP, вам следует подать заявку на систему отслеживания проблем с подробными сведениями. .

Тем не менее, я вижу, что вопрос довольно старый, так как 2.0 есть поддержка двоичных архивов -cf. Changelog - есть репозиторий, поддерживаемый macosforge, с роботами сборки, которые создают подписанные архивы и по умолчанию эти двоичные архивы выбираются, а не строятся из исходного кода (что можно принудительно использовать с помощью флага -s). Текущий пользовательский интерфейс больше похож на двоичные менеджеры, такие как apt-get, с возможностью довольно легко изменять параметры конфигурации и сборки.

8

"freeze the os"? Can you be more specific? What packages were you trying to build on what version of OS X on what machine?

In my experience, MacPorts builds generally work correctly on almost any supported configuration, in my case ranging from a 256MB Pismo G3 (year 2000) running 10.4 up though a recent dual-core Intel iMac on 10.5. You have to be patient, though: it may take a long time especially if there are a lot of dependent packages, which is one of the drawbacks of using a package manager like MacPorts or Fink. The upside is that you generally have a much-more controlled and, one hopes, tested environment than if you installed individually packages from source yourself. And, if you haven't already, make sure you update to the latest MacPorts: 1.8.0 was just released and has some important improvements, including better support of universal builds.

  • by freeze the os I mean it becomes unresponsive for a few seconds. I’m running os x 10.6 on a core duo 2 macbook pro with 4gb mem. More than enough to handle even the most cpu/mem intense processes. I’m comparing macports to yum which I’ve used on linux systems for quite some time, and again macports just seems much less agile….

    ennuikiller29 августа 2009, 22:26
  • And, not to sound glib, but, like many multi-person open-source projects, I bet either the MacPorts or Fink projects could use and would welcome more help.

    Ned Deily29 августа 2009, 23:07
  • Вы можете включить режим архивирования на своем компьютере, и MacPorts будет искать архивы той же архитектуры, что и вы, перед попыткой компиляции. Тебе пока надо в архив дамп.

    Jeremy L14 октября 2009, 22:02
  • +1… to chime in with Ned, if what you’re building has a lot of package dependencies (and those packages have dependencies, and so on), you’ll be waiting a long time to get your stuff compiled.

    Shaggy Frog29 августа 2009, 22:13
  • Well, yeah: if you’re comparing installed pre-built binary packages to building packages from source - sure it’s going to be slow! It would be nice if MacPorts did provide prebuilt packages but the infrastructure and testing to do that is more complex and not in the spirit of ports. Fink tries to do that - in the spirit of Debian apt-get - but they really don’t have the resources to do it so they have a hybrid system of both source-only and binary packages with most of the binary packages not getting updated very often.

    Ned Deily29 августа 2009, 22:59
  • Ваш компьютер периодически перестает отвечать на запросы, потому что многие сборки и установки имеют очень прерывистые шаблоны ввода-вывода, и это является узким местом для дисковых операций ввода-вывода. Это не имеет ничего общего с процессором или памятью. С yum дело обстоит не так плохо, потому что yum устанавливает предварительно скомпилированные двоичные пакеты, а не собирает их.

    Louis Gerbarg29 августа 2009, 22:45
  • Использование режима архивации на одном компьютере не очень полезно, если вы случайно не удалите несколько текущих версий, не так ли? Это может быть более полезно, если вы хотите установить одни и те же пакеты на нескольких машинах с одинаковым уровнем версии OS X и MacPorts и с одинаковой архитектурой. В прошлый раз, когда я пытался, совместное использование архива универсальной архитектуры было беспорядочным, потому что имя архитектуры использовалось в именах путей; возможно, это было исправлено.

    Ned Deily14 октября 2009, 23:50