Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik erg vaak de rapache module voor Apache2, en ik zou er graag een package van maken, zodat de module direct via yum/apt te installeren is. Ik heb met de auteur van het project overlegd, en hij zou ook graag een package hebben, maar hij heeft zelf niet de kennis of tijd om zich erin te verdiepen. Nu heb ik ook geen ervaring met het maken van packages, maar ik heb wat tijd over dus ik heb beloofd dat ik een poging zou wagen. Ik wil graag beginnen met een debian/ubuntu package, en later ook een rhel/centos package maken.

Maar voor ik begin, even voor de big picture: welke dingen moet ik rekening mee gaan houden? Het compilen en installeren van de module is kinderlijk eenvoudig: op debian/ubuntu is het gewoon ./configure, make, make install. Dus je zou zeggen dat het packagen van deze procedure bijna triviaal is. En brengt het nog complicaties met zich mee dat het geen standalone software betreft, maar een Apache module? Ik heb wat tutorials en howto's gegoogled maar ik kon niks specifiek voor apache modules vinden.

Daarnaast zou ik graag na het compilen en installeren van het package, automatisch de betreffende LoadModule aan de apache2.conf/httpd.conf toevoegen. Is dit verstandig, of kan ik dit beter aan de gebruiker zelf overlaten?

Alle tips, ervaringen zijn welkom :-)

[ Voor 4% gewijzigd door Verwijderd op 17-08-2010 15:24 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Wat je moet doen is eerst het RPM script maken In dat script geef je ook aan hoe de source gecompileerd moet worden en welke bestanden er ingepakt moet worden.

[ Voor 31% gewijzigd door Verwijderd op 17-08-2010 15:40 . Reden: Iets vriendelijker toon ]


Acties:
  • 0 Henk 'm!

  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Ook ik ken alleen RPM...

Je kunt even zoeken op "Spec file", dat is de file die je aan rpmbuild voert om het package te maken.

Is vrij makkelijk.

We are pentium of borg. Division is futile. You will be approximated.


Acties:
  • 0 Henk 'm!

  • hostname
  • Registratie: April 2009
  • Laatst online: 15:38
Debian/Ubuntu packages zijn niet heel ingewikkeld. Je hebt een debian directory, met daarin een aantal files:
  • control: hierin staat alle info over de packages: naam, dependencies, architectuur, beschrijving, etc
  • changelog
  • copyright: hierin staat de licentiegegevens & auteur v/d software.
  • rules: deze makefile moet de software compileren en installeren. Hier zijn een aantal helper-systemen voor, zoals debhelper en CDBS. Deze nemen het moeilijke werk voor je uit handen: als je CDBS gebruikt hoef je bijv. alleen maar de configure flags aan te geven en maakt hij er een package van voor je.
Het beste kan je in de Debian Developer Reference en de Packaging Manual kijken, maar die is verdwenen van de site zo te zien. Ook kan je eens naar bestaande packages kijken, zoals libapache2-mod-auth-openid.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben mbv deze tutorial bezig geweest om een Ubuntu 10.04 package te maken. Ik heb de stapjes netjes gevolgd, en heb nu een .deb file dat installeert, echter het bevat niet de file waar het allemaal om draait: mod_R.so. De data.tar.gz bevat alleen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
./
./lib/
./lib/libapreq2.a
./lib/libapreq2.la
./lib/libapreq2.so.3.1.0
./usr/
./usr/share/
./usr/share/doc/
./usr/share/doc/rapache/
./usr/share/doc/rapache/changelog.gz
./usr/share/doc/rapache/README
./usr/share/doc/rapache/copyright
./usr/share/doc/rapache/changelog.Debian.gz
./lib/libapreq2.so
./lib/libapreq2.so.3


Ik snap niet goed wat ik verkeerd heb gedaan; normaal als ik gewoon ./configure, make, make install doe wordt deze file automatisch aangemaakt en naar /usr/lib/apache2/modules gekopieerd. Moet ik dit handmatig doen nu?

Het valt mij op dat de rules file bijzonder leeg is in vergelijking met een aantal voorbeelden. Het bevat slechts:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

%:
        dh  $@

Echter, ik heb geen custom configure flags, en volgens de tutorial hoef ik de rules file dan niet te wijzigen.

[ Voor 28% gewijzigd door Verwijderd op 17-08-2010 21:39 ]


Acties:
  • 0 Henk 'm!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 05-09 17:21

deadinspace

The what goes where now?

Verwijderd schreef op dinsdag 17 augustus 2010 @ 15:22:
Maar voor ik begin, even voor de big picture: welke dingen moet ik rekening mee gaan houden?
Allereerst: wat wil je precies? Er is een groot verschil tussen een package dat lijkt te werken en een package dat netjes genoeg is om Debian (en daarmee Ubuntu) in te mogen. (De eisen liggen een stuk hoger in het tweede geval)

Wat willekeurige dingen om op te letten / die me opvielen:
  • Zorg dat de depends en de build-depends goed staan. Zeer belangrijk als het Debian of Ubuntu in moet, maar ook als dat niet het geval is is dit belangrijk voor je gebruikers. En voor jezelf, als je later het package opnieuw wil builden ofzo.
  • De gebruikelijke naam voor Apache2 modules in Debian is libapache2-mod-bla (in jouw geval lijkt libapache2-mod-r me de beste keuze).
  • Zorg voor een degelijke beschrijving, en noem de naam "rapache" in die beschrijving, zodat mensen die op "rapache" zoeken jouw package vinden.
  • Om te testen (build-)depends en dergelijke goed zijn kun je builden in een kale chroot. Met chroots kun je ook makkelijk voor Debian builden op Ubuntu overigens.
  • rapache bevat libapreq2 en buildt daartegen, maar dat is niet handig voor Debian/Ubuntu. libapreq2 zit namelijk al in Debian, dus je zult bij het builden van rapache moeten aangeven dat de meegeleverde libapreq2 niet gebruikt moet worden, maar die in Debian.
  • Kijk naar andere apache modules als voorbeeld. libapache2-mod-bw lijkt me een relatief eenvoudige Apache module die misschien als voorbeeld kan dienen (maar kijk gerust naar meerdere modules).
Daarnaast zou ik graag na het compilen en installeren van het package, automatisch de betreffende LoadModule aan de apache2.conf/httpd.conf toevoegen. Is dit verstandig, of kan ik dit beter aan de gebruiker zelf overlaten?
Dat is heel erg foei en het negeert compleet het Debian Apache module framework. ;)

Wat je hoort te doen is in je package een module-load file mee te geven, welke vanuit httpd.conf geinclude kan worden. Die files staan in /etc/apache2/mods-available. Vanuit de package postinst kun je dan die module enablen. Zie ook a2enmod en a2dismod.
Verwijderd schreef op dinsdag 17 augustus 2010 @ 20:51:
De data.tar.gz bevat alleen
code:
1
2
3
...
./lib/libapreq2.so
./lib/libapreq2.so.3
Die horen niet in /lib, maar in /usr/lib . En die files gaan dus ook conflicten met het libapreq2 package.
Ik snap niet goed wat ik verkeerd heb gedaan; normaal als ik gewoon ./configure, make, make install doe wordt deze file automatisch aangemaakt en naar /usr/lib/apache2/modules gekopieerd. Moet ik dit handmatig doen nu?

Het valt mij op dat de rules file bijzonder leeg is in vergelijking met een aantal voorbeelden. Het bevat slechts:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

%:
        dh  $@
debian/rules wordt tijdens het builden van het package verschillende keren aangeroepen (met verschillende argumenten) om het builden van het package te sturen. dh (van debhelper) is een programma dat dit sturen zo automatisch mogelijk doet, gebruikmakend van bijvoorbeeld de mogelijkheden van een standaard configure-script.

Maar blijkbaar gaat daar iets niet helemaal lekker, aangezien mod_R.so niet in je package belandt. Ook het feit dat er libs in /lib belanden is een waarschuwing, want voorzover ik weet roept debhelper configure altijd aan met --prefix=/usr. Ik weet niet wat daar mis gaat, maar het zou kunnen dat je een meer handmatige (langere) debian/rules nodig hebt.

Waar in je build-directory eindigen die libs precies?

Acties:
  • 0 Henk 'm!

  • hostname
  • Registratie: April 2009
  • Laatst online: 15:38
Moet je mod_R.so niet nog in je debian/install zetten?

[ Voor 3% gewijzigd door hostname op 18-08-2010 10:40 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heel erg bedankt voor de hulp. Allereerst wil ik een werkende versie hebben welke de module installeert. Later zal ik dat dan aanvullen met de manual, module-load file,etc. Maar voor nu zijn er dus twee problemen:

De eerste is dat de libapreq2 development package welke met ubuntu 10.04 komt bug bevat, waardoor rapache niet zonder meer compilet. Vandaar dat een oude versie van libapreq2 bij rapache inbegrepen zit. Ik heb het hier met de auteur van het package over gehad, hij heeft de bug gepost, en mij een tijdelijke fix gegeven waarmee ik alsnog gewoon libapreq2-dev kan gebruiken:

code:
1
2
3
4
## libapreq2 fix from jeff:
sed -e 's/\/usr\/lib\/libuuid.la/-luuid/' /usr/lib/libapreq2.la  > /tmp/libapreq2.la
sudo mv /usr/lib/libapreq2.la /usr/lib/libapreq2.la.bak
sudo mv /tmp/libapreq2.la /usr/lib


Wanneer ik zorg dat libapreq2-dev is geinstalleerd dan wordt deze automatisch gebruikt bij het compilen, en is het probleem met de conflicterende libapreq2 die in het rapache package zit opgelost.

Het tweede probleem is dat dpkg-buildpackage de files niet juist kopieert. De mod_R wordt gewoon gekopieerd naar /usr/lib/apache2/modules, in plaats van naar de package. Ik heb geen idee hoe dit komt.

Ik heb hierrr een stukje script geplaatst waarmee automatisch het package gedownload en gebuild wordt.

[ Voor 10% gewijzigd door Verwijderd op 18-08-2010 12:16 ]

Pagina: 1