Interactive tool for installing packages

Mark Johnston markjdb at
Tue Nov 9 21:25:19 UTC 2010

On Tue, Nov 09, 2010 at 09:32:15PM +0200, Marin Atanasov Nikolov wrote:
> Hello,
> Some time ago I've started a thread on freebsd-ports@ regarding an
> interactive tool for installing packages under FreeBSD - pkg_add_it.
> Now that I got some time to work on the program, I have added a few
> additional features to it, which I think someone might find useful
> like:
>  - dependencies tree view of packages (useful to find out package dependencies)
>  - a similar tool that does this already exists - pkg_tree, but it
> only works for installed ports, while pkg_add_it can show you every
> package from INDEX
>  - regex support
>  - displays categories and packages from each of them found in INDEX
>  - some code improvements, etc...
> The code can be found here [1] and in order to install the program, you need to:
> # git clone git://
> # cd pkg_add_it && make install clean
> I still haven't updated the manual pages yet, but you can read
> something about the program on the web page [2].
> Screenshots can be seen as well. [3]
> Would be nice if someone can test it, and provide some feedback - what
> can be removed, improved, added, etc..
> Surely, there's room for improvement, but that's a start.. :)
> Thanks,
> Marin
> [1]
> [2]
> [3]
> -- 
> Marin Atanasov Nikolov
> dnaeon AT gmail DOT com
> daemon AT unix-heaven DOT org

It looks pretty neat. I spent a minute or two trying it out, and my only
suggestion at this point is to check errno for common errors instead of 
immediately calling ERRX to report non-zero returns from system calls.
It's kind of annoying to see a message like

pkg_add_it: Error in config_read_file() from config.c at line 179: No
such file or directory

when it's my fault that pkg_add_it can't find its config file. =)
Ditto for things like permissions errors and getenv(3). sudo doesn't
bring in my environment unless I use -E, so I get the following message
when a 'getenv("PAGER")' fails:

pkg_add_it: Error in pkg_display_found() from pkg.c at line 418: No such
file or directory


More information about the freebsd-ports mailing list