gnu-system-discuss
[Top][All Lists]
Advanced

[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?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]