Hi, I recently decided to write yet another 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 and pmap does not show anything suspicious for mpapt. Libraries are on LGPL and mpapt is on GPL. Everything is not well tested yet and they are my first "serious" debian packages but mpapt usage should be safe because it only performs read only searches and printing (for the remaining operations calling apt-get). 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 open read only) - 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

