The Ports+ Project Design and Goal ― 2008年01月02日 12時11分39秒
The Ports+ is to maximize modern multi-core systems to install and upgrade packages via ports. It builds independent packages in ports in parallel.
Other tools in the same category is portupgrade and portmaster. If they are like cars which allows you to operate , ports+ is like an airline. The others allow detailed, well navigated, and beginning-to-end operations but operate one by one. On the other hand, ports+ handles massive updates very well but not good at details. Neither a car nor an airplane is perfect; however, it is better to take a car to and from an airport and take an airplane to travel long distance.
The FreeBSD ports system is excellent for installing a new package from source code. It installs any build tools necessary to build, libraries to run, and others. However, it is not design for upgrading. Without other tools, it is very difficult to upgrade one, specially libraries.
Portupgrade supports such problem very well. Using portupgrade, people can upgrade packages with less hassle. That was a brilliant invention back in a half decade ago. It is unfortunately slow on its operation. It takes quite time to update its own internal dependency database as well as /var/db/pkg database and also depends. That wasn't a problem for a while as the size of database was smaller. As time goes by Xorg was split into smaller modules, KDE and GNOME becoming more popular. the number of packages installed increases, and it has been becoming some major issues with old model hardwares.
portmaster was designed not to depend on any tools installed via ports or external data such as INDEX file. It also attempted some parallelization but only limited to fetching processes.
Ports+ is designed to kick start in a fast truck for these processing in the first stage taking advantages of multiple CPU core, network bandwidth, and disk activities at maximum. Once some problems come up, you can either fix them by hand, portupgrade, or portmaster. Then, usually, you can rerun ports+ to finish the last part in concurrent fashion again.