DiffDebScript
Differences between revisions 2 and 3
2057
Comment:
|
1909
|
Deletions are marked like this. | Additions are marked like this. |
Line 7: | Line 7: |
# E.g: ./diffdeb origdebs/gimp_2.2.8-2ubuntu6_i386.deb origdebs/gimp_2.2.11-1ubuntu1_i386.deb diff |
|
Line 61: | Line 59: |
#ar -r test.deb gimp_2.2.11-1ubuntu1_i386/* |
Here are two proof-of-concept scripts for creating and applying binary diffs of debian packages for smaller downloads on upgrades. You need to install bsdiff for this to work. JamesHall
diffdeb script:
echo "Syntax: diffdeb old new diff" mkdir ./working mkdir ./working/old mkdir ./working/new # Extract old deb (ar) cd ./working/old ar x ../../$1 cd ../../ # Extract new deb (ar) cd ./working/new ar x ../../$2 cd ../../ # Extract old deb contents (gzip) cd ./working/old gunzip -f control.tar.gz gunzip -f data.tar.gz cd ../../ # Extract new deb contents (gzip) cd ./working/new gunzip -f control.tar.gz gunzip -f data.tar.gz cd ../../ # Make each into a tar cd ./working/old tar cf old.tar * cd ../../ cd ./working/new tar cf new.tar * cd ../../ # Make binary diff bsdiff ./working/old/old.tar ./working/new/new.tar $3 # Force recursive removal of folder 'working' rm -fr working/
patchdeb script:
echo "Usage patchdeb olddeb newdeb patch" mkdir ./working mkdir ./working/old mkdir ./working/new # Extract old deb (ar) cd ./working/old ar x ../../$1 # Extract old deb contents (gzip) gunzip -f control.tar.gz gunzip -f data.tar.gz # Make into a tar tar cf old.tar * cd ../../ # Patch it bspatch ./working/old/old.tar ./working/new/new.tar $3 cd ./working/new tar xf new.tar rm new.tar cd ../../ cd ./working/old rm old.tar cd ../../ # Recreate proper debian ar's cd ./working/new gzip control.tar gzip data.tar ar r new.deb debian-binary control.tar.gz data.tar.gz sed 's/data.tar.gz\//data.tar.gz /' new.deb > new1.deb sed 's/control.tar.gz\//control.tar.gz /' new1.deb > new2.deb sed 's/binary\//binary /' new2.deb > new3.deb cd ../../ mv ./working/new/new3.deb $2 # Force recursive removal of folder 'working' rm -fr working/
DiffDebScript (last edited 2008-08-06 16:16:11 by localhost)