Uppdatera paket
Föregående
Nästa

Uppdatera paket

Om du har använt Linuxdistributioner ett tag har du säkert upptäckt att det ibland finns buggar i program. I Debian och Ubuntu fixas ofta buggarna i paketeringen genom att källkoden patchas. Ibland finns det buggar i själva paketeringen som kan orsaka svårigheter.

För att patcha programmets källkod kan du helt enkelt ladda ner det aktuella källpaketet för Ubuntu (med apt-get source) och göra de ändringar som krävs. Du kan sedan lägga till en ny rad i debian/changelog genom att köra dch -i eller dch -v <version>-<revision> för att specificera den nya versionen. När du kör debuild -S från källkatalogen får du ett nytt källpaket med en ny .diff.gz i katalogen ovanför som innehåller dina ändringar. Problemet med den här metoden är att skillnaden mellan källkod och patchar är otydlig.

En lösning på det här problemet är att separera ändringarna i källkoden i individuella patchar som lagras i katalogen debian. Ett av de systemen kallas dpatch. Ändringarna lagras i katalogen debian/patches/ och har ett speciellt format.

För att skapa en dpatch, utför följande steg.

Skapa en temporär arbetsplats och två kopior av den aktuella källkodskatalogen.

mkdir tmp
cd tmp
cp -a ../<paket>-<version> . 
cp -a <paket>-<version> <paket>-<version>.orig 

Gör ändringarna i katalogen <paket>-<version>.

Skapa en patch med diff

diff -Nru <paket>-<version>.orig <paket>-<version> > patch-fil

Skapa en dpatch genom att köra dpatch patch-template och skapa en fil som heter 00list som listar dpatcharna:

dpatch patch-template -p "01_patchnamn" "patchfil-beskrivning" \
	< patch-fil > 01_patchnamn.dpatch
echo 01_patchnamn.dpatch >00list

Du kan nu lägga 01_patchnamn.dpatch och 00list i katalogen debian/patches i ditt källpaket:

mkdir ../<paket>-<version>/debian/patches
cp 01_patchnamn.dpatch 00list ../<paket>-<version>/debian/patches
cd ..
rm -rf tmp
			

Notera

Du kan också ändra på en patch som redan finns genom att använda dpatch-edit-patch.

När alla ändringar har utförts och du har lagt till en changelog-post och dpatch har lagts till filen debian/control (om det behövs) kan du bygga om källpaketet med debuild -S.

För att ditt fixade källpaket ska laddas upp till förråden i Ubuntu måste du få ditt källpaket sponsrat av någon som har uppladdningsrättigheter. Läs “Uppladdning och granskning” för fler detaljer. Ibland är det enklare och effektivare att bara ge bort skillnaden mellan källpaketet som ligger i förrådet och ditt uppdaterade paket, än att ge bort hela källpaketet (.diff.gz, .dsc och .orig.tar.gz). Ett verktyg har skapats för att göra just det - debdiff. Att använda debdiff är ungefär som att använda diff men det är skapat speciellt för paket. Du kan göra en debdiff på källpaktet genom att skriva:

debdiff <gammaltpaket>.dsc <nyttpaket>.dsc > paket.debdiff
		

eller på det binära paktet genom att skriva:

debdiff <gammaltpaket>.deb <nyttpaket>.deb > paket.debdiff
		

Debdiffar är bra att skicka med buggrapporter så att de finns tillgängliga för en sponsor att ladda upp.

Föregående
Nästa
Hem