Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
#######
#
# E-scripts on dpkg, .debs, .dscs...
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://angg.twu.net/e/dpkg.e>
#           or at <http://angg.twu.net/e/dpkg.e.html>.
#        See also <http://angg.twu.net/emacs.html>,
#                 <http://angg.twu.net/.emacs[.html]>,
#                 <http://angg.twu.net/.zshrc[.html]>,
#                 <http://angg.twu.net/escripts.html>,
#             and <http://angg.twu.net/>.
#
#######





# «.var_lib_dpkg_info»		(to "var_lib_dpkg_info")
# «.grep-debian-docs»		(to "grep-debian-docs")
# «.dpkg.source»		(to "dpkg.source")
# «.cmpversions.c»		(to "cmpversions.c")
# «.grep-dctrl»			(to "grep-dctrl")
# «.sizeofinstalleddebs»	(to "sizeofinstalleddebs")
# «.installeddebs»		(to "installeddebs")
# «.pfilenames»			(to "pfilenames")
# «.build-depends_via_chroot»	(to "build-depends_via_chroot")
# «.testing-.debs»		(to "testing-.debs")
# «.all-installed-.debs»	(to "all-installed-.debs")
# «.potatocd-2000jun06»		(to "potatocd-2000jun06")
# «.dpkg»			(to "dpkg")
# «.install-info»		(to "install-info")
# «.dpkg:alternatives»		(to "dpkg:alternatives")
# «.dpkg:diversions»		(to "dpkg:diversions")
# «.dpkg:debversions»		(to "dpkg:debversions")
# «.dpkg:configscripts»		(to "dpkg:configscripts")
# «.dpkg-dev»			(to "dpkg-dev")
# «.dpkg-multicd»		(to "dpkg-multicd")
# «..disk/info»			(to ".disk/info")
# «.Packages.cd»		(to "Packages.cd")
# «.Contents-i386»		(to "Contents-i386")
# «.mkcontents»			(to "mkcontents")
# «.local_apt_repository»	(to "local_apt_repository")
# «.empty_packages»		(to "empty_packages")
# «.dpkg-checkbuilddeps»	(to "dpkg-checkbuilddeps")





#####
#
# pdsc
# 2001jan17
#
#####

# (find-angg ".zshrc" "pdsc")
# (find-es "bash" "pdsc")
# (eeman "1 dpkg-source")
# (find-fline "/usr/bin/dpkg-source/")




#####
#
# /var/lib/dpkg/info/
# 2001jan17
#
#####

# «var_lib_dpkg_info»  (to ".var_lib_dpkg_info")
#*
# The files there have very few extensions:
cd /var/lib/dpkg/info/
'ls' | awk -F . '{print $NF}' | sort | uniq | tee ~/o

# conffiles config list md5sums postinst postrm preinst prerm shlibs
# templates

# (find-fline "/usr/doc/debconf/specification.txt.gz")
# (find-efile "")
#*
l *.conffiles
l *.config
l *.copyright
l *.shlibs
l *.templates

l *.list
l *.md5sums
l *.postinst
l *.postrm
l *.preinst
l *.prerm

#*



#####
#
# greeping the main debian docs
# 2001jan17
#
#####

# «grep-debian-docs»  (to ".grep-debian-docs")
# (find-status "task-debian-devel")
# (find-status "emacsen-common")
# (find-vldifile "emacsen-common.list")
# (find-fline "/usr/doc/emacsen-common/")
# (find-status "doc-debian")
# (find-vldifile "doc-debian.list")
# (find-fline "/usr/doc/debian/")

#*
rm -Rv /tmp/debdocs/
mkdir  /tmp/debdocs/
cp -iv \
  /usr/doc/debian-policy/fhs/fhs.txt.gz			\
  /usr/doc/debian-policy/fsstnd/fsstnd-1.2.txt.gz	\
  /usr/doc/debian-policy/menu-policy.text.gz		\
  /usr/doc/debian-policy/mime-policy.text.gz		\
  /usr/doc/debian-policy/policy.text.gz			\
  /usr/doc/debian-policy/proposal.text.gz		\
  /usr/doc/debian-policy/upgrading-checklist.text.gz	\
  /usr/doc/debian-policy/virtual-package-names-list.text.gz	\
  /usr/doc/debian/FAQ/debian-faq.txt.gz			\
  /usr/doc/developers-reference/developers-reference.txt.gz	\
  /usr/doc/emacsen-common/debian-emacs-policy.gz	\
  /usr/doc/maint-guide/maint-guide.txt.gz		\
  /usr/doc/packaging-manual/packaging.text.gz		\
    /tmp/debdocs/
cd /tmp/debdocs/
gzip -dv *.gz
# (find-fline "/tmp/debdocs/")
# Now we can grep all that.

#*







#####
#
# dpkg source
# 2000nov26
#
#####

# «dpkg.source»  (to ".dpkg.source")
#*
pdsc $SDEBIAN/dists/potato/main/source/base/dpkg_1.6.14.dsc
cd /usr/src/dpkg-1.6.14/
find * -name '*.[ch]' > .files.ch
etags $(<.files.ch)

# (find-dpkgfile "configure.in" "CFLAGS=\"-D_REENTRANT -D_GNU_SOURCE -O2\"")
patch -b -p0 configure.in <<'%%%'
115c115,116
<  CFLAGS="-D_REENTRANT -D_GNU_SOURCE -O2"
---
>  #CFLAGS="-D_REENTRANT -D_GNU_SOURCE -O2"
>  CFLAGS="-D_REENTRANT -D_GNU_SOURCE -g -pg"
%%%

autoconf
#debian/rules binary		|& tee odrb
LDFLAGS=-pg debian/rules binary-dpkg	|& tee odrb
# I get an dpkg-deb error about the permissions of a dir, but that is
# irrelevant for my purposes now (that are just to recompile with -g)
#find * -perm +0111

#*
# (find-es "crim" "gprof")
# (find-node "(gprof)Call Graph")
# (find-dpkgfile "INSTALL" "LDFLAGS")
# (find-dpkgfile "Makefile.conf.in")
# (find-dpkgfile "configure")

cd /usr/src/dpkg-1.6.14/build/main/
./dpkg --compare-versions foo-3.21.deb le foo-3.2.deb
#laf gmon.out
gprof dpkg > o
gprof -b dpkg > o-b

# (find-node "(binutils)nm")
nm -As *.o > o.nm
grep -i ' T ' o.nm > o.nm-

# (find-dpkgfile "build/main/")

#*
# (gdbk-gdb t ee-dpkgdir "build/main/dpkg")
set args --compare-versions foo-3.21.deb le foo-3.2.deb
br main
br cmpversions
run

#*
# (find-dpkgfile "")
# (find-dpkgfile "debian/")
# (find-dpkgfile "debian/rules")
# (find-dpkgfile "odrb")

dpkg --compare-versions foo-3.21.deb le foo-3.2.deb




#####
#
# cmpversions.c (with functions stolen from dpkg)
# 2001mar03
#
#####

# «cmpversions.c»  (to ".cmpversions.c")
#*
# (find-fline "~/LUA/cmpversions.c")
cd ~/LUA
gcc -I/usr/src/dpkg-1.6.14/{include,build{,/include}} \
  -g -o cmpversions cmpversions.c

false
echo $?
./cmpversions foo-3.21.deb le foo-3.2.deb
echo $?

true
echo $?
./cmpversions foo-3.21.deb ge foo-3.2.deb
echo $?

#./cmpversions foo-3.21.deb mmm!! foo-3.2.deb

#*
cd ~/LUA/
etags cmpversions.c
# (code-c-d "cmpv" "~/LUA/")
# (find-cmpvtag "main")

#*
cd ~/LUA/
cflow -I/usr/src/dpkg-1.6.14/{include,build{,/include}} cmpversions.c \
  |& tee ~/o
# (find-fline "~/o")

#*






#####
#
# grep-dctrl
# 2000jun05
#
#####

# «grep-dctrl»  (to ".grep-dctrl")
# (find-status "grep-dctrl")
# (find-vldifile "grep-dctrl.list")
# (find-fline "/usr/doc/grep-dctrl/")

# (find-man "1 grep-dctrl")
# (find-man "1 grep-status")
# (find-man "1 grep-available")
# (find-fline "/etc/grep-dctrl.rc")

# (find-fline "/var/lib/dpkg/status")
# (find-packhw3 "ch-versions.html" "epoch")

grep-dctrl scheme \
    /big/potato/dists/potato/{main,contrib,non-free}/binary-i386/Packages \
    $SNUDEBIAN/dists/potato/non-US/main/binary-i386/Packages
grep-status -F Status ' installed'

grep-available -F Package -X 'a2ps'
grep-available -F Package -r 'a2ps\|acroread\|adduser'
grep-available -F Package -e 'a2ps|acroread|adduser'
grep-available -F Package -e '^a2ps$'
grep-available -F Package -e '^(a2ps|acroread|adduser)$'

# «sizeofinstalleddebs»  (to ".sizeofinstalleddebs")
# (written in 2002dec01)
#
# ~/o  - a list with the names of all installed packages: (find-fline "~/o")
# ~/o2 - a big regexp
# ~/o3 - an abridged version of /var/lib/dpkg/available that lists only the
#        installed packages: (find-fline "~/o3")
# ~/o4 - a list of the packages in ~/o3, for comparison
# ~/o5 - a list with the "Size:"s of the installed packages
#
grep-status -s Package -n -F Status ' installed' | sort | tee ~/o
cat ~/o \
  | expect -c '
      regsub -all {([.+])} [join [read stdin] "|"] {\\\1} re
      puts $re
    ' \
  | tee ~/o2
grep-available -F Package -e '^('$(cat ~/o2)')$' | tee ~/o3
cat ~/o3 | grep-dctrl -s Package -n '' | sort | tee ~/o4
diff ~/o ~/o4
cat ~/o3 | grep-dctrl -s Size -n '' | tee ~/o5
cat ~/o5 | awk '{total+=$1} END {print total}'
cat ~/o5 | gawk '
  BEGIN { mask = 4095 }
        { total += and($1, mask) ? or($1,mask)+1 : $1 }
  END   { print total }
'

#*
# «installeddebs»  (to ".installeddebs")
# (find-angg ".zshrc" "installeddebs")
grep-status -F Status ' installed' -s Package,Version
cat /var/lib/dpkg/status | installeddebs_ | sort
installeddebs | sort
#*
# (find-node "(gawk)Other Arguments")
# (find-fline "/var/state/apt/lists/")
# (find-angg ".zshrc" "installeddebs")
cd /var/state/apt/lists
cat 127.0.0.1_debian_dists_potato_contrib_binary-i386_Packages \
  | grep-dctrl . -s Filename \
  | awk '{print PREFIX $2}' PREFIX=main/


#*
# «pfilenames»  (to ".pfilenames")
function pfilenames () {
  grep-dctrl . -s Filename | awk '{print PREFIX $2}' PREFIX=$1
}
cd /var/state/apt/lists
cat 127.0.0.1*potato_contrib*Packages | pfilenames contrib/
#*
cd $SSECDEBIAN/
cat dists/potato/updates/main/binary-i386/Packages \
  | pfilenames
#*





#####
#
# Checking build depends using chroot
# 2000dec02
#
#####

# «build-depends_via_chroot»  (to ".build-depends_via_chroot")
# (find-deblistsw3 "debian-devel-9912/msg00160.html")
# (find-fline "/etc/apt/")
#*
rm -Rv /tmp/debian/
mkdir  /tmp/debian/
cd     /tmp/debian/
tar -xvzf /hdd6/potatobin1/dists/potato/main/disks-i386/2.2.16-2000-07-14/base2_2.tgz

# (find-es "apache" "apt-http-local")
cat > etc/apt/sources.list <<'---'
deb http://127.0.0.1/debian potato main contrib
---
touch etc/resolv.conf

# (find-angg "EXPECT/eeg")
cat > $EEG <<'---'
apt-get update
dpkg --purge lilo
yes '' | apt-get -y install dpkg-dev
yes '' | apt-get -y install build-essential
---
eeg chroot `pwd` bin/sh
# Done.

#*




#####
#
# Testing .debs
# 2000jun20
#
#####

# «testing-.debs»  (to ".testing-.debs")
# (eeman "5 deb")
# This is not absolutely perfect, but should work in most cases.

cd $SPOTATO/
for i in $(find * -name '*.deb'); do
  echo $i; ar -p $i data.tar.gz | gzip -t
done





#####
#
# Find the files corresponding to the installed .debs
# 2000jun06
#
#####

# «all-installed-.debs»  (to ".all-installed-.debs")
# Show the names of the .debs
# of all installed packages:
#*
grep-status --show-field=Package,Version --field=Status ' installed' \
  | perl -nle '
      m/Package: (.*)/ and $s = $1;
      m/Version: ([0-9]+:)?(.*)/ and print "$s", "_$2.deb";
    ' \
  | sort \
  | tee ~/oinstalleddebs

#*
# Prepare the corresponding fgrep
# patterns. We don't care about versions now.
# No quoting or backslashing is needed:
# (eeman "fgrep" "-F, --fixed-strings")

cat ~/oinstalleddebs \
  | perl -nle ' m:([^ /_]+)_.*deb: && print "/$1_" ' \
  | sort \
  | tee ~/oinstdebs-fstems

# Find all .deb files that have the
# same stems as installed packages:

find /big/potato $SDEBIAN /usr/src/.debs/ -type f \
  | grep '\.deb$' \
  | fgrep -f ~/oinstdebs-fstems \
  | tee ~/oinstdebs-fnames

# Which stems correspond to more than one file?
# Take the stems of all the files with the same
# stems as installed packages...

cat ~/oinstdebs-fnames \
  | perl -nle ' m:([^ /_]+)_.*deb: && print "/$1_" ' \
  | sort \
  | tee ~/oinstdebs-fnames-stems

# and list those with repetitions...

uniq -d ~/oinstdebs-fnames-stems \
  | uniq

# and those which are unique.

uniq -u ~/oinstdebs-fnames-stems



# Another way to go: check which of the installed packages come from
# my (out of date) potato mirror and which do now. Now we do check the
# versions.






#####
#
# Prepare the files for a potato CD
# 2000jun06
#
#####

# «potatocd-2000jun06»  (to ".potatocd-2000jun06")

# (find-fline "~/opotato")
# (find-fline "~/ononpotato")

# /potatocd is a symlink to I-don't-remember-where.
# Don't delete it!

rm -Rv /potatocd/*
cd /potatocd/
mkdir -p dists/potato/
ln -s potato dists/stable
ln -s potato dists/frozen
ln -s potato dists/unstable
ln -s potato dists/slink

cd /potatocd/dists/potato/
mkdir -p  contrib/binary-i386/
mkdir -p     main/binary-i386/
mkdir -p non-free/binary-i386/

ln -s binary-i386  contrib/binary-all
ln -s binary-i386     main/binary-all
ln -s binary-i386 non-free/binary-all

cd /potatocd/
mkdir big
ln -s .. big/potato

mkdir -p snarf/ftp/ftp.debian.org/debian/
ln -s ../../../../dists snarf/ftp/ftp.debian.org/debian/dists

cd /potatocd/
for i in $(cut -b2- < ~/opotato); do
  echo $i
  mkdir -p $(dirname $i)
done

for i in $(cut -b2- < ~/opotato); do
  cp -ipv /$i /potatocd/$i
done


# Note that the debs I compile are generated by default with an ending
# like _i386.deb or _all.deb. We remove that before copying...
#
rm -Rv /potatocd/dists/potato/local/binary-i386/
mkdir -p /potatocd/dists/potato/local/binary-i386/devel/
cd /usr/src/.debs/
for i in \
  glimpse_4.1-2.deb	\
  ircii_4.4M-1.deb	\
  libssl09-dev_0.9.4-5.deb	\
  libssl09_0.9.4-5.deb	\
  mktclapp_3.9-1.deb	\
  openssl_0.9.4-5.deb	\
  ssh-askpass_0.99-1.deb	\
  ssh_1.2.2-1.4.deb	\
  ssleay_0.9.4-5.deb	\
  wget_1.5.3-3edrx.deb	\
; do
  cp -iv $(basename $i .deb)*.deb \
    /potatocd/dists/potato/local/binary-i386/devel/$i
done


# (find-fline "$SDEBIAN/ls-lR.i")

cd /potatocd/
for i in contrib main non-free local; do
  echo $i
  dpkg-scanpackages dists/potato/$i/binary-i386 /dev/null \
    > dists/potato/$i/binary-i386/Packages
  gzip -c9 < dists/potato/$i/binary-i386/Packages \
           > dists/potato/$i/binary-i386/Packages.gz
done

cd /potato/dists/potato/main/
cp -diPpvR disks-i386/ /potatocd/dists/potato/main/

cd /potato/dists/potato/
find | grep Release
cp -diPpvR $(find | grep Release) /potatocd/dists/potato/

cp -ipv $SDEBIAN/dists/potato/Contents-i386.gz /potatocd/dists/potato/
cp -ipv $S/http/panic.et.tudelft.nl/~costar/potato/.cd_readme_temp/README.txt \
  /potatocd/

# My page (i.e., all my public stuff)
rm /tmp/page.tgz; cd; make -f ~/TH/Makefile /tmp/page.tgz
cp -iv /tmp/page.tgz /potatocd/

# (find-fline "/potatocd/")
# (find-fline "/potatocd/dists/potato/main/disks-i386/current/")

cd /potatocd/
mkdir boot/
mkisofs -r -J -V "Potato bin 1 (Edrx 00jul14)" \
  -b dists/potato/main/disks-i386/2.2.13-2000-05-04/images-2.88/udma66/rescue.bin \
  -c boot/boot.catalog \
  -o /tmp/potato.iso . \
  |& tee ~/o

# Things to correct: the TRANS.TBLs are visible; I forgot the "tools"
# directory, the dos622 images, 4dos, pkzip, qedit and list. Also: no
# sources, no locz cgis or database dumps.

# Make the image. Dangerous! $$$ -> /dev/null!
# (find-es "hw-cdrw" "cdrecord")

/etc/init.d/cron stop
cdrecord -scanbus
cdrecord -dummy dev=0,0,0 -v  /tmp/potato.iso
cdrecord        dev=0,0,0 -v  /tmp/potato.iso
/etc/init.d/cron start




# This is just to check (visually) what can be missing.
#
# (find-es "potatocds" "potato-i386-...-list")
# (find-fline "~/POTATO/rsync/129.13.126.5/debian-cd/potato-i386-1.raw.list")
grep -v '\.deb$' ~/POTATO/rsync/129.13.126.5/debian-cd/potato-i386-1.raw.list \
  | tee ~/o
# (find-fline "~/o")





# (find-fline "~/tmp/")





#####
#
# dpkg
# 2000jun14
#
#####

# «dpkg»  (to ".dpkg")
# (find-status "dpkg")
# (find-vldifile "dpkg.list")
# (find-fline "/usr/doc/dpkg/")

# (find-fline "/usr/share/doc/dpkg")
# (find-fline "/usr/share/doc/dpkg/THANKS.gz")
# (find-fline "/usr/share/doc/dpkg/TODO.gz")
# (find-fline "/usr/share/doc/dpkg/changelog.gz")
# (find-fline "/usr/share/doc/dpkg/changelog.Debian.gz")
# (find-fline "/usr/share/doc/dpkg/copyright")
# (eeman "1 md5sum")
# (eeman "1 dpkg-deb")
# (eeman "8 dpkg-split")
# (eeman "8 dpkg")
# (eeman "8 dselect")
# (find-fline "/usr/lib/dpkg/")
# (find-fline "/usr/lib/dpkg/mksplit")
# (find-fline "/usr/lib/dpkg/methods/")
# (find-fline "/usr/lib/dpkg/methods/disk/")
# (find-fline "/usr/lib/dpkg/methods/disk/setup")
# (find-fline "/usr/lib/dpkg/methods/disk/update")
# (find-fline "/usr/lib/dpkg/methods/disk/install")
# (find-fline "/usr/lib/dpkg/methods/disk/names")
# (find-fline "/usr/lib/dpkg/methods/disk/desc.cdrom")
# (find-fline "/usr/lib/dpkg/methods/disk/desc.nfs")
# (find-fline "/usr/lib/dpkg/methods/disk/desc.harddisk")
# (find-fline "/usr/lib/dpkg/methods/disk/desc.mounted")
# (find-fline "/usr/lib/dpkg/methods/floppy/")
# (find-fline "/usr/lib/dpkg/methods/floppy/setup")
# (find-fline "/usr/lib/dpkg/methods/floppy/update")
# (find-fline "/usr/lib/dpkg/methods/floppy/install")
# (find-fline "/usr/lib/dpkg/methods/floppy/names")
# (find-fline "/usr/lib/dpkg/methods/floppy/desc.floppy")

# (eeman "8 update-rc.d")
# (find-fline "/usr/sbin/update-rc.d")

# (eeman "8 start-stop-daemon")
# (find-fline "/sbin/start-stop-daemon")

# (find-status "dpkg-doc")
# (find-vldifile "dpkg-doc.list")
# (find-fline "/usr/doc/dpkg-doc/")





#####
#
# install-info / ginstall-info
# 2000jun14 / 2012apr20
#
#####

# «install-info»  (to ".install-info")

# 2012apr20:
# (find-status   "install-info")
# (find-vldifile "install-info.list")
# (find-udfile   "install-info/")
# (find-fline "/usr/bin/install-info")
# (find-fline "/usr/bin/ginstall-info")
# (find-fline "/usr/sbin/update-info-dir")
# (find-udfile "install-info/AUTHORS")
# (find-udfile "install-info/INTRODUCTION")
# (find-udfile "install-info/NEWS.gz")
# (find-udfile "install-info/README.gz")
# (find-udfile "install-info/README.source")
# (find-udfile "install-info/TODO.gz")
# (find-udfile "install-info/changelog.Debian.gz")
# (find-udfile "install-info/changelog.gz")
# (find-udfile "install-info/copyright")
# (find-man "8 update-info-dir")
# (find-man "1 ginstall-info")
# (find-man "1 install-info")

# (find-es "bash" "bash-3.1-info")
# (find-vldifile "zsh-doc.postinst" "install-info --section Shells Shells")
# (find-vldigrep "grep -nH -e install-info *inst")
# (find-node "(dir)Top" "ZSH")
# (find-fline "/usr/share/info/zsh.info.gz")
# (find-fline "/usr/share/info/zsh.info.gz" "START-INFO-DIR-ENTRY")

# (find-man "8 install-info")
# (find-man "8 install-info" "--section regexp title")
# (find-fline "/usr/sbin/install-info")
# (find-fline "/usr/sbin/install-info" "$infodir='/usr/info';")
# (find-fline "/usr/info/" "dir")
# (find-fline "/usr/info/dir")
# (find-fline "/usr/share/info/" "dir")
# (find-fline "/usr/share/info/dir.gz")
# (find-vldifile "dpkg.list")

# (find-dpolfile "fhs/fhs.txt.gz" "GNU Info system's primary directory")

#*
cd /var/lib/dpkg/info/
agrep -l install-info *inst* | tee ~/o

mycat $(<~/o) > ~/o2

cat ~/o2 \
  | perl -e 'undef $/; $_ = <>; s/\\\n//g; print' \
  | grep install-info \
  | tee ~/o3

# (find-es "make" "makefile_toposort")
cat ~/o \
  | perl -nle 'print "# (find-vldifile \"$_\" \"install-info\")"' \
  | tee ~/o4

# (find-fline "~/o2")
# (find-fline "~/o3")
# (find-fline "~/o4")
# (find-vldifile "emacs20.postinst" "install-info")
# (find-vldifile "emacsen-common.postinst" "install-info")
# install-info --quiet --section Emacs Emacs /usr/share/info/${file}.gz || true
# install-info --remove emacs > /dev/null 2>&1

#*
# (eeman "8 cleanup-info")
# (find-fline "/usr/sbin/cleanup-info")
# (find-vldifile "dpkg.postinst" "maintain the /usr/info/dir file")





#####
#
# dpkg and alternatives
# 2000jun14
#
#####

# «dpkg:alternatives»  (to ".dpkg:alternatives")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
update-alternatives --help
update-alternatives --list vncserver

# (find-man "8 update-alternatives")
# (find-fline "/etc/alternatives/")
# (find-fline "/etc/alternatives/README")
# (find-fline "/usr/sbin/update-alternatives")
# (find-fline "/usr/sbin/update-alternatives" "yourself")
# (find-fline "/usr/sbin/update-alternatives" "return to automatic")
# (find-fline "/var/lib/dpkg/alternatives/")

cd /var/lib/dpkg/info/
agrep update-alternatives *
agrep -l update-alternatives * \
  | perl -nle 'print "# (find-vldifile \"$_\" \"update-alternatives\")"' \
  > ~/o

# (find-fline "~/o")

# (find-debfaqhw3 "debian-faq-12.html#ss12.10")
# (find-debfaqhw3 "debian-faq-7.html#ss7.8")
# (find-dpolfile "virtual-package-names-list.text.gz")
# (find-packfile "packaging.text.gz" '* 2 "`update-alternatives'")




# Old notes:

update-alternatives --display wish
update-alternatives --display '*'
# (perldb "perl /usr/sbin/update-alternatives --display wish")
# (find-fline "/etc/alternatives/")
# (find-fline "/var/lib/dpkg/alternatives/")
cd /etc/alternatives/
for i in *; do echo; update-alternatives --display $i; done
# (find-vldifile "tkstep8.0.postinst")
# (find-vldifile "tkstep8.0.postrm")
# (eeman "update-alternatives")
update-alternatives --remove wish /usr/bin/wishstep8.0
laf /usr/bin/wish* /etc/alternatives/wish*





######
#
# dpkg: diversions
# 2000jun14
#
######

# «dpkg:diversions»  (to ".dpkg:diversions")
# (find-packfile "packaging.text.gz" "11. Diversions")
# (find-packhw3 "ch-diversions.html")

# (eeman "8 dpkg-divert")
# (find-fline "/usr/sbin/dpkg-divert")

# (find-status "debmake")
# (find-vldifile "debmake.list")
# (find-fline "/usr/share/debmake/debian/diversions.ex")

# (find-fline "/var/lib/dpkg/diversions")
# (find-fline "/var/lib/dpkg/diversions-old")

cd /var/lib/dpkg/info/
agrep diversions *
agrep -l diversions * \
  | perl -nle 'print "# (find-vldifile \"$_\" \"diversions\")"' \
  > ~/o

# (find-fline "~/o")
# (find-es "hurd" "dpkg-cross")




#####
#
# version numbers of .debs
# 2000apr01
#
#####

# «dpkg:debversions»  (to ".dpkg:debversions")
# (find-angg "LUA/apt-move.lua" "debversions")
(defun find-pmt (pos-spec)
  (find-fline "/usr/doc/packaging-manual/packaging.text.gz" pos-spec))

# (find-pmt "5. Version numbering")
# (find-pmt "<debian-revision>\n")
# (find-pmt "compared lexically")
# (find-pmt "--compare-versions")
# (find-man "1 dpkg" "--compare-versions")

dpkg --help |& tee ~/o
# (find-fline "~/o" "Comparison operators")

dpkg --compare-versions foo-3.21.deb le foo-3.2.deb
dpkg --compare-versions foo-3.21.deb ge foo-3.2.deb

function dcv () {
  if dpkg --compare-versions $1 lt $2; then
    echo "    $1 < $2"
  elif dpkg --compare-versions $1 eq $2; then
    echo "    $1 = $2"
  else
    echo "    $1 > $2"
  fi
}

dcv foo.deb   foo-3.1.deb
dcv foo-3.1.deb   foo.deb
dcv foo-3.1.deb   foo-3.2.deb
dcv foo-3.21.deb   foo-3.2.deb
dcv foo_3.2.deb    foo_3.2-1.deb
dcv foo_3.2-1.deb   foo_3.2.deb
dcv foo_3.2-1.deb   foo_3.2-2.deb
dcv foo_3.2-1.deb   foo_3.2-1edrx.deb
dcv foo_3.2-1edrx.deb   foo_3.2-1.deb

# Epochs (?):
Pgrepp 'm/age: libgtk/' |& l




#####
#
# Lua functions to compare versions of debs
# 2001may09
#
#####

# (find-es "lua" "debversions_lua")
(defun find-pmt (pos-spec)
  (find-fline "/usr/doc/packaging-manual/packaging.text.gz" pos-spec))

# (find-pmt "5. Version numbering")
# (find-pmt "<debian-revision>\n")
# (find-pmt "compared lexically")
# (find-pmt "--compare-versions")
# (eeman "dpkg" "--compare-versions")

(find-packfile "packaging.text.gz" "5. Version numbering")






#####
#
# how dpkg configures packages (exim)
#
#####

# «dpkg:configscripts»  (to ".dpkg:configscripts")
# (find-es "debian" "smail_config")
# (eeman "dpkg" "dpkg --configure package")

# (find-vldifile "" "exim")
# (find-vldifile "exim.list")
# (find-fline "/usr/doc/exim/")

# (find-vldifile "exim.conffiles")
# (find-vldifile "exim.preinst")
# (find-vldifile "exim.postinst")
# (find-vldifile "exim.prerm")
# (find-vldifile "exim.postrm")

# (find-fline "/usr/doc/exim/example.conf.gz")

# (find-fline "/etc/exim.conf")
# (find-fline "/etc/exim.conf" "local_domains =")
# (find-fline "/etc/exim.conf" "never_users =")
# (find-fline "/etc/exim.conf" "host_lookup =")
# (eeman "exim" "Domains required")

# (find-fline "/etc/init.d/exim")
# (find-fline "/usr/doc/exim/spec.txt.gz" "  3. HOW EXIM DELIVERS MAIL")

/etc/init.d/exim restart

mail -s `date +%T` edrx <<'---'
baaaar
---
mail -s `date +%T` edrx@localhost <<'---'
baaaarl
---

sleep 1

find /var/spool/



# (find-fline "/o/etc/smail/")
# (find-fline "/etc/smail/")
# (find-fline "/etc/smail/config")

# (find-vldifile "deliver.list")
# (find-fline "/usr/doc/deliver/")
# (find-vldifile "" "deliver")

mail -s `date +%T` edrx@inx.com.br <<'---'
blaaa
---

date +%T | mail -s `date +%T` edrx@mat.puc-rio.br




#####
#
# dpkg-dev
# 2000jun05
#
#####

# «dpkg-dev»  (to ".dpkg-dev")

# (find-status "dpkg-dev")
# (find-vldifile "dpkg-dev.list")
# (find-fline "/usr/doc/dpkg-dev/")

# (eeman "1 822-date")
# (eeman "1 dpkg-architecture")
# (eeman "1 dpkg-buildpackage")
# (eeman "1 dpkg-distaddfile")
# (eeman "1 dpkg-genchanges")
# (eeman "1 dpkg-gencontrol")
# (eeman "1 dpkg-shlibdeps")
# (eeman "1 dpkg-name")
# (eeman "1 dpkg-source")
# (eeman "1 dpkg-parsechangelog")
# (eeman "5 deb-old")
# (eeman "5 deb")
# (eeman "5 deb-control")
# (eeman "8 dpkg-scanpackages")
# (eeman "8 dpkg-scansources")

# (find-fline "/usr/bin/dpkg-name")
# (find-fline "/usr/bin/dpkg-source")
# (find-fline "/usr/bin/dpkg-genchanges")
# (find-fline "/usr/bin/dpkg-gencontrol")
# (find-fline "/usr/bin/dpkg-shlibdeps")
# (find-fline "/usr/bin/dpkg-buildpackage")
# (find-fline "/usr/bin/dpkg-distaddfile")
# (find-fline "/usr/bin/822-date")
# (find-fline "/usr/bin/dpkg-scanpackages")
# (find-fline "/usr/bin/dpkg-scansources")
# (find-fline "/usr/bin/dpkg-architecture")
# (find-fline "/usr/bin/dpkg-parsechangelog")




#####
#
# dpkg-multicd
# 2000jun05
#
#####

# «dpkg-multicd»  (to ".dpkg-multicd")
# «.disk/info»  (to "..disk/info")
# «Packages.cd»  (to ".Packages.cd")

# (find-status "dpkg-multicd")
# (find-vldifile "dpkg-multicd.list")
# (find-fline "/usr/doc/dpkg-multicd/")

# (find-fline "/usr/doc/dpkg-multicd/readme.txt.gz")
# (find-fline "/usr/lib/dpkg/methods/multicd/")
# (find-fline "/usr/bin/dpkg-scanpackages")

# (find-udfile "dpkg-multicd/readme.txt.gz" "dpkg-scanpackages -m")
# (find-udfile "dpkg-multicd/readme.txt.gz" "cannot use regular `Packages'")
# (find-udfile "dpkg-multicd/readme.txt.gz" "`.disk/info'")




#####
#
# Generating the "Contents" file with mkcontents
# 2000sep09
#
#####

# «Contents-i386»  (to ".Contents-i386")
# «mkcontents»  (to ".mkcontents")
# (find-fline "$SPOTATO/Contents-i386")
# (find-fline "~/SLINK/Contents-i386")

# The mkcontents script seems to be only available by cvs... here's
# how to get it, following a hint given by Michael Beattie
# (mickyb@es.co.nz) in debian-mentors, on 2000sep09:

#*
# rm -Rv ~/CVS/ftpmaint/
mkdir  ~/CVS/ftpmaint/
cd     ~/CVS/ftpmaint/
export CVSROOT=:pserver:anonymous@cvs.debian.org:/cvs/ftpmaint
cvs login
cvs co masterfiles
cd masterfiles
#*

# (find-fline "~/CVS/ftpmaint/masterfiles/")
# (find-fline "~/CVS/ftpmaint/masterfiles/mkcontents")






#####
#
# dbuild
#
#####

# (find-vldifile "dbuild.list")
# (find-fline "/usr/doc/dbuild/")

# (eeman "dbuild")
# (eeman "run-dbuild")

# (find-fline "/usr/bin/dbuild")
# (find-fline "/usr/bin/run-dbuild")





#####
#
# An apt repository for locally-compiled packages
# 2001jan17
#
#####

# «local_apt_repository»  (to ".local_apt_repository")
# (eeman "5 sources.list")
# (find-fline "/etc/apt/sources.list")
# (find-angg ".zshrc" "apt")
#deb file:/usr/src/.debs potato local
#deb-src file:/usr/src/.debs potato local

#*
# Get help:
dpkg-scanpackages |& tee ~/o
# (find-fline "~/o")
# (find-fline "/usr/bin/dpkg-scanpackages" "Usage:")
# Usage: dpkg-scanpackages [-m medium] binarypath overridefile pathprefix
#   e.g. dpkg-scanpackages -m 'Debian GNU/Linux binary-i386' \
# 	   binary-i386 /pub/debian/indices/override.hamm.gz \
# 	   dists/stable/ > binary-i386/Packages

#*
# This was cleaned up (?) and put in a shell function:
# (find-angg ".zshrc" "apt")
cd /usr/src/.debs/
rm -Rv dists/
( D=dists/potato/local
  DB=$D/binary-i386
  mkdir -p $DB
  cp -liv *.deb $DB
  dpkg-scanpackages $DB /dev/null '' \
    | tee $DB/Packages \
    | gzip -c6 > $DB/Packages.gz

  DS=$D/source
  mkdir -p $DS
  cp -liv /usr/src/.dscs/*.dsc $DB
  cp -liv /usr/src/.dscs/*.gz  $DB
  cp -liv /usr/src/.dscs/*.changes $DB
  dpkg-scansources $D \
    | tee $DS/Sources \
    | gzip -c9 > $DS/Sources.gz
)

#*
# Here's the typical way to use that:
aptu-local-i386
apt-get update

#*
# Test the source repository:
# (eeman "8 apt-get" "--build")
# (eeman "8 dpkg-scansources")
# (find-fline "/usr/bin/dpkg-scansources")
# (find-fline "/usr/bin/dpkg-source")

# (find-angg ".zshrc" "apt")
rm -Rv /tmp/mkt/
mkdir  /tmp/mkt/
cd     /tmp/mkt/
# apt-get source mktclapp
apt-get source --build mktclapp		|& tee oagsb
laf

#*

<apt> markybob wants you to know: If you have problems adding
unofficial sites to sources.list, try "deb URL ./" or 'man 5
sources.list' or potato: 'deb http://http.us.debian.org/debian potato
main contrib non-free' or potato non-us: 'deb
http://non-US.debian.org/debian-non-US potato/non-US main contrib
non-free', but a pretty neat sources.list is
http://www.debian.org/~edlang/sources.list, or use apt-setup in
package base-config to configure your sources.list

# (find-shttpw3 "www.debian.org/~edlang/sources.list")






#####
#
# creating empty packages
# 2001jun17
#
#####

# «empty_packages»  (to ".empty_packages")
# (find-status "pciutils")
#*
rm -Rv /tmp/luadeb/
mkdir  /tmp/luadeb/
cd     /tmp/luadeb/
# ar x /usr/src/lua_4.0-0_i386.deb
  ar x /tmp/lua_4.0-0_i386.deb
mkdir control
tar -xzf control.tar.gz -C control/
mkdir data
tar -xzf data.tar.gz -C data/

# (find-luafile "debian/tmp-lua/DEBIAN/")
# (find-luafile "debian/tmp-lua/DEBIAN/control")
# (find-status "lua")

#*
rm -Rv /tmp/luaemptydeb/
mkdir  /tmp/luaemptydeb/
cd     /tmp/luaemptydeb/
mkdir -p debian/tmp-lua/DEBIAN/
cp -v /usr/src/lua-4.0/debian/tmp-lua/DEBIAN/control debian/tmp-lua/DEBIAN/
# strace-to ~/s dpkg-gencontrol -isp -plua -Pdebian/tmp-lua
dpkg-deb --build debian/tmp-lua ..

#*
rm -Rv   /tmp/emptys/
mkdir -p /tmp/emptys/tmp/DEBIAN/
cd       /tmp/emptys/
cat > tmp/DEBIAN/control <<'---'
Package: jvim-doc
Priority: extra
Section: doc
Installed-Size: 323
Maintainer: Teruyuki Morimura <terubou@sandalwood.net>
Architecture: all
Source: jvim
Version: 3.0-2.0-2
Recommends: jvim-canna
Filename: dists/frozen/main/binary-i386/doc/jvim-doc_3.0-2.0-2.deb
Size: 242002
MD5sum: 5f5b56736560057bd7f58f2a193a690c
Description: Documentation for Japanized VIM
 JVIM 3.0 is Japanized VIM (VI cron editor) by K.Tsuchida
 <ken_t@st.rim.or.jp> on Jan 1, 2000 (patch version 2.0).
---
dpkg-deb --build tmp .

find
laf

#*



# (find-fline "/tmp/pciutils/")
# (find-luafile "odbp" "dpkg-gencontrol")
# (eeman "dpkg-gencontrol")
# (eeman "5 deb")
# (find-fline "/usr/doc/packaging-manual/packaging.text.gz")
# (find-packfile "packaging.text.gz")
# (find-packfile "packaging.text.gz" "2.2. Package control information files")
# (find-packfile "packaging.text.gz" "2.3. The main control")

perl -nle 'm/^([A-Z][^:]*:)/ && print $1' < /var/lib/dpkg/status | sort | uniq

     The fields in binary package control files are:
        * `Package' (mandatory)
        * `Version' (mandatory)
        * `Architecture' (mandatory) [1]
          [1]  This field should appear in all packages, though `dpkg'
               doesn't require it yet so that old packages can still be
               installed.
        * `Depends', `Provides' et al.
        * `Essential'
        * `Maintainer'
        * `Section', `Priority'
        * `Source'
        * `Description'
        * `Installed-Size'


# (find-status "lua")
# (find-vldifile "lua.list")
# (find-fline "/usr/doc/lua/")
# (find-fline "/var/lib/dpkg/status")
# (find-fline "/var/lib/dpkg/available")

Package:
Version:
Architecture: i386   (must add by hand cause vldistatus doesn't have it)

Conflicts:
Depends:
Pre-Depends:
Provides:
Recommends:
Replaces:
Suggests:

Essential:
Maintainer:
Section:
Priority:
Source:
Description:
Installed-Size:
meta-package:

strre_field = "([A-Zm][A-Za-z]+):([^\n]*)\n( [^\n]*\n)*"

strre_package = "([A-Zm ][^\n]*\n)+\n"
strre_field = "^([A-Zm][A-Za-z]+):([^\n]*)$"

re_package = regex(strre_package)
re_field   = regex(strre_field)

# (find-node "(lua)read")

Conffiles:
Config-Version:
Maintainer:
Status:





#####
#
# dpkg-checkbuilddeps
# 2007jun25
#
#####

# «dpkg-checkbuilddeps»  (to ".dpkg-checkbuilddeps")
# When doing:
#   cd ~/usrc/scite/scite-1.71/
#   dpkg-buildpackage -us -uc -b -rfakeroot |& tee odb
# I got this:
#   dpkg-checkbuilddeps: Unmet build dependencies: libgtk2.0-dev libglib2.0-dev dpatch
# (find-fline "/usr/bin/dpkg-buildpackage")
# (find-fline "/usr/bin/dpkg-buildpackage" "dpkg-checkbuilddeps")
# (find-fline "/usr/bin/dpkg-checkbuilddeps")

# There must be an "install builddeps with apt-get" script somewhere...









#  Local Variables:
#  coding:               raw-text-unix
#  ee-delimiter-hash:    "\n#*\n"
#  ee-delimiter-percent: "\n%*\n"
#  ee-anchor-format:     "«%s»"
#  End: