[RFS] mpapt package manager and libraries
Hi,
I recently decided to write a package manager frontend (with shell-like
interface) - mpapt. And now I am looking for a sponsor for it.
Project web page with manuals, screenshots, library usage examples and .deb
packages and sources repository[1] is at http://mpapt.alioth.debian.org.
Sources are at svn.debian.org (e.x. http://svn.debian.org/viewcvs/mpapt).
[1] deb or deb-src http://mpapt.alioth.debian.org/ testing/ or unstable/ in
sources.list
All the packages are lintian clean and sbuild correctly (at least for i386)
for testing and unstable. libmpapt is valgrind clean. mpapt is pychecked
and pmap does not show anything suspicious for it. Libraries are on LGPL
and mpapt is on GPL.
Formal (.deb) descriptions are at the end of the letter and here is a more
detailed one:
While working on mpapt I found libapt-pkg to be hard to use directly for
simple tasks like package searching or information printing and even harder
to be interfaced to script languages (I wanted to use Python in user
interface module).
So I started from writing c++ wrapper library - libmpapt. It basically
offers two things. The first one is a package abstraction class -
MPAptPackage. Its objects correspond to unique name and version pairs and
are hiding libapt-pkg complexity by providing methods to access package
most important information fields (name(), maintainer(), files() etc.). The
second one is MPAptBuffer - container class which can search for packages
satisfying specified criteria (including regular expressions matching) and
keep them for later use (mainly information retrieval) in dedicated vector.
Then (using SWIG) I interfaced libmpapt to Python (to use it) and Perl
(just because I could :)
And finally I wrote mpapt. It has two modes of operations - interactive
shell-like interface and command (passed as a runtime parameter) execution.
mpapt has tab-completion and commands history. Offers ability to define
command aliases, shell command execution, mpapt command output redirection
(to any shell command), `cmd` substitution and other things I'd expect to
be present in a well-behaving shell.
mpapt commands can be split into three categories:
- package information retrieval: "query" to find packages matching
defined criteria and "buffer" to print package information. They use
libmpapt and of course don't need any privileges (apt cache is in
read only mode)
- package manipulation: "rm", "get", "upgrade" etc. They simply call
sudo apt-get with appropriate parameters and package names (names can
be taken from buffer, like in "get -b 1" command which will install
package indexed in the buffer with number 1). They need user to be
able to execute sudo apt-get and to be present in special "mpapt"
group to log changes in /var/log/mpapt.log file.
- mpapt configuration: "set" to manipulate program config (saved in
/etc/mpapt.conf and ~/.mpapt.conf) and "alias" to define command
aliases. They again need no privileges.
Every command has its own parameters, and "query" and "buffer" ones use
special format to define search expressions and printed output. It's
described in manual pages accessible at mpapt web pages.
Formal .deb packages descriptions:
Package: mpapt
Description: Command-line package management frontend with shell-like interface
mpapt is a command-line tool to query and manage debian packages. It works
in batch or shell-like mode with tab-completion, commands history, ability
to define command aliases and other useful functions. It can search for
packages matching specified criteria (including regular expressions
matching). Performs operations like package installing, removing,
upgrading etc. Offers user defined package displaying output format with
ability to pass it to any shell command. Can log all actions that change
package states, execute arbitrary command, and much more.
Package: libmpapt1
Description: Package searching wrapper library for libapt-pkg
This library offers simplified access to apt-cache data and can be used to
perform database search for packages satisfying specified criteria
(including regular expressions matching). It hides libapt-pkg complexity
with special classes to perform the queries and access package most
important information fields. It is constructed in the way allowing it to
be interfaced to other languages like Python or Perl. For more information
see README file.
Package: libmpapt1-utils
Description: libmpapt utility programs
This package contains utility programs used to create and read libmpapt
file database files.
Package: libmpapt1-dev
Description: Development files for libmpapt package searching library
This package contains the header files and libraries for developing with
libmpapt package searching library.
Package: libmpapt1-perl
Description: Perl interface to libmpapt package searching library
This is an interface to libmpapt package searching library for Perl. It
offers simplified access to apt-cache data and can be used to perform
database search for packages satisfying specified criteria (including
regular expressions matching).
Package: python2.3-libmpapt1
Description: Python interface to libmpapt package searching library
This is an interface to libmpapt package searching library for Python. It
offers simplified access to apt-cache data and can be used to perform
database search for packages satisfying specified criteria (including
regular expressions matching).
.
This package is built for Python 2.3.x.
Package: python-libmpapt1
Description: Python interface to libmpapt package searching library [dummy package]
This is an interface to libmpapt package searching library for Python. It
offers simplified access to apt-cache data and can be used to perform
database search for packages satisfying specified criteria (including
regular expressions matching).
.
This package is an empty dummy package that always depends on a package
built for Debian's default Python version.
Regards,
--
Marcin Pawlik
Reply to: