DiffDebScript
Differences between revisions 2 and 4 (spanning 2 versions)
2057
Comment:
|
2486
|
Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
recompress-deb script will recompress debian packages using proper versions of gzip and ar: {{{ #!/bin/bash echo "Usage: recompress-deb input output" mkdir ./working cd ./working ar xo ../$1 gunzip -fN control.tar.gz gunzip -fN data.tar.gz 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/new3.deb $2 rm -fr working/ }}} |
|
Line 6: | Line 31: |
echo "Syntax: diffdeb old new diff" # E.g: ./diffdeb origdebs/gimp_2.2.8-2ubuntu6_i386.deb origdebs/gimp_2.2.11-1ubuntu1_i386.deb diff |
echo "Usage: diffdeb old new diff" |
Line 16: | Line 39: |
ar x ../../$1 | ar xo ../../$1 |
Line 22: | Line 45: |
ar x ../../$2 | ar xo ../../$2 |
Line 28: | Line 51: |
gunzip -f control.tar.gz gunzip -f data.tar.gz |
gunzip -fN control.tar.gz gunzip -fN data.tar.gz |
Line 35: | Line 58: |
gunzip -f control.tar.gz gunzip -f data.tar.gz |
gunzip -fN control.tar.gz gunzip -fN data.tar.gz |
Line 55: | Line 78: |
Line 61: | Line 83: |
#ar -r test.deb gimp_2.2.11-1ubuntu1_i386/* echo "Usage patchdeb olddeb newdeb patch" |
echo "Usage: patchdeb olddeb newdeb patch" |
Line 70: | Line 91: |
ar x ../../$1 | ar xo ../../$1 |
Line 73: | Line 94: |
gunzip -f control.tar.gz gunzip -f data.tar.gz |
gunzip -fN control.tar.gz gunzip -fN data.tar.gz |
Line 108: | Line 129: |
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
recompress-deb script will recompress debian packages using proper versions of gzip and ar:
echo "Usage: recompress-deb input output" mkdir ./working cd ./working ar xo ../$1 gunzip -fN control.tar.gz gunzip -fN data.tar.gz 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/new3.deb $2 rm -fr working/
diffdeb script:
echo "Usage: diffdeb old new diff" mkdir ./working mkdir ./working/old mkdir ./working/new # Extract old deb (ar) cd ./working/old ar xo ../../$1 cd ../../ # Extract new deb (ar) cd ./working/new ar xo ../../$2 cd ../../ # Extract old deb contents (gzip) cd ./working/old gunzip -fN control.tar.gz gunzip -fN data.tar.gz cd ../../ # Extract new deb contents (gzip) cd ./working/new gunzip -fN control.tar.gz gunzip -fN 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 xo ../../$1 # Extract old deb contents (gzip) gunzip -fN control.tar.gz gunzip -fN 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)