[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

pool vs potato: finding last day's packages on a local mirror now difficult



On my home computer, I mirror Debian i386 versions,
including potato and woody.
The use of pool packages has hindered my search
for appropriate packages.
Here I give three techniques I once used,
the limitations caused by "pool" packages,
and partial solutions.
Below, of the three techniques, "1" searches by time, presenting
the most difficulty under the new pool scheme.

1. Finding recent packages (involving creation time).
   With much of woody pointing into ...debian/pool,
   on my mirror, I can no longer easily find the last day's
   package additions to woody.
   Under potato, I would search my mirror like the following example,
      find /usr/local/mirror/mirrors/debian/dists/potato -ctime -1 -ls

   One solution to this would put in the
   package descriptions file, Packages.gz, a "Date:" field.
   Another solution would strip from Packages* files
   all "Filename:" fields, get the date of this "Filename:"
   from the local mirror, then sort the result by date.
   I currently use this approach, whose script I attach at the bottom.

2. Finding packages by name in a particular Debian version.
   Under potato, I could also search for a package simply,
      locate gimp_  |grep potato
   This can now largely be accomplished, after an "apt-get update", with
      grep-available -P -s Package   gimp
   However, six months after potato's release, I more often install
   woody packages into my potato distribution;
   sometimes I am interested in potato packages and sometimes
   in woody packages.
   So, I must now search through some scheme like,
      grep-available -P  -s Filename  gimp    \
                    $(locate Packages| grep woody)
   However, since I only download Packages.gz,
   I must always uncompress Packages.gz.
   So, searching for packages not in the current installation
   version (potato) has become more difficult for those having
   the benefit of a local Debian mirror.

3. Search for software in a particular section
   and a particular Debian version.
   Under potato, with my Debian mirror, I could see available
   mail software by simply entering,
     ls /usr/local/mirror/mirrors/debian/dists/potato/*/binary-i386/mail
   For my current installation (potato), I can enter
      grep-available -F Section mail   -s Package
   But for the testing distribution woody, I must enter something like,
      grep-available -F Section mail   -s Filename  \
                          $(locate Packages| grep woody)
   Even after I find a prospective package, I must now perform
   a second search for the exact filename in my local mirror,
   which before had the section in the package's path; eg, "/mail/" in
    .../debian/dists/potato/non-free/binary-i386/mail/xfmail_1.4.4-1.deb



If one lacks a local mirror, and
if one isn't looking for Debian packages that are new (by time stamp),
finding-and-getting prospective packages (on woody when one runs potato)
is not much more difficult than getting them off a local mirror.
Without altering /etc/apt/sources.list,
one can keep a local copy of "woody" Packages* files to search
as above in "2" and "3", then get those files with, for example,
# From a woody Packages file,
# you see "Filename: pool/main/i/imp/imp_2.2.3-19_all.deb"
wget ftp://ftp.us.debian.org/debian/pool/main/i/imp/imp_2.2.3-19_all.deb






# The following script lists in reverse time order
# all Debian "woody" packages on my local mirror.
# I run this script as, for example,
#       this-scripts-name   woody

# Here are typical Packages* files, uncompressed and renamed
# into the single directory, $DEBIAN_PACKAGE_ROOT.
#   Packages.woody.main
#   Packages.woody.contrib
#   Packages.woody.non-free
#
#   Packages.woody.non-US.main
#   Packages.woody.non-US.contrib
#   Packages.woody.non-US.non-free
#

DEBIAN_ROOT=/usr/local/mirror/mirrors/debian/
DEBIAN_ROOT_NON_US=/usr/local/mirror/mirrors/debian-non-US/
DEBIAN_PACKAGE_ROOT=/usr/local/mirror/debian-briefing/
#I consolidate, rename, and uncompress relevant Packages*
# into the above directory.

#If no Debian version entered on command line, use "woody":
DEBIAN_VERSION=${1:-woody}

shopt -s extglob        #allow special expansions like  "+(...)".

(
   (grep-available -n -s Filename ''    \
    ${DEBIAN_PACKAGE_ROOT}Packages.\
    ${DEBIAN_VERSION}.+(main|contrib|non-free)*  |
       xargs --replace   echo ${DEBIAN_ROOT}{}  )
   (grep-available -n -s Filename ''    \
    ${DEBIAN_PACKAGE_ROOT}Packages.\
    ${DEBIAN_VERSION}.non-US* |
       xargs --replace   echo ${DEBIAN_ROOT_NON_US}{}  )
)   \
|xargs --replace    /bin/ls -h -l --full-time {}       2>/dev/null  \
|sort   -k 10,10n   -k 7,7M   -k 8,8n   -k 9,9  \
|perl -ne  'push(@words,  /\S+\s+/g) ; print @words[4,6,7,8,9,10], "\n"
                                     ; undef @words' \
|column -t


----
Jameson C. Burt, NJ9L   Fairfax, Virginia, USA
jameson@coost.com       http://www.coost.com
(202) 690-0380 (work)

You can only find truth with logic if you have already found truth without it.
-- G.K. Chesterton



Reply to: