I just decided to write this. Post any comments and changes to have
on it to the mailing lists, or send them to me. After it gets to a
readable format, we can put it on the site:
--- stuff ---
MPKG Package Format Specification PROPOSAL 0.1
TERMS:
MPK/mpk - the extension of a mpkg pacakge file
bzip2 - a file compression technology
package - a file that contains data in an installable format
binary - an installable package that is created from a source package
source - a package that contains the data neccesary to create a binary package.
of course, a binary package may contain source or documentation and not
just binaries, and a source package can contain binaries as well. In this
document, source merely means an uninstallable version of a package, that
must be run through the packager to turn it into an installable package
REASONING:
The two current leaders in packaging technology for linux are rpm and dpkg.
Both are suboptimal solutions to the problem of packaging. Rpm is technically
flawed, and dpkg offers too much power. Both make it difficult to pacakge and
maintain packaged software. Mpkg is designed to make packaging easier, more powerful,
and better using several methods. Mpkg will retain the ability to install rpm and
dpkg packages(using librpm and calling dpkg).
FLAWS IN DPKG:
Dpkg is a very powerful pacakge manager. But, its code is extremely messy,
and the common package control functions are not separated into a library for
other programs to use(note: it has an interface in perl). Still, a perl interface
is not good enough, because the majority of software is written in C and its cousin
C++ for speed. Also, dpkg is a hack that needs a major revision.
MPKG FILE FORMAT:
All mpk files will be in bzip2 format. The packager will use libbz2 to access
the bzip2 funtions for its usage. Every file will also contain this basic directory
structure: (|| denotes or, explained later)
control/
data/ || src/
doc/
bin/
src/
etc/
info/
||: In a "binary" pacakge(mpk) you will have a data/ directory. A "source" package
contains the src/ directory.
the control/ directoru contains the control files for the package. No scripts may
be run from a package at all. This may be dangerous. All packages must use debconf
for controlling how a pacakge is used. Mpkg will not be using debconf, it will be
using cdebconf instead. Because debconf does not provide 100% of the funtionality
a package needs, mconf will be written. Mconf will provide an undertermined set of
features. In addition, there will be a file named "INSTALL" that contains the
commands to install teh pacakges. These will not involve absolute paths -- it will
most likely be a mconf control file. Debian menus systems scripts and other data
may also be added here.
the data/(or src/) directory contains the data files to be isntalled. This will be
controlled using the files in the control/ directory. There may be more directories
added to this heirarchy. All packages must conform to the set structure, or they will
be rejected by the package manager.
Files in ./doc/ must be documentation files
that are destined for the documentation folders(there may be info,doc,and man
sub-sub folders added, so don't make any pacakges yet). Since the LSB and FHS are
ever evolving, mconf will control where these files go(so older packages will remain
compliant to the FHS. ex: /usr/doc is non-FHS compliant. If mconf existed before the
FHS, then it would take a simple 1 line update to mconf to update the doc dir to be
/usr/share/doc, instead of requiring each pacakge to be updated).
./etc is for
configuration files; you may put any subdirs under this directory -- all data from /etc
is copied to /etc unchaged unless the mconf control file specifies otherwise.
The ./src/ directory is for source code files. By default, they will be put in
/usr/src/package_name, but the mconf control file will allow overiding of this
behaviour.
the ./bin/ directory is for binaries. They will be put in /usr/bin, unless overided
by the mconf control file.
The info/ directory is for package information, like the desc file.
END OF PROPROSAL. Please send comments to
unk...@us...,
or post any comments on the mentalinux sourceforge message boards or
mailing lists.
--- stuff ---
Now, go and make changes and stuff to it so it is better. And please
make comments. I think we should start tacking down what mconf and
mpkg will do really soon, since the distro will be based on
them(start as a fork of debian, and allow debian compatibility, and
slowly move to becoming independent of debian as the mentalinux tools
become stronger).
-------------------------------
#indrema @ irc.openprojects.net
be a part of the revolution.
unknown_lamer
|