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

Re: a simple script for restoring downloaded debs



songbird wrote:

...

  and the next version, which gets me down 
to 61 missing files.

  it is getting late so i'll have to take 
another look at this again later...


=====
#!/bin/sh
#
#

debarch="/archives/debian/jessie"
dest="/var/cache/apt/archives"

pkglist=`dpkg -l | egrep '^ii  ' | cut --delimiter=' ' -f3,3 | cut --delimiter=':' -f1,1`
versionlist=`dpkg -l | egrep '^ii  ' | sed -e 's/  */ /g' | cut -d ' ' -f3,3`

for pkgname in $pkglist; do

  version=`echo $versionlist | cut -d ' ' -f1,1`
  debname=`apt-cache show $pkgname=$version | egrep '^Filename: ' | sed -e 's/^Filename: //' | awk --field-separator='/' -e '{print \$NF}'`

  versionplay=`echo $version | grep ':' | wc -c`
  if test ! "$versionplay" = "0" ; then
    #echo "We have a funny version number, let's fix it in the filename"
    versionhead=`echo $version | cut -d ':' -f1,1 | sed -e 's/$/%3a/'`
    #echo "$pkgname $version $versionhead $debname"
    debname=`echo $debname | sed -e "s/_/_$versionhead/"`
    #echo "$pkgname $version $versionhead $debname"
  fi

  versionlist=`echo $versionlist | cut -d ' ' -f2-`

  if test -e "$debarch/$debname" ; then

    echo "$debarch/$debname $dest" > /dev/null
    if test ! -e "$dest/$debname" ; then
      cp -a "$debarch/$debname" $dest
    fi

  else 
    echo "$debname missing?  version ->$version<-"
  fi

done
chown root $dest/*
chgrp root $dest/*
sync
=====


  songbird


Reply to: