From: Clinton E. <men...@cr...> - 2001-01-28 23:38:55
|
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 |