Jak v Debianu spustím kompilaci balíku?

Jak v Debianu spustím kompilaci balíku?
« kdy: 26. 10. 2014, 09:42:18 »
Kdyz chci na debianu zdrojaky neceho, treba php, tak dam
apt-get build-dep php5
apt-get source php5

Jak ted spustim configure a make se spravnymi parametry? (myslim tim s parametry stejnymi ktere pouzil ten kdo v debianu kompiloval ten balik). Pochybuju ze defaultni ./configure bez parametru mi bude stacit.

« Poslední změna: 26. 10. 2014, 23:34:20 od Petr Krčmář »


Re:Jak v Debianu spustim kompilaci baliku?
« Odpověď #1 kdy: 26. 10. 2014, 10:11:08 »
Dělá se to takhle:

1. spustíš si internetový prohlížeč
2. do adresního řádku zadáš "www.google.cz"
3. do vyhledávacího políčka "debian recompile package"
4. postupuješ podle instrukcí v prvním nalezeném odkazu

Re:Jak v Debianu spustim kompilaci baliku?
« Odpověď #2 kdy: 26. 10. 2014, 10:34:20 »
OK priznavam, ze sem se asi spatne zeptal.
Potrebuju znat configure / make parametry, abych na JINEM systemu (ne debian) zkompiloval ten balik se stejnymi parametry jako debian. Takze mym cilem neni rekompilovat balik, na to z vysoka se*u, k cemu bych to taky asi delal? kdyz muzu rovnou stahnout predkompilovany...

Takze mi ten odkaz na googlu vubec ale naprosto ani trochu nepomohl.

Re:Jak v Debianu spustim kompilaci baliku?
« Odpověď #3 kdy: 26. 10. 2014, 10:44:12 »
Potrebuju znat configure / make parametry, abych na JINEM systemu (ne debian) zkompiloval ten balik se stejnymi parametry jako debian. [...] k cemu bych to taky asi delal?
Budeš muset asi vysvětlit i tak, proč bys dělal to, co chceš dělat. Na jiném systému se ti ten balík stejně přeloží proti jiným knihovnám a navíc buď nebude obsahovat debian-specific patche (takže bude potenciálně fungovat jinak), nebo je obsahovat bude a pak zase máš solidní šanci, že to nerozchodíš, protože bude něco chtít na nějakých debian-specific cestách v debian-specific formátu.

Navíc jsem nepochopil, proč teda zmiňuješ apt-get build-dep, když ten na debianu nepotřebuješ a na jiném systému ho nemáš.

Takze mi ten odkaz na googlu vubec ale naprosto ani trochu nepomohl.
Ale pomohl. Cesta nejmenšího odporu totiž je si překlad pustit na debianu a parametry pro configure zkopírovat jinam. Ale jak jsem napsal výš, takhle jednoduše to stejně pravděpodobně nebude fungovat.

Re:Jak v Debianu spustim kompilaci baliku?
« Odpověď #4 kdy: 26. 10. 2014, 10:59:32 »
No ono jde o to, ze obvykle resim komplexni ulohy, a vysvetlovat tady na foru muj cil je tak trochu asi zbytecne off topic.
Proste, PHP ma od verze 5.4 chybu. Kdyz ho zkompiluju kdekoli (na debianu i nedebianu) primo z oficialnich zdrojaku, tak ma chybu v alokovani pameti pri vypisovani dat z databaze (desitky tisic radku), narusta alokovana pamet, az to spadne na prekroceni limitu.

Debiani zkompilovane PHP ale tuhle chybu nema. Takze mym cilem je zjistit, co dela debian tak specialniho, aby tu chybu eliminoval.

V prvnim kroku sem si stahl zdrojaky a patche z debianu, aplikoval vsechny patche a zkusil zkompilovat (na debianu) s defaultnimi parametry pro configure, ale to mi da stejny vysledek - binarku s php ktera ma tu samou chybou alokace (uvolnovani) pameti. Takze jsem  z toho udelal zaver, ze zadny patch tu chybu neopravuje, a tudiz ze teda ta chyba se asi eliminuje nejakym configure parametrem (napr jako side effect disablovanim nejake feature, ktera s mysql treba vubec nesouvisi).

