[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC] The GNU system's package system
From: |
Barry deFreese |
Subject: |
Re: [RFC] The GNU system's package system |
Date: |
Sat, 15 May 2004 08:43:03 -0700 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Debian/1.6-5 |
Alfred M. Szmidt wrote:
I made my copy of the "design" document for the package system at
http://www.update.uu.se/~ams/gnu/GNU-package-system. It is more or
less a step-by-step document of how I will write the package system,
and not a standard. This is my working copy, so feel free to commen
about things. But please quote the time-stamp when discussing the
document.
I have also attached it to this mail, a update will be sent to this
list once in a while when I feel big changes have been done to the
document.
Looks like a good start to me. I made some spelling/grammar changes and
added some questions and comments.
Thank you,
--
Barry deFreese
Debian 3.0r1 "Woody"
GNU/Hurd
Registered Linux "Newbie" #302256 - Hurd H4XX0r wannabe
"Programming today is a race between software engineers striving
to build bigger and better idiot-proof programs, and the Universe
trying to produce bigger and better idiots. So far, the Universe is
winning." Rich Cook.
* The GNU package managment system -*- Outline -*-
Time-stamp: <2004-05-15 02:33:33 ams>
* Terminology
"package" refers to a binary package unless noted otherwise.
"stow" refers to both stow and stowfs/packagefs. Any options provided
by the stow program, shall be supported by the stow translator, and
vice versa.
* Package format
All nodes that are related to the package format shall start with a
plus-sign (+).
[Clarify the binary format fo the file, it is really a tar.gz ball]
[Is it better to use the same as the BSD's?]
[Maybe dump them in a {stow} directory, and remove the + sign from
them, this will create less clutter in the file-listing if the amount
of nodes provided by stow is large.]
** +arch
** +short-description
** +long-description
** +md5sum
** +md5sum.sig
** +manifest
[Is it better to make this into one file, a Makefile, and provide these
as targets instead?]
** +post-install
** +pre-install
** +post-deinstall
** +pre-deinstall
[bddebian - How about +scripts containing one file with any pre/post scripts?]
* Nodes provided by stow
All nodes that are provided by stow shall start with a comma-sign (,).
** ,depends
`,depends' is list of unfulfilled dependencies in the following
format:
PACKAGE (PREDICATE VERSION), ...
Where PREDICATE is one of the following: < <= = > =>. If PREDICATE is
null, then it defaults to equal.
If all dependencies are fullfilled, then this node will not show up in
the file-listing.
[bddebian - How and when do the dependencies get fulfilled? Is it automatic
or does it require some type of user intervention?]
* Package construction
* Installation of packages
The following steps will happen when one installs a package:
1) Unpack the package (if it is already unpacked, skip to 2).
2) Copied, or symlinked into /packages.
3) The following are performed by stow:
a) Check dependencies, update `,depends' node accordingly.
b) Run pre-install script.
c) Merge package into the file-system, skipping any nodes that are
related to stow, or the package format.
d) Fix files according to what is described in `+manifest'.
e) Run post-install script.
If an error occurs during any of these steps, stow shall clean up to
the same state it was before the package was installed.
* Deinstallation of packages
The following steps happen when one deinstalls a package:
[Should we store a backup of changed files?]
1) Check what dependencies break.
[More about deinstalling, especially about broken dependencies]
2) Run pre-uninstall script.
3) Unmerge the package
[bddebian - Unmerge meaning what?]
4) Run post-uninstall script.
5) To completely remove the package from the system, we just remove
the node /stow/PKG-VER here, otherwise this will be a no-op.
[bddebian - I assume you are including removal of symlinks here?
As I understood stow, it ONLY removes the symlinks, not the actual
binaries??]
* Front-end package manager
** Command-line
** GUI
* Random notes
Packages will be stored at some ftp site in the following manner:
ftp.foo.org/some/directory/PKG/PKG-VER_N-ARCH.tgz
Where N is a package revision number which must be updated for each
commit into the ports-like system that is related to the package.
[bddebian]
* I wasn't sure exactly where to put these so I am adding random thoughts here.
* It would be nice to have some type of front-end utility like pkgutil or
something
I was thinking with options like so:
* pkgutil --list - lists all avaiable packages to be install from the
cache
- This brings up another question about how/where we keep a cache
of installable packages.
/stow/cache ?? Which isn't much more than an ftpls of
ftp.foo.org/.../PKG/PKG-VER...
* pkgutil --installed - Shows list of currently installed packages.
* pkgutil --search - Search for a specific package user wants to
install.
* pkgutil --update - Updates package cache.
* For the front-end, maybe something like pkgget.
- Gets the tarball from ftp.foo.org/... extracts it and mv's/cp's/
whatever to /packages
for stow/stowfs to take over?
Re: [RFC] The GNU system's package system, Richard Stallman, 2004/05/16
Re: [RFC] The GNU system's package system, Alfred M. Szmidt, 2004/05/17