Package system update

Now that the feature freeze has been lifted, I will be making a push over the next few days to merge the new package code I’ve been working on into HEAD. The following features are among those currently planned for initial inclusion:

  • Multiple package repositories

  • Although the pfSense team will continue to run an ‘official’ repository, the package system will be moving to a more decentralized model. Any user may create their own repository XML file using the repomaker tool (check tools/repomaker in HEAD).

  • Repository files will now contain a much greater amount of information about packages. In addition to the metadata provided by the current system, each XML file will include repository information, a list of available mirrors, and the BSD packages required by each pfSense package. This makes the installation process much simpler.
  • Similar to the FreeBSD ports system or ipkg, a client will need to manually update their repository files to get new information, instead of sending an XMLRPC request to the repo. This makes it easier to run a repository and eliminates unnecessary interaction between the server and the client.

  • Cleaner package XML files

  • The package XML format has been cleaned up to be easier to read and maintain.
  • All package information has been moved into the package file rather than the repository document. This makes it much easier to quickly change a repository or share package files.

  • Speed improvements

  • Information about the package system is cached whenever possible to avoid the overhead associated with walking the filesystem or parsing an XML document.

  • Cleaner startup

  • A single function called at boot handles the package system startup process.

  • All packages now expose pfSense services when necessary. This list of services allows greater flexibility when determining which services to start and stop.

  • Input validation

  • All input gathered by package GUIs will now be automatically validated. Package authors may also pass $input_errors to their configuration functions to do more specialized input validation.

Are there any features you would like to see in the pfSense package system? Please leave a note or mail the list with questions/comments.