När du använder dh_make för att utföra den ursprungliga "debianisationen" skapas exempelfiler för olika uppgifter i katalogen debian/
. De här mallarna har filändelsen .ex. Om du vill använda en av dem, byt namn på den genom att ta bort filändelsen. Om du inte behöver den, ta bort den för att hålla katalogen debian/
ren.
Det finns två typer av källpaket: native och icke-native. Ett paket som är native är specifikt för Ubuntu/Debian. I katalogen debian/ finns det information om alla ändringar som har gjorts i källkoden som finns med i tarbollen (vanligtvis <paketnamn>_<version>.tar.gz). Icke-native-paket är vanligare. Ett icke-native-paket delar upp källpaketet i en <paketnamn>_<version>.orig.tar.gz-tarboll som är identisk (forhoppningsvis även md5summan) med tarbollen som laddades ner från projektets hemsida och en .diff.gz-fil som innehåller skillnaderna (katalogen debian/
och patchar) från original-tarbollen.
Här är en lista över potentiella problem som kan uppstå om du ändrar på den ursprungliga tarbollen:
Reproducerbarhet
Om du bara tar filerna .diff.gz och .dsc kan inte du eller någon annan reproducera ändringarna i den ursprungliga tarbollen.
Uppgraderbarhet
Det är mycket enklare att uppgradera till en ny uppströmsversion (ny version från skaparen) om .orig.tar.gz-filen sparas och det finns en tydlig avgränsning mellan uppströms-källkod och ändringarna som gjordes för att skapa källpaketet för Ubuntu.
Synkronisering från Debian till Ubuntu
Om originaltarbollarna ändras blir det svårt att automatiskt synkronisera från Debian till Ubuntu. Normalt ändras bara filerna .diff.gz och .dsc för samma uppströmsversion, eftersom .orig.tar.gz-filen ddelas melan alla Debian- och Ubuntu-revisioner. Det är mycket svårare att synkronisera om md5summorna för orig.tar.gz-filerna inte stämmer överens.
Användning av versionshantering för Debianpaket
Om du använder svn (svn-buildpackage) för att hantera ditt Debianpaket sparar du vanligtvis inte original-tarbollen inuti. Om någon annan gör en checkout måste han/hon skaffa sig originaltarbollen separat. Andra versionshanteringssystem kan användas för att bara spåra paketeringsfilerna (debian/
m fl) och inte hela källkoden. Om inte .orig.tar.gz är samma fil kan det självklart uppstå problem.
Säkerhetsspårning
Tänk dig en situation där någon vill lägga till en bakdörr, ett rootkit eller andra elakheter. Om original-tarbollen är oförändrad går det enkelt att söka igenom .diff.gz-filen i jakt på elakheter från personen som modifierade paketet. Om tarbollen ändrades måste man däremot dessutom leta efter skillnader mellan den modifierade tarbollen och originalet.
Du måste fortfarande tro att de som skrev programmet inte försökte göra något elakt, men det måste du oavsett om tarbollen ändras eller inte.
.diff.gz-filen
Du kan redan använda en .diff.gz-fil för att visa ändringarna om originaltarbollen redan finns, så det är enkelt att göra ändringar utan att röra originaltarbollen.
Det är acceptabelt att ändra på originaltarbollen om en eller flera av följande punkter stämmer:
Den inne håller icke-fria delar som inte kan distribueras vidare. Ta bort dessa saker och skriv ner det i paketet. Ofta innehåller sådana paket "dfsg" (som står för Debian Free Software Guidelines) i paketnamnet och/eller versionsnummret för att visa att de icke-fria delarna har tagits bort.
Upphovsmännen tillhandahar bara en bzip2-paketerad källa.
Bara bunzip2:a .tar.bz2-filen och kör gzip -9 på den resulterande tar-filen.
md5summorna på den .tar du tillhandahåller måste matcha de från original-tar-filen!
Lägga så småningom till en get-orig-source-regel i debian/rules som gör den här förvandlingen automatiskt.
Direktimporterat från SVN
Lägg till get-orig-source i debian/rules
Följande är inte skäl till att ändra den ursprungliga tarbollen:
Felaktig kataloglayout
dpkg-source är ganska flexibelt och klarar av att skapa korrekt kataloglayout även om:
Katalogen inuti tarbollen inte heter <uppström>-<version>.
Det finns ingen underkatalog i tarbollen.
Filer behöver tas bort för att .diff.gz-filen ska bli mindre (t ex filer som skapades av autotools). Allt som behöver tas bort ska tas bort i clean . rule. Eftersom .diff.gz-filen skapas med diff -u kommer du inte se några borttagna filer i .diff.gz-filen.
Filer behöver ändras. Filer som behöver ändras ska vara i .diff.gz. Det är därför den finns!
Fel rättigheter på filer. Du kan använda debian/rules
för att göra det.
Vad gör jag med en .orig.tar.gz som redan innehåller en debian/
-katalog?
Packa inte om den. Du kan be upphovsmannen/-männen att ta bort katalogen debian/ och skicka en .diff.gz istället. Det här gör det enklare att granska deras jobb.
Det är alltid en bra idé att kontakta upphovsmannen/-männnen till programmet och fråga om du får fixa autoconf-problem, katalogstruktur, en utdaterad adress till Free Software Foundation i COPYRIGHT-filer, eller andra saker som inte är specifika till paketeringen men skulle underlätta för dig så att du inte behöver "patcha" källkoden i .diff.gz.
Filen debian/copyright
ska innehålla:
Licensinformationen för alla filer i källkoden. Ibland lägger upphovsmännen en licens i COPYING
men har annan licensinformation i vissa av filerna i källkoden.
Upphovsrättshavaren/-havarna och år.
Hela licensen om den inte är en av de som finns i /usr/share/common-licenses
. Om den finns där behöver du bara inkludera förordet (preamble).