Why doesn't macports install prebuild packages?

Landon Fuller landonf at macports.org
Fri Nov 27 11:08:27 PST 2009

On Nov 27, 2009, at 2:05 AM, Jasper Frumau wrote:

> I am not a base developer so for me this is hard to judge or comprehend, but is there not any open source code available used by other package managers or repositories that can be used to start a Mac Ports package manager project?

Sure. The question was always what package format to use. At first (~2002) we discussed dpkg, but abandoned because IIRC at the time Debian preferred Apple to not use it. We held out hope for apkg, a more advanced/suitable Apple Package Format, but that didn't materialize. We've discussed on and off a xar-based packaging format, but that, though a very nice idea, has still not happened.

In the meantime, we implemented support for generating quite a few different package formats in base very early on -- dpkg, rpm, pkg/mpkg.

If you install the dpkg or rpm ports, you can build packages from ports right now. Example:
	landonf at max> sudo port dpkg dict
	---> Creating dpkg for dict-1.9.7
	landonf at max> dpkg --info `port dir dict`/work/*.deb
	 new debian package, version 2.0.
	 size 69930 bytes: control archive= 434 bytes.
	     467 bytes,    10 lines      control              
	 Package: dict
	 Architecture: darwin-i386
	 Version: 1.9.7-1
	 Section: textproc
	 Maintainer: landonf
	 Installed-Size: 201
	 Description: Dictionary Server Protocol (RFC2229) client
	  The Dictionary Server Protocol (DICT) is a TCP transaction based query/response protocol that allows a client to access dictionary definitions from a set of natural language dictionary databases. dict(1) is a client which can access DICT servers from the command line.

The same also works for 'rpm', and Apple 'pkg' and 'mpkg' targets.

Someone just needs to invest the time in implementing automated building of all of the packages into a repository, ensuring that MacPorts meta-data is properly included, and you could provide an package (apt-get, yum, macports 'archive', ...) binary repository.

If you look in base/portmgr/packaging, you'll actually find a number of scripts that do most of this: 		- dpkgall.tcl
	- mpkgall.tcl
	- packageall.tcl
	- rpmall.tcl

With some pragmatic decisions about a packaging format, hardware on which to run builds (IIRC jkh at Apple has offered to donate this), and a bit of time, I'd bet a sufficiently motivated developer (admittedly, not me) could have a binary repository fairly operational within a couple weeks.


More information about the macports-users mailing list