qpkg - Quick package database query =================================== qpkg is a tool that reads package databases of the kind used by opkg in OE-derived Jlime (which are very similar to what dpkg and apt use) and that can answer a number of queries on them. While being able to perform some of the database operations commonly found in package managers, qpkg is not a package manager itself. However, it may be used to help a package manager do its work faster. Except for the files jrb.h and jrb.c, this work is distributed under the terms of the GNU GENERAL PUBLIC LICENSE, Version 2: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. For your convenience, a copy of the complete license has been included in the file COPYING.GPLv2. The implementation of red-black trees, in jrb.h and jrb.c, is distributed under the terms of the GNU Lesser General Public License, Version 2.1: This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. For your convenience, the original copyright notice accompanying JRB and a copy of the license have been included in the files READNE.jrb and LICENSE.jrb, respectively. Objectives ---------- The original motivation for qpkg comes from the observation that opkg consumes inordinate amounts of memory when determining the prerequisites for installing a package on a given system, and the proof of concept implementation of a shell script wrapper by Rafael Zurita, that performs a large subset of the same task with much less overhead. qpkg thus aims to load and parse large package databases as quickly and memory-efficiently as possible, and to provide a number of query functions that operate on the data. A second objective is to provide a means to test the integrity of a package database, and to perform simple "what if" queries, e.g., to test which packages would become uninstallable if a package was to be removed or a conflict was to be introduced. This is to aid not only in general housekeeping of package databases, but also to assist in generating - at the package level - restricted distributions derived from a master distribution.