I wrote these nifty little scripts for quickly searching the dpkg
file database about 6 months ago, but I just haven't found the time
to package them. Maybe somebody else wants too.
It's much quicker using dlocate -L and dlocate -S than using
dpkg -L and dpkg -S.
-- cut here -- /usr/lib/dlocate/dupdatedb
#!/bin/sh
# By Jim Pick <jim@jimpick.com>, GPL'd of course
nice grep '' /var/lib/dpkg/info/*.list|sed 's,^.*/\(.*\)\.list:,\1: ,' | \
/usr/lib/locate/frcode > /var/lib/dlocate/dlocatedb.new
mv -f /var/lib/dlocate/dlocatedb /var/lib/dlocate/dlocatedb.old
mv /var/lib/dlocate/dlocatedb.new /var/lib/dlocate/dlocatedb
-- cut here -- /usr/local/bin/dlocate
#!/bin/sh
# By Jim Pick <jim@jimpick.com>, GPL'd of course
if [ -z "$1" -o "$1" = "-h" -o "$1" = "-H" -o "$1" = "--help" ]; then
echo "Usage: dlocate [-L] [-S] string"
echo
echo " (no option) string list all records that match"
echo " -L string list records where package matches"
echo " -S string list records where files match"
echo
echo " The -L and -S commands are roughly analagous to the"
echo " equivalent dpkg commands."
elif [ "$1" = "-L" ]; then
cat /var/lib/dpkg/info/$2.list
elif [ "$1" = "-S" ]; then
locate -d /var/lib/dlocate/dlocatedb $2 | grep ":.*$2.*"
else
locate -d /var/lib/dlocate/dlocatedb $*
fi
-- cut here -- (end)
chmod +x these and also create a /var/lib/dlocate dir.
I added the following line to my /etc/crontab to update the database
nightly:
42 3 * * * root /usr/lib/dlocate/dupdatedb
Actually, there is an almost as quick way of doing the same thing
that doesn't require a database (so it's always up to date):
-- cut here -- /usr/local/bin/dlocate.grep
#!/bin/sh
# By Jim Pick <jim@jimpick.com>, GPL'd of course
if [ -z "$1" -o "$1" = "-h" -o "$1" = "-H" -o "$1" = "--help" ]; then
echo "Usage: dlocate.grep [-L] [-S] string"
echo
echo " (no option) string list all records that match"
echo " -L string list records where package matches"
echo " -S string list records where files match"
echo
echo " The -L and -S commands are roughly analagous to the"
echo " equivalent dpkg commands."
elif [ "$1" = "-L" ]; then
cat /var/lib/dpkg/info/$2.list
elif [ "$1" = "-S" ]; then
grep $2 /var/lib/dpkg/info/*.list|sed 's,^.*/\(.*\)\.list:,\1: ,' | \
grep ":.*$2.*"
else
grep $* /var/lib/dpkg/info/*.list|sed 's,^.*/\(.*\)\.list:,\1: ,'
fi
-- cut here -- (end)
I've got a few other quickie scripts that other people might find
helpful. Does anyone else have some useful little scripts like this
that they use all the time but they aren't really big enough to package?
Cheers,
- Jim
Attachment:
pgpp4YJ0emD54.pgp
Description: PGP signature