No a tak se snazim prijit na to, jake ty parametry jsou, abych mohl zkusit to s nima zkompilovat rucne, abych videl jestli to ty parametry eliminujou ten bug. Zkusil sem apt-get source --compile php5, to po hodine prace balik opravdu rekompiluje a nejake configure parametry (cflags) to behem cinnosti vypisuje, nicmene kdyz ty configure parametry vemu jak jsou a rucne s nima spustim configure, tak tam je nejakej problem, u nekterych parametru to hlasi ze jsou unrecognized, a make pak havaruje s nejakou chybou (undeclared function), coz je uplne nejaka haluz.


Re:Jak v Debianu spustim kompilaci baliku?
« Odpověď #5 kdy: 26. 10. 2014, 11:19:55 »
No ono jde o to, ze obvykle resim komplexni ulohy, a vysvetlovat tady na foru muj cil je tak trochu asi zbytecne off topic.
Naopak, teprve teď, když jsi to vysvětlil, má smysl diskutovat řešení.

V prvnim kroku sem si stahl zdrojaky a patche z debianu, aplikoval vsechny patche a zkusil zkompilovat (na debianu) s defaultnimi parametry pro configure, ale to mi da stejny vysledek - binarku s php ktera ma tu samou chybou alokace (uvolnovani) pameti. Takze jsem  z toho udelal zaver, ze zadny patch tu chybu neopravuje, a tudiz ze teda ta chyba se asi eliminuje nejakym configure parametrem (napr jako side effect disablovanim nejake feature, ktera s mysql treba vubec nesouvisi).
Já bych spíš tipoval, že jsi narazil na to, co jsem říkal: ta chyba vůbec nemusí být v PHP, ale může být v libovolné knihovně, která se používá pocestě mezi db a php. Než se snažit to zjistit stylem pokus omyl bych asi zkusil prohledat debianní fóra, jestli se o té chybě někde nemluvilo a jaký byl závěr - pokud se ti to podaří najít, tak získáš lepší přehled o tom, jak to doopravdy opravili než když se na to budeš snažit přijít sám - v tomhle případě je ten systém, se kterým experimentuješ, příliš složitý a snadno získáš nějaký dojem, který neodpovídá skutečnosti a pak se do toho zamotáš a nevyřešíš to.

Např. může dojít k tomuhle:
1. chyba se neprojevuje deterministicky - k jejímu projevení jsou potřeba nějaké podmínky
2. ty testuješ existenci chyby nějakým způsobem
3. PHP přeložíš jinak  a chyba se *podle tvého testu* přestane projevovat
4. ve skutečnosti tam ale pořád je, jenom přestal fungovat tvůj test (tím překladem se nějak změnily podmínky)
6. důsledek: strávíš tím spoustu času a chyba se po nějaké době v produkci projeví zase


Zkusil sem apt-get source --compile php5, to po hodine prace balik opravdu rekompiluje a nejake configure parametry (cflags) to behem cinnosti vypisuje, nicmene kdyz ty configure parametry vemu jak jsou a rucne s nima spustim configure, tak tam je nejakej problem, u nekterych parametru to hlasi ze jsou unrecognized, a make pak havaruje s nejakou chybou (undeclared function), coz je uplne nejaka haluz.
To jenom dokazuje, že ten proces je *jiný než na debianu*, čímžpádem nemůžeš dojít k tomu, co chceš: mít to přesně jako na debianu. Takhle to zkoušet je prostě podle mě slepá cesta.

Ale pokud máš opačný názor, tak pak asi nezbývá než abys úplně přesně popsal proces, jakým jsi to udělal a chyby, který ti to vypsalo.

Pokud bys totiž vzal přesně ty debianní zdroje i se všemi patchi, tak je docela málo pravděpodobný, že by to zbuchlo na tom, že configure nezná nějaký parametr. Takže jsi nejspíš v tom procesu někde něco opomněl a ty zdrojáky *nemáš* přesně stejné jako na debianu.

Re:Jak v Debianu spustim kompilaci baliku?
« Odpověď #6 kdy: 26. 10. 2014, 11:23:12 »
Jo a taky by stálo zato, abys zmínil, pro jaký cílový OS to chceš překládat. Protože třeba by mohla být nouzová cesta i taková, že bys prostě vzal ten debianní balíček a pokusil se ho tam rozjet v binární formě, bez toho, abys ho překládal - to už právě záleží na distru, jak moc by to bylo případně schůdný.

tak jako tak, připrav se na to, že dávat na server jakékoliv vlastnoručně patchované věci je velký závazek - bereš na sebe zodpovědnost za sledování chyb a aplikování bezpečnostních oprav, což je velký sousto a v případě víceméně frontendového PHP je to naprostá nutnost, sine qua non.

ynezz

Re:Jak v Debianu spustim kompilaci baliku?
« Odpověď #7 kdy: 26. 10. 2014, 11:32:30 »
Podíval bych se do souboru debian/rules.

Lol Phirae

Re:Jak v Debianu spustim kompilaci baliku?
« Odpověď #8 kdy: 26. 10. 2014, 11:42:35 »
Proste, PHP ma od verze 5.4 chybu. Kdyz ho zkompiluju kdekoli (na debianu i nedebianu) primo z oficialnich zdrojaku, tak ma chybu v alokovani pameti pri vypisovani dat z databaze (desitky tisic radku), narusta alokovana pamet, az to spadne na prekroceni limitu.

Pokud nepopíšeš přesně, co děláš, tak se nedá ani smysluplně hledat chyba. Např: https://bugs.php.net/bug.php?id=64993

Re:Jak v Debianu spustim kompilaci baliku?
« Odpověď #9 kdy: 28. 10. 2014, 09:13:29 »
Podíval bych se do souboru debian/rules.
Diky! Toto presne jsem hledal :)

Re:Jak v Debianu spustím kompilaci balíku?
« Odpověď #10 kdy: 28. 10. 2014, 13:50:29 »
Podarilo se mi problem identifikovat, a diky tomu jsem nasel co v PHP zpusobuje tu chybu v alokaci (dealokaci) pameti.
Submitnul jsem bug report a doufam ze to nekdo vyresi, je to nekolik let stary problem.
https://bugs.php.net/bug.php?id=68318

Re:Jak v Debianu spustím kompilaci balíku?
« Odpověď #11 kdy: 28. 10. 2014, 14:34:27 »
Podarilo se mi problem identifikovat, a diky tomu jsem nasel co v PHP zpusobuje tu chybu v alokaci (dealokaci) pameti.
Submitnul jsem bug report a doufam ze to nekdo vyresi, je to nekolik let stary problem.
https://bugs.php.net/bug.php?id=68318

Dobře Ty!

Re:Jak v Debianu spustím kompilaci balíku?
« Odpověď #12 kdy: 28. 10. 2014, 17:11:10 »
Dobrá práce!

Jenom drobnou poznámečku: věty

Citace
I expect you to fix bug in PHP's mysqlnd driver so it properly free()s the memory!!
Thank you very much !!!

sis mohl odpustit, to je dost nezdvořilý. Nehledě na to, že používat vác než jeden vykřičník není jinde než v ČR obvyklý a navíc za prosbou to vypadá fakt hrozně. Tohleto "Prosíme, uklízejte si po sobě!!!!!!!!!!!!!!!!!!!!!!!!!!!" je česká specialita.

Re:Jak v Debianu spustím kompilaci balíku?
« Odpověď #13 kdy: 28. 10. 2014, 17:46:29 »
No, asi sem byl prilis excited, a nechal sem se unest !!!!!! :)

Re:Jak v Debianu spustím kompilaci balíku?
« Odpověď #14 kdy: 28. 10. 2014, 18:00:03 »
Tak příště prrr!!!!!!!!!!!!!!

:)