[FreeBSD] Compileren php56-curl tegen OpenSSL uit ports

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Nu online
Ik heb een probleem met het werkend krijgen van de PHP-module 'curl' tegen de huidige versie van OpenSSL op mijn FreeBSD systeem (jail op FreeNAS).

In de ports heb ik openssl gecompiled, net als nginx, libcurl en php56. Als ik echter php56-curl compile, gaat dat goed, maar ik zie in phpinfo:
SSL Version OpenSSL/0.9.8z
Ik begrijp niet hoe hij aan deze versie blijft komen, want als ik bijvoorbeeld curl -V doe in /usr/local/bin dan komt er wel de juiste versie te staan:
curl 7.44.0 (amd64-portbld-freebsd9.3) libcurl/7.44.0 OpenSSL/1.0.2d zlib/1.2.8
In de makefile heb ik keurig verwezen dat hij bij compilen OpenSSL uit de ports moet gebruiken.

/etc/make.conf:
code:
1
WITH_OPENSSL_PORT=yes


Als ik gewoon openssl version intyp krijg ik ook 'OpenSSL 1.0.2d 9 Jul 2015'.

Kortom, alles lijkt gewoon goed. Overal op mijn systeem staat alleen nog OpenSSL 1.0.2d maar toch weet die vervelende php56-curl module nog een oude OpenSSL versie te vinden. Hoe krijg ik hem daar vanaf?

Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 10:04

CAPSLOCK2000

zie teletekst pagina 888

Ik weet er zelf niks van maar er loopt hier net een BSD'er door de kamer en die zegt in het voorbijgaan:

"In /usr/local/etc/php5 of zoiets staat een subdirectory met zo'n ge-datestamp-te directorynaam. Als je daar iets met symlinks klooit kun je het gefixt krijgen."

caveat lectorem: Dit is letterlijk in het voorbijgaan gezegd, hij heeft je post niet eens gelezen maar alleen mijn mondelinge samenvatting gehoord, misschien zit hij er helemaal naast.

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

Verwijderd

Met symlinks repareren is geen echte oplossing.
Heb je alle PHP ports opnieuw gebuild nadat je de nieuwe OpenSSL hebt geinstalleerd? Ports die gelinkt zijn aan de OpenSSL port moeten wel gelinkt worden aan de nieuwe OpenSSL versie, anders blijven ze de oude versie zoeken.
In het uiterste geval kun je ook FreeBSD zelf upgraden (STABLE gaan volgen), dan heb je ook altijd de meest recente versie van alles in de base system.

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Nu online
Dank voor jullie hulp zover!

Die directory is er bij mij niet. Misschien komt dat omdat ik feitelijk een jail op FreeNAS draai. De jail is weliswaar een volledige FreeBSD, maar ik kan dus niet zomaar even naar stable gaan upgraden helaas.

Ik heb ondertussen ook nog het een en ander bekeken en zag in de phpinfo dat de php-openssl module nog tegen de oude versie aan gecompileerd was. Die heb ik nu ook opnieuw gedaan vanuit de ports en nu krijg ik dus dit:
openssl
OpenSSL support enabled
OpenSSL Library Version OpenSSL 0.9.8za-freebsd 5 Jun 2014
OpenSSL Header Version OpenSSL 1.0.2d 9 Jul 2015
Heb daar natuurlijk al even op gegoogled, maar dat betekent dat hij bij compileren wel de 1.0.2d vindt, maar dat er bij runtime dynamisch gelinkt wordt naar een library met 0.9.8za. De vraag is nu dus alleen... waar vind ik die library? Ik heb al een locate gedaan op het hele systeem maar ik kan hem niet vinden.

In de FreeNAS base is de versie 0.9.8zd, dus ook daar komt hij niet vandaan!

Hoop dat iemand me weer een stapje verder kan helpen. Ik ga er vanuit dat als ik die php-openssl goed kan linken dat de php-curl dan ook wat meer welwillend is.

Acties:
  • 0 Henk 'm!

Verwijderd

Je hebt nu twee versies van OpenSSL: de port (1.0.2) en die van de base versie (0.9.8), dat is op zich prima. Maar ergens zit nog iets van php dat nog niet opnieuw gebuild is tegen de nieuwe openssl versie. Ik zou daarom eerst alle php gerelateerde ports opnieuw installeren (iets als: portmaster -f php\*).

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Nu online
Verwijderd schreef op zondag 13 september 2015 @ 17:21:
Je hebt nu twee versies van OpenSSL: de port (1.0.2) en die van de base versie (0.9.8), dat is op zich prima. Maar ergens zit nog iets van php dat nog niet opnieuw gebuild is tegen de nieuwe openssl versie. Ik zou daarom eerst alle php gerelateerde ports opnieuw installeren (iets als: portmaster -f php\*).
Dank voor je hulp! Je avater straalt vertrouwen uit voor deze kwestie :9.

Ik heb dat portmaster commando uitgevoerd (weliswaar met php56), maar loop dan alweer tegen errors aan (vooral met Perl, die steeds wil wisselen tussen 5.18 en 5.20, afhankelijk van het package). Nu kan ik wel even alles verwijderen en dan opnieuw gaan bouwen, maar ik wil graag begrijpen wat nu het probleem veroorzaakt. Ik ben geen techneut en jij bent er beter in thuis, maar ik heb de base packages zijn php56 zelf, openssl en php56-openssl al opnieuw gebouwd... het kan toch niet in iets zitten zoals php56-zlib 8)7?

Hoe kan het dat ik nergens op mijn systeem een openssl 0.9.8 vind, maar dat hij toch er toch bij runtime tegen zo'n versie gelinkt wordt?

Oh trouwens... we hadden nu al 0.9.8za van php56-openssl, 0.9.8zd van de base appliance maar ik zag dat php56-curl gebouwd is tegen 0.9.8z. Waar haalt hij het allemaal vandaan? Mij ontgaat gewoon de logica.

Acties:
  • 0 Henk 'm!

Verwijderd

Dennis schreef op zondag 13 september 2015 @ 23:17:
[...]

Dank voor je hulp! Je avater straalt vertrouwen uit voor deze kwestie :9.

Ik heb dat portmaster commando uitgevoerd (weliswaar met php56), maar loop dan alweer tegen errors aan (vooral met Perl, die steeds wil wisselen tussen 5.18 en 5.20, afhankelijk van het package). Nu kan ik wel even alles verwijderen en dan opnieuw gaan bouwen, maar ik wil graag begrijpen wat nu het probleem veroorzaakt. Ik ben geen techneut en jij bent er beter in thuis, maar ik heb de base packages zijn php56 zelf, openssl en php56-openssl al opnieuw gebouwd... het kan toch niet in iets zitten zoals php56-zlib 8)7?
Dan zijn er waarschijnlijk meer ports (Perl?) die gebuild zijn tegen de oude openssl versie. Aangezien perl ook veel dependencies heeft moet je nu denk ik wat rigoreuzer te werk gaan. Zeker als je ook nog meerdere perl versies geinstalleerd hebt. Ik denk daarom dat de portupgrade van perl in het verleden ook niet gegaan is zoals het moet.
Hoe kan het dat ik nergens op mijn systeem een openssl 0.9.8 vind, maar dat hij toch er toch bij runtime tegen zo'n versie gelinkt wordt?
De port library staat in /usr/local/lib en de versie in base in /usr/lib (libssl). De port binary staat in /usr/local/bin en de base versie in /usr/bin. Bij FreeBSD is een strikte scheiding tussen de 3rd party applicaties (de ports) en het OS. Alle ports worden altijd geinstalleerd in /usr/local. Je zou in FreeBSD in principe al je ports kunnen verwijderen door alles onder /usr/local te deleten, maar het OS blijft dan onaangetast.
Oh trouwens... we hadden nu al 0.9.8za van php56-openssl, 0.9.8zd van de base appliance maar ik zag dat php56-curl gebouwd is tegen 0.9.8z. Waar haalt hij het allemaal vandaan? Mij ontgaat gewoon de logica.
Dat komt omdat sommige ports nu tegen de nieuwe en sommige tegen de oude gebuild zijn. Zeker Perl is een port die altijd op de juiste manier geupgrade moet worden wegens de vele dependencies. Zie hiervoor (altijd lezen voordat je iets upgrade) /usr/ports/UPDATING.

Wat ik in jouw geval nu eerst zou proberen is:
- Je portstree updaten met 'portsnap fetch update'.
- Alle perl versies verwijderen met 'pkg delete -f perl\*'
- Dan de default perl opnieuw installeren incl. de dependencies van perl met portmaster -rf perl5.20
- En dan openssl opnieuw installeren incl. dependencies met portmaster -rf openssl.

Dat is veel werk maar anders blijft zoiets terugkomen.

Als zelfs dit ook niet werkt (portmaster loopt tegen een probleem aan en kan niet verder) dan zou je kunnen overwegen alle ports te vervangen/upgraden. Zie hiervoor de manpage van portmaster (helemaal aan het einde).

[ Voor 13% gewijzigd door Verwijderd op 14-09-2015 21:26 ]


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Nu online
mbeis,

Hartelijk dank voor al je hulp. Het was even een hele bevalling, maar ik heb vandaag met pkg delete * mijn hele installatie 'weggegooid'. Daarna heb ik nginx, php56 en mysql56 niet opnieuw geïnstalleerd vanuit de freshports zoals ik voorheen deed, maar alles opnieuw gecompileerd vanuit de ports.

Was dus wel het nodige werk, maar het heeft zich uitbetaald want (vraag me niet hoe het kan) alles is nu netjes tegen 1.0.2d gecompileerd en draait ook als zodanig. Ik kan nu dus eindelijk mijn ownCloud plugins gebruiken want CURL werkt nu goed.

MySQL moest ik trouwens wel vanuit de freshports doen, want het compileren loopt vast bij yassl als onderdeel van MySQL-client. Vreemd, maar het had gelukkig geen impact op de rest.

Dank nogmaals voor je hulp!

Acties:
  • 0 Henk 'm!

Verwijderd

Dennis schreef op maandag 14 september 2015 @ 23:24:
mbeis,

Hartelijk dank voor al je hulp. Het was even een hele bevalling, maar ik heb vandaag met pkg delete * mijn hele installatie 'weggegooid'. Daarna heb ik nginx, php56 en mysql56 niet opnieuw geïnstalleerd vanuit de freshports zoals ik voorheen deed, maar alles opnieuw gecompileerd vanuit de ports.
Dat is inderdaad een hoop werk maar dan ruimt het wel lekker op.
Was dus wel het nodige werk, maar het heeft zich uitbetaald want (vraag me niet hoe het kan) alles is nu netjes tegen 1.0.2d gecompileerd en draait ook als zodanig. Ik kan nu dus eindelijk mijn ownCloud plugins gebruiken want CURL werkt nu goed.

MySQL moest ik trouwens wel vanuit de freshports doen, want het compileren loopt vast bij yassl als onderdeel van MySQL-client. Vreemd, maar het had gelukkig geen impact op de rest.
Wat bedoel je met installeren vanuit freshports?

FreeBSD heeft 2 manieren om software/applicaties te installeren:
1. via ports > compilen en installeren, voordeel is dat je opties voor het compilen kunt aanpassen
2. via pkg > voorgecompilede packages installeren, sneller maar geen mogelijkheid build opties aan te passen.

Freshports.org is een site waar alle portcommits vermeld wordt.

Het is zeer af te raden software op een andere manier te installeren dan via ports of pkg. Als van de software nog geen port is dan is het verstandiger het zelf te porten. Anders heb je de kans dat bestanden geinstalleerd worden op de verkeerde plaats (dus niet in /usr/local), of dat bestanden van je base system vervangen worden, en dat wil je niet.
Dank nogmaals voor je hulp!
Graag gedaan.

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Nu online
Verwijderd schreef op dinsdag 15 september 2015 @ 00:00:
Wat bedoel je met installeren vanuit freshports?

FreeBSD heeft 2 manieren om software/applicaties te installeren:
1. via ports > compilen en installeren, voordeel is dat je opties voor het compilen kunt aanpassen
2. via pkg > voorgecompilede packages installeren, sneller maar geen mogelijkheid build opties aan te passen.

Freshports.org is een site waar alle portcommits vermeld wordt.
Yep, ik zei het verkeerd. Voorheen installeerde ik de binaries via pkg, maar heb nu dus alles zelf gecompileerd. Op zich is het niet zoveel werk, maar al die losse modules van php... 8)7.

Acties:
  • 0 Henk 'm!

  • SadisticPanda
  • Registratie: Februari 2009
  • Niet online

SadisticPanda

Heet patatje :o

Daarvoor zijn er de meta ports met de ncurses ui??

code:
1
2
Cd /usr/ports/lang/php56-extentions
Make config


Met spatie X-jes zetten in de nodige php modules en die vliegt wel door alle folders? Volle 5 seconden extra werk. :D

Marstek 5.12kw v151, CT003 v117, Sagecom Xs212 1P,


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Nu online
Oh haha, had ik moeten weten :P. Bedankt voor de tip alsnog, want ik moet ook nog andere jails helemaal opnieuw gaan opbouwen dus dit komt alsnog van pas!
Pagina: 1