mirror of
				https://github.com/fspc/dswim.git
				synced 2025-11-04 00:35:34 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			756 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			756 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<html>
 | 
						|
<head><title>swim by example</title></head>
 | 
						|
<body  text="#000000" bgcolor="#FFFFe0" link="#0000EF" vlink="#51188E"
 | 
						|
alink="#FF0000">
 | 
						|
</p>
 | 
						|
 | 
						|
<br>
 | 
						|
<h2 align=center>The Swift, Wise, and Intuitive package Manager.</h2>
 | 
						|
<br>
 | 
						|
<p>
 | 
						|
We run a search for case-insensitive matches for the word "quake."
 | 
						|
Because we don't know how many matches the search will find, the
 | 
						|
descriptions of all packages found are supressed with "--no."  Note: "-n"
 | 
						|
pertains to the not-installed (uninstalled) distribution.  
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -n --search quake/i --no
 | 
						|
swim: found 17 package(s)
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>swim keeps a history for all searches.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -hn
 | 
						|
    5  dpsclient-demos dgs dgs-dev freefont gs-aladdin gs-aladdin-manual
 | 
						|
gs-aladdin-manual-de gsfonts-other xpacman abc2ps efax ghostview gnome-gv
 | 
						|
gs gsfonts gsfonts-x11 gv hatman libroxen-tex pacman ppd-gs pstotext
 | 
						|
python-imaging svgalib1-altdev svgalibg1-dev tex4ht type1inst yorick
 | 
						|
    4  lsof-2.2
 | 
						|
    3  libwine-dev
 | 
						|
    2  libwine libwine-dev libwings-dev
 | 
						|
    1  gtkpak pak qstat quake-lib quake2 quake2-bin quake2-ctf quake2-dm
 | 
						|
xqf quake-3dfx quake-ggi quake-gl quake-lib-stub quake-sdl quake-server
 | 
						|
quake-svga quake-x11
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We can access any part of the history which we want.  The first command looks at the
 | 
						|
information pertaining to the package.  The second command shows a listing of the packages
 | 
						|
found for "quake."  Note:  When no numbers are specified for "-S", the number 1 is assumed. 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -qnSi 3
 | 
						|
Package: libwine-dev                 Status: install ok installed
 | 
						|
Version: 0.0.20000109-1              Essential: no
 | 
						|
Section: otherosfs                   Priority: optional
 | 
						|
Installed-Size: 3680                 Source: wine
 | 
						|
Size: 729818                         Architecture: i386
 | 
						|
Distribution: unstable
 | 
						|
Maintainer: Andrew D. Lenharth <andrewl@debian.org>
 | 
						|
Description: Windows Emulator (Development files)
 | 
						|
 This is an ALPHA release of Wine, the MS-Windows emulator.  This is
 | 
						|
 still a developers release and many applications may still not work.
 | 
						|
 .
 | 
						|
 This package consists of the C header files.
 | 
						|
 .
 | 
						|
 Wine is often updated.
 | 
						|
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -qnS  
 | 
						|
gtkpak_0.2-1
 | 
						|
pak_0.2-1
 | 
						|
qstat_2.3e-1
 | 
						|
quake-lib_1.06-9
 | 
						|
quake2_3.20-5
 | 
						|
quake2-bin_3.20-1
 | 
						|
quake2-ctf_1.50-1
 | 
						|
quake2-dm_3.13-1
 | 
						|
xqf_0.8.99-1
 | 
						|
quake-3dfx_0.0.9-1
 | 
						|
quake-ggi_0.0.9-1
 | 
						|
quake-gl_0.0.9-1
 | 
						|
quake-lib-stub_1.9-1
 | 
						|
quake-sdl_0.0.9-1
 | 
						|
quake-server_0.0.9-1
 | 
						|
quake-svga_0.0.9-1
 | 
						|
quake-x11_0.0.9-1
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
After looking at the descriptions for the packages found through the "quake" search we decide
 | 
						|
to narrow down the search to "tools."  Notes:  We could have done this for any part of the
 | 
						|
history by specifying a number.  "--research" will not write the changes to the history,
 | 
						|
"--refinesearch"  will write the changes to the history.  The qstat package is installed, but 
 | 
						|
there is a newer version.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -n --research tool
 | 
						|
Package: gtkpak                      Status: not-installed
 | 
						|
Version: 0.2-1                       Essential: no
 | 
						|
Section: games                       Priority: optional
 | 
						|
Installed-Size: 105                  Source: pak
 | 
						|
Size: 32182                          Architecture: i386
 | 
						|
Distribution: unstable
 | 
						|
Maintainer: Joseph Carter <knghtbrd@debian.org>
 | 
						|
Description: GTK program for manipulating pak archives
 | 
						|
 gtkpak is a nifty GTK tool for manipulating the pak archives used by Quake,
 | 
						|
 Quake 2, and QuakeWorld.  It can view, extract, create, and append pak
 | 
						|
 archives.  pak contains basic command-line utilities that can do much of
 | 
						|
 what gtkpak does without X or GTK, but gtkpak is easier to work with by
 | 
						|
 far.  Installing both won't hurt anything.
 | 
						|
 | 
						|
Package: pak                         Status: not-installed
 | 
						|
Version: 0.2-1                       Essential: no
 | 
						|
Section: games                       Priority: optional
 | 
						|
Installed-Size: 110
 | 
						|
Size: 37412                          Architecture: i386
 | 
						|
Distribution: unstable
 | 
						|
Maintainer: Joseph Carter <knghtbrd@debian.org>
 | 
						|
Description: command-line tools for pak archives
 | 
						|
 This package contains pakx and pakc, a couple of tools for working with the
 | 
						|
 pak archives used by Quake, Quake 2, and QuakeWorld.  pakc can create and
 | 
						|
 add files to archives, pakx can list and extract files from them.  gtkpak
 | 
						|
 is a bit fancier but then again it requires X and GTK.
 | 
						|
 | 
						|
Package: qstat                       Status: > hold ok installed (2.0b-1)
 | 
						|
Version: 2.3e-1                      Essential: no
 | 
						|
Section: games                       Priority: optional
 | 
						|
Installed-Size: 236
 | 
						|
Size: 68652                          Architecture: i386
 | 
						|
Distribution: unstable
 | 
						|
Maintainer: Michael Alan Dorman <mdorman@debian.org>
 | 
						|
Description: Command-line tool for querying quake (and other) servers
 | 
						|
 Qstat provides a simple interface for querying servers for a number
 | 
						|
 of games, including but not limited to quake, quakeworld, quake2,
 | 
						|
 quake3arena, unreal tournament, kingpin and others.
 | 
						|
 | 
						|
swim: found 3 package(s)
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -n --refinesearch tool --no
 | 
						|
swim: found 3 package(s)
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>This is what 1 now looks like in the history:
 | 
						|
<pre>
 | 
						|
    1  gtkpak pak qstat
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>If apt is installed it is possible to find out how other packages will
 | 
						|
be installed. 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -qxnS
 | 
						|
gtkpak_0.2-1
 | 
						|
pak_0.2-1
 | 
						|
qstat_2.3e-1
 | 
						|
Reading Package Lists...
 | 
						|
Building Dependency Tree...
 | 
						|
The following packages will be REMOVED:
 | 
						|
  xqf 
 | 
						|
The following NEW packages will be installed:
 | 
						|
  gtkpak pak 
 | 
						|
The following held packages will be changed:
 | 
						|
  qstat xqf 
 | 
						|
1 packages upgraded, 2 newly installed, 1 to remove and 1065 not upgraded.
 | 
						|
Inst gtkpak
 | 
						|
Remv xqf
 | 
						|
Inst qstat
 | 
						|
Inst pak
 | 
						|
Conf gtkpak
 | 
						|
Conf qstat
 | 
						|
Conf pak
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
Oh no, xqf is going to be removed!  Let's make sure that this isn't a
 | 
						|
package we want removed, but since we noticed a newer version of this
 | 
						|
package is included in the unstable distribution, let's find out what's
 | 
						|
going on here! 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -qnxi xqf
 | 
						|
Package: xqf                         Status: > hold ok installed (0.5-1)
 | 
						|
Version: 0.8.99-1                    Essential: no
 | 
						|
Section: games                       Priority: optional
 | 
						|
Installed-Size: 182
 | 
						|
Size: 80426                          Architecture: i386
 | 
						|
Distribution: unstable
 | 
						|
Maintainer: Michael Alan Dorman <mdorman@debian.org>
 | 
						|
Description: X-based Quake Server Browser
 | 
						|
 XQF allows one to browse and choose quake servers to play on.
 | 
						|
Reading Package Lists...
 | 
						|
Building Dependency Tree...
 | 
						|
Some packages could not be installed. This may mean that you have
 | 
						|
requested an impossible situation or if you are using the unstable
 | 
						|
distribution that some required packages have not yet been created
 | 
						|
or been moved out of Incoming.
 | 
						|
 | 
						|
Since you only requested a single operation it is extremely likely that
 | 
						|
the package is simply not installable and a bug report against
 | 
						|
that package should be filed.
 | 
						|
The following information may help to resolve the situation:
 | 
						|
 | 
						|
Sorry, but the following packages have unmet dependencies:
 | 
						|
  xqf: Conflicts: qstat (< 2.1z-2.1a-0.1) but 2.0b-1 is to be installed
 | 
						|
E: Sorry, broken packages
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -qnT qstat
 | 
						|
qstat_2.3e-1
 | 
						|
Depends: libc6 (>= 2.1.2)
 | 
						|
Conflicts: xqf (<< 0.9.2-1)
 | 
						|
</pre>
 | 
						|
 | 
						|
<p> As seen above, the reason why xqf has to be removed is due to a
 | 
						|
dependency in qstat which the packager (Michael Alan Dorman
 | 
						|
<mdorman@debian.org>) will have to resolve by uploading a newer version of
 | 
						|
xqf to the distribution.  Sometimes necessary packages are still in
 | 
						|
Debian's Incoming directory at the ftp site, and not in the distribution,
 | 
						|
so we may want to check there first.  If this isn't the case we will send
 | 
						|
a bug report to Debian's Bug Tracking System pointing out that there needs
 | 
						|
to be a newer version of xqf.  In the meantime we have decided that we
 | 
						|
only want gtkpak and pak.  We will use swim's editing capabilities to take
 | 
						|
gstat off the list.  Notes:  Another possibility for the bug shown above
 | 
						|
is that apt's cache needs to be updated to reflect the changes in Debain's
 | 
						|
distribution by using "swim --apt --update."  When the history is edited
 | 
						|
with "--stdin"  the history makes a new entry reflecting the change.  The
 | 
						|
full history is accessible from "--stdin."  Anybody can send a bug to
 | 
						|
Debian's Bug Tracking System.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -qxznS --stdin 
 | 
						|
swim: type exit to finish --stdin
 | 
						|
swim: gtkpak pak      
 | 
						|
swim: exit
 | 
						|
Reading Package Lists... Done
 | 
						|
Building Dependency Tree... Done
 | 
						|
The following NEW packages will be installed:
 | 
						|
  gtkpak pak 
 | 
						|
0 packages upgraded, 2 newly installed, 0 to remove and 1067 not upgraded.
 | 
						|
Need to get 69.6kB of archives. After unpacking 220kB will be used.
 | 
						|
Get:1 ftp://ftp.debian.org unstable/main gtkpak 0.2-1 [32.2kB]
 | 
						|
Get:2 ftp://ftp.debian.org unstable/main pak 0.2-1 [37.4kB]                    
 | 
						|
Fetched 69.6kB in 1m15s (922B/s)                                               
 | 
						|
Selecting previously deselected package gtkpak.
 | 
						|
(Reading database ... 106015 files and directories currently installed.)
 | 
						|
Unpacking gtkpak (from .../archives/gtkpak_0.2-1_i386.deb) ...
 | 
						|
Selecting previously deselected package pak.
 | 
						|
Unpacking pak (from .../archives/pak_0.2-1_i386.deb) ...
 | 
						|
Setting up gtkpak (0.2-1) ...
 | 
						|
 | 
						|
Setting up pak (0.2-1) ...
 | 
						|
gtkpak_0.2-1
 | 
						|
pak_0.2-1
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
If we don't have apt we can still download these packages, and their sources.  Here is another
 | 
						|
way to do the same thing we did above without using apt.  Notes:  This time we saved some
 | 
						|
typing by doing "--stdin" with "--research."  We specified "--source" with "--ftp"  to get the
 | 
						|
sources as well as the packages, or we could have just gotten the sources by themselves by
 | 
						|
specifying "--source_only" with "--ftp."  Changes made while in "--stdin" are written to the
 | 
						|
history. 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -n --search quake/i --no
 | 
						|
swim: found 17 package(s)
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -n --research tool --no --stdin --ftp --source
 | 
						|
swim: found 3 package(s)
 | 
						|
swim: type exit to finish --stdin
 | 
						|
swim: gtkpak pak      
 | 
						|
swim: exit
 | 
						|
swim: connected to ftp.debian.org
 | 
						|
swim: logged in to ftp.debian.org
 | 
						|
swim: downloading gtkpak_0.2-1.deb (32182 bytes)
 | 
						|
gtkpak_0.2-1  49823b28c9599dbf94e290e28e695bc2  OK
 | 
						|
swim: successful retrieval of gtkpak_0.2-1.deb
 | 
						|
swim: downloading pak_0.2-1.diff.gz (2623 bytes)
 | 
						|
swim: successful retrieval of pak_0.2-1.diff.gz
 | 
						|
swim: downloading pak_0.2-1.dsc (825 bytes)
 | 
						|
swim: successful retrieval of pak_0.2-1.dsc
 | 
						|
swim: downloading pak_0.2.orig.tar.gz (26972 bytes)
 | 
						|
swim: successful retrieval of pak_0.2.orig.tar.gz
 | 
						|
swim: downloading pak_0.2-1.deb (37412 bytes)
 | 
						|
pak_0.2-1  55842f97f80c5c37415a93a7f0709171  OK
 | 
						|
swim: successful retrieval of pak_0.2-1.deb
 | 
						|
swim: pak_0.2-1.diff.gz already exists
 | 
						|
swim: pak_0.2-1.dsc already exists
 | 
						|
swim: pak_0.2.orig.tar.gz already exists
 | 
						|
swim: logged out
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We notice that the sources only had to be downloaded once.  Looking at the packages'
 | 
						|
information we notice both packages share the same sources as indicated in the "Source" field. 
 | 
						|
The field is absent for the pak package because the source name is exactly the same as the
 | 
						|
package's name, but for the gtkpak package this isn't the case, so the "Source" field is
 | 
						|
present.
 | 
						|
 | 
						|
<p>
 | 
						|
We can find the packages and the sources in their proper location on our local archive mirror. 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ ls ~/.swim/pub/debian/dists/unstable/main/source/games
 | 
						|
pak_0.2-1.diff.gz  pak_0.2-1.dsc  pak_0.2.orig.tar.gz
 | 
						|
linuxalive:/home/swim/SWIMANIA$ ls ~/.swim/pub/debian/dists/unstable/main/binary-i386/games/
 | 
						|
gtkpak_0.2-1.deb  pak_0.2-1.deb
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We can go examine the packages.  It is useful to check out the changelog and the copyright.
 | 
						|
This is the initial release for this program.  Note: "-v" will show the files in long format
 | 
						|
(ls -l), "--df" show the directories as well as the files.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ cd ~/.swim/pub/debian/dists/unstable/main/binary-i386/games/
 | 
						|
linuxalive:~/.swim/pub/debian/dists/unstable/main/binary-i386/games$ swim -qpl --copyright --changelog gtkpak_0.2-1.deb 
 | 
						|
#####copyright for gtkpak_0.2-1.deb#####
 | 
						|
 | 
						|
taken from the README:
 | 
						|
 | 
						|
(c) Michael Vance, 1999
 | 
						|
    briareos@lokigames.com
 | 
						|
    mkv102@psu.edu
 | 
						|
 | 
						|
0. Intro
 | 
						|
 | 
						|
gtkpak is a PAK file viewer for Gtk+. What are PAK files? A PAK file is used
 | 
						|
in id software games such as Quake and Quake 2, and their spin-offs. Just
 | 
						|
imagine collapsing an entire directory scheme into a big wad of files, and
 | 
						|
there you have a PAK file.
 | 
						|
 | 
						|
The three binaries are built around the interface provided in pakfile.h,
 | 
						|
which is a C++ class that allows access to the contents of a PAKFile, including
 | 
						|
searching and extracting from an already existing PAK file, to add files and
 | 
						|
then writing a new PAK file. The three binaries are then just front-ends
 | 
						|
to this functionality, in one way or another.
 | 
						|
 | 
						|
While it's tempting to make the classes provided in pakfile.h into a shared
 | 
						|
library, it's probably unnecessary. But it does make one tingly, eh?
 | 
						|
 | 
						|
And all this is GPL'ed, of course. See the file COPYING for license details.
 | 
						|
 | 
						|
 | 
						|
#####changelog.Debian.gz for gtkpak_0.2-1.deb#####
 | 
						|
 | 
						|
pak (0.2-1) unstable; urgency=low
 | 
						|
 | 
						|
  * Initial Release.
 | 
						|
 | 
						|
 -- Joseph Carter <knghtbrd@debian.org>  Thu,  8 Jul 1999 17:35:38 -0700
 | 
						|
 | 
						|
Local variables:
 | 
						|
mode: debian-changelog
 | 
						|
End:
 | 
						|
 | 
						|
usr/bin/gtkpak
 | 
						|
usr/share/man/man6/gtkpak.6.gz
 | 
						|
usr/doc/gtkpak/README
 | 
						|
usr/doc/gtkpak/copyright
 | 
						|
usr/doc/gtkpak/examples/pak0.pak
 | 
						|
usr/doc/gtkpak/changelog.Debian.gz
 | 
						|
usr/lib/menu/gtkpak
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>Let's see if there is a menu entry, and check the MD5 checksum. 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:~/.swim/pub/debian/dists/unstable/main/binary-i386/games$ swim -qpm gtkpak_0.2-1.deb --md5sum
 | 
						|
#####menu for gtkpak_0.2-1.deb(gtkpak)#####
 | 
						|
?package(gtkpak):needs=X11 section=Games/Adventure\
 | 
						|
  title="GtkPak" hints=Quake command="/usr/bin/gtkpak"
 | 
						|
 | 
						|
gtkpak_0.2-1  49823b28c9599dbf94e290e28e695bc2  OK
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>It would be interesting to look at the man page for gtkpak.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:~/.swim/pub/debian/dists/unstable/main/binary-i386/games$ swim -qpd gtkpak_0.2-1.deb 
 | 
						|
gtkpak_0.2-1
 | 
						|
 | 
						|
usr/share/man/man6/gtkpak.6.gz
 | 
						|
usr/doc/gtkpak/README
 | 
						|
usr/doc/gtkpak/copyright
 | 
						|
usr/doc/gtkpak/examples/pak0.pak
 | 
						|
usr/doc/gtkpak/changelog.Debian.gz
 | 
						|
 | 
						|
linuxalive:~/.swim/pub/debian/dists/unstable/main/binary-i386/games$ swim -qp gtkpak_0.2-1.deb --extract PWD\!usr/share/man/man6/gtkpak.6.gz
 | 
						|
gtkpak_0.2-1
 | 
						|
 | 
						|
 | 
						|
swim: gtkpak.6.gz has been extracted
 | 
						|
linuxalive:~/.swim/pub/debian/dists/unstable/main/binary-i386/games$ ls
 | 
						|
gtkpak.6.gz  gtkpak_0.2-1.deb  pak_0.2-1.deb
 | 
						|
linuxalive:~/.swim/pub/debian/dists/unstable/main/binary-i386/games$ zcat gtkpak.6.gz | nroff -man | less
 | 
						|
"man page for gtkpak will be visible"
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We could also extract the whole archive onto our system.  Note:  First, we checked to make
 | 
						|
sure we wouldn't copy over any files from other installed packages.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:~/.swim/pub/debian/dists/unstable/main/binary-i386/games/test$ cd /
 | 
						|
linuxalive:/$ swim -qp ~/.swim/pub/debian/dists/unstable/main/binary-i386/games/gtkpak_0.2-1.deb --extract ALL
 | 
						|
gtkpak_0.2-1
 | 
						|
 | 
						|
 | 
						|
swim: gtkpak_0.2-1.deb has been extracted
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
If we have installed the packages with apt, we can check to see what kind of changes have been
 | 
						|
made to our system. 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim --db --check
 | 
						|
checking for new, changed, and removed packages
 | 
						|
NEW gtkpak
 | 
						|
NEW pak
 | 
						|
 | 
						|
       TOTAL
 | 
						|
       -----
 | 
						|
NEW 2
 | 
						|
GONE 0
 | 
						|
CHANGED 0
 | 
						|
CHANGED STATUS 0
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>At this point the database for our installation hasn't been updated.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -q pak 
 | 
						|
package pak is not installed
 | 
						|
linuxalive:/home/swim/SWIMANIA$ 
 | 
						|
 | 
						|
To update the database we will issue "--db" without "--check."
 | 
						|
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim --db        
 | 
						|
checking for new, changed, and removed packages
 | 
						|
NEW gtkpak
 | 
						|
NEW pak
 | 
						|
 | 
						|
       TOTAL
 | 
						|
       -----
 | 
						|
NEW 2
 | 
						|
GONE 0
 | 
						|
CHANGED 0
 | 
						|
CHANGED STATUS 0
 | 
						|
 | 
						|
 | 
						|
N|C|CS 2
 | 
						|
#2 N|C pak.list
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -q pak
 | 
						|
pak_0.2-1
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We can check to see if the uninstalled distribution had any changes.  Notes: The results below
 | 
						|
indicate the changes found in the new Package databases that have been downloaded by updating
 | 
						|
apt; if we don't have apt then swim's major mode "--ftp" can be used with "DF."  With "--ndb" 
 | 
						|
use APT to indicate apt sources, or DF to indicate Package databases gotten directly through
 | 
						|
swim's "--ftp".  If we originally made the uninstalled distribution with an uninstalled
 | 
						|
filesystem by using "--Contents DF" then to update the uninstalled distribution "--Contents
 | 
						|
DF" should be used again; this isn't necessary when running a check.  To rebuild
 | 
						|
(--rebuildndb), update (--ndb), or check a distribution other than the default one, use
 | 
						|
"--dists stable", "--dists frozen" or "--dists unstable."  The newest Packages can
 | 
						|
automatically be picked by using "--cron."
 | 
						|
 | 
						|
<p>
 | 
						|
A little blurb:  Although not Debian approved or sanctioned, we find the unstable distribution
 | 
						|
acceptably stable in relation to certain well-known commercial distributions despite
 | 
						|
infrequent packaging bugs like the one shown in the xqf example above.  The Debian
 | 
						|
distribution adheres to a self-imposed level of quality found in no other distribution in the
 | 
						|
world.  Usually, unstable undergoes many changes so there isn't a time advantage over updating
 | 
						|
DF versus rebuilding DF, but this process is easier on system resources.  On the other hand,
 | 
						|
updating FDBDF (no uninstalled filesystem) is faster. 
 | 
						|
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim --apt --update; swim --ftp --Contents DF --onec;
 | 
						|
"output not shown"
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim --ndb --check APT 2> changes-today
 | 
						|
###         Site                     Date              Size (bytes)  Release
 | 
						|
 | 
						|
                                     CONTRIB
 | 
						|
  1     ftp.debian.org       Mon Jan 17 17:57:57 2000    112774        2.2
 | 
						|
 | 
						|
                                     NON-FREE
 | 
						|
  1     ftp.debian.org       Sun Jan 16 17:26:23 2000    279821        2.2
 | 
						|
 | 
						|
                                       MAIN
 | 
						|
  1     ftp.debian.org       Mon Jan 17 17:57:12 2000    3048732       2.2
 | 
						|
 | 
						|
swim: for CONTRIB, which ### do you want?: 1
 | 
						|
swim: for NON-FREE, which ### do you want?: 1
 | 
						|
swim: for MAIN, which ### do you want?: 1
 | 
						|
checking for new, changed, and removed packages
 | 
						|
 | 
						|
       TOTAL
 | 
						|
       -----
 | 
						|
NEW 12
 | 
						|
GONE 16
 | 
						|
CHANGED 54
 | 
						|
CHANGED REVISION 162
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We can view all the changes because we stored them in a file.  We can use swim to look at all
 | 
						|
the changed packages except for the new ones which will be visible once we rebuild or update. 
 | 
						|
By looking at this file we are provided a view of the inner workings of Debian development. 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ cat changed-today | less
 | 
						|
CHANGED-REVISION gnujsp
 | 
						|
CHANGED iraf
 | 
						|
CHANGED iraf-common
 | 
						|
CHANGED iraf-ibin
 | 
						|
CHANGED iraf-noaobin
 | 
						|
CHANGED-REVISION jserv
 | 
						|
CHANGED-REVISION mailcrypt
 | 
						|
CHANGED plugger
 | 
						|
CHANGED-REVISION sarien
 | 
						|
NEW webrt
 | 
						|
"part of output not shown"
 | 
						|
GONE tinytable-zope
 | 
						|
GONE tip
 | 
						|
</pre>
 | 
						|
 | 
						|
<p> We decide to update with "--ndb" rather than to rebuild with
 | 
						|
"--rebuildndb." 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim --ndb APT --Contents DF --cron 2> changed-today
 | 
						|
checking for new, changed, and removed packages
 | 
						|
 | 
						|
       TOTAL
 | 
						|
       -----
 | 
						|
NEW 12
 | 
						|
GONE 16
 | 
						|
CHANGED 54
 | 
						|
CHANGED REVISION 162
 | 
						|
G|C|CR 232
 | 
						|
#232 VIRTUAL G|C|CR zicq.list                                        
 | 
						|
Copying new Contents
 | 
						|
Compressing Contents
 | 
						|
N|C|CR 228
 | 
						|
#228 VIRTUAL N|C|CR zicq.list                                         
 | 
						|
#22 NO-C zope-siteaccess.list                        
 | 
						|
Appending search databases
 | 
						|
Updating status
 | 
						|
 | 
						|
Sun Jan 23 14:59:04 2000  to  Sun Jan 23 16:39:23 2000
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We were wondering whether it was time to update gv, but we found out that there was only a
 | 
						|
debian-revision change "r>" which means that the source code hasn't changed.  There is no need
 | 
						|
to update right now. 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/usr/lib/perl5/SWIM$ which gv
 | 
						|
/usr/X11R6/bin/gv
 | 
						|
linuxalive:/usr/lib/perl5/SWIM$ cd /usr/X11R6/bin
 | 
						|
linuxalive:/usr/X11R6/bin$ swim -qf gv
 | 
						|
gv_1:3.5.8-7
 | 
						|
linuxalive:/usr/X11R6/bin$ swim -qfni gv
 | 
						|
Package: gv                          Status: r> hold ok installed (1:3.5.8-7)
 | 
						|
Version: 1:3.5.8-15                  Essential: no
 | 
						|
Section: text                        Priority: optional
 | 
						|
Installed-Size: 477
 | 
						|
Size: 224778                         Architecture: i386
 | 
						|
Distribution: unstable
 | 
						|
Maintainer: Marco Pistore <pistore@debian.org>
 | 
						|
Description: A PostScript and PDF viewer for X using 3d Athena Widgets
 | 
						|
 `gv' is a comfortable viewer of PostScript and PDF files for the X
 | 
						|
 Window System.
 | 
						|
 .
 | 
						|
 It uses the `ghostscript' PostScript(tm) interpreter and is based
 | 
						|
 on the classic X front-end for `gs', `ghostview'. It is more
 | 
						|
 comfortable and more powerful than `ghostview'.
 | 
						|
 .
 | 
						|
 Some features as e.g. PDF files or anti-aliasing are only supported
 | 
						|
 if a recent ghostscript (4.0 or later) is installed.  With
 | 
						|
 anti-aliasing turned on, the text is very crisp and readable, with no
 | 
						|
 `stepping' on the slants at all.
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
While we were in this directory we decided to do a little research.  It is interesting to note
 | 
						|
that for the installed system there are 14 files which don't belong to any packages. There
 | 
						|
could be a variety of reasons for this (maybe we are slobs); this is good stuff to know. 
 | 
						|
Notes:  To see the total list just add "-t" to the existing command-line options.  There is a
 | 
						|
big difference in using "." and "*",  "." is the same as saying "./" but it only lists the
 | 
						|
same package once, whereas "*" would look at all the files in the immediate directory and if
 | 
						|
two files belong to the same package, that package will be shown twice for each file, it also
 | 
						|
reports if a file doesn't belong to a package. 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/usr/X11R6/bin$ swim -qf .
 | 
						|
use --total or -t to see all 202 packages
 | 
						|
linuxalive:/usr/X11R6/bin$ swim -qfn .
 | 
						|
use --total or -t to see all 420 packages
 | 
						|
linuxalive:/usr/X11R6/bin$ swim -qft * | grep "not owned" | wc -l
 | 
						|
     14
 | 
						|
linuxalive:/usr/X11R6/bin$ swim -qfnt * | grep "not owned" | wc -l
 | 
						|
    162
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We notice a file in the lib directory, and we wonder what it belongs to.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/lib$ swim -qf libthread_db-1.0.so --shlibs
 | 
						|
libc6_2.1.2-11
 | 
						|
Shlibs:
 | 
						|
ld-linux 2 libc6 (>= 2.1.2)
 | 
						|
libBrokenLocale 1 libc6 (>= 2.1.2)
 | 
						|
.. everything not shown ..
 | 
						|
libthread_db 1 libc6 (>= 2.1.2)
 | 
						|
libutil 1 libc6 (>= 2.1.2)
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We want to find out what dependencies apt has.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/lib$ swim -qfnT /usr/bin/apt-get
 | 
						|
apt_0.3.16
 | 
						|
Depends: libc6, libc6 (>= 2.1), libc6 (>= 2.1.2), libstdc++2.10
 | 
						|
Suggests: dpkg-dev
 | 
						|
Provides: libapt-pkg2.6
 | 
						|
Replaces: deity, libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)
 | 
						|
Conflicts: deity
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We need a header file called w32skrnl.h.  We are in luck it's already on our system.  Notes: 
 | 
						|
We could have done "locate w32skrnl.h" and then done a "swim -qf", but we haven't updated our
 | 
						|
locatedb in months.  The package installation will be tested by apt if it exists. 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/usr/include/wine$ swim -xn --ps w32skrnl\.h
 | 
						|
Package: libwine-dev                 Status: install ok installed
 | 
						|
Version: 0.0.20000109-1              Essential: no
 | 
						|
Section: otherosfs                   Priority: optional
 | 
						|
Installed-Size: 3680                 Source: wine
 | 
						|
Size: 729818                         Architecture: i386
 | 
						|
Distribution: unstable
 | 
						|
Maintainer: Andrew D. Lenharth <andrewl@debian.org>
 | 
						|
Description: Windows Emulator (Development files)
 | 
						|
 This is an ALPHA release of Wine, the MS-Windows emulator.  This is
 | 
						|
 still a developers release and many applications may still not work.
 | 
						|
 .
 | 
						|
 This package consists of the C header files.
 | 
						|
 .
 | 
						|
 Wine is often updated.
 | 
						|
 | 
						|
swim: found 1 package(s)
 | 
						|
Reading Package Lists...
 | 
						|
Building Dependency Tree...
 | 
						|
Sorry, libwine-dev is already the newest version
 | 
						|
0 packages upgraded, 0 newly installed, 0 to remove and 1067 not upgraded.
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
Sometimes it is nice to know the total of what we have installed.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/usr/X11R6/bin$ swim -qa
 | 
						|
use --total or -t to see all 1449 packages
 | 
						|
linuxalive:/usr/X11R6/bin$ swim -qf /
 | 
						|
use --total or -t to see all 1449 packages
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -qan   
 | 
						|
use --total or -t to see all 4525 packages
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We can check the MD5 checksum for all the configuation files on the system.  Notes:  MD5
 | 
						|
checksum can be performed on "-l", "-d", "-c", or "-p."   This can only be performed on the
 | 
						|
installed system.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/home/swim/SWIMANIA$ swim -qact --md5sum
 | 
						|
a2ps_4.10.2-4
 | 
						|
 /etc/a2ps.cfg  eb909349a1bb2d1f4b4adc7ab1f75e56  OK
 | 
						|
 | 
						|
acct_6.3.2-4
 | 
						|
 /etc/cron.daily/acct  d5e16c7f601c3a43d88fc8ede714c6e2  OK
 | 
						|
 /etc/cron.monthly/acct  9ca2c358e430f94c9ae00a1ce54e6e96  OK
 | 
						|
 /etc/init.d/acct  2f978d8517077c77e3262d7a6096fe2f  OK
 | 
						|
 | 
						|
autolog_0.34-5
 | 
						|
 /etc/autolog.conf  b6ae10782ce13c45cbe72f9308b4caa1  OK
 | 
						|
 /etc/cron.d/autolog  805d268ea44c645299defc1c14495282  MISSING
 | 
						|
 | 
						|
cfengine_1.4.9-2
 | 
						|
 /etc/cfengine/cfengine.conf  fd79d9462e92f88aa6c563f39e3e10d5  OK
 | 
						|
 /etc/cron.daily/cfengine  ac6a42f3be907b50e52834ae9d41fdbd  FAILED
 | 
						|
 /etc/cron.weekly/cfengine  fbdd90ecf2e68a4ced6a6abbffd32f62  OK
 | 
						|
"rest of output not shown"
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>We check to see what groups exist.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/usr/lib/perl5/SWIM$ swim -q --allgroups
 | 
						|
"output not shown"
 | 
						|
linuxalive:/usr/lib/perl5/SWIM$ swim -qn --allgroups
 | 
						|
admin                     base                      comm
 | 
						|
contrib/admin             contrib/devel             contrib/doc
 | 
						|
contrib/games             contrib/graphics          contrib/interpreters
 | 
						|
contrib/libs              contrib/mail              contrib/math
 | 
						|
contrib/misc              contrib/net               contrib/news
 | 
						|
"rest of output not shown"
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We happen to be hamradio enthusiasts.  Let's see what packages exist in the hamradio group.
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/usr/lib/perl5/SWIM$ swim -qng hamradio
 | 
						|
acfax_981011-3
 | 
						|
ax25-apps_0.0.4-1
 | 
						|
ax25-tools_0.0.5-1
 | 
						|
colrconv_0.99.2-4
 | 
						|
dgipip_0.1-2
 | 
						|
gc_1.07-3
 | 
						|
hamsoft_0.1.1-1
 | 
						|
"rest of the output not shown"
 | 
						|
</pre>
 | 
						|
 | 
						|
<p>
 | 
						|
We edit the hamradio group package list with "--stdin."  Notes: "--stdin" needs to be
 | 
						|
called with either "--ftp", "-x", "-xyz", "-xz", "--purge", "-r", or "--remove" to work. This
 | 
						|
is a readline interface.  If we are in emacs mode (see man bash) here are some commands we can
 | 
						|
use to make the process easier. 
 | 
						|
 | 
						|
<p>
 | 
						|
Note: The key bindings may be different on your system.
 | 
						|
<br>Ctrl-a  =   move to the beginning of the line
 | 
						|
<br>Ctrl-e  =   move to the end of the line
 | 
						|
<br>Ctrl-w  =   erase (kill) one word backward
 | 
						|
<br>Esc-d   =   kill one word forward
 | 
						|
<br>Esc-b   =   move one word backward 
 | 
						|
<br>Esc-f   =   move one word forward 
 | 
						|
<br>Ctrl-k  =   kill forward to the end of the line 
 | 
						|
<br>Ctrl-y  =   retrieve (yank) last item killed
 | 
						|
<br>Ctrl-r  =   search backward
 | 
						|
<br>Esc-<   =   move to the beginning of the history
 | 
						|
<br>Esc->   =   move to the end of the history 
 | 
						|
 | 
						|
<pre>
 | 
						|
linuxalive:/usr/lib/perl5/SWIM$ swim -qng hamradio --stdin --ftp  
 | 
						|
swim: type exit to finish --stdin
 | 
						|
swim: acfax ax25-apps ax25-tools colrconv dgipip gc hamsoft icom jiffy jiffy-per
 | 
						|
l-tk libax25 libax25-dev logconv morse nec node p10cfgd pileup predict rspfd sccw twclock twcw
 | 
						|
twlog unixcw wwl wxd xconvers xnecview z8530-utils z8530-utils2
 | 
						|
</pre> 
 | 
						|
 | 
						|
<p>
 | 
						|
We are finding new ways to swim everyday;  we often solve problems in minutes which used
 | 
						|
to take an hour or more to solve. If you find a novel use for swim, please tell us, and we
 | 
						|
will add it to these examples. 
 | 
						|
 | 
						|
</body>                       
 | 
						|
</html>
 | 
						|
 |