From: Sean Russell Date: 2002-07-05T00:35:23+09:00 Subject: Re: [ANN] Archive 0.1 and version.rb Massimiliano Mirra wrote: > http://www.allruby.com/rpkg/archive-0.1.tar.gz > http://www.allruby.com/rpkg/version.rb > > Both modules are also included in the (to be released) development > version of rpkg. Very cool, Massimiliano. Say, I thought I'd take our private conversation public, and a little further. We'd been talking about the difference between Debians package management system and Gentoo's Portage. Since rpkg is a port of Debian's system, I'll refer to it instead of .deb. There's one other thing that I'd like to see in a package management system: sparse updates. In Portage, everything is compiled on the client; binaries are allowed, but discouraged. rpkg will allow you to compile on the client, but the primary distribution mode is binary. One thing that neither of these systems support is sparse updates. A sparse update is like rsync, CVS, or unison. You only get the diffs between files. This would reduce network traffic in the vast majority of source-based distributions; it probably wouldn't help binary-based distributions too much. However, practically all Ruby packages are distributed as source; either they're Ruby code, or they have some native component that is compiled on the client. Consider a hypothetical system. I use CVS here because CVS is extremely common as a source repository, and CVS clients for practically every OS. FRESH INSTALL: 1) 'cvs checkout' project. 2) Make a tarball from checkout directory. 3) Build and install. 4) Delete build directory UPGRADE: 1) Unpack previous tarball 2) 'cvs up -z3' the directory 3) Rebuild tarball 3) Build and install 4) Delete build directory Rather than downloading a binary in which only a couple of files may have changed, we sparsely download only the diffs. An alternative for Ruby that I was considering for a while was using rsync to directly upgrade a package, but this would only work for pure Ruby projects, and would require that the software source supply an rsync server, which is much less common than CVS. -- |.. "Put your hand on a hot stove for a minute and it seems like an <|> hour. Sit with a pretty girl for an hour and it seems like a /|\ minute. THAT's relativity." /| -- Albert Einstein |