After almost a year of development pkg 1.1 has reached the ports tree, actually pkg 1.1.1 has 1.1 was too buggy :(
What happened in 1 year of development (I'll focus on use visible features)
The multi-repository support was experimental in pkg 1.0 and to be honest it was not really usable. With pkg 1.1 the support has been greatly improved and it is now the default behaviour (you can't deactivate).
To define repository you just have to create a simple configuration file in /usr/local/etc/pkg/repos/myrepo.conf
myrepo: url: http://myurl pubkey: /usr/local/etc/pkg/repos/myrepo.key mirror_type: SRV
Meaning you can provide a package to autosetup a repository creating a package containing like this one:
$ tar tf myrepo-1.0.txz +MANIFEST /usr/local/etc/pkg/repos/myrepo.conf /usr/local/etc/pkg/repo/myrepo.key
Host this file somewhere and say to the use to do the following
$ pkg add http://yourhost/myrepo-1.0.txz
Now you can see that the repository is configured properly pkg -vv should show you in the last lines:
Repositories: packagesite: url: http://private.etoilebsd.net/91-default-server key: enabled: yes mirror_type: myrepo: url: http://myurl key: /usr/local/etc/pkg/repos/myrepo.key enabled: yes mirror_type: SRV
The user can also choose to make sure a given package will always be updated from 'myrepo'
$ pkg install -r myrepo mypackage $ pkg annotate -A mypackage reposiroty myrepo
Now the package 'mypackage' will only be updated from 'myrepo'
If a use want to prevent a package from being updated anyway he can just lock it:
$ pkg lock mypackage
To unlock it just update use the following command:
$ pkg unlock mypackage
If your server has pkg 1.1+ installed then you do not need so set up a HTTP server or a FTP server, pkg can now use ssh to share the packages
Or in the repository configuration:
Do not forget to restrict on the server the directory where files can be retrieved by adding the following line on the server pkg.conf:
This allows to add any key/value annotation to a given package once installed, if you recreate the package after that, the annotation will be added to the manifest and then a new reinstallation will keep the annotation.
pkg now supports 2 kind of plugins: commands (to add new subcommand to pkg) and hooks (which will be executed in the middle of any process of pkg).
I'll write another post dedicated to plugins later.
As pkg is able to determine that a package needs to be reinstalled because the remote one has been compiled with new options or the required shared libraries for the package has changed, pkg now explains why a package will be reinstalled.
We have stabilized the public API, so now bindings, and program using libpkg are more than welcome :) Lots of cleanup has occurred in the code, and lots of code optimisation. New pkg_printf(3) function to help printing a preparing strings with pkg informations. We are more and more adding some regressions test using the ATF framework. The catalog has changed and is now a simple yaml files which gives us more flexibility and allow simples incremental update. pkg audit can now directly read the vuxml native format.
Way more things but I'll let you discover :)
Thanks to all people that has been involved in the new release (coders, testers, doc writers, etc.)