Script to set/unset "automatic" status in PKGNG database

John Nielsen lists at
Thu Aug 30 21:44:16 UTC 2012

On Aug 30, 2012, at 3:29 PM, Julien Laffaye <jlaffaye at> wrote:

> On 8/30/2012 11:19 PM, John Nielsen wrote:
>> I today noticed the "pkg autoremove" command for the first time, which does much the same thing as pkg_cutleaves but relies on the "automatic" flag in the pkgng database rather than user input to determine which "leaf" ports can be removed. Unfortunately, the pkg2ng utility has no way of knowing which old-style packages it converts were installed automatically as dependencies, so they are all marked as non-automatic (i.e. user-requested). In my case, this was not true for the majority of installed ports. Since I really like this functionality, I decided to update my local package database to match my preferences.
>> Having succeeded, I decided a tool to make doing so easy could well benefit others (as well as my future self). (Plus I wanted an excuse to play with dialog(1) and "pkg query" a bit.) So here's the result. I'm not too attached to the name. It shouldn't eat your package database or steal your lunch money, but I'm not responsible if it does. Other than that, feedback is welcome.
> You want to use `pkg set -A` :)
> We make zero promises concerning the SQL schema in pkgng so it can change at every time and break your script.

Thanks. I looked for something like that but not hard enough obviously. I'll change it.

After dialog(1) exits the script has a list of packages to mark as automatic. Is there a non-SQL way to efficiently get the inverse? I.e. the set { all_packages - new_automatic_package_list } ?


More information about the freebsd-ports mailing list