Kristian: Bygg ett paket ifrån subversion

Ibland behöver man av någon anledning ett nyare paket än det som finns till ens egen dist, eller så finns paketet helt enkelt inte alls till disten i fråga. Proceduren att ladda ner och installera ett sådant program är dock inte trivialt så jag ska visa hur man KAN göra

Vi ska ta avidemux som exempel. Paketet finns inte till debian, det ingår visserligen i debian-multimedias repo men den repon ställer ibland till det genom stundtals inkompatibla bibliotek. Så jag vill inte lägga till den utan kompilera avidemux på egen hand

Så jag börjar med att gå till avidemuxs hemsida och där hittar jag en länk till deras svn. Jag checkar ut senaste revisionen (kräver subversion ifrån din pakethanterare) enligt

svn co svn://svn.berlios.de/avidemux/branches/avidemux_2.4_branch/

vi går in i mappen: cd avidemux_2.4_branch

De flesta open source projekt använder "automake", då är första steget att köra

./configure

(alternativt ./autogen.sh) men i det här fallet används istället "cmake", då är första kommandot istället

cmake .

Om något bibliotek saknas så sök i pakethanteraren efter namnet på det som saknas. I debian-distar ska du installera paketen som slutar på "dev"

När cmake . (eller ./configure) gått igenom utan problem, så kör

make

Nu ser vi en av cmakes godisfinesser - en progressbar för byggprocessen Smile Nåväl, sätt på kaffe och lyssna lite på radio en stund. 

Vi förutsätter att kompileringen gick bra, då skulle vi ha kunnat köra en en klassisk

sudo make install

Nackdelen är att programmet då blir svårare att avinstallera. En bättre metod är att använda "checkinstall" (installera via din pakethanterare) vilket skapar ett "quick and dirty"-paket för din distribution. Fördelen är att vi lätt kan avinstallera programmet vid behov utan att lämna skräprester efter oss.

Kör

sudo checkinstall

Svara ja på första frågan

Skriv in "avidemux" som "description", tryck enter och därefter CTRL + D

Tryck 2 och skriv "avidemux" och tryck enter. Gör samma sak för alternativ 11.

Tryck enter

Om allt går bra får du frågan Some of the files created by the installation are inside the build
directory
You probably don't want them to be included in the package,
especially if they are inside your home directory.

Tryck enter för att svara det förvalda "no". Tryck enter igen för som svar på efterföljande fråga

Håll tummarna! Om du inte får några felmeddelande har du nu lyckats bygga och installera ett färskt och nybakat paket Smile Grattis!

 

Kommentarer

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

Jag är ett stort fan av

Jag är ett stort fan av '-DCMAKE_VERBOSE_MAKEFILE:BOOL="TRUE" '

Så du ser vad som händer.

Att något kompilerar betyder inte alltid att allt är rätt.

 

Kristians bild

make VERBOSE=1 gör samma

make VERBOSE=1

gör samma sak? Ja, det är bra för att se att optimering/debugflaggor är rätt satta, eller för att lösa inkluderings/länkningsfel. Använder det stundtals för mina egna projekt men jag tenderar (kanske oklokt) att lita på andras förvalda flaggor Smile

 

 

 

---------------------------------------

Open Source - because writing software doesn't make you a "traitor"

benzins bild

Coolt, det där med

Coolt, det där med checkinstall hade jag ingen aning om:) Har alltid dragit mej för att kompilera, för det är så svårt att avinstallera. Jag antar att checkinstall-grejen funkar på vanliga tar bollar också?

 

/B

Checkinstall var bra men

Checkinstall var bra men för tillfättet är det buggigt och inte tillförlitligt. (om du inte kör en gammal dist)

 

checkinstall används istället för 'make install' och spårar då installationen med installwatch och skapar sedan ett paket av installationen.

checkinstall kan även användas för installationsskript vilket är riktigt bra då man installerar färdiga binärer och får ett packet som lätt kan avinstalleras.

FoHs bild

Behövar man inte ange -d

Behövar man inte ange -d på checkinstall för att få ett deb-paket? Har det ingen betydelse?

Kristians bild

checkinstall fungerar inte

checkinstall fungerar inte för alla byggen, men det funkar i de allra flesta fall. Kör du en debian-baserad dist får du en .deb och kör du fedora eller suse så får du en .rpm.

---------------------------------------

Open Source - because writing software doesn't make you a "traitor"

mikaeljs bild

Skall fungera med



Skall fungera med slackware också om jag minns rätt. Aldrig testat själv dock.



~~~ *nixBloggen - http://nixblogg.blogg.se ~~~
/////// #EeePC_Sverige @ irc.freenode.net \\\\\\\

 



 



~~~ Have a goodyear - http://www.youtube.com/watch?v=tO2wb-LarfU ~~~

 

FoHs bild

Jo, men känner den alltså

Jo, men känner den alltså av det själv? För jag läste i hjälpen att man kunde skicka med ett val av typ av paket, -d för en deb tror jag det var.

Kristians bild

Det kan du säkert    

Det kan du säkert

 

 

---------------------------------------

Open Source - because writing software doesn't make you a "traitor"

FoHs bild

Mjo, men bra att veta att

Mjo, men bra att veta att man inte behöver det Smile Ska nog avinstallera amsn och testa en checkinstall på det.

Edit:
Apropå, vad händer om man gör en checkinstall på något som redan är checkinstallat? Smile

Kristians bild

Om du valt samma namn på

Om du valt samma namn på paketet du skapar så ersätts det, men annars är det kanske klokast att avinstallera det gamla paketet manuellt innan du kör checkinstall.

---------------------------------------

Open Source - because writing software doesn't make you a "traitor"

FoHs bild

Okelidokeli. Klarade hur som

Okelidokeli. Klarade hur som helst inte av att bygga det första paketet...

dpkg-deb - error: (upstream) version (`src') doesn't contain any digits
dpkg-deb: 1 errors in control file

Har ingen aning om vad det betyder. Vad ska den med digits till??

Om du inte anger några

Om du inte anger några växlar till checkinstall så läser den denna informationen från sin konfigurationsfil, i den finns det även alternativ för att installera eller bara bygga ett paket mm.

FoHs bild

Aha! Tack för ett

Aha! Tack för ett upplysande svar Smile

Kristians bild

Grabbar (och anne),

Grabbar (och anne), http://go-mono.com/moonlight/ version 0.8 är släppt - you know what to do Smile

OSB. Det finns färdiga paket men pga. patentskäl kan de inte distribuera paket med mediastöd

 

---------------------------------------

Open Source - because writing software doesn't make you a "traitor